Merge branch 'sb/submodule-core-worktree'
authorJunio C Hamano <gitster@pobox.com>
Wed, 18 Jul 2018 19:20:28 +0000 (12:20 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 18 Jul 2018 19:20:28 +0000 (12:20 -0700)
"git submodule" did not correctly adjust core.worktree setting that
indicates whether/where a submodule repository has its associated
working tree across various state transitions, which has been
corrected.

* sb/submodule-core-worktree:
submodule deinit: unset core.worktree
submodule: ensure core.worktree is set after update
submodule: unset core.worktree if no working tree is present

212 files changed:
.gitignore
Documentation/RelNotes/1.7.11.7.txt
Documentation/RelNotes/2.17.0.txt
Documentation/RelNotes/2.18.0.txt
Documentation/RelNotes/2.19.0.txt [new file with mode: 0644]
Documentation/config.txt
Documentation/diff-options.txt
Documentation/git-apply.txt
Documentation/git-help.txt
Documentation/git-merge.txt
Documentation/git-p4.txt
Documentation/git-show-index.txt
Documentation/git-submodule.txt
Documentation/gitworkflows.txt
Documentation/technical/commit-graph.txt
GIT-VERSION-GEN
Makefile
RelNotes
advice.c
advice.h
alloc.c
alloc.h [new file with mode: 0644]
apply.c
apply.h
archive-tar.c
archive-zip.c
archive.c
bisect.c
blame.c
blame.h
blob.c
branch.c
builtin.h
builtin/am.c
builtin/blame.c
builtin/branch.c
builtin/cat-file.c
builtin/checkout.c
builtin/clean.c
builtin/clone.c
builtin/commit-tree.c
builtin/commit.c
builtin/describe.c
builtin/diff.c
builtin/difftool.c
builtin/fast-export.c
builtin/fetch.c
builtin/fmt-merge-msg.c
builtin/hash-object.c
builtin/help.c
builtin/log.c
builtin/ls-tree.c
builtin/merge-tree.c
builtin/merge.c
builtin/mktag.c
builtin/mktree.c
builtin/name-rev.c
builtin/notes.c
builtin/pack-objects.c
builtin/prune.c
builtin/pull.c
builtin/receive-pack.c
builtin/reflog.c
builtin/remote.c
builtin/replace.c
builtin/reset.c
builtin/rev-list.c
builtin/rev-parse.c
builtin/send-pack.c
builtin/show-branch.c
builtin/show-index.c [new file with mode: 0644]
builtin/show-ref.c
builtin/submodule--helper.c
builtin/tag.c
builtin/unpack-file.c
builtin/unpack-objects.c
builtin/update-ref.c
builtin/verify-commit.c
bulk-checkin.c
bundle.c
cache-tree.c
cache.h
combine-diff.c
commit-graph.c
commit-graph.h
commit-slab-decl.h [new file with mode: 0644]
commit-slab-impl.h [new file with mode: 0644]
commit-slab.h
commit.c
commit.h
config.c
config.h
contrib/completion/git-completion.bash
contrib/credential/netrc/Makefile
contrib/credential/netrc/git-credential-netrc
contrib/credential/netrc/t-git-credential-netrc.sh
contrib/credential/netrc/test.pl
convert.c
diff-lib.c
diff.c
diffcore-rename.c
dir.c
entry.c
environment.c
ewah/ewah_io.c
ewah/ewok.h
fetch-pack.c
fsck.c
generate-cmdlist.sh
git-add--interactive.perl
git-p4.py
git-rebase--interactive.sh
git-rebase--preserve-merges.sh [new file with mode: 0644]
git-rebase.sh
git-submodule.sh
git.c
grep.c
grep.h
help.c
help.h
list-objects-filter-options.c
list-objects-filter.c
list-objects.c
log-tree.c
mailmap.c
match-trees.c
merge-blobs.c
merge-recursive.c
notes-cache.c
notes-merge.c
notes.c
object-store.h
object.c
object.h
pack-bitmap-write.c
pack-bitmap.c
packfile.c
packfile.h
parse-options.c
path.c
path.h
po/TEAMS
po/bg.po
po/ca.po
po/de.po
po/es.po
po/fr.po
po/git.pot
po/ko.po
po/sv.po
po/vi.po
po/zh_CN.po
read-cache.c
ref-filter.c
refs.c
refs/packed-backend.c
refspec.c
refspec.h
remote-testsvn.c
remote.c
repository.c
repository.h
rerere.c
revision.c
revision.h
send-pack.c
sequencer.c
sha1-file.c
shallow.c
show-index.c [deleted file]
submodule-config.c
submodule.c
t/t0001-init.sh
t/t0020-crlf.sh
t/t0070-fundamental.sh
t/t0410-partial-clone.sh
t/t1004-read-tree-m-u-wf.sh
t/t2203-add-intent.sh
t/t3200-branch.sh
t/t3404-rebase-interactive.sh
t/t3701-add-interactive.sh
t/t4011-diff-symlink.sh
t/t4254-am-corrupt.sh
t/t5310-pack-bitmaps.sh
t/t5318-commit-graph.sh
t/t5500-fetch-pack.sh
t/t5526-fetch-submodules.sh
t/t5537-fetch-shallow.sh
t/t5573-pull-verify-signatures.sh
t/t6036-recursive-corner-cases.sh
t/t6042-merge-rename-corner-cases.sh
t/t7030-verify-tag.sh
t/t7400-submodule-basic.sh
t/t7406-submodule-update.sh
t/t7407-submodule-foreach.sh
t/t7508-status.sh
t/t7510-signed-commit.sh
t/t7612-merge-verify-signatures.sh
t/t9104-git-svn-follow-parent.sh
t/t9807-git-p4-submit.sh
t/t9818-git-p4-block.sh
t/t9833-errors.sh [new file with mode: 0755]
t/t9902-completion.sh
tag.c
tag.h
tree-walk.c
tree.c
unpack-trees.c
upload-pack.c
walker.c
wt-status.c
xdiff-interface.c
index 388cc4beee54faf9f06e9cfae75e7a256d368739..3284a1e9b1e80eae619024258ea96bb7e33bf943 100644 (file)
 /git-rebase--helper
 /git-rebase--interactive
 /git-rebase--merge
+/git-rebase--preserve-merges
 /git-receive-pack
 /git-reflog
 /git-remote
index e7e79d999bd38b8cc369b50d995a231a563a81ef..e743a2a8e46ebeadaad3d9d21abdb2412c043149 100644 (file)
@@ -25,7 +25,7 @@ Fixes since v1.7.11.6
    references" nor "Reload" did not update what is shown as the
    contents of it, when the user overwrote the tag with "git tag -f".
 
- * "git for-each-ref" did not currectly support more than one --sort
+ * "git for-each-ref" did not correctly support more than one --sort
    option.
 
  * "git log .." errored out saying it is both rev range and a path
index d6db0e19cf17ba10700f7b314ecab3c4c51e675e..c2cf891f71adfe09f7432591333952d8577439c4 100644 (file)
@@ -342,7 +342,7 @@ Fixes since v2.16
    validate the data and connected-ness of objects in the received
    pack; the code to perform this check has been taught about the
    narrow clone's convention that missing objects that are reachable
-   from objects in a pack that came from a promissor remote is OK.
+   from objects in a pack that came from a promisor remote is OK.
 
  * There was an unused file-scope static variable left in http.c when
    building for versions of libCURL that is older than 7.19.4, which
index 7c59bd92fbd99bd03f3261c67014b713b0b988c3..3ea280cf68e5da48e352023257ef37529410174d 100644 (file)
@@ -104,7 +104,7 @@ UI, Workflows & Features
  * The command line completion mechanism (in contrib/) learned to load
    custom completion file for "git $command" where $command is a
    custom "git-$command" that the end user has on the $PATH when using
-   newer version of bash.
+   newer version of bash-completion.
 
  * "git send-email" can sometimes offer confirmation dialog "Send this
    email?" with choices 'Yes', 'No', 'Quit', and 'All'.  A new action
@@ -324,7 +324,7 @@ Fixes since v2.17
    after giving an error message.
    (merge 3bb0923f06 ps/contains-id-error-message later to maint).
 
- * "diff-highlight" filter (in contrib/) learned to undertand "git log
+ * "diff-highlight" filter (in contrib/) learned to understand "git log
    --graph" output better.
    (merge 4551fbba14 jk/diff-highlight-graph-fix later to maint).
 
@@ -523,6 +523,22 @@ Fixes since v2.17
    packfile available to itself.
    (merge 3737746120 jk/index-pack-maint later to maint).
 
+ * Make zlib inflate codepath more robust against versions of zlib
+   that clobber unused portion of outbuf.
+   (merge b611396e97 jl/zlib-restore-nul-termination later to maint).
+
+ * Fix old merge glitch in Documentation during v2.13-rc0 era.
+   (merge 28cb06020b mw/doc-merge-enumfix later to maint).
+
+ * The code to read compressed bitmap was not careful to avoid reading
+   past the end of the file, which has been corrected.
+   (merge 1140bf01ec jk/ewah-bounds-check later to maint).
+
+ * "make NO_ICONV=NoThanks" did not override NEEDS_LIBICONV
+   (i.e. linkage of -lintl, -liconv, etc. that are platform-specific
+   tweaks), which has been corrected.
+   (merge fdb1fbbc7d es/make-no-iconv later to maint).
+
  * Other minor doc, test and build updates and code cleanups.
    (merge 248f66ed8e nd/trace-with-env later to maint).
    (merge 14ced5562c ys/bisect-object-id-missing-conversion-fix later to maint).
@@ -559,3 +575,9 @@ Fixes since v2.17
    (merge f156a0934a rd/p4-doc-markup-env later to maint).
    (merge 2a00502b14 tg/doc-sec-list later to maint).
    (merge 47cc91310a jk/submodule-fsck-loose-fixup later to maint).
+   (merge efde7b725c rd/comment-typofix-in-sha1-file later to maint).
+   (merge 7eedad15df rd/diff-options-typofix later to maint).
+   (merge 58ebd936cc km/doc-workflows-typofix later to maint).
+   (merge 30aa96cdf8 rd/doc-remote-tracking-with-hyphen later to maint).
+   (merge cf317877e3 ks/branch-set-upstream later to maint).
+   (merge 8de19d6be8 sg/t7406-chain-fix later to maint).
diff --git a/Documentation/RelNotes/2.19.0.txt b/Documentation/RelNotes/2.19.0.txt
new file mode 100644 (file)
index 0000000..2b45b6f
--- /dev/null
@@ -0,0 +1,101 @@
+Git 2.19 Release Notes
+======================
+
+Updates since v2.18
+-------------------
+
+UI, Workflows & Features
+
+ * "git diff" compares the index and the working tree.  For paths
+   added with intent-to-add bit, the command shows the full contents
+   of them as added, but the paths themselves were not marked as new
+   files.  They are now shown as new by default.
+
+   "git apply" learned the "--intent-to-add" option so that an
+   otherwise working-tree-only application of a patch will add new
+   paths to the index marked with the "intent-to-add" bit.
+
+
+Performance, Internal Implementation, Development Support etc.
+
+ * The bulk of "git submodule foreach" has been rewritten in C.
+
+ * The in-core "commit" object had an all-purpose "void *util" field,
+   which was tricky to use especially in library-ish part of the
+   code.  All of the existing uses of the field has been migrated to a
+   more dedicated "commit-slab" mechanism and the field is eliminated.
+
+ * A less often used command "git show-index" has been modernized.
+   (merge fb3010c31f jk/show-index later to maint).
+
+ * The conversion to pass "the_repository" and then "a_repository"
+   throughout the object access API continues.
+
+ * Continuing with the idea to programatically enumerate various
+   pieces of data required for command line completion, teach the
+   codebase to report the list of configuration variables
+   subcommands care about to help complete them.
+
+ * Separate "rebase -p" codepath out of "rebase -i" implementation to
+   slim down the latter and make it easier to manage.
+
+ * Make refspec parsing codepath more robust.
+
+ * Some flaky tests have been fixed.
+
+ * Continuing with the idea to programmatically enumerate various
+   pieces of data required for command line completion, the codebase
+   has been taught to enumerate options prefixed with "--no-" to
+   negate them.
+
+ * Build and test procedure for netrc credential helper (in contrib/)
+   has been updated.
+
+
+Fixes since v2.18
+-----------------
+
+ * "git remote update" can take both a single remote nickname and a
+   nickname for remote groups, and the completion script (in contrib/)
+   has been taught about it.
+   (merge 9cd4382ad5 ls/complete-remote-update-names later to maint).
+
+ * "git fetch --shallow-since=<cutoff>" that specifies the cut-off
+   point that is newer than the existing history used to end up
+   grabbing the entire history.  Such a request now errors out.
+   (merge e34de73c56 nd/reject-empty-shallow-request later to maint).
+
+ * Fix for 2.17-era regression around `core.safecrlf`.
+   (merge 6cb09125be as/safecrlf-quiet-fix later to maint).
+
+ * The recent addition of "partial clone" experimental feature kicked
+   in when it shouldn't, namely, when there is no partial-clone filter
+   defined even if extensions.partialclone is set.
+   (merge cac1137dc4 jh/partial-clone later to maint).
+
+ * "git send-pack --signed" (hence "git push --signed" over the http
+   transport) did not read user ident from the config mechanism to
+   determine whom to sign the push certificate as, which has been
+   corrected.
+   (merge d067d98887 ms/send-pack-honor-config later to maint).
+
+ * "git fetch-pack --all" used to unnecessarily fail upon seeing an
+   annotated tag that points at an object other than a commit.
+   (merge c12c9df527 jk/fetch-all-peeled-fix later to maint).
+
+ * When user edits the patch in "git add -p" and the user's editor is
+   set to strip trailing whitespaces indiscriminately, an empty line
+   that is unchanged in the patch would become completely empty
+   (instead of a line with a sole SP on it).  The code introduced in
+   Git 2.17 timeframe failed to parse such a patch, but now it learned
+   to notice the situation and cope with it.
+   (merge f4d35a6b49 pw/add-p-recount later to maint).
+
+ * The code to try seeing if a fetch is necessary in a submodule
+   during a fetch with --recurse-submodules got confused when the path
+   to the submodule was changed in the range of commits in the
+   superproject, sometimes showing "(null)".  This has been corrected.
+
+ * Code cleanup.
+   (merge aee9be2ebe sg/update-ref-stdin-cleanup later to maint).
+   (merge 037714252f jc/clean-after-sanity-tests later to maint).
index ab641bf5a9984b7ab2dfea787a0db5704f79a448..1cc18a828ca63bc489726dc3f1489a5e5e5c8b2b 100644 (file)
@@ -1162,7 +1162,8 @@ color.diff.<slot>::
 color.decorate.<slot>::
        Use customized color for 'git log --decorate' output.  `<slot>` is one
        of `branch`, `remoteBranch`, `tag`, `stash` or `HEAD` for local
-       branches, remote-tracking branches, tags, stash and HEAD, respectively.
+       branches, remote-tracking branches, tags, stash and HEAD, respectively
+       and `grafted` for grafted commits.
 
 color.grep::
        When set to `always`, always highlight matches.  When `false` (or
index f466600972f86df57648eaab6dccf52289febda9..41064909ee42bca9a5decd375bc62ad658ae3c81 100644 (file)
@@ -64,7 +64,7 @@ ifndef::git-format-patch[]
 endif::git-format-patch[]
 
 --indent-heuristic::
-       Enable the heuristic that shift diff hunk boundaries to make patches
+       Enable the heuristic that shifts diff hunk boundaries to make patches
        easier to read. This is the default.
 
 --no-indent-heuristic::
@@ -106,7 +106,7 @@ diff" algorithm internally.
        low-occurrence common elements".
 --
 +
-For instance, if you configured diff.algorithm variable to a
+For instance, if you configured the `diff.algorithm` variable to a
 non-default value and want to use the default one, then you
 have to use `--diff-algorithm=default` option.
 
@@ -133,7 +133,7 @@ These parameters can also be set individually with `--stat-width=<width>`,
        as file creations or deletions ("new" or "gone", optionally "+l"
        if it's a symlink) and mode changes ("+x" or "-x" for adding
        or removing executable bit respectively) in diffstat. The
-       information is put betwen the filename part and the graph
+       information is put between the filename part and the graph
        part. Implies `--stat`.
 
 --numstat::
@@ -350,7 +350,7 @@ ifndef::git-format-patch[]
        Warn if changes introduce conflict markers or whitespace errors.
        What are considered whitespace errors is controlled by `core.whitespace`
        configuration.  By default, trailing whitespaces (including
-       lines that solely consist of whitespaces) and a space character
+       lines that consist solely of whitespaces) and a space character
        that is immediately followed by a tab character inside the
        initial indent of the line are considered whitespace errors.
        Exits with non-zero status if problems are found. Not compatible
@@ -364,7 +364,7 @@ ifndef::git-format-patch[]
        this option is not given, and the configuration variable
        `diff.wsErrorHighlight` is not set, only whitespace errors in
        `new` lines are highlighted. The whitespace errors are colored
-       whith `color.diff.whitespace`.
+       with `color.diff.whitespace`.
 
 endif::git-format-patch[]
 
index 67228494c00e1df676723072d0884f7705e532f1..b9aa39000fc8aa77d69751d9409a957139c2cff7 100644 (file)
@@ -9,7 +9,7 @@ git-apply - Apply a patch to files and/or to the index
 SYNOPSIS
 --------
 [verse]
-'git apply' [--stat] [--numstat] [--summary] [--check] [--index] [--3way]
+'git apply' [--stat] [--numstat] [--summary] [--check] [--index | --intent-to-add] [--3way]
          [--apply] [--no-add] [--build-fake-ancestor=<file>] [-R | --reverse]
          [--allow-binary-replacement | --binary] [--reject] [-z]
          [-p<n>] [-C<n>] [--inaccurate-eof] [--recount] [--cached]
@@ -74,6 +74,14 @@ OPTIONS
        cached data, apply the patch, and store the result in the index
        without using the working tree. This implies `--index`.
 
+--intent-to-add::
+       When applying the patch only to the working tree, mark new
+       files to be added to the index later (see `--intent-to-add`
+       option in linkgit:git-add[1]). This option is ignored unless
+       running in a Git repository and `--index` is not specified.
+       Note that `--index` could be implied by other options such
+       as `--cached` or `--3way`.
+
 -3::
 --3way::
        When the patch does not apply cleanly, fall back on 3-way merge if
index a40fc38d8b425fae0a1ca074ecc8d603efc80f14..83d25d825aa5a9b68f3cff5290d1ebacef35ebde 100644 (file)
@@ -45,6 +45,11 @@ OPTIONS
        When used with `--verbose` print description for all recognized
        commands.
 
+-c::
+--config::
+       List all available configuration variables. This is a short
+       summary of the list in linkgit:git-config[1].
+
 -g::
 --guides::
        Prints a list of useful guides on the standard output. This
index d5dfd8430f3370dc168e42e3991d1d4a9b854617..6a5c00e2c2b5b5201e42e12b74d8ae5128ce9c93 100644 (file)
@@ -57,7 +57,7 @@ reconstruct the original (pre-merge) changes. Therefore:
 discouraged: while possible, it may leave you in a state that is hard to
 back out of in the case of a conflict.
 
-The fourth syntax ("`git merge --continue`") can only be run after the
+The third syntax ("`git merge --continue`") can only be run after the
 merge has resulted in conflicts.
 
 OPTIONS
index b9fecebc0cdd8e1306fa33c9426867f0caefd867..f0de3b891b297bb92ffb0323f5bfec5944b9c3aa 100644 (file)
@@ -149,6 +149,12 @@ To specify a branch other than the current one, use:
 $ git p4 submit topicbranch
 ------------
 
+To specify a single commit or a range of commits, use:
+------------
+$ git p4 submit --commit <sha1>
+$ git p4 submit --commit <sha1..sha1>
+------------
+
 The upstream reference is generally 'refs/remotes/p4/master', but can
 be overridden using the `--origin=` command-line option.
 
@@ -355,6 +361,19 @@ These options can be used to modify 'git p4 submit' behavior.
        p4/master.  See the "Sync options" section above for more
        information.
 
+--commit <sha1>|<sha1..sha1>::
+    Submit only the specified commit or range of commits, instead of the full
+    list of changes that are in the current Git branch.
+
+--disable-rebase::
+    Disable the automatic rebase after all commits have been successfully
+    submitted. Can also be set with git-p4.disableRebase.
+
+--disable-p4sync::
+    Disable the automatic sync of p4/master from Perforce after commits have
+    been submitted. Implies --disable-rebase. Can also be set with
+    git-p4.disableP4Sync. Sync with origin/master still goes ahead if possible.
+
 Rebase options
 ~~~~~~~~~~~~~~
 These options can be used to modify 'git p4 rebase' behavior.
@@ -676,6 +695,12 @@ git-p4.conflict::
        Specify submit behavior when a conflict with p4 is found, as per
        --conflict.  The default behavior is 'ask'.
 
+git-p4.disableRebase::
+    Do not rebase the tree against p4/master following a submit.
+
+git-p4.disableP4Sync::
+    Do not sync p4/master with Perforce following a submit. Implies git-p4.disableRebase.
+
 IMPLEMENTATION DETAILS
 ----------------------
 * Changesets from p4 are imported using Git fast-import.
index a8a9509e0eb0bb416ce0a32f76c964a505da8f61..424e4ba84cf9b0444a41f0a163de0a58a6ac378a 100644 (file)
@@ -14,13 +14,27 @@ SYNOPSIS
 
 DESCRIPTION
 -----------
-Read the idx file for a Git packfile created with
-'git pack-objects' command from the standard input, and
-dump its contents.
+Read the `.idx` file for a Git packfile (created with
+linkgit:git-pack-objects[1] or linkgit:git-index-pack[1]) from the
+standard input, and dump its contents. The output consists of one object
+per line, with each line containing two or three space-separated
+columns:
 
-The information it outputs is subset of what you can get from
-'git verify-pack -v'; this command only shows the packfile
-offset and SHA-1 of each object.
+  - the first column is the offset in bytes of the object within the
+    corresponding packfile
+
+  - the second column is the object id of the object
+
+  - if the index version is 2 or higher, the third column contains the
+    CRC32 of the object data
+
+The objects are output in the order in which they are found in the index
+file, which should be (in a correctly constructed file) sorted by object
+id.
+
+Note that you can get more information on a packfile by calling
+linkgit:git-verify-pack[1]. However, as this command considers only the
+index file itself, it's both faster and more flexible.
 
 GIT
 ---
index 4a5cc38a6f0e10ba5232190942572e4a540e4ecb..ba3c4df550acfeb04a0a6b753a778816f031492c 100644 (file)
@@ -42,8 +42,8 @@ have to use '../foo.git' instead of './foo.git' - as one might expect
 when following the rules for relative URLs - because the evaluation
 of relative URLs in Git is identical to that of relative directories).
 +
-The default remote is the remote of the remote tracking branch
-of the current branch. If no such remote tracking branch exists or
+The default remote is the remote of the remote-tracking branch
+of the current branch. If no such remote-tracking branch exists or
 the HEAD is detached, "origin" is assumed to be the default remote.
 If the superproject doesn't have a default remote configured
 the superproject is its own authoritative upstream and the current
@@ -183,12 +183,17 @@ information too.
 
 foreach [--recursive] <command>::
        Evaluates an arbitrary shell command in each checked out submodule.
-       The command has access to the variables $name, $path, $sha1 and
-       $toplevel:
+       The command has access to the variables $name, $sm_path, $displaypath,
+       $sha1 and $toplevel:
        $name is the name of the relevant submodule section in `.gitmodules`,
-       $path is the name of the submodule directory relative to the
-       superproject, $sha1 is the commit as recorded in the superproject,
-       and $toplevel is the absolute path to the top-level of the superproject.
+       $sm_path is the path of the submodule as recorded in the immediate
+       superproject, $displaypath contains the relative path from the
+       current working directory to the submodules root directory,
+       $sha1 is the commit as recorded in the immediate
+       superproject, and $toplevel is the absolute path to the top-level
+       of the immediate superproject.
+       Note that to avoid conflicts with '$PATH' on Windows, the '$path'
+       variable is now a deprecated synonym of '$sm_path' variable.
        Any submodules defined in the superproject but not checked out are
        ignored by this command. Unless given `--quiet`, foreach prints the name
        of each submodule before evaluating the command.
index 926e044d098bc1399c923c4f204bca5d4a7a37bf..ca11c7bdafb91bc2f6ae71ca18a2f6b45e5f38b0 100644 (file)
@@ -107,7 +107,7 @@ the unstable branch into the stable one.  Hence the following:
 .Merge upwards
 [caption="Rule: "]
 =====================================
-Always commit your fixes to the oldest supported branch that require
+Always commit your fixes to the oldest supported branch that requires
 them.  Then (periodically) merge the integration branches upwards into each
 other.
 =====================================
index 0550c6d0dc317343dae53e792cc321fd0924bd84..e1a883eb462cd9bddbc192a315464282146ac433 100644 (file)
@@ -77,6 +77,29 @@ in the commit graph. We can treat these commits as having "infinite"
 generation number and walk until reaching commits with known generation
 number.
 
+We use the macro GENERATION_NUMBER_INFINITY = 0xFFFFFFFF to mark commits not
+in the commit-graph file. If a commit-graph file was written by a version
+of Git that did not compute generation numbers, then those commits will
+have generation number represented by the macro GENERATION_NUMBER_ZERO = 0.
+
+Since the commit-graph file is closed under reachability, we can guarantee
+the following weaker condition on all commits:
+
+    If A and B are commits with generation numbers N amd M, respectively,
+    and N < M, then A cannot reach B.
+
+Note how the strict inequality differs from the inequality when we have
+fully-computed generation numbers. Using strict inequality may result in
+walking a few extra commits, but the simplicity in dealing with commits
+with generation number *_INFINITY or *_ZERO is valuable.
+
+We use the macro GENERATION_NUMBER_MAX = 0x3FFFFFFF to for commits whose
+generation numbers are computed to be at least this value. We limit at
+this value since it is the largest value that can be stored in the
+commit-graph file using the 30 bits available to generation numbers. This
+presents another case where a commit can have generation number equal to
+that of a parent.
+
 Design Details
 --------------
 
@@ -98,18 +121,14 @@ Future Work
 - The 'commit-graph' subcommand does not have a "verify" mode that is
   necessary for integration with fsck.
 
-- The file format includes room for precomputed generation numbers. These
-  are not currently computed, so all generation numbers will be marked as
-  0 (or "uncomputed"). A later patch will include this calculation.
-
 - After computing and storing generation numbers, we must make graph
   walks aware of generation numbers to gain the performance benefits they
   enable. This will mostly be accomplished by swapping a commit-date-ordered
   priority queue with one ordered by generation number. The following
   operations are important candidates:
 
-    - paint_down_to_common()
     - 'log --topo-order'
+    - 'tag --merged'
 
 - Currently, parse_commit_gently() requires filling in the root tree
   object for a commit. This passes through lookup_tree() and consequently
index 49fc15e1c14ccaee280f9da46c011d976ac33405..920678a14b8ce28c50b5769fcf0bba022798b6ae 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 GVF=GIT-VERSION-FILE
-DEF_VER=v2.18.0-rc2
+DEF_VER=v2.18.GIT
 
 LF='
 '
index 1d27f36365ae2485e3706548b2b0299436902cc6..0cb6590f24acdaec89fa85815e7af584c48ed620 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -620,6 +620,7 @@ SCRIPT_LIB += git-mergetool--lib
 SCRIPT_LIB += git-parse-remote
 SCRIPT_LIB += git-rebase--am
 SCRIPT_LIB += git-rebase--interactive
+SCRIPT_LIB += git-rebase--preserve-merges
 SCRIPT_LIB += git-rebase--merge
 SCRIPT_LIB += git-sh-setup
 SCRIPT_LIB += git-sh-i18n
@@ -689,7 +690,6 @@ PROGRAM_OBJS += http-backend.o
 PROGRAM_OBJS += imap-send.o
 PROGRAM_OBJS += sh-i18n--envsubst.o
 PROGRAM_OBJS += shell.o
-PROGRAM_OBJS += show-index.o
 PROGRAM_OBJS += remote-testsvn.o
 
 # Binary suffix, set to .exe for Windows builds
@@ -1077,6 +1077,7 @@ BUILTIN_OBJS += builtin/send-pack.o
 BUILTIN_OBJS += builtin/serve.o
 BUILTIN_OBJS += builtin/shortlog.o
 BUILTIN_OBJS += builtin/show-branch.o
+BUILTIN_OBJS += builtin/show-index.o
 BUILTIN_OBJS += builtin/show-ref.o
 BUILTIN_OBJS += builtin/stripspace.o
 BUILTIN_OBJS += builtin/submodule--helper.o
@@ -1351,17 +1352,19 @@ ifdef APPLE_COMMON_CRYPTO
        LIB_4_CRYPTO += -framework Security -framework CoreFoundation
 endif
 endif
-ifdef NEEDS_LIBICONV
-       ifdef ICONVDIR
-               BASIC_CFLAGS += -I$(ICONVDIR)/include
-               ICONV_LINK = -L$(ICONVDIR)/$(lib) $(CC_LD_DYNPATH)$(ICONVDIR)/$(lib)
-       else
-               ICONV_LINK =
-       endif
-       ifdef NEEDS_LIBINTL_BEFORE_LIBICONV
-               ICONV_LINK += -lintl
+ifndef NO_ICONV
+       ifdef NEEDS_LIBICONV
+               ifdef ICONVDIR
+                       BASIC_CFLAGS += -I$(ICONVDIR)/include
+                       ICONV_LINK = -L$(ICONVDIR)/$(lib) $(CC_LD_DYNPATH)$(ICONVDIR)/$(lib)
+               else
+                       ICONV_LINK =
+               endif
+               ifdef NEEDS_LIBINTL_BEFORE_LIBICONV
+                       ICONV_LINK += -lintl
+               endif
+               EXTLIBS += $(ICONV_LINK) -liconv
        endif
-       EXTLIBS += $(ICONV_LINK) -liconv
 endif
 ifdef NEEDS_LIBGEN
        EXTLIBS += -lgen
@@ -2395,6 +2398,7 @@ LOCALIZED_C = $(C_OBJ:o=c) $(LIB_H) $(GENERATED_H)
 LOCALIZED_SH = $(SCRIPT_SH)
 LOCALIZED_SH += git-parse-remote.sh
 LOCALIZED_SH += git-rebase--interactive.sh
+LOCALIZED_SH += git-rebase--preserve-merges.sh
 LOCALIZED_SH += git-sh-setup.sh
 LOCALIZED_PERL = $(SCRIPT_PERL)
 
index f6c58b347fd8338482625ea11ec1802baa6ea068..5d139ba7f1e20412d24b1397b33e2d4cde016d19 120000 (symlink)
--- a/RelNotes
+++ b/RelNotes
@@ -1 +1 @@
-Documentation/RelNotes/2.18.0.txt
\ No newline at end of file
+Documentation/RelNotes/2.19.0.txt
\ No newline at end of file
index 370a56d0546bb3fc7aa4a62203c600e9a8af2d7a..52aa85bdfd9e9054c24445f259125bc4b81be038 100644 (file)
--- a/advice.c
+++ b/advice.c
@@ -1,6 +1,7 @@
 #include "cache.h"
 #include "config.h"
 #include "color.h"
+#include "help.h"
 
 int advice_push_update_rejected = 1;
 int advice_push_non_ff_current = 1;
@@ -16,6 +17,7 @@ int advice_implicit_identity = 1;
 int advice_detached_head = 1;
 int advice_set_upstream_failure = 1;
 int advice_object_name_warning = 1;
+int advice_amworkdir = 1;
 int advice_rm_hints = 1;
 int advice_add_embedded_repo = 1;
 int advice_ignored_hook = 1;
@@ -53,28 +55,29 @@ static struct {
        const char *name;
        int *preference;
 } advice_config[] = {
-       { "pushupdaterejected", &advice_push_update_rejected },
-       { "pushnonffcurrent", &advice_push_non_ff_current },
-       { "pushnonffmatching", &advice_push_non_ff_matching },
-       { "pushalreadyexists", &advice_push_already_exists },
-       { "pushfetchfirst", &advice_push_fetch_first },
-       { "pushneedsforce", &advice_push_needs_force },
-       { "statushints", &advice_status_hints },
-       { "statusuoption", &advice_status_u_option },
-       { "commitbeforemerge", &advice_commit_before_merge },
-       { "resolveconflict", &advice_resolve_conflict },
-       { "implicitidentity", &advice_implicit_identity },
-       { "detachedhead", &advice_detached_head },
-       { "setupstreamfailure", &advice_set_upstream_failure },
-       { "objectnamewarning", &advice_object_name_warning },
-       { "rmhints", &advice_rm_hints },
-       { "addembeddedrepo", &advice_add_embedded_repo },
-       { "ignoredhook", &advice_ignored_hook },
-       { "waitingforeditor", &advice_waiting_for_editor },
-       { "graftfiledeprecated", &advice_graft_file_deprecated },
+       { "pushUpdateRejected", &advice_push_update_rejected },
+       { "pushNonFFCurrent", &advice_push_non_ff_current },
+       { "pushNonFFMatching", &advice_push_non_ff_matching },
+       { "pushAlreadyExists", &advice_push_already_exists },
+       { "pushFetchFirst", &advice_push_fetch_first },
+       { "pushNeedsForce", &advice_push_needs_force },
+       { "statusHints", &advice_status_hints },
+       { "statusUoption", &advice_status_u_option },
+       { "commitBeforeMerge", &advice_commit_before_merge },
+       { "resolveConflict", &advice_resolve_conflict },
+       { "implicitIdentity", &advice_implicit_identity },
+       { "detachedHead", &advice_detached_head },
+       { "setupStreamFailure", &advice_set_upstream_failure },
+       { "objectNameWarning", &advice_object_name_warning },
+       { "amWorkDir", &advice_amworkdir },
+       { "rmHints", &advice_rm_hints },
+       { "addEmbeddedRepo", &advice_add_embedded_repo },
+       { "ignoredHook", &advice_ignored_hook },
+       { "waitingForEditor", &advice_waiting_for_editor },
+       { "graftFileDeprecated", &advice_graft_file_deprecated },
 
        /* make this an alias for backward compatibility */
-       { "pushnonfastforward", &advice_push_update_rejected }
+       { "pushNonFastForward", &advice_push_update_rejected }
 };
 
 void advise(const char *advice, ...)
@@ -122,7 +125,7 @@ int git_default_advice_config(const char *var, const char *value)
                return 0;
 
        for (i = 0; i < ARRAY_SIZE(advice_config); i++) {
-               if (strcmp(k, advice_config[i].name))
+               if (strcasecmp(k, advice_config[i].name))
                        continue;
                *advice_config[i].preference = git_config_bool(var, value);
                return 0;
@@ -131,6 +134,14 @@ int git_default_advice_config(const char *var, const char *value)
        return 0;
 }
 
+void list_config_advices(struct string_list *list, const char *prefix)
+{
+       int i;
+
+       for (i = 0; i < ARRAY_SIZE(advice_config); i++)
+               list_config_item(list, prefix, advice_config[i].name);
+}
+
 int error_resolve_conflict(const char *me)
 {
        if (!strcmp(me, "cherry-pick"))
index 9f5064e82a862e6daaabe3f23ea9ea896aad87e6..7e9377864f8fca1051ce3fd27f3def62b8d234eb 100644 (file)
--- a/advice.h
+++ b/advice.h
@@ -17,6 +17,7 @@ extern int advice_implicit_identity;
 extern int advice_detached_head;
 extern int advice_set_upstream_failure;
 extern int advice_object_name_warning;
+extern int advice_amworkdir;
 extern int advice_rm_hints;
 extern int advice_add_embedded_repo;
 extern int advice_ignored_hook;
diff --git a/alloc.c b/alloc.c
index cf4f8b61e126c0e9992dc34c6cb52b6f896a565d..c2fc5d68886bf3f74a1f013a3a36c7b5dcad2258 100644 (file)
--- a/alloc.c
+++ b/alloc.c
@@ -4,8 +4,7 @@
  * Copyright (C) 2006 Linus Torvalds
  *
  * The standard malloc/free wastes too much space for objects, partly because
- * it maintains all the allocation infrastructure (which isn't needed, since
- * we never free an object descriptor anyway), but even more because it ends
+ * it maintains all the allocation infrastructure, but even more because it ends
  * up with maximal alignment because it doesn't know what the object alignment
  * for the new allocation is.
  */
@@ -15,6 +14,7 @@
 #include "tree.h"
 #include "commit.h"
 #include "tag.h"
+#include "alloc.h"
 
 #define BLOCKING 1024
 
@@ -30,8 +30,27 @@ struct alloc_state {
        int count; /* total number of nodes allocated */
        int nr;    /* number of nodes left in current allocation */
        void *p;   /* first free node in current allocation */
+
+       /* bookkeeping of allocations */
+       void **slabs;
+       int slab_nr, slab_alloc;
 };
 
+void *allocate_alloc_state(void)
+{
+       return xcalloc(1, sizeof(struct alloc_state));
+}
+
+void clear_alloc_state(struct alloc_state *s)
+{
+       while (s->slab_nr > 0) {
+               s->slab_nr--;
+               free(s->slabs[s->slab_nr]);
+       }
+
+       FREE_AND_NULL(s->slabs);
+}
+
 static inline void *alloc_node(struct alloc_state *s, size_t node_size)
 {
        void *ret;
@@ -39,61 +58,59 @@ static inline void *alloc_node(struct alloc_state *s, size_t node_size)
        if (!s->nr) {
                s->nr = BLOCKING;
                s->p = xmalloc(BLOCKING * node_size);
+
+               ALLOC_GROW(s->slabs, s->slab_nr + 1, s->slab_alloc);
+               s->slabs[s->slab_nr++] = s->p;
        }
        s->nr--;
        s->count++;
        ret = s->p;
        s->p = (char *)s->p + node_size;
        memset(ret, 0, node_size);
+
        return ret;
 }
 
-static struct alloc_state blob_state;
-void *alloc_blob_node(void)
+void *alloc_blob_node(struct repository *r)
 {
-       struct blob *b = alloc_node(&blob_state, sizeof(struct blob));
+       struct blob *b = alloc_node(r->parsed_objects->blob_state, sizeof(struct blob));
        b->object.type = OBJ_BLOB;
        return b;
 }
 
-static struct alloc_state tree_state;
-void *alloc_tree_node(void)
+void *alloc_tree_node(struct repository *r)
 {
-       struct tree *t = alloc_node(&tree_state, sizeof(struct tree));
+       struct tree *t = alloc_node(r->parsed_objects->tree_state, sizeof(struct tree));
        t->object.type = OBJ_TREE;
        return t;
 }
 
-static struct alloc_state tag_state;
-void *alloc_tag_node(void)
+void *alloc_tag_node(struct repository *r)
 {
-       struct tag *t = alloc_node(&tag_state, sizeof(struct tag));
+       struct tag *t = alloc_node(r->parsed_objects->tag_state, sizeof(struct tag));
        t->object.type = OBJ_TAG;
        return t;
 }
 
-static struct alloc_state object_state;
-void *alloc_object_node(void)
+void *alloc_object_node(struct repository *r)
 {
-       struct object *obj = alloc_node(&object_state, sizeof(union any_object));
+       struct object *obj = alloc_node(r->parsed_objects->object_state, sizeof(union any_object));
        obj->type = OBJ_NONE;
        return obj;
 }
 
-static struct alloc_state commit_state;
-
-unsigned int alloc_commit_index(void)
+unsigned int alloc_commit_index(struct repository *r)
 {
-       static unsigned int count;
-       return count++;
+       return r->parsed_objects->commit_count++;
 }
 
-void *alloc_commit_node(void)
+void *alloc_commit_node(struct repository *r)
 {
-       struct commit *c = alloc_node(&commit_state, sizeof(struct commit));
+       struct commit *c = alloc_node(r->parsed_objects->commit_state, sizeof(struct commit));
        c->object.type = OBJ_COMMIT;
-       c->index = alloc_commit_index();
+       c->index = alloc_commit_index(r);
        c->graph_pos = COMMIT_NOT_FROM_GRAPH;
+       c->generation = GENERATION_NUMBER_INFINITY;
        return c;
 }
 
@@ -104,9 +121,10 @@ static void report(const char *name, unsigned int count, size_t size)
 }
 
 #define REPORT(name, type)     \
-    report(#name, name##_state.count, name##_state.count * sizeof(type) >> 10)
+    report(#name, r->parsed_objects->name##_state->count, \
+                 r->parsed_objects->name##_state->count * sizeof(type) >> 10)
 
-void alloc_report(void)
+void alloc_report(struct repository *r)
 {
        REPORT(blob, struct blob);
        REPORT(tree, struct tree);
diff --git a/alloc.h b/alloc.h
new file mode 100644 (file)
index 0000000..3e4e828
--- /dev/null
+++ b/alloc.h
@@ -0,0 +1,19 @@
+#ifndef ALLOC_H
+#define ALLOC_H
+
+struct tree;
+struct commit;
+struct tag;
+
+void *alloc_blob_node(struct repository *r);
+void *alloc_tree_node(struct repository *r);
+void *alloc_commit_node(struct repository *r);
+void *alloc_tag_node(struct repository *r);
+void *alloc_object_node(struct repository *r);
+void alloc_report(struct repository *r);
+unsigned int alloc_commit_index(struct repository *r);
+
+void *allocate_alloc_state(void);
+void clear_alloc_state(struct alloc_state *s);
+
+#endif
diff --git a/apply.c b/apply.c
index d79e61591b3814339fb8b2a39fb7d1e211d622c6..23a0f25ded853c29c3a6e891399dc5c1c2d8a753 100644 (file)
--- a/apply.c
+++ b/apply.c
@@ -9,6 +9,7 @@
 
 #include "cache.h"
 #include "config.h"
+#include "object-store.h"
 #include "blob.h"
 #include "delta.h"
 #include "diff.h"
@@ -141,6 +142,8 @@ int check_apply_state(struct apply_state *state, int force_apply)
                        return error(_("--cached outside a repository"));
                state->check_index = 1;
        }
+       if (state->ita_only && (state->check_index || is_not_gitdir))
+               state->ita_only = 0;
        if (state->check_index)
                state->unsafe_paths = 0;
 
@@ -4242,7 +4245,7 @@ static void patch_stats(struct apply_state *state, struct patch *patch)
 
 static int remove_file(struct apply_state *state, struct patch *patch, int rmdir_empty)
 {
-       if (state->update_index) {
+       if (state->update_index && !state->ita_only) {
                if (remove_file_from_cache(patch->old_name) < 0)
                        return error(_("unable to remove %s from index"), patch->old_name);
        }
@@ -4265,15 +4268,15 @@ static int add_index_file(struct apply_state *state,
        int namelen = strlen(path);
        unsigned ce_size = cache_entry_size(namelen);
 
-       if (!state->update_index)
-               return 0;
-
        ce = xcalloc(1, ce_size);
        memcpy(ce->name, path, namelen);
        ce->ce_mode = create_ce_mode(mode);
        ce->ce_flags = create_ce_flags(0);
        ce->ce_namelen = namelen;
-       if (S_ISGITLINK(mode)) {
+       if (state->ita_only) {
+               ce->ce_flags |= CE_INTENT_TO_ADD;
+               set_object_name_for_intent_to_add_entry(ce);
+       } else if (S_ISGITLINK(mode)) {
                const char *s;
 
                if (!skip_prefix(buf, "Subproject commit ", &s) ||
@@ -4465,8 +4468,9 @@ static int create_file(struct apply_state *state, struct patch *patch)
 
        if (patch->conflicted_threeway)
                return add_conflicted_stages_file(state, patch);
-       else
+       else if (state->update_index)
                return add_index_file(state, path, mode, buf, size);
+       return 0;
 }
 
 /* phase zero is to remove, phase one is to create */
@@ -4686,7 +4690,7 @@ static int apply_patch(struct apply_state *state,
        if (state->whitespace_error && (state->ws_error_action == die_on_ws_error))
                state->apply = 0;
 
-       state->update_index = state->check_index && state->apply;
+       state->update_index = (state->check_index || state->ita_only) && state->apply;
        if (state->update_index && !is_lock_file_locked(&state->lock_file)) {
                if (state->index_file)
                        hold_lock_file_for_update(&state->lock_file,
@@ -4941,6 +4945,8 @@ int apply_parse_options(int argc, const char **argv,
                        N_("instead of applying the patch, see if the patch is applicable")),
                OPT_BOOL(0, "index", &state->check_index,
                        N_("make sure the patch is applicable to the current index")),
+               OPT_BOOL('N', "intent-to-add", &state->ita_only,
+                       N_("mark new files with `git add --intent-to-add`")),
                OPT_BOOL(0, "cached", &state->cached,
                        N_("apply a patch without touching the working tree")),
                OPT_BOOL_F(0, "unsafe-paths", &state->unsafe_paths,
diff --git a/apply.h b/apply.h
index dc4a0190570d060d23e8464f465232eddcf76deb..b80d8ba73633c042989e52a00f7df8ee3afcd192 100644 (file)
--- a/apply.h
+++ b/apply.h
@@ -45,6 +45,7 @@ struct apply_state {
        int check; /* preimage must match working tree, don't actually apply */
        int check_index; /* preimage must match the indexed version */
        int update_index; /* check_index && apply */
+       int ita_only;     /* add intent-to-add entries to the index */
 
        /* These control cosmetic aspect of the output */
        int diffstat; /* just show a diffstat, and don't actually apply */
index b6f58ddf38767d86f866bd9413292e279c6cfa73..7df85652463c6cee150398a00e93e03905861b96 100644 (file)
@@ -5,6 +5,7 @@
 #include "config.h"
 #include "tar.h"
 #include "archive.h"
+#include "object-store.h"
 #include "streaming.h"
 #include "run-command.h"
 
index 74f3fe9103420571c9f22273ae44ebb9d5715c78..abc556e5a7506cd0fe8e1e66a83c3781bfc04104 100644 (file)
@@ -6,6 +6,7 @@
 #include "archive.h"
 #include "streaming.h"
 #include "utf8.h"
+#include "object-store.h"
 #include "userdiff.h"
 #include "xdiff-interface.h"
 
index 4fe7bec60c12b3b1ab27c35b716b23f4535d170c..875dab64b606704d2510b05889a934ed885019ee 100644 (file)
--- a/archive.c
+++ b/archive.c
@@ -1,6 +1,7 @@
 #include "cache.h"
 #include "config.h"
 #include "refs.h"
+#include "object-store.h"
 #include "commit.h"
 #include "tree-walk.h"
 #include "attr.h"
index a579b50884f8e6f8ce8390308d39b2664d050583..6de1abd407ba3f8b7698133d469389913bfd92c3 100644 (file)
--- a/bisect.c
+++ b/bisect.c
@@ -12,6 +12,7 @@
 #include "bisect.h"
 #include "sha1-array.h"
 #include "argv-array.h"
+#include "commit-slab.h"
 
 static struct oid_array good_revs;
 static struct oid_array skipped_revs;
@@ -70,16 +71,19 @@ static void clear_distance(struct commit_list *list)
        }
 }
 
+define_commit_slab(commit_weight, int *);
+static struct commit_weight commit_weight;
+
 #define DEBUG_BISECT 0
 
 static inline int weight(struct commit_list *elem)
 {
-       return *((int*)(elem->item->util));
+       return **commit_weight_at(&commit_weight, elem->item);
 }
 
 static inline void weight_set(struct commit_list *elem, int weight)
 {
-       *((int*)(elem->item->util)) = weight;
+       **commit_weight_at(&commit_weight, elem->item) = weight;
 }
 
 static int count_interesting_parents(struct commit *commit)
@@ -265,7 +269,7 @@ static struct commit_list *do_find_bisection(struct commit_list *list,
                struct commit *commit = p->item;
                unsigned flags = commit->object.flags;
 
-               p->item->util = &weights[n++];
+               *commit_weight_at(&commit_weight, p->item) = &weights[n++];
                switch (count_interesting_parents(commit)) {
                case 0:
                        if (!(flags & TREESAME)) {
@@ -372,6 +376,7 @@ void find_bisection(struct commit_list **commit_list, int *reaches,
        int *weights;
 
        show_list("bisection 2 entry", 0, 0, *commit_list);
+       init_commit_weight(&commit_weight);
 
        /*
         * Count the number of total and tree-changing items on the
@@ -412,6 +417,7 @@ void find_bisection(struct commit_list **commit_list, int *reaches,
        }
        free(weights);
        *commit_list = best;
+       clear_commit_weight(&commit_weight);
 }
 
 static int register_ref(const char *refname, const struct object_id *oid,
diff --git a/blame.c b/blame.c
index 14d0e0b5751c2abaad16dac81a71436ca29ddde4..0c4490a35bbda9d5c85c9f223f1ae64777ad6391 100644 (file)
--- a/blame.c
+++ b/blame.c
@@ -1,11 +1,31 @@
 #include "cache.h"
 #include "refs.h"
+#include "object-store.h"
 #include "cache-tree.h"
 #include "mergesort.h"
 #include "diff.h"
 #include "diffcore.h"
 #include "tag.h"
 #include "blame.h"
+#include "alloc.h"
+#include "commit-slab.h"
+
+define_commit_slab(blame_suspects, struct blame_origin *);
+static struct blame_suspects blame_suspects;
+
+struct blame_origin *get_blame_suspects(struct commit *commit)
+{
+       struct blame_origin **result;
+
+       result = blame_suspects_peek(&blame_suspects, commit);
+
+       return result ? *result : NULL;
+}
+
+static void set_blame_suspects(struct commit *commit, struct blame_origin *origin)
+{
+       *blame_suspects_at(&blame_suspects, commit) = origin;
+}
 
 void blame_origin_decref(struct blame_origin *o)
 {
@@ -15,12 +35,12 @@ void blame_origin_decref(struct blame_origin *o)
                        blame_origin_decref(o->previous);
                free(o->file.ptr);
                /* Should be present exactly once in commit chain */
-               for (p = o->commit->util; p; l = p, p = p->next) {
+               for (p = get_blame_suspects(o->commit); p; l = p, p = p->next) {
                        if (p == o) {
                                if (l)
                                        l->next = p->next;
                                else
-                                       o->commit->util = p->next;
+                                       set_blame_suspects(o->commit, p->next);
                                free(o);
                                return;
                        }
@@ -41,8 +61,8 @@ static struct blame_origin *make_origin(struct commit *commit, const char *path)
        FLEX_ALLOC_STR(o, path, path);
        o->commit = commit;
        o->refcnt = 1;
-       o->next = commit->util;
-       commit->util = o;
+       o->next = get_blame_suspects(commit);
+       set_blame_suspects(commit, o);
        return o;
 }
 
@@ -54,13 +74,13 @@ static struct blame_origin *get_origin(struct commit *commit, const char *path)
 {
        struct blame_origin *o, *l;
 
-       for (o = commit->util, l = NULL; o; l = o, o = o->next) {
+       for (o = get_blame_suspects(commit), l = NULL; o; l = o, o = o->next) {
                if (!strcmp(o->path, path)) {
                        /* bump to front */
                        if (l) {
                                l->next = o->next;
-                               o->next = commit->util;
-                               commit->util = o;
+                               o->next = get_blame_suspects(commit);
+                               set_blame_suspects(commit, o);
                        }
                        return blame_origin_incref(o);
                }
@@ -110,17 +130,19 @@ static void append_merge_parents(struct commit_list **tail)
        int merge_head;
        struct strbuf line = STRBUF_INIT;
 
-       merge_head = open(git_path_merge_head(), O_RDONLY);
+       merge_head = open(git_path_merge_head(the_repository), O_RDONLY);
        if (merge_head < 0) {
                if (errno == ENOENT)
                        return;
-               die("cannot open '%s' for reading", git_path_merge_head());
+               die("cannot open '%s' for reading",
+                   git_path_merge_head(the_repository));
        }
 
        while (!strbuf_getwholeline_fd(&line, merge_head, '\n')) {
                struct object_id oid;
                if (line.len < GIT_SHA1_HEXSZ || get_oid_hex(line.buf, &oid))
-                       die("unknown line in '%s': %s", git_path_merge_head(), line.buf);
+                       die("unknown line in '%s': %s",
+                           git_path_merge_head(the_repository), line.buf);
                tail = append_parent(tail, &oid);
        }
        close(merge_head);
@@ -161,7 +183,7 @@ static struct commit *fake_working_tree_commit(struct diff_options *opt,
 
        read_cache();
        time(&now);
-       commit = alloc_commit_node();
+       commit = alloc_commit_node(the_repository);
        commit->object.parsed = 1;
        commit->date = now;
        parent_tail = &commit->parents;
@@ -478,7 +500,7 @@ static void queue_blames(struct blame_scoreboard *sb, struct blame_origin *porig
                porigin->suspects = blame_merge(porigin->suspects, sorted);
        else {
                struct blame_origin *o;
-               for (o = porigin->commit->util; o; o = o->next) {
+               for (o = get_blame_suspects(porigin->commit); o; o = o->next) {
                        if (o->suspects) {
                                porigin->suspects = sorted;
                                return;
@@ -525,7 +547,7 @@ static struct blame_origin *find_origin(struct commit *parent,
        const char *paths[2];
 
        /* First check any existing origins */
-       for (porigin = parent->util; porigin; porigin = porigin->next)
+       for (porigin = get_blame_suspects(parent); porigin; porigin = porigin->next)
                if (!strcmp(porigin->path, origin->path)) {
                        /*
                         * The same path between origin and its parent
@@ -1550,7 +1572,7 @@ void assign_blame(struct blame_scoreboard *sb, int opt)
 
        while (commit) {
                struct blame_entry *ent;
-               struct blame_origin *suspect = commit->util;
+               struct blame_origin *suspect = get_blame_suspects(commit);
 
                /* find one suspect to break down */
                while (suspect && !suspect->suspects)
@@ -1752,6 +1774,8 @@ void setup_scoreboard(struct blame_scoreboard *sb, const char *path, struct blam
        struct commit *final_commit = NULL;
        enum object_type type;
 
+       init_blame_suspects(&blame_suspects);
+
        if (sb->reverse && sb->contents_from)
                die(_("--contents and --reverse do not blend well."));
 
@@ -1815,7 +1839,7 @@ void setup_scoreboard(struct blame_scoreboard *sb, const char *path, struct blam
        }
 
        if (is_null_oid(&sb->final->object.oid)) {
-               o = sb->final->util;
+               o = get_blame_suspects(sb->final);
                sb->final_buf = xmemdupz(o->file.ptr, o->file.size);
                sb->final_buf_size = o->file.size;
        }
diff --git a/blame.h b/blame.h
index a6c915c277d99cfa39dd3fe6aee82c2f0f8320df..2092f9529c108d40100ec2a8175098edc8e8e5dd 100644 (file)
--- a/blame.h
+++ b/blame.h
@@ -172,4 +172,6 @@ extern void setup_scoreboard(struct blame_scoreboard *sb, const char *path, stru
 
 extern struct blame_entry *blame_entry_prepend(struct blame_entry *head, long start, long end, struct blame_origin *o);
 
+extern struct blame_origin *get_blame_suspects(struct commit *commit);
+
 #endif /* BLAME_H */
diff --git a/blob.c b/blob.c
index fa2ab4f7a74e501366e1d3ceca9285ae60606165..458dafa811edf74e01e10777cf580c696bf0b1a8 100644 (file)
--- a/blob.c
+++ b/blob.c
@@ -1,5 +1,7 @@
 #include "cache.h"
 #include "blob.h"
+#include "repository.h"
+#include "alloc.h"
 
 const char *blob_type = "blob";
 
@@ -7,7 +9,8 @@ struct blob *lookup_blob(const struct object_id *oid)
 {
        struct object *obj = lookup_object(oid->hash);
        if (!obj)
-               return create_object(oid->hash, alloc_blob_node());
+               return create_object(the_repository, oid->hash,
+                                    alloc_blob_node(the_repository));
        return object_as_type(obj, OBJ_BLOB, 0);
 }
 
index f967c98f6324c49d9ab7f94f973230512af13707..6a35dd31f2a9c9171a866c66f65cbb30e2e511a8 100644 (file)
--- a/branch.c
+++ b/branch.c
@@ -340,13 +340,13 @@ void create_branch(const char *name, const char *start_name,
 
 void remove_branch_state(void)
 {
-       unlink(git_path_cherry_pick_head());
-       unlink(git_path_revert_head());
-       unlink(git_path_merge_head());
-       unlink(git_path_merge_rr());
-       unlink(git_path_merge_msg());
-       unlink(git_path_merge_mode());
-       unlink(git_path_squash_msg());
+       unlink(git_path_cherry_pick_head(the_repository));
+       unlink(git_path_revert_head(the_repository));
+       unlink(git_path_merge_head(the_repository));
+       unlink(git_path_merge_rr(the_repository));
+       unlink(git_path_merge_msg(the_repository));
+       unlink(git_path_merge_mode(the_repository));
+       unlink(git_path_squash_msg(the_repository));
 }
 
 void die_if_checked_out(const char *branch, int ignore_current_worktree)
index 4e0f64723ed8dde9c97827cc688535b2dda73025..0362f1ce25fb64631e28f00eafa46f35bc94c7eb 100644 (file)
--- a/builtin.h
+++ b/builtin.h
@@ -220,6 +220,7 @@ extern int cmd_serve(int argc, const char **argv, const char *prefix);
 extern int cmd_shortlog(int argc, const char **argv, const char *prefix);
 extern int cmd_show(int argc, const char **argv, const char *prefix);
 extern int cmd_show_branch(int argc, const char **argv, const char *prefix);
+extern int cmd_show_index(int argc, const char **argv, const char *prefix);
 extern int cmd_status(int argc, const char **argv, const char *prefix);
 extern int cmd_stripspace(int argc, const char **argv, const char *prefix);
 extern int cmd_submodule__helper(int argc, const char **argv, const char *prefix);
index 2fc2d1e82c5ead598476964329b555e38de9a495..6273ea5195bb7f7f2296155753c5e7982d533d66 100644 (file)
@@ -1827,15 +1827,11 @@ static void am_run(struct am_state *state, int resume)
                }
 
                if (apply_status) {
-                       int advice_amworkdir = 1;
-
                        printf_ln(_("Patch failed at %s %.*s"), msgnum(state),
                                linelen(state->msg), state->msg);
 
-                       git_config_get_bool("advice.amworkdir", &advice_amworkdir);
-
                        if (advice_amworkdir)
-                               printf_ln(_("Use 'git am --show-current-patch' to see the failed patch"));
+                               advise(_("Use 'git am --show-current-patch' to see the failed patch"));
 
                        die_user_resolve(state);
                }
index 4202584f97922f39f8631e23b01981ed5687b793..921d127f29257facb5942e7b03304a69bafff175 100644 (file)
@@ -9,6 +9,7 @@
 #include "config.h"
 #include "color.h"
 #include "builtin.h"
+#include "repository.h"
 #include "commit.h"
 #include "diff.h"
 #include "revision.h"
@@ -23,6 +24,7 @@
 #include "line-log.h"
 #include "dir.h"
 #include "progress.h"
+#include "object-store.h"
 #include "blame.h"
 #include "string-list.h"
 
@@ -411,6 +413,7 @@ static void parse_color_fields(const char *s)
                die (_("must end with a color"));
 
        colorfield[colorfield_nr].hop = TIME_MAX;
+       string_list_clear(&l, 0);
 }
 
 static void setup_default_color_by_age(void)
@@ -542,7 +545,7 @@ static void output(struct blame_scoreboard *sb, int option)
                        struct commit *commit = ent->suspect->commit;
                        if (commit->object.flags & MORE_THAN_ONE_PATH)
                                continue;
-                       for (suspect = commit->util; suspect; suspect = suspect->next) {
+                       for (suspect = get_blame_suspects(commit); suspect; suspect = suspect->next) {
                                if (suspect->guilty && count++) {
                                        commit->object.flags |= MORE_THAN_ONE_PATH;
                                        break;
@@ -575,7 +578,7 @@ static int read_ancestry(const char *graft_file)
                /* The format is just "Commit Parent1 Parent2 ...\n" */
                struct commit_graft *graft = read_graft_line(&buf);
                if (graft)
-                       register_commit_graft(graft, 0);
+                       register_commit_graft(the_repository, graft, 0);
        }
        fclose(fp);
        strbuf_release(&buf);
index d53f6e2ad4c30ef02262ff3fa01ecdb54be96f11..1876ca9e7969019e1db1c97aedcf1064903b80a2 100644 (file)
@@ -22,6 +22,7 @@
 #include "wt-status.h"
 #include "ref-filter.h"
 #include "worktree.h"
+#include "help.h"
 
 static const char * const builtin_branch_usage[] = {
        N_("git branch [<options>] [-r | -a] [--merged | --no-merged]"),
@@ -55,25 +56,19 @@ enum color_branch {
        BRANCH_COLOR_UPSTREAM = 5
 };
 
+static const char *color_branch_slots[] = {
+       [BRANCH_COLOR_RESET]    = "reset",
+       [BRANCH_COLOR_PLAIN]    = "plain",
+       [BRANCH_COLOR_REMOTE]   = "remote",
+       [BRANCH_COLOR_LOCAL]    = "local",
+       [BRANCH_COLOR_CURRENT]  = "current",
+       [BRANCH_COLOR_UPSTREAM] = "upstream",
+};
+
 static struct string_list output = STRING_LIST_INIT_DUP;
 static unsigned int colopts;
 
-static int parse_branch_color_slot(const char *slot)
-{
-       if (!strcasecmp(slot, "plain"))
-               return BRANCH_COLOR_PLAIN;
-       if (!strcasecmp(slot, "reset"))
-               return BRANCH_COLOR_RESET;
-       if (!strcasecmp(slot, "remote"))
-               return BRANCH_COLOR_REMOTE;
-       if (!strcasecmp(slot, "local"))
-               return BRANCH_COLOR_LOCAL;
-       if (!strcasecmp(slot, "current"))
-               return BRANCH_COLOR_CURRENT;
-       if (!strcasecmp(slot, "upstream"))
-               return BRANCH_COLOR_UPSTREAM;
-       return -1;
-}
+define_list_config_array(color_branch_slots);
 
 static int git_branch_config(const char *var, const char *value, void *cb)
 {
@@ -86,7 +81,7 @@ static int git_branch_config(const char *var, const char *value, void *cb)
                return 0;
        }
        if (skip_prefix(var, "color.branch.", &slot_name)) {
-               int slot = parse_branch_color_slot(slot_name);
+               int slot = LOOKUP_CONFIG(color_branch_slots, slot_name);
                if (slot < 0)
                        return 0;
                if (!value)
@@ -701,7 +696,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
                 * If no sorting parameter is given then we default to sorting
                 * by 'refname'. This would give us an alphabetically sorted
                 * array with the 'HEAD' ref at the beginning followed by
-                * local branches 'refs/heads/...' and finally remote-tacking
+                * local branches 'refs/heads/...' and finally remote-tracking
                 * branches 'refs/remotes/...'.
                 */
                if (!sorting)
index 665b5819499b4d56a4f49996125cac919e477309..4a44b2404fb36bb01758cc68964799a0438d5933 100644 (file)
@@ -13,6 +13,7 @@
 #include "tree-walk.h"
 #include "sha1-array.h"
 #include "packfile.h"
+#include "object-store.h"
 
 struct batch_options {
        int enabled;
index 2e1d2376d24043a75adb9bbc69724591bcc2d5c3..28627650cd66bb38a432397b2e6398b412cbf073 100644 (file)
@@ -4,6 +4,7 @@
 #include "lockfile.h"
 #include "parse-options.h"
 #include "refs.h"
+#include "object-store.h"
 #include "commit.h"
 #include "tree.h"
 #include "tree-walk.h"
@@ -1120,10 +1121,12 @@ int cmd_checkout(int argc, const char **argv, const char *prefix)
                OPT_SET_INT('t', "track",  &opts.track, N_("set upstream info for new branch"),
                        BRANCH_TRACK_EXPLICIT),
                OPT_STRING(0, "orphan", &opts.new_orphan_branch, N_("new-branch"), N_("new unparented branch")),
-               OPT_SET_INT('2', "ours", &opts.writeout_stage, N_("checkout our version for unmerged files"),
-                           2),
-               OPT_SET_INT('3', "theirs", &opts.writeout_stage, N_("checkout their version for unmerged files"),
-                           3),
+               OPT_SET_INT_F('2', "ours", &opts.writeout_stage,
+                             N_("checkout our version for unmerged files"),
+                             2, PARSE_OPT_NONEG),
+               OPT_SET_INT_F('3', "theirs", &opts.writeout_stage,
+                             N_("checkout their version for unmerged files"),
+                             3, PARSE_OPT_NONEG),
                OPT__FORCE(&opts.force, N_("force checkout (throw away local modifications)"),
                           PARSE_OPT_NOCOMPLETE),
                OPT_BOOL('m', "merge", &opts.merge, N_("perform a 3-way merge with the new branch")),
index fad533a0a7382f10ecf48a738c955734ad5c0d96..ab402c204cbcaea6190608753311605d37ca83d2 100644 (file)
@@ -16,6 +16,7 @@
 #include "column.h"
 #include "color.h"
 #include "pathspec.h"
+#include "help.h"
 
 static int force = -1; /* unset */
 static int interactive;
@@ -42,6 +43,15 @@ enum color_clean {
        CLEAN_COLOR_ERROR = 5
 };
 
+static const char *color_interactive_slots[] = {
+       [CLEAN_COLOR_ERROR]  = "error",
+       [CLEAN_COLOR_HEADER] = "header",
+       [CLEAN_COLOR_HELP]   = "help",
+       [CLEAN_COLOR_PLAIN]  = "plain",
+       [CLEAN_COLOR_PROMPT] = "prompt",
+       [CLEAN_COLOR_RESET]  = "reset",
+};
+
 static int clean_use_color = -1;
 static char clean_colors[][COLOR_MAXLEN] = {
        [CLEAN_COLOR_ERROR] = GIT_COLOR_BOLD_RED,
@@ -82,22 +92,7 @@ struct menu_stuff {
        void *stuff;
 };
 
-static int parse_clean_color_slot(const char *var)
-{
-       if (!strcasecmp(var, "reset"))
-               return CLEAN_COLOR_RESET;
-       if (!strcasecmp(var, "plain"))
-               return CLEAN_COLOR_PLAIN;
-       if (!strcasecmp(var, "prompt"))
-               return CLEAN_COLOR_PROMPT;
-       if (!strcasecmp(var, "header"))
-               return CLEAN_COLOR_HEADER;
-       if (!strcasecmp(var, "help"))
-               return CLEAN_COLOR_HELP;
-       if (!strcasecmp(var, "error"))
-               return CLEAN_COLOR_ERROR;
-       return -1;
-}
+define_list_config_array(color_interactive_slots);
 
 static int git_clean_config(const char *var, const char *value, void *cb)
 {
@@ -113,7 +108,7 @@ static int git_clean_config(const char *var, const char *value, void *cb)
                return 0;
        }
        if (skip_prefix(var, "color.interactive.", &slot_name)) {
-               int slot = parse_clean_color_slot(slot_name);
+               int slot = LOOKUP_CONFIG(color_interactive_slots, slot_name);
                if (slot < 0)
                        return 0;
                if (!value)
index 99e73dae8595d37f704d0fe7f7fd84a190edfcf6..1d939af9d8cb93bd233549c44d891f3f9df803cc 100644 (file)
@@ -15,6 +15,7 @@
 #include "fetch-pack.h"
 #include "refs.h"
 #include "refspec.h"
+#include "object-store.h"
 #include "tree.h"
 #include "tree-walk.h"
 #include "unpack-trees.h"
@@ -1077,7 +1078,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
        if (option_required_reference.nr || option_optional_reference.nr)
                setup_reference();
 
-       refspec_item_init(&refspec, value.buf, REFSPEC_FETCH);
+       refspec_item_init_or_die(&refspec, value.buf, REFSPEC_FETCH);
 
        strbuf_reset(&value);
 
index ecf42191da10cd2e87360f001d5493e792b9682e..9fbd3529fb17bf46608a3a7617671adcd7036450 100644 (file)
@@ -5,6 +5,7 @@
  */
 #include "cache.h"
 #include "config.h"
+#include "object-store.h"
 #include "commit.h"
 #include "tree.h"
 #include "builtin.h"
index a842fea666a33bb2191d10cf452a255754bb44e6..158e3f843afbf889e26328f29cb2894f17da4ee1 100644 (file)
@@ -32,6 +32,7 @@
 #include "column.h"
 #include "sequencer.h"
 #include "mailmap.h"
+#include "help.h"
 
 static const char * const builtin_commit_usage[] = {
        N_("git commit [<options>] [--] <pathspec>..."),
@@ -66,6 +67,18 @@ N_("If you wish to skip this commit, use:\n"
 "Then \"git cherry-pick --continue\" will resume cherry-picking\n"
 "the remaining commits.\n");
 
+static const char *color_status_slots[] = {
+       [WT_STATUS_HEADER]        = "header",
+       [WT_STATUS_UPDATED]       = "updated",
+       [WT_STATUS_CHANGED]       = "changed",
+       [WT_STATUS_UNTRACKED]     = "untracked",
+       [WT_STATUS_NOBRANCH]      = "noBranch",
+       [WT_STATUS_UNMERGED]      = "unmerged",
+       [WT_STATUS_LOCAL_BRANCH]  = "localBranch",
+       [WT_STATUS_REMOTE_BRANCH] = "remoteBranch",
+       [WT_STATUS_ONBRANCH]      = "branch",
+};
+
 static const char *use_message_buffer;
 static struct lock_file index_lock; /* real index */
 static struct lock_file false_lock; /* used only for partial commits */
@@ -155,9 +168,9 @@ static int opt_parse_rename_score(const struct option *opt, const char *arg, int
 
 static void determine_whence(struct wt_status *s)
 {
-       if (file_exists(git_path_merge_head()))
+       if (file_exists(git_path_merge_head(the_repository)))
                whence = FROM_MERGE;
-       else if (file_exists(git_path_cherry_pick_head())) {
+       else if (file_exists(git_path_cherry_pick_head(the_repository))) {
                whence = FROM_CHERRY_PICK;
                if (file_exists(git_path_seq_dir()))
                        sequencer_in_use = 1;
@@ -705,21 +718,21 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
                if (have_option_m)
                        strbuf_addbuf(&sb, &message);
                hook_arg1 = "message";
-       } else if (!stat(git_path_merge_msg(), &statbuf)) {
+       } else if (!stat(git_path_merge_msg(the_repository), &statbuf)) {
                /*
                 * prepend SQUASH_MSG here if it exists and a
                 * "merge --squash" was originally performed
                 */
-               if (!stat(git_path_squash_msg(), &statbuf)) {
-                       if (strbuf_read_file(&sb, git_path_squash_msg(), 0) < 0)
+               if (!stat(git_path_squash_msg(the_repository), &statbuf)) {
+                       if (strbuf_read_file(&sb, git_path_squash_msg(the_repository), 0) < 0)
                                die_errno(_("could not read SQUASH_MSG"));
                        hook_arg1 = "squash";
                } else
                        hook_arg1 = "merge";
-               if (strbuf_read_file(&sb, git_path_merge_msg(), 0) < 0)
+               if (strbuf_read_file(&sb, git_path_merge_msg(the_repository), 0) < 0)
                        die_errno(_("could not read MERGE_MSG"));
-       } else if (!stat(git_path_squash_msg(), &statbuf)) {
-               if (strbuf_read_file(&sb, git_path_squash_msg(), 0) < 0)
+       } else if (!stat(git_path_squash_msg(the_repository), &statbuf)) {
+               if (strbuf_read_file(&sb, git_path_squash_msg(the_repository), 0) < 0)
                        die_errno(_("could not read SQUASH_MSG"));
                hook_arg1 = "squash";
        } else if (template_file) {
@@ -800,8 +813,8 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
                                        "       %s\n"
                                        "and try again.\n"),
                                whence == FROM_MERGE ?
-                                       git_path_merge_head() :
-                                       git_path_cherry_pick_head());
+                                       git_path_merge_head(the_repository) :
+                                       git_path_cherry_pick_head(the_repository));
                }
 
                fprintf(s->fp, "\n");
@@ -1183,27 +1196,14 @@ static int dry_run_commit(int argc, const char **argv, const char *prefix,
        return commitable ? 0 : 1;
 }
 
+define_list_config_array_extra(color_status_slots, {"added"});
+
 static int parse_status_slot(const char *slot)
 {
-       if (!strcasecmp(slot, "header"))
-               return WT_STATUS_HEADER;
-       if (!strcasecmp(slot, "branch"))
-               return WT_STATUS_ONBRANCH;
-       if (!strcasecmp(slot, "updated") || !strcasecmp(slot, "added"))
+       if (!strcasecmp(slot, "added"))
                return WT_STATUS_UPDATED;
-       if (!strcasecmp(slot, "changed"))
-               return WT_STATUS_CHANGED;
-       if (!strcasecmp(slot, "untracked"))
-               return WT_STATUS_UNTRACKED;
-       if (!strcasecmp(slot, "nobranch"))
-               return WT_STATUS_NOBRANCH;
-       if (!strcasecmp(slot, "unmerged"))
-               return WT_STATUS_UNMERGED;
-       if (!strcasecmp(slot, "localBranch"))
-               return WT_STATUS_LOCAL_BRANCH;
-       if (!strcasecmp(slot, "remoteBranch"))
-               return WT_STATUS_REMOTE_BRANCH;
-       return -1;
+
+       return LOOKUP_CONFIG(color_status_slots, slot);
 }
 
 static int git_status_config(const char *k, const char *v, void *cb)
@@ -1564,7 +1564,7 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
                if (!reflog_msg)
                        reflog_msg = "commit (merge)";
                pptr = commit_list_append(current_head, pptr);
-               fp = xfopen(git_path_merge_head(), "r");
+               fp = xfopen(git_path_merge_head(the_repository), "r");
                while (strbuf_getline_lf(&m, fp) != EOF) {
                        struct commit *parent;
 
@@ -1575,8 +1575,8 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
                }
                fclose(fp);
                strbuf_release(&m);
-               if (!stat(git_path_merge_mode(), &statbuf)) {
-                       if (strbuf_read_file(&sb, git_path_merge_mode(), 0) < 0)
+               if (!stat(git_path_merge_mode(the_repository), &statbuf)) {
+                       if (strbuf_read_file(&sb, git_path_merge_mode(the_repository), 0) < 0)
                                die_errno(_("could not read MERGE_MODE"));
                        if (!strcmp(sb.buf, "no-ff"))
                                allow_fast_forward = 0;
@@ -1639,12 +1639,12 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
                die("%s", err.buf);
        }
 
-       unlink(git_path_cherry_pick_head());
-       unlink(git_path_revert_head());
-       unlink(git_path_merge_head());
-       unlink(git_path_merge_msg());
-       unlink(git_path_merge_mode());
-       unlink(git_path_squash_msg());
+       unlink(git_path_cherry_pick_head(the_repository));
+       unlink(git_path_revert_head(the_repository));
+       unlink(git_path_merge_head(the_repository));
+       unlink(git_path_merge_msg(the_repository));
+       unlink(git_path_merge_mode(the_repository));
+       unlink(git_path_squash_msg(the_repository));
 
        if (commit_index_files())
                die (_("Repository has been updated, but unable to write\n"
index cf1ae77d7c705cdfb34bdb5403bad8db4148eccf..1e87f68d5eeeaa81b5d67a93b80b5c2eb1b0b797 100644 (file)
 #include "hashmap.h"
 #include "argv-array.h"
 #include "run-command.h"
+#include "object-store.h"
 #include "revision.h"
 #include "list-objects.h"
+#include "commit-slab.h"
 
 #define MAX_TAGS       (FLAG_BITS - 1)
 
+define_commit_slab(commit_names, struct commit_name *);
+
 static const char * const describe_usage[] = {
        N_("git describe [<options>] [<commit-ish>...]"),
        N_("git describe [<options>] --dirty"),
@@ -37,6 +41,7 @@ static struct string_list patterns = STRING_LIST_INIT_NODUP;
 static struct string_list exclude_patterns = STRING_LIST_INIT_NODUP;
 static int always;
 static const char *suffix, *dirty, *broken;
+static struct commit_names commit_names;
 
 /* diff-index command arguments to check if working tree is dirty. */
 static const char *diff_index_args[] = {
@@ -321,11 +326,14 @@ static void describe_commit(struct object_id *oid, struct strbuf *dst)
        if (!have_util) {
                struct hashmap_iter iter;
                struct commit *c;
-               struct commit_name *n = hashmap_iter_first(&names, &iter);
+               struct commit_name *n;
+
+               init_commit_names(&commit_names);
+               n = hashmap_iter_first(&names, &iter);
                for (; n; n = hashmap_iter_next(&iter)) {
                        c = lookup_commit_reference_gently(&n->peeled, 1);
                        if (c)
-                               c->util = n;
+                               *commit_names_at(&commit_names, c) = n;
                }
                have_util = 1;
        }
@@ -336,8 +344,11 @@ static void describe_commit(struct object_id *oid, struct strbuf *dst)
        while (list) {
                struct commit *c = pop_commit(&list);
                struct commit_list *parents = c->parents;
+               struct commit_name **slot;
+
                seen_commits++;
-               n = c->util;
+               slot = commit_names_peek(&commit_names, c);
+               n = slot ? *slot : NULL;
                if (n) {
                        if (!tags && !all && n->prio < 2) {
                                unannotated_cnt++;
index bfefff3a84896a79fbed42eec1121286edcc86dd..b709b6e9842c68597b5bb7149db4054ef980fc53 100644 (file)
@@ -352,6 +352,13 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
        rev.diffopt.flags.allow_external = 1;
        rev.diffopt.flags.allow_textconv = 1;
 
+       /*
+        * Default to intent-to-add entries invisible in the
+        * index. This makes them show up as new files in diff-files
+        * and not at all in diff-cached.
+        */
+       rev.diffopt.ita_invisible_in_index = 1;
+
        if (nongit)
                die(_("Not a git repository"));
        argc = setup_revisions(argc, argv, &rev, NULL);
index bc97d4aef2db2d76e3ffddfc4759e52688f3974e..51f6c9cdb460f5d35dc1abc199604ac5fa912dda 100644 (file)
@@ -20,6 +20,7 @@
 #include "argv-array.h"
 #include "strbuf.h"
 #include "lockfile.h"
+#include "object-store.h"
 #include "dir.h"
 
 static char *diff_gui_tool;
index 6c9768742fd4faecb3719e9c87997df3d490502a..9ee6a4d2e8f7e728c6c8deca277f6b1f2fcd9530 100644 (file)
@@ -8,6 +8,7 @@
 #include "config.h"
 #include "refs.h"
 #include "refspec.h"
+#include "object-store.h"
 #include "commit.h"
 #include "object.h"
 #include "tag.h"
@@ -22,6 +23,7 @@
 #include "quote.h"
 #include "remote.h"
 #include "blob.h"
+#include "commit-slab.h"
 
 static const char *fast_export_usage[] = {
        N_("git fast-export [rev-list-opts]"),
@@ -38,6 +40,7 @@ static int full_tree;
 static struct string_list extra_refs = STRING_LIST_INIT_NODUP;
 static struct refspec refspecs = REFSPEC_INIT_FETCH;
 static int anonymize;
+static struct revision_sources revision_sources;
 
 static int parse_opt_signed_tag_mode(const struct option *opt,
                                     const char *arg, int unset)
@@ -589,7 +592,7 @@ static void handle_commit(struct commit *commit, struct rev_info *rev,
                if (!S_ISGITLINK(diff_queued_diff.queue[i]->two->mode))
                        export_blob(&diff_queued_diff.queue[i]->two->oid);
 
-       refname = commit->util;
+       refname = *revision_sources_at(&revision_sources, commit);
        if (anonymize) {
                refname = anonymize_refname(refname);
                anonymize_ident_line(&committer, &committer_end);
@@ -861,10 +864,11 @@ static void get_tags_and_duplicates(struct rev_cmdline_info *info)
                 * This ref will not be updated through a commit, lets make
                 * sure it gets properly updated eventually.
                 */
-               if (commit->util || commit->object.flags & SHOWN)
+               if (*revision_sources_at(&revision_sources, commit) ||
+                   commit->object.flags & SHOWN)
                        string_list_append(&extra_refs, full_name)->util = commit;
-               if (!commit->util)
-                       commit->util = full_name;
+               if (!*revision_sources_at(&revision_sources, commit))
+                       *revision_sources_at(&revision_sources, commit) = full_name;
        }
 }
 
@@ -1028,8 +1032,9 @@ int cmd_fast_export(int argc, const char **argv, const char *prefix)
        git_config(git_default_config, NULL);
 
        init_revisions(&revs, prefix);
+       init_revision_sources(&revision_sources);
        revs.topo_order = 1;
-       revs.show_source = 1;
+       revs.sources = &revision_sources;
        revs.rewrite_parents = 1;
        argc = parse_options(argc, argv, prefix, options, fast_export_usage,
                        PARSE_OPT_KEEP_ARGV0 | PARSE_OPT_KEEP_UNKNOWN);
index ea5b9669ad1f40da56a8565cada56e5991d24206..83f36d7cdebdede92274e661d3c97d6b999a8518 100644 (file)
@@ -6,6 +6,7 @@
 #include "repository.h"
 #include "refs.h"
 #include "refspec.h"
+#include "object-store.h"
 #include "commit.h"
 #include "builtin.h"
 #include "string-list.h"
@@ -777,7 +778,7 @@ static int store_updated_refs(const char *raw_url, const char *remote_name,
        const char *what, *kind;
        struct ref *rm;
        char *url;
-       const char *filename = dry_run ? "/dev/null" : git_path_fetch_head();
+       const char *filename = dry_run ? "/dev/null" : git_path_fetch_head(the_repository);
        int want_status;
        int summary_width = transport_summary_width(ref_map);
 
@@ -1029,7 +1030,7 @@ static void check_not_current_branch(struct ref *ref_map)
 
 static int truncate_fetch_head(void)
 {
-       const char *filename = git_path_fetch_head();
+       const char *filename = git_path_fetch_head(the_repository);
        FILE *fp = fopen_for_writing(filename);
 
        if (!fp)
@@ -1449,7 +1450,7 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
        if (unshallow) {
                if (depth)
                        die(_("--depth and --unshallow cannot be used together"));
-               else if (!is_repository_shallow())
+               else if (!is_repository_shallow(the_repository))
                        die(_("--unshallow on a complete repository does not make sense"));
                else
                        depth = xstrfmt("%d", INFINITE_DEPTH);
index bd680be6874da29cf776c84468a60888beea53fb..1b526adb3a95bbef0eabf8d154f0f6f9da1ef214 100644 (file)
@@ -2,6 +2,7 @@
 #include "cache.h"
 #include "config.h"
 #include "refs.h"
+#include "object-store.h"
 #include "commit.h"
 #include "diff.h"
 #include "revision.h"
index a9a3a198c3b47197cb847ba32a33177f1a45f428..9ada4f4dfd8747d3888203749f057915f7c9ab46 100644 (file)
@@ -6,6 +6,7 @@
  */
 #include "builtin.h"
 #include "config.h"
+#include "object-store.h"
 #include "blob.h"
 #include "quote.h"
 #include "parse-options.h"
index 58e0a5507f10365b43eaa2698da2c8bba18b12ed..8d4f6dd30152e70d1379a956793b1086fba7f5b6 100644 (file)
@@ -37,6 +37,7 @@ static const char *html_path;
 
 static int show_all = 0;
 static int show_guides = 0;
+static int show_config;
 static int verbose;
 static unsigned int colopts;
 static enum help_format help_format = HELP_FORMAT_NONE;
@@ -45,6 +46,8 @@ static struct option builtin_help_options[] = {
        OPT_BOOL('a', "all", &show_all, N_("print all available commands")),
        OPT_HIDDEN_BOOL(0, "exclude-guides", &exclude_guides, N_("exclude guides")),
        OPT_BOOL('g', "guides", &show_guides, N_("print list of useful guides")),
+       OPT_BOOL('c', "config", &show_config, N_("print all configuration variable names")),
+       OPT_SET_INT_F(0, "config-for-completion", &show_config, "", 2, PARSE_OPT_HIDDEN),
        OPT_SET_INT('m', "man", &help_format, N_("show man page"), HELP_FORMAT_MAN),
        OPT_SET_INT('w', "web", &help_format, N_("show manual in web browser"),
                        HELP_FORMAT_WEB),
@@ -444,6 +447,19 @@ int cmd_help(int argc, const char **argv, const char *prefix)
                list_commands(colopts, &main_cmds, &other_cmds);
        }
 
+       if (show_config) {
+               int for_human = show_config == 1;
+
+               if (!for_human) {
+                       list_config_help(for_human);
+                       return 0;
+               }
+               setup_pager();
+               list_config_help(for_human);
+               printf("\n%s\n", _("'git help config' for more information"));
+               return 0;
+       }
+
        if (show_guides)
                list_common_guides_help();
 
index 4686f68594829a85e9d73bcf0b6298c1e61b6852..c77af797555651930f7884fc52576a0761e627ce 100644 (file)
@@ -7,6 +7,7 @@
 #include "cache.h"
 #include "config.h"
 #include "refs.h"
+#include "object-store.h"
 #include "color.h"
 #include "commit.h"
 #include "diff.h"
@@ -28,6 +29,7 @@
 #include "mailmap.h"
 #include "gpg-interface.h"
 #include "progress.h"
+#include "commit-slab.h"
 
 #define MAIL_DEFAULT_WRAP 72
 
@@ -148,6 +150,7 @@ static void cmd_log_init_finish(int argc, const char **argv, const char *prefix,
        static struct string_list decorate_refs_include = STRING_LIST_INIT_NODUP;
        struct decoration_filter decoration_filter = {&decorate_refs_include,
                                                      &decorate_refs_exclude};
+       static struct revision_sources revision_sources;
 
        const struct option builtin_log_options[] = {
                OPT__QUIET(&quiet, N_("suppress diff output")),
@@ -194,8 +197,10 @@ static void cmd_log_init_finish(int argc, const char **argv, const char *prefix,
            rev->diffopt.filter || rev->diffopt.flags.follow_renames)
                rev->always_show_header = 0;
 
-       if (source)
-               rev->show_source = 1;
+       if (source) {
+               init_revision_sources(&revision_sources);
+               rev->sources = &revision_sources;
+       }
 
        if (mailmap) {
                rev->mailmap = xcalloc(1, sizeof(struct string_list));
@@ -1337,6 +1342,8 @@ static struct commit *get_base_commit(const char *base_commit,
        return base;
 }
 
+define_commit_slab(commit_base, int);
+
 static void prepare_bases(struct base_tree_info *bases,
                          struct commit *base,
                          struct commit **list,
@@ -1345,11 +1352,13 @@ static void prepare_bases(struct base_tree_info *bases,
        struct commit *commit;
        struct rev_info revs;
        struct diff_options diffopt;
+       struct commit_base commit_base;
        int i;
 
        if (!base)
                return;
 
+       init_commit_base(&commit_base);
        diff_setup(&diffopt);
        diffopt.flags.recursive = 1;
        diff_setup_done(&diffopt);
@@ -1362,7 +1371,7 @@ static void prepare_bases(struct base_tree_info *bases,
        for (i = 0; i < total; i++) {
                list[i]->object.flags &= ~UNINTERESTING;
                add_pending_object(&revs, &list[i]->object, "rev_list");
-               list[i]->util = (void *)1;
+               *commit_base_at(&commit_base, list[i]) = 1;
        }
        base->object.flags |= UNINTERESTING;
        add_pending_object(&revs, &base->object, "base");
@@ -1376,7 +1385,7 @@ static void prepare_bases(struct base_tree_info *bases,
        while ((commit = get_revision(&revs)) != NULL) {
                struct object_id oid;
                struct object_id *patch_id;
-               if (commit->util)
+               if (*commit_base_at(&commit_base, commit))
                        continue;
                if (commit_patch_id(commit, &diffopt, &oid, 0))
                        die(_("cannot get patch id"));
@@ -1385,6 +1394,7 @@ static void prepare_bases(struct base_tree_info *bases,
                oidcpy(patch_id, &oid);
                bases->nr_patch_id++;
        }
+       clear_commit_base(&commit_base);
 }
 
 static void print_bases(struct base_tree_info *bases, FILE *file)
index 409da4e8351f6d8719671d3176f0ea34fe9b756c..fe3b952cb3007d12c2e94a08b10486ed301c4769 100644 (file)
@@ -5,6 +5,7 @@
  */
 #include "cache.h"
 #include "config.h"
+#include "object-store.h"
 #include "blob.h"
 #include "tree.h"
 #include "commit.h"
index bf01e05808313da20ed73c37d0d150c4ddb45587..8a8d579752050487269bcc63aac4713c0b8ebc1e 100644 (file)
@@ -1,6 +1,7 @@
 #include "builtin.h"
 #include "tree-walk.h"
 #include "xdiff-interface.h"
+#include "object-store.h"
 #include "blob.h"
 #include "exec-cmd.h"
 #include "merge-blobs.h"
index b00d6f4821e7dc4067997bf515702edcfa413501..d1b547d97376d74e02e8f3dae3a1afb64dd2b780 100644 (file)
@@ -247,9 +247,9 @@ static struct option builtin_merge_options[] = {
 /* Cleans up metadata that is uninteresting after a succeeded merge. */
 static void drop_save(void)
 {
-       unlink(git_path_merge_head());
-       unlink(git_path_merge_msg());
-       unlink(git_path_merge_mode());
+       unlink(git_path_merge_head(the_repository));
+       unlink(git_path_merge_msg(the_repository));
+       unlink(git_path_merge_mode(the_repository));
 }
 
 static int save_state(struct object_id *stash)
@@ -382,7 +382,7 @@ static void squash_message(struct commit *commit, struct commit_list *remotehead
                        oid_to_hex(&commit->object.oid));
                pretty_print_commit(&ctx, commit, &out);
        }
-       write_file_buf(git_path_squash_msg(), out.buf, out.len);
+       write_file_buf(git_path_squash_msg(the_repository), out.buf, out.len);
        strbuf_release(&out);
 }
 
@@ -445,6 +445,7 @@ static void merge_name(const char *remote, struct strbuf *msg)
        struct object_id branch_head;
        struct strbuf buf = STRBUF_INIT;
        struct strbuf bname = STRBUF_INIT;
+       struct merge_remote_desc *desc;
        const char *ptr;
        char *found_ref;
        int len, early;
@@ -517,16 +518,13 @@ static void merge_name(const char *remote, struct strbuf *msg)
                strbuf_release(&truname);
        }
 
-       if (remote_head->util) {
-               struct merge_remote_desc *desc;
-               desc = merge_remote_util(remote_head);
-               if (desc && desc->obj && desc->obj->type == OBJ_TAG) {
-                       strbuf_addf(msg, "%s\t\t%s '%s'\n",
-                                   oid_to_hex(&desc->obj->oid),
-                                   type_name(desc->obj->type),
-                                   remote);
-                       goto cleanup;
-               }
+       desc = merge_remote_util(remote_head);
+       if (desc && desc->obj && desc->obj->type == OBJ_TAG) {
+               strbuf_addf(msg, "%s\t\t%s '%s'\n",
+                           oid_to_hex(&desc->obj->oid),
+                           type_name(desc->obj->type),
+                           remote);
+               goto cleanup;
        }
 
        strbuf_addf(msg, "%s\t\tcommit '%s'\n",
@@ -743,7 +741,7 @@ static void add_strategies(const char *string, unsigned attr)
 
 static void read_merge_msg(struct strbuf *msg)
 {
-       const char *filename = git_path_merge_msg();
+       const char *filename = git_path_merge_msg(the_repository);
        strbuf_reset(msg);
        if (strbuf_read_file(msg, filename, 0) < 0)
                die_errno(_("Could not read from '%s'"), filename);
@@ -780,18 +778,18 @@ static void prepare_to_commit(struct commit_list *remoteheads)
        if (signoff)
                append_signoff(&msg, ignore_non_trailer(msg.buf, msg.len), 0);
        write_merge_heads(remoteheads);
-       write_file_buf(git_path_merge_msg(), msg.buf, msg.len);
+       write_file_buf(git_path_merge_msg(the_repository), msg.buf, msg.len);
        if (run_commit_hook(0 < option_edit, get_index_file(), "prepare-commit-msg",
-                           git_path_merge_msg(), "merge", NULL))
+                           git_path_merge_msg(the_repository), "merge", NULL))
                abort_commit(remoteheads, NULL);
        if (0 < option_edit) {
-               if (launch_editor(git_path_merge_msg(), NULL, NULL))
+               if (launch_editor(git_path_merge_msg(the_repository), NULL, NULL))
                        abort_commit(remoteheads, NULL);
        }
 
        if (verify_msg && run_commit_hook(0 < option_edit, get_index_file(),
                                          "commit-msg",
-                                         git_path_merge_msg(), NULL))
+                                         git_path_merge_msg(the_repository), NULL))
                abort_commit(remoteheads, NULL);
 
        read_merge_msg(&msg);
@@ -861,7 +859,7 @@ static int suggest_conflicts(void)
        FILE *fp;
        struct strbuf msgbuf = STRBUF_INIT;
 
-       filename = git_path_merge_msg();
+       filename = git_path_merge_msg(the_repository);
        fp = xfopen(filename, "a");
 
        append_conflicts_hint(&msgbuf);
@@ -934,19 +932,22 @@ static void write_merge_heads(struct commit_list *remoteheads)
        for (j = remoteheads; j; j = j->next) {
                struct object_id *oid;
                struct commit *c = j->item;
-               if (c->util && merge_remote_util(c)->obj) {
-                       oid = &merge_remote_util(c)->obj->oid;
+               struct merge_remote_desc *desc;
+
+               desc = merge_remote_util(c);
+               if (desc && desc->obj) {
+                       oid = &desc->obj->oid;
                } else {
                        oid = &c->object.oid;
                }
                strbuf_addf(&buf, "%s\n", oid_to_hex(oid));
        }
-       write_file_buf(git_path_merge_head(), buf.buf, buf.len);
+       write_file_buf(git_path_merge_head(the_repository), buf.buf, buf.len);
 
        strbuf_reset(&buf);
        if (fast_forward == FF_NO)
                strbuf_addstr(&buf, "no-ff");
-       write_file_buf(git_path_merge_mode(), buf.buf, buf.len);
+       write_file_buf(git_path_merge_mode(the_repository), buf.buf, buf.len);
        strbuf_release(&buf);
 }
 
@@ -954,7 +955,8 @@ static void write_merge_state(struct commit_list *remoteheads)
 {
        write_merge_heads(remoteheads);
        strbuf_addch(&merge_msg, '\n');
-       write_file_buf(git_path_merge_msg(), merge_msg.buf, merge_msg.len);
+       write_file_buf(git_path_merge_msg(the_repository), merge_msg.buf,
+                      merge_msg.len);
 }
 
 static int default_edit_option(void)
@@ -1037,7 +1039,7 @@ static void handle_fetch_head(struct commit_list **remotes, struct strbuf *merge
        if (!merge_names)
                merge_names = &fetch_head_file;
 
-       filename = git_path_fetch_head();
+       filename = git_path_fetch_head(the_repository);
        fd = open(filename, O_RDONLY);
        if (fd < 0)
                die_errno(_("could not open '%s' for reading"), filename);
@@ -1185,14 +1187,15 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
        branch = branch_to_free = resolve_refdup("HEAD", 0, &head_oid, NULL);
        if (branch)
                skip_prefix(branch, "refs/heads/", &branch);
+
+       init_diff_ui_defaults();
+       git_config(git_merge_config, NULL);
+
        if (!branch || is_null_oid(&head_oid))
                head_commit = NULL;
        else
                head_commit = lookup_commit_or_die(&head_oid, "HEAD");
 
-       init_diff_ui_defaults();
-       git_config(git_merge_config, NULL);
-
        if (branch_mergeoptions)
                parse_branch_merge_options(branch_mergeoptions);
        argc = parse_options(argc, argv, prefix, builtin_merge_options,
@@ -1211,7 +1214,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
                        usage_msg_opt(_("--abort expects no arguments"),
                              builtin_merge_usage, builtin_merge_options);
 
-               if (!file_exists(git_path_merge_head()))
+               if (!file_exists(git_path_merge_head(the_repository)))
                        die(_("There is no merge to abort (MERGE_HEAD missing)."));
 
                /* Invoke 'git reset --merge' */
@@ -1227,7 +1230,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
                        usage_msg_opt(_("--continue expects no arguments"),
                              builtin_merge_usage, builtin_merge_options);
 
-               if (!file_exists(git_path_merge_head()))
+               if (!file_exists(git_path_merge_head(the_repository)))
                        die(_("There is no merge in progress (MERGE_HEAD missing)."));
 
                /* Invoke 'git commit' */
@@ -1238,7 +1241,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
        if (read_cache_unmerged())
                die_resolve_conflict("merge");
 
-       if (file_exists(git_path_merge_head())) {
+       if (file_exists(git_path_merge_head(the_repository))) {
                /*
                 * There is no unmerged entry, don't advise 'git
                 * add/rm <file>', just 'git commit'.
@@ -1249,7 +1252,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
                else
                        die(_("You have not concluded your merge (MERGE_HEAD exists)."));
        }
-       if (file_exists(git_path_cherry_pick_head())) {
+       if (file_exists(git_path_cherry_pick_head(the_repository))) {
                if (advice_resolve_conflict)
                        die(_("You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
                            "Please, commit your changes before you merge."));
index 82a6e860775f872a9145e32ee9d8f315b70ad2ea..6fb7dc8578d68526c64179d7fc43aaa5a72445f6 100644 (file)
@@ -1,6 +1,7 @@
 #include "builtin.h"
 #include "tag.h"
 #include "replace-object.h"
+#include "object-store.h"
 
 /*
  * A signature file has a very simple fixed format: four lines
index bb76b469fd1f57319f3d202c1e2658d77962d698..2dc4ad6ba8f227a6a8a46bac62048959220411ec 100644 (file)
@@ -7,6 +7,7 @@
 #include "quote.h"
 #include "tree.h"
 #include "parse-options.h"
+#include "object-store.h"
 
 static struct treeent {
        unsigned mode;
index 387ddf85d21a443f060dbb212fe95a983d9e4f58..0eb440359dd40d51f2802979218bd20a2d3d732e 100644 (file)
@@ -6,6 +6,7 @@
 #include "refs.h"
 #include "parse-options.h"
 #include "sha1-lookup.h"
+#include "commit-slab.h"
 
 #define CUTOFF_DATE_SLOP 86400 /* one day */
 
@@ -17,11 +18,26 @@ typedef struct rev_name {
        int from_tag;
 } rev_name;
 
+define_commit_slab(commit_rev_name, struct rev_name *);
+
 static timestamp_t cutoff = TIME_MAX;
+static struct commit_rev_name rev_names;
 
 /* How many generations are maximally preferred over _one_ merge traversal? */
 #define MERGE_TRAVERSAL_WEIGHT 65535
 
+static struct rev_name *get_commit_rev_name(struct commit *commit)
+{
+       struct rev_name **slot = commit_rev_name_peek(&rev_names, commit);
+
+       return slot ? *slot : NULL;
+}
+
+static void set_commit_rev_name(struct commit *commit, struct rev_name *name)
+{
+       *commit_rev_name_at(&rev_names, commit) = name;
+}
+
 static int is_better_name(struct rev_name *name,
                          const char *tip_name,
                          timestamp_t taggerdate,
@@ -65,7 +81,7 @@ static void name_rev(struct commit *commit,
                int generation, int distance, int from_tag,
                int deref)
 {
-       struct rev_name *name = (struct rev_name *)commit->util;
+       struct rev_name *name = get_commit_rev_name(commit);
        struct commit_list *parents;
        int parent_number = 1;
        char *to_free = NULL;
@@ -84,7 +100,7 @@ static void name_rev(struct commit *commit,
 
        if (name == NULL) {
                name = xmalloc(sizeof(rev_name));
-               commit->util = name;
+               set_commit_rev_name(commit, name);
                goto copy_data;
        } else if (is_better_name(name, tip_name, taggerdate,
                                  generation, distance, from_tag)) {
@@ -296,7 +312,7 @@ static const char *get_rev_name(const struct object *o, struct strbuf *buf)
        if (o->type != OBJ_COMMIT)
                return get_exact_ref_match(o);
        c = (struct commit *) o;
-       n = c->util;
+       n = get_commit_rev_name(c);
        if (!n)
                return NULL;
 
@@ -413,6 +429,7 @@ int cmd_name_rev(int argc, const char **argv, const char *prefix)
                OPT_END(),
        };
 
+       init_commit_rev_name(&rev_names);
        git_config(git_default_config, NULL);
        argc = parse_options(argc, argv, prefix, opts, name_rev_usage, 0);
        if (all + transform_stdin + !!argc > 1) {
index 6981e2d906f43b06cac5bd11cb0d627571be09d5..a0a184004097a0892b3eaafae6ad31b331d6efd3 100644 (file)
@@ -11,6 +11,7 @@
 #include "config.h"
 #include "builtin.h"
 #include "notes.h"
+#include "object-store.h"
 #include "blob.h"
 #include "pretty.h"
 #include "refs.h"
index 71056d8294d7f4bcfdcbc9bb292a5d17faf49252..69d3d7b82af8b69b589327f9420bb02bab339a25 100644 (file)
@@ -2969,7 +2969,7 @@ static void get_object_list(int ac, const char **av)
        setup_revisions(ac, av, &revs, NULL);
 
        /* make sure shallows are read */
-       is_repository_shallow();
+       is_repository_shallow(the_repository);
 
        while (fgets(line, sizeof(line), stdin) != NULL) {
                int len = strlen(line);
@@ -2987,7 +2987,7 @@ static void get_object_list(int ac, const char **av)
                                struct object_id oid;
                                if (get_oid_hex(line + 10, &oid))
                                        die("not an SHA-1 '%s'", line + 10);
-                               register_shallow(&oid);
+                               register_shallow(the_repository, &oid);
                                use_bitmap_index = 0;
                                continue;
                        }
@@ -3299,7 +3299,7 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
                use_bitmap_index = use_bitmap_index_default;
 
        /* "hard" reasons not to use bitmaps; these just won't work at all */
-       if (!use_internal_rev_list || (!pack_to_stdout && write_bitmap_index) || is_repository_shallow())
+       if (!use_internal_rev_list || (!pack_to_stdout && write_bitmap_index) || is_repository_shallow(the_repository))
                use_bitmap_index = 0;
 
        if (pack_to_stdout || !rev_list_all)
index 518ffbea1397faa35102dc088a3830e40c9b13a6..70ec35aa0582386d233b4d49d4bbdbb9cef985cb 100644 (file)
@@ -6,6 +6,7 @@
 #include "reachable.h"
 #include "parse-options.h"
 #include "progress.h"
+#include "object-store.h"
 
 static const char * const prune_usage[] = {
        N_("git prune [-n] [-v] [--progress] [--expire <time>] [--] [<head>...]"),
@@ -159,7 +160,7 @@ int cmd_prune(int argc, const char **argv, const char *prefix)
        remove_temporary_files(s);
        free(s);
 
-       if (is_repository_shallow())
+       if (is_repository_shallow(the_repository))
                prune_shallow(show_only);
 
        return 0;
index 1f2ecf3a88d95de5f819285aa1fc1558b63b6c4e..7197b22b165576ed599f1d01528c5ca2527032b1 100644 (file)
@@ -356,7 +356,7 @@ static int git_pull_config(const char *var, const char *value, void *cb)
  */
 static void get_merge_heads(struct oid_array *merge_heads)
 {
-       const char *filename = git_path_fetch_head();
+       const char *filename = git_path_fetch_head(the_repository);
        FILE *fp;
        struct strbuf sb = STRBUF_INIT;
        struct object_id oid;
@@ -673,7 +673,7 @@ static const char *get_upstream_branch(const char *remote)
 }
 
 /**
- * Derives the remote tracking branch from the remote and refspec.
+ * Derives the remote-tracking branch from the remote and refspec.
  *
  * FIXME: The current implementation assumes the default mapping of
  * refs/heads/<branch_name> to refs/remotes/<remote_name>/<branch_name>.
@@ -684,7 +684,7 @@ static const char *get_tracking_branch(const char *remote, const char *refspec)
        const char *spec_src;
        const char *merge_branch;
 
-       refspec_item_init(&spec, refspec, REFSPEC_FETCH);
+       refspec_item_init_or_die(&spec, refspec, REFSPEC_FETCH);
        spec_src = spec.src;
        if (!*spec_src || !strcmp(spec_src, "HEAD"))
                spec_src = "HEAD";
@@ -711,7 +711,7 @@ static const char *get_tracking_branch(const char *remote, const char *refspec)
 
 /**
  * Given the repo and refspecs, sets fork_point to the point at which the
- * current branch forked from its remote tracking branch. Returns 0 on success,
+ * current branch forked from its remote-tracking branch. Returns 0 on success,
  * -1 on failure.
  */
 static int get_rebase_fork_point(struct object_id *fork_point, const char *repo,
@@ -864,7 +864,7 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
        if (read_cache_unmerged())
                die_resolve_conflict("pull");
 
-       if (file_exists(git_path_merge_head()))
+       if (file_exists(git_path_merge_head(the_repository)))
                die_conclude_merge();
 
        if (get_oid("HEAD", &orig_head))
index 68d36e0a56c3c72ad76c07af293d20e8254377d1..44c7c9ee827e9b0e05e60b207f216d4bda0bddc4 100644 (file)
@@ -25,6 +25,7 @@
 #include "tmp-objdir.h"
 #include "oidset.h"
 #include "packfile.h"
+#include "object-store.h"
 #include "protocol.h"
 
 static const char * const receive_pack_usage[] = {
@@ -905,7 +906,7 @@ static int update_shallow_ref(struct command *cmd, struct shallow_info *si)
         * not lose these new roots..
         */
        for (i = 0; i < extra.nr; i++)
-               register_shallow(&extra.oid[i]);
+               register_shallow(the_repository, &extra.oid[i]);
 
        si->shallow_ref[cmd->index] = 0;
        oid_array_clear(&extra);
index a48984d37e4f5f9e1f07a840582f82e202bd09f0..009119299529d5c93f02d5f8dc2363f6e29f0f9c 100644 (file)
@@ -1,6 +1,7 @@
 #include "builtin.h"
 #include "config.h"
 #include "lockfile.h"
+#include "object-store.h"
 #include "commit.h"
 #include "refs.h"
 #include "dir.h"
index 1a82d850a22c3bfc3176eeda3f8b061b6feb7dc4..c74ee886900176e900d80625144a8570ea127fb1 100644 (file)
@@ -8,6 +8,7 @@
 #include "run-command.h"
 #include "refs.h"
 #include "refspec.h"
+#include "object-store.h"
 #include "argv-array.h"
 
 static const char * const builtin_remote_usage[] = {
index 6da2411e14b9f94f309671e14124ef32d89ef528..deabda210127087188117e394e453373fa48991f 100644 (file)
@@ -487,7 +487,7 @@ static int create_graft(int argc, const char **argv, int force, int gentle)
 
 static int convert_graft_file(int force)
 {
-       const char *graft_file = get_graft_file();
+       const char *graft_file = get_graft_file(the_repository);
        FILE *fp = fopen_or_warn(graft_file, "r");
        struct strbuf buf = STRBUF_INIT, err = STRBUF_INIT;
        struct argv_array args = ARGV_ARRAY_INIT;
index a862c70fab99290b5faf3e700e88194589583329..ffe41c924b4810d79872fb5faf600a47e19508e5 100644 (file)
@@ -39,7 +39,7 @@ static const char *reset_type_names[] = {
 
 static inline int is_merge(void)
 {
-       return !access(git_path_merge_head(), F_OK);
+       return !access(git_path_merge_head(the_repository), F_OK);
 }
 
 static int reset_index(const struct object_id *oid, int reset_type, int quiet)
index fadd3ec14cbf0469c332a85278e5d1b4932ef788..e9bd4e378adc11fa79a8f5056b0d8c2a7dc6d4bf 100644 (file)
@@ -6,6 +6,7 @@
 #include "list-objects.h"
 #include "list-objects-filter.h"
 #include "list-objects-filter-options.h"
+#include "object-store.h"
 #include "pack.h"
 #include "pack-bitmap.h"
 #include "builtin.h"
index 4f49e96bfd0166aeb6f9875a688ff0dd83d631b5..2a6cb298bdab7961a73df16c4984ff9eefef7795 100644 (file)
@@ -883,7 +883,8 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
                                continue;
                        }
                        if (!strcmp(arg, "--is-shallow-repository")) {
-                               printf("%s\n", is_repository_shallow() ? "true"
+                               printf("%s\n",
+                                               is_repository_shallow(the_repository) ? "true"
                                                : "false");
                                continue;
                        }
index 4923b1058c667bd45282c0930e1089594a3f4731..42fd8d1a3528c3ea0b30007407b2ae38f240f4c7 100644 (file)
@@ -121,7 +121,7 @@ static int send_pack_config(const char *k, const char *v, void *cb)
                        }
                }
        }
-       return 0;
+       return git_default_config(k, v, cb);
 }
 
 int cmd_send_pack(int argc, const char **argv, const char *prefix)
index 6c2148b71db593af1a4ef8d2d1bdbdfe16661851..f2e985c00abd2e6f7aa1eaa1c9368f4c3ada60ab 100644 (file)
@@ -7,6 +7,7 @@
 #include "argv-array.h"
 #include "parse-options.h"
 #include "dir.h"
+#include "commit-slab.h"
 
 static const char* show_branch_usage[] = {
     N_("git show-branch [-a | --all] [-r | --remotes] [--topo-order | --date-order]\n"
@@ -21,6 +22,11 @@ static int showbranch_use_color = -1;
 
 static struct argv_array default_args = ARGV_ARRAY_INIT;
 
+/*
+ * TODO: convert this use of commit->object.flags to commit-slab
+ * instead to store a pointer to ref name directly. Then use the same
+ * UNINTERESTING definition from revision.h here.
+ */
 #define UNINTERESTING  01
 
 #define REV_SHIFT       2
@@ -59,15 +65,27 @@ struct commit_name {
        int generation; /* how many parents away from head_name */
 };
 
+define_commit_slab(commit_name_slab, struct commit_name *);
+static struct commit_name_slab name_slab;
+
+static struct commit_name *commit_to_name(struct commit *commit)
+{
+       return *commit_name_slab_at(&name_slab, commit);
+}
+
+
 /* Name the commit as nth generation ancestor of head_name;
  * we count only the first-parent relationship for naming purposes.
  */
 static void name_commit(struct commit *commit, const char *head_name, int nth)
 {
        struct commit_name *name;
-       if (!commit->util)
-               commit->util = xmalloc(sizeof(struct commit_name));
-       name = commit->util;
+
+       name = *commit_name_slab_at(&name_slab, commit);
+       if (!name) {
+               name = xmalloc(sizeof(*name));
+               *commit_name_slab_at(&name_slab, commit) = name;
+       }
        name->head_name = head_name;
        name->generation = nth;
 }
@@ -79,8 +97,8 @@ static void name_commit(struct commit *commit, const char *head_name, int nth)
  */
 static void name_parent(struct commit *commit, struct commit *parent)
 {
-       struct commit_name *commit_name = commit->util;
-       struct commit_name *parent_name = parent->util;
+       struct commit_name *commit_name = commit_to_name(commit);
+       struct commit_name *parent_name = commit_to_name(parent);
        if (!commit_name)
                return;
        if (!parent_name ||
@@ -94,12 +112,12 @@ static int name_first_parent_chain(struct commit *c)
        int i = 0;
        while (c) {
                struct commit *p;
-               if (!c->util)
+               if (!commit_to_name(c))
                        break;
                if (!c->parents)
                        break;
                p = c->parents->item;
-               if (!p->util) {
+               if (!commit_to_name(p)) {
                        name_parent(c, p);
                        i++;
                }
@@ -122,7 +140,7 @@ static void name_commits(struct commit_list *list,
        /* First give names to the given heads */
        for (cl = list; cl; cl = cl->next) {
                c = cl->item;
-               if (c->util)
+               if (commit_to_name(c))
                        continue;
                for (i = 0; i < num_rev; i++) {
                        if (rev[i] == c) {
@@ -148,9 +166,9 @@ static void name_commits(struct commit_list *list,
                        struct commit_name *n;
                        int nth;
                        c = cl->item;
-                       if (!c->util)
+                       if (!commit_to_name(c))
                                continue;
-                       n = c->util;
+                       n = commit_to_name(c);
                        parents = c->parents;
                        nth = 0;
                        while (parents) {
@@ -158,7 +176,7 @@ static void name_commits(struct commit_list *list,
                                struct strbuf newname = STRBUF_INIT;
                                parents = parents->next;
                                nth++;
-                               if (p->util)
+                               if (commit_to_name(p))
                                        continue;
                                switch (n->generation) {
                                case 0:
@@ -271,7 +289,7 @@ static void show_one_commit(struct commit *commit, int no_name)
 {
        struct strbuf pretty = STRBUF_INIT;
        const char *pretty_str = "(unavailable)";
-       struct commit_name *name = commit->util;
+       struct commit_name *name = commit_to_name(commit);
 
        if (commit->object.parsed) {
                pp_commit_easy(CMIT_FMT_ONELINE, commit, &pretty);
@@ -660,6 +678,8 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
                OPT_END()
        };
 
+       init_commit_name_slab(&name_slab);
+
        git_config(git_show_branch_config, NULL);
 
        /* If nothing is specified, try the default first */
diff --git a/builtin/show-index.c b/builtin/show-index.c
new file mode 100644 (file)
index 0000000..a6e6788
--- /dev/null
@@ -0,0 +1,86 @@
+#include "builtin.h"
+#include "cache.h"
+#include "pack.h"
+
+static const char show_index_usage[] =
+"git show-index";
+
+int cmd_show_index(int argc, const char **argv, const char *prefix)
+{
+       int i;
+       unsigned nr;
+       unsigned int version;
+       static unsigned int top_index[256];
+
+       if (argc != 1)
+               usage(show_index_usage);
+       if (fread(top_index, 2 * 4, 1, stdin) != 1)
+               die("unable to read header");
+       if (top_index[0] == htonl(PACK_IDX_SIGNATURE)) {
+               version = ntohl(top_index[1]);
+               if (version < 2 || version > 2)
+                       die("unknown index version");
+               if (fread(top_index, 256 * 4, 1, stdin) != 1)
+                       die("unable to read index");
+       } else {
+               version = 1;
+               if (fread(&top_index[2], 254 * 4, 1, stdin) != 1)
+                       die("unable to read index");
+       }
+       nr = 0;
+       for (i = 0; i < 256; i++) {
+               unsigned n = ntohl(top_index[i]);
+               if (n < nr)
+                       die("corrupt index file");
+               nr = n;
+       }
+       if (version == 1) {
+               for (i = 0; i < nr; i++) {
+                       unsigned int offset, entry[6];
+
+                       if (fread(entry, 4 + 20, 1, stdin) != 1)
+                               die("unable to read entry %u/%u", i, nr);
+                       offset = ntohl(entry[0]);
+                       printf("%u %s\n", offset, sha1_to_hex((void *)(entry+1)));
+               }
+       } else {
+               unsigned off64_nr = 0;
+               struct {
+                       unsigned char sha1[20];
+                       uint32_t crc;
+                       uint32_t off;
+               } *entries;
+               ALLOC_ARRAY(entries, nr);
+               for (i = 0; i < nr; i++)
+                       if (fread(entries[i].sha1, 20, 1, stdin) != 1)
+                               die("unable to read sha1 %u/%u", i, nr);
+               for (i = 0; i < nr; i++)
+                       if (fread(&entries[i].crc, 4, 1, stdin) != 1)
+                               die("unable to read crc %u/%u", i, nr);
+               for (i = 0; i < nr; i++)
+                       if (fread(&entries[i].off, 4, 1, stdin) != 1)
+                               die("unable to read 32b offset %u/%u", i, nr);
+               for (i = 0; i < nr; i++) {
+                       uint64_t offset;
+                       uint32_t off = ntohl(entries[i].off);
+                       if (!(off & 0x80000000)) {
+                               offset = off;
+                       } else {
+                               uint32_t off64[2];
+                               if ((off & 0x7fffffff) != off64_nr)
+                                       die("inconsistent 64b offset index");
+                               if (fread(off64, 8, 1, stdin) != 1)
+                                       die("unable to read 64b offset %u", off64_nr);
+                               offset = (((uint64_t)ntohl(off64[0])) << 32) |
+                                                    ntohl(off64[1]);
+                               off64_nr++;
+                       }
+                       printf("%" PRIuMAX " %s (%08"PRIx32")\n",
+                              (uintmax_t) offset,
+                              sha1_to_hex(entries[i].sha1),
+                              ntohl(entries[i].crc));
+               }
+               free(entries);
+       }
+       return 0;
+}
index f2eb1a7724058bb1db237a6199d16e5ff1ef495a..2f13f1316fadc2fc860fac75a161b47f7d11e391 100644 (file)
@@ -1,6 +1,7 @@
 #include "builtin.h"
 #include "cache.h"
 #include "refs.h"
+#include "object-store.h"
 #include "object.h"
 #include "tag.h"
 #include "string-list.h"
index 19480902681833b115c2cdf535068533efdbf2d1..216e3daf5c9ea95d174efc89be2f42942d85472e 100644 (file)
@@ -55,7 +55,7 @@ static char *get_default_remote(void)
 
 static int print_default_remote(int argc, const char **argv, const char *prefix)
 {
-       const char *remote;
+       char *remote;
 
        if (argc != 1)
                die(_("submodule--helper print-default-remote takes no arguments"));
@@ -64,6 +64,7 @@ static int print_default_remote(int argc, const char **argv, const char *prefix)
        if (remote)
                printf("%s\n", remote);
 
+       free(remote);
        return 0;
 }
 
@@ -440,6 +441,149 @@ static void for_each_listed_submodule(const struct module_list *list,
                fn(list->entries[i], cb_data);
 }
 
+struct cb_foreach {
+       int argc;
+       const char **argv;
+       const char *prefix;
+       int quiet;
+       int recursive;
+};
+#define CB_FOREACH_INIT { 0 }
+
+static void runcommand_in_submodule_cb(const struct cache_entry *list_item,
+                                      void *cb_data)
+{
+       struct cb_foreach *info = cb_data;
+       const char *path = list_item->name;
+       const struct object_id *ce_oid = &list_item->oid;
+
+       const struct submodule *sub;
+       struct child_process cp = CHILD_PROCESS_INIT;
+       char *displaypath;
+
+       displaypath = get_submodule_displaypath(path, info->prefix);
+
+       sub = submodule_from_path(the_repository, &null_oid, path);
+
+       if (!sub)
+               die(_("No url found for submodule path '%s' in .gitmodules"),
+                       displaypath);
+
+       if (!is_submodule_populated_gently(path, NULL))
+               goto cleanup;
+
+       prepare_submodule_repo_env(&cp.env_array);
+
+       /*
+        * For the purpose of executing <command> in the submodule,
+        * separate shell is used for the purpose of running the
+        * child process.
+        */
+       cp.use_shell = 1;
+       cp.dir = path;
+
+       /*
+        * NEEDSWORK: the command currently has access to the variables $name,
+        * $sm_path, $displaypath, $sha1 and $toplevel only when the command
+        * contains a single argument. This is done for maintaining a faithful
+        * translation from shell script.
+        */
+       if (info->argc == 1) {
+               char *toplevel = xgetcwd();
+               struct strbuf sb = STRBUF_INIT;
+
+               argv_array_pushf(&cp.env_array, "name=%s", sub->name);
+               argv_array_pushf(&cp.env_array, "sm_path=%s", path);
+               argv_array_pushf(&cp.env_array, "displaypath=%s", displaypath);
+               argv_array_pushf(&cp.env_array, "sha1=%s",
+                               oid_to_hex(ce_oid));
+               argv_array_pushf(&cp.env_array, "toplevel=%s", toplevel);
+
+               /*
+                * Since the path variable was accessible from the script
+                * before porting, it is also made available after porting.
+                * The environment variable "PATH" has a very special purpose
+                * on windows. And since environment variables are
+                * case-insensitive in windows, it interferes with the
+                * existing PATH variable. Hence, to avoid that, we expose
+                * path via the args argv_array and not via env_array.
+                */
+               sq_quote_buf(&sb, path);
+               argv_array_pushf(&cp.args, "path=%s; %s",
+                                sb.buf, info->argv[0]);
+               strbuf_release(&sb);
+               free(toplevel);
+       } else {
+               argv_array_pushv(&cp.args, info->argv);
+       }
+
+       if (!info->quiet)
+               printf(_("Entering '%s'\n"), displaypath);
+
+       if (info->argv[0] && run_command(&cp))
+               die(_("run_command returned non-zero status for %s\n."),
+                       displaypath);
+
+       if (info->recursive) {
+               struct child_process cpr = CHILD_PROCESS_INIT;
+
+               cpr.git_cmd = 1;
+               cpr.dir = path;
+               prepare_submodule_repo_env(&cpr.env_array);
+
+               argv_array_pushl(&cpr.args, "--super-prefix", NULL);
+               argv_array_pushf(&cpr.args, "%s/", displaypath);
+               argv_array_pushl(&cpr.args, "submodule--helper", "foreach", "--recursive",
+                               NULL);
+
+               if (info->quiet)
+                       argv_array_push(&cpr.args, "--quiet");
+
+               argv_array_pushv(&cpr.args, info->argv);
+
+               if (run_command(&cpr))
+                       die(_("run_command returned non-zero status while"
+                               "recursing in the nested submodules of %s\n."),
+                               displaypath);
+       }
+
+cleanup:
+       free(displaypath);
+}
+
+static int module_foreach(int argc, const char **argv, const char *prefix)
+{
+       struct cb_foreach info = CB_FOREACH_INIT;
+       struct pathspec pathspec;
+       struct module_list list = MODULE_LIST_INIT;
+
+       struct option module_foreach_options[] = {
+               OPT__QUIET(&info.quiet, N_("Suppress output of entering each submodule command")),
+               OPT_BOOL(0, "recursive", &info.recursive,
+                        N_("Recurse into nested submodules")),
+               OPT_END()
+       };
+
+       const char *const git_submodule_helper_usage[] = {
+               N_("git submodule--helper foreach [--quiet] [--recursive] <command>"),
+               NULL
+       };
+
+       argc = parse_options(argc, argv, prefix, module_foreach_options,
+                            git_submodule_helper_usage, PARSE_OPT_KEEP_UNKNOWN);
+
+       if (module_list_compute(0, NULL, prefix, &pathspec, &list) < 0)
+               return 1;
+
+       info.argc = argc;
+       info.argv = argv;
+       info.prefix = prefix;
+
+       for_each_listed_submodule(&list, runcommand_in_submodule_cb, &info);
+
+       return 0;
+}
+
 struct init_cb {
        const char *prefix;
        unsigned int flags;
@@ -1902,6 +2046,7 @@ static struct cmd_struct commands[] = {
        {"relative-path", resolve_relative_path, 0},
        {"resolve-relative-url", resolve_relative_url, 0},
        {"resolve-relative-url-test", resolve_relative_url_test, 0},
+       {"foreach", module_foreach, SUPPORT_SUPER_PREFIX},
        {"init", module_init, SUPPORT_SUPER_PREFIX},
        {"status", module_status, SUPPORT_SUPER_PREFIX},
        {"print-default-remote", print_default_remote, 0},
index 5d0dd112408419a0090cbe179d69c0ea709f22a7..9919b03b2d601a74639553e8e61baef04ffd7cd9 100644 (file)
@@ -10,6 +10,7 @@
 #include "config.h"
 #include "builtin.h"
 #include "refs.h"
+#include "object-store.h"
 #include "tag.h"
 #include "run-command.h"
 #include "parse-options.h"
index 300eb59657e29cace38798029a9170834cac7c9e..58652229f273bf93e55b0ff5eef1421096cfe719 100644 (file)
@@ -1,5 +1,6 @@
 #include "builtin.h"
 #include "config.h"
+#include "object-store.h"
 
 static char *create_temp_file(struct object_id *oid)
 {
index 6e81ca8ca28a67ce3d7bc0d62556fd41eda2ba52..cf585fcc5eee5e41aac066a08d6db080f33011b8 100644 (file)
@@ -1,6 +1,7 @@
 #include "builtin.h"
 #include "cache.h"
 #include "config.h"
+#include "object-store.h"
 #include "object.h"
 #include "delta.h"
 #include "pack.h"
index 4b4714b3fd82ca9510b9b241867e497cdae92e76..4fa3c0a86fd7cbeb5214223e06aa10a2ecfa2d85 100644 (file)
@@ -311,11 +311,12 @@ static const char *parse_cmd_verify(struct ref_transaction *transaction,
 
 static const char *parse_cmd_option(struct strbuf *input, const char *next)
 {
-       if (!strncmp(next, "no-deref", 8) && next[8] == line_termination)
+       const char *rest;
+       if (skip_prefix(next, "no-deref", &rest) && *rest == line_termination)
                update_flags |= REF_NO_DEREF;
        else
                die("option unknown: %s", next);
-       return next + 8;
+       return rest;
 }
 
 static void update_refs_stdin(struct ref_transaction *transaction)
@@ -332,16 +333,16 @@ static void update_refs_stdin(struct ref_transaction *transaction)
                        die("empty command in input");
                else if (isspace(*next))
                        die("whitespace before command: %s", next);
-               else if (starts_with(next, "update "))
-                       next = parse_cmd_update(transaction, &input, next + 7);
-               else if (starts_with(next, "create "))
-                       next = parse_cmd_create(transaction, &input, next + 7);
-               else if (starts_with(next, "delete "))
-                       next = parse_cmd_delete(transaction, &input, next + 7);
-               else if (starts_with(next, "verify "))
-                       next = parse_cmd_verify(transaction, &input, next + 7);
-               else if (starts_with(next, "option "))
-                       next = parse_cmd_option(&input, next + 7);
+               else if (skip_prefix(next, "update ", &next))
+                       next = parse_cmd_update(transaction, &input, next);
+               else if (skip_prefix(next, "create ", &next))
+                       next = parse_cmd_create(transaction, &input, next);
+               else if (skip_prefix(next, "delete ", &next))
+                       next = parse_cmd_delete(transaction, &input, next);
+               else if (skip_prefix(next, "verify ", &next))
+                       next = parse_cmd_verify(transaction, &input, next);
+               else if (skip_prefix(next, "option ", &next))
+                       next = parse_cmd_option(&input, next);
                else
                        die("unknown command: %s", next);
 
index dcdaada111071c84b56022d9050ae06ffafbc25f..f6922da16d6bfaadc20462f206d4ce1f53a4994f 100644 (file)
@@ -8,6 +8,7 @@
 #include "cache.h"
 #include "config.h"
 #include "builtin.h"
+#include "object-store.h"
 #include "commit.h"
 #include "run-command.h"
 #include <signal.h>
index b7e131c47a62603069185d67e5d2758175bc543f..9f3b644811cd79b2c93ebf1dcebd711640c18419 100644 (file)
@@ -8,6 +8,7 @@
 #include "pack.h"
 #include "strbuf.h"
 #include "packfile.h"
+#include "object-store.h"
 
 static struct bulk_checkin_state {
        unsigned plugged:1;
index 160bbfdc64ec2876bdc685d253bf537d1c739c1f..ba18e25d028001fd17b4807536ec2db3cd7a8b3d 100644 (file)
--- a/bundle.c
+++ b/bundle.c
@@ -1,6 +1,7 @@
 #include "cache.h"
 #include "lockfile.h"
 #include "bundle.h"
+#include "object-store.h"
 #include "object.h"
 #include "commit.h"
 #include "diff.h"
index 25663825b553b4e4590e3b4aaad54b4f5950aef8..6b467119960b03540e38209aa1a10f1dbe36c4dd 100644 (file)
@@ -3,6 +3,7 @@
 #include "tree.h"
 #include "tree-walk.h"
 #include "cache-tree.h"
+#include "object-store.h"
 
 #ifndef DEBUG
 #define DEBUG 0
diff --git a/cache.h b/cache.h
index 89a107a7f79175c600eb2a9689982912541ae4e7..8b447652a7e94ad31fd28134e0f548baa37265db 100644 (file)
--- a/cache.h
+++ b/cache.h
@@ -484,7 +484,7 @@ extern const char *get_git_dir(void);
 extern const char *get_git_common_dir(void);
 extern char *get_object_directory(void);
 extern char *get_index_file(void);
-extern char *get_graft_file(void);
+extern char *get_graft_file(struct repository *r);
 extern void set_git_dir(const char *path);
 extern int get_common_dir_noenv(struct strbuf *sb, const char *gitdir);
 extern int get_common_dir(struct strbuf *sb, const char *gitdir);
@@ -1192,32 +1192,6 @@ extern char *xdg_config_home(const char *filename);
  */
 extern char *xdg_cache_home(const char *filename);
 
-extern void *read_object_file_extended(const struct object_id *oid,
-                                      enum object_type *type,
-                                      unsigned long *size, int lookup_replace);
-static inline void *read_object_file(const struct object_id *oid, enum object_type *type, unsigned long *size)
-{
-       return read_object_file_extended(oid, type, size, 1);
-}
-
-/* Read and unpack an object file into memory, write memory to an object file */
-int oid_object_info(struct repository *r, const struct object_id *, unsigned long *);
-
-extern int hash_object_file(const void *buf, unsigned long len,
-                           const char *type, struct object_id *oid);
-
-extern int write_object_file(const void *buf, unsigned long len,
-                            const char *type, struct object_id *oid);
-
-extern int hash_object_file_literally(const void *buf, unsigned long len,
-                                     const char *type, struct object_id *oid,
-                                     unsigned flags);
-
-extern int pretend_object_file(void *, unsigned long, enum object_type,
-                              struct object_id *oid);
-
-extern int force_object_loose(const struct object_id *oid, time_t mtime);
-
 extern int git_open_cloexec(const char *name, int flags);
 #define git_open(name) git_open_cloexec(name, O_RDONLY)
 extern int unpack_sha1_header(git_zstream *stream, unsigned char *map, unsigned long mapsize, void *buffer, unsigned long bufsiz);
@@ -1227,43 +1201,6 @@ extern int check_object_signature(const struct object_id *oid, void *buf, unsign
 
 extern int finalize_object_file(const char *tmpfile, const char *filename);
 
-/*
- * Open the loose object at path, check its hash, and return the contents,
- * type, and size. If the object is a blob, then "contents" may return NULL,
- * to allow streaming of large blobs.
- *
- * Returns 0 on success, negative on error (details may be written to stderr).
- */
-int read_loose_object(const char *path,
-                     const struct object_id *expected_oid,
-                     enum object_type *type,
-                     unsigned long *size,
-                     void **contents);
-
-/*
- * Convenience for sha1_object_info_extended() with a NULL struct
- * object_info. OBJECT_INFO_SKIP_CACHED is automatically set; pass
- * nonzero flags to also set other flags.
- */
-extern int has_sha1_file_with_flags(const unsigned char *sha1, int flags);
-static inline int has_sha1_file(const unsigned char *sha1)
-{
-       return has_sha1_file_with_flags(sha1, 0);
-}
-
-/* Same as the above, except for struct object_id. */
-extern int has_object_file(const struct object_id *oid);
-extern int has_object_file_with_flags(const struct object_id *oid, int flags);
-
-/*
- * Return true iff an alternate object database has a loose object
- * with the specified name.  This function does not respect replace
- * references.
- */
-extern int has_loose_object_nonlocal(const struct object_id *oid);
-
-extern void assert_oid_type(const struct object_id *oid, enum object_type expect);
-
 /* Helper to check and "touch" a file */
 extern int check_and_freshen_file(const char *fn, int freshen);
 
@@ -1631,60 +1568,6 @@ int for_each_loose_file_in_objdir_buf(struct strbuf *path,
 #define FOR_EACH_OBJECT_LOCAL_ONLY 0x1
 extern int for_each_loose_object(each_loose_object_fn, void *, unsigned flags);
 
-struct object_info {
-       /* Request */
-       enum object_type *typep;
-       unsigned long *sizep;
-       off_t *disk_sizep;
-       unsigned char *delta_base_sha1;
-       struct strbuf *type_name;
-       void **contentp;
-
-       /* Response */
-       enum {
-               OI_CACHED,
-               OI_LOOSE,
-               OI_PACKED,
-               OI_DBCACHED
-       } whence;
-       union {
-               /*
-                * struct {
-                *      ... Nothing to expose in this case
-                * } cached;
-                * struct {
-                *      ... Nothing to expose in this case
-                * } loose;
-                */
-               struct {
-                       struct packed_git *pack;
-                       off_t offset;
-                       unsigned int is_delta;
-               } packed;
-       } u;
-};
-
-/*
- * Initializer for a "struct object_info" that wants no items. You may
- * also memset() the memory to all-zeroes.
- */
-#define OBJECT_INFO_INIT {NULL}
-
-/* Invoke lookup_replace_object() on the given hash */
-#define OBJECT_INFO_LOOKUP_REPLACE 1
-/* Allow reading from a loose object file of unknown/bogus type */
-#define OBJECT_INFO_ALLOW_UNKNOWN_TYPE 2
-/* Do not check cached storage */
-#define OBJECT_INFO_SKIP_CACHED 4
-/* Do not retry packed storage after checking packed and loose storage */
-#define OBJECT_INFO_QUICK 8
-/* Do not check loose object */
-#define OBJECT_INFO_IGNORE_LOOSE 16
-
-int oid_object_info_extended(struct repository *r,
-                            const struct object_id *,
-                            struct object_info *, unsigned flags);
-
 /*
  * Set this to 0 to prevent sha1_object_info_extended() from fetching missing
  * blobs. This has a difference only if extensions.partialClone is set.
@@ -1770,15 +1653,6 @@ extern const char *excludes_file;
 int decode_85(char *dst, const char *line, int linelen);
 void encode_85(char *buf, const unsigned char *data, int bytes);
 
-/* alloc.c */
-extern void *alloc_blob_node(void);
-extern void *alloc_tree_node(void);
-extern void *alloc_commit_node(void);
-extern void *alloc_tag_node(void);
-extern void *alloc_object_node(void);
-extern void alloc_report(void);
-extern unsigned int alloc_commit_index(void);
-
 /* pkt-line.c */
 void packet_trace_identity(const char *prog);
 
index 2ef495963fc1cf2e092778d35f1965912d7eaac0..de7695e72824f6f041e0979e29302ded6e50d611 100644 (file)
@@ -1,4 +1,5 @@
 #include "cache.h"
+#include "object-store.h"
 #include "commit.h"
 #include "blob.h"
 #include "diff.h"
index 4c6127088ff96282fbcdc98ef5767281e52846e9..b63a1fc85eaded844fcb1a2634067f9509b5937c 100644 (file)
@@ -1,5 +1,6 @@
 #include "cache.h"
 #include "config.h"
+#include "dir.h"
 #include "git-compat-util.h"
 #include "lockfile.h"
 #include "pack.h"
@@ -248,6 +249,13 @@ static struct commit_list **insert_parent_or_die(struct commit_graph *g,
        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 = g->chunk_commit_data + GRAPH_DATA_WIDTH * pos;
+       item->graph_pos = pos;
+       item->generation = get_be32(commit_data + g->hash_len + 8) >> 2;
+}
+
 static int fill_commit_in_graph(struct commit *item, struct commit_graph *g, uint32_t pos)
 {
        uint32_t edge_value;
@@ -265,6 +273,8 @@ static int fill_commit_in_graph(struct commit *item, struct commit_graph *g, uin
        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;
+
        pptr = &item->parents;
 
        edge_value = get_be32(commit_data + g->hash_len);
@@ -293,31 +303,40 @@ static int fill_commit_in_graph(struct commit *item, struct commit_graph *g, uin
        return 1;
 }
 
+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;
+               return 1;
+       } else {
+               return bsearch_graph(g, &(item->object.oid), pos);
+       }
+}
+
 int parse_commit_in_graph(struct commit *item)
 {
+       uint32_t pos;
+
        if (!core_commit_graph)
                return 0;
        if (item->object.parsed)
                return 1;
-
        prepare_commit_graph();
-       if (commit_graph) {
-               uint32_t pos;
-               int found;
-               if (item->graph_pos != COMMIT_NOT_FROM_GRAPH) {
-                       pos = item->graph_pos;
-                       found = 1;
-               } else {
-                       found = bsearch_graph(commit_graph, &(item->object.oid), &pos);
-               }
-
-               if (found)
-                       return fill_commit_in_graph(item, commit_graph, pos);
-       }
-
+       if (commit_graph && find_commit_in_graph(item, commit_graph, &pos))
+               return fill_commit_in_graph(item, commit_graph, pos);
        return 0;
 }
 
+void load_commit_graph_info(struct commit *item)
+{
+       uint32_t pos;
+       if (!core_commit_graph)
+               return;
+       prepare_commit_graph();
+       if (commit_graph && find_commit_in_graph(item, commit_graph, &pos))
+               fill_commit_graph_info(item, commit_graph, pos);
+}
+
 static struct tree *load_tree_for_commit(struct commit_graph *g, struct commit *c)
 {
        struct object_id oid;
@@ -440,6 +459,8 @@ static void write_graph_chunk_data(struct hashfile *f, int hash_len,
                else
                        packedDate[0] = 0;
 
+               packedDate[0] |= htonl((*list)->generation << 2);
+
                packedDate[1] = htonl((*list)->date);
                hashwrite(f, packedDate, 8);
 
@@ -572,6 +593,45 @@ static void close_reachable(struct packed_oid_list *oids)
        }
 }
 
+static void compute_generation_numbers(struct packed_commit_list* commits)
+{
+       int i;
+       struct commit_list *list = NULL;
+
+       for (i = 0; i < commits->nr; i++) {
+               if (commits->list[i]->generation != GENERATION_NUMBER_INFINITY &&
+                   commits->list[i]->generation != GENERATION_NUMBER_ZERO)
+                       continue;
+
+               commit_list_insert(commits->list[i], &list);
+               while (list) {
+                       struct commit *current = list->item;
+                       struct commit_list *parent;
+                       int all_parents_computed = 1;
+                       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) {
+                                       all_parents_computed = 0;
+                                       commit_list_insert(parent->item, &list);
+                                       break;
+                               } else if (parent->item->generation > max_generation) {
+                                       max_generation = parent->item->generation;
+                               }
+                       }
+
+                       if (all_parents_computed) {
+                               current->generation = max_generation + 1;
+                               pop_commit(&list);
+
+                               if (current->generation > GENERATION_NUMBER_MAX)
+                                       current->generation = GENERATION_NUMBER_MAX;
+                       }
+               }
+       }
+}
+
 void write_commit_graph(const char *obj_dir,
                        const char **pack_indexes,
                        int nr_packs,
@@ -584,7 +644,6 @@ void write_commit_graph(const char *obj_dir,
        struct hashfile *f;
        uint32_t i, count_distinct = 0;
        char *graph_name;
-       int fd;
        struct lock_file lk = LOCK_INIT;
        uint32_t chunk_ids[5];
        uint64_t chunk_offsets[5];
@@ -695,24 +754,14 @@ void write_commit_graph(const char *obj_dir,
        if (commits.nr >= GRAPH_PARENT_MISSING)
                die(_("too many commits to write graph"));
 
-       graph_name = get_commit_graph_filename(obj_dir);
-       fd = hold_lock_file_for_update(&lk, graph_name, 0);
-
-       if (fd < 0) {
-               struct strbuf folder = STRBUF_INIT;
-               strbuf_addstr(&folder, graph_name);
-               strbuf_setlen(&folder, strrchr(folder.buf, '/') - folder.buf);
-
-               if (mkdir(folder.buf, 0777) < 0)
-                       die_errno(_("cannot mkdir %s"), folder.buf);
-               strbuf_release(&folder);
-
-               fd = hold_lock_file_for_update(&lk, graph_name, LOCK_DIE_ON_ERROR);
+       compute_generation_numbers(&commits);
 
-               if (fd < 0)
-                       die_errno("unable to create '%s'", graph_name);
-       }
+       graph_name = get_commit_graph_filename(obj_dir);
+       if (safe_create_leading_directories(graph_name))
+               die_errno(_("unable to create leading directories of %s"),
+                         graph_name);
 
+       hold_lock_file_for_update(&lk, graph_name, LOCK_DIE_ON_ERROR);
        f = hashfd(lk.tempfile->fd, lk.tempfile->filename.buf);
 
        hashwrite_be32(f, GRAPH_SIGNATURE);
index 260a468e73acd89b2a7706c859e8c25b264f3365..96cccb10f3d53a6da77f4ad06a971dbaa152f70c 100644 (file)
@@ -17,6 +17,14 @@ char *get_commit_graph_filename(const char *obj_dir);
  */
 int parse_commit_in_graph(struct commit *item);
 
+/*
+ * It is possible that we loaded commit contents from the commit buffer,
+ * but we also want to ensure the commit-graph content is correctly
+ * checked and filled. Fill the graph_pos and generation members of
+ * the given commit.
+ */
+void load_commit_graph_info(struct commit *item);
+
 struct tree *get_commit_tree_in_graph(const struct commit *c);
 
 struct commit_graph {
diff --git a/commit-slab-decl.h b/commit-slab-decl.h
new file mode 100644 (file)
index 0000000..adc7b46
--- /dev/null
@@ -0,0 +1,43 @@
+#ifndef COMMIT_SLAB_HDR_H
+#define COMMIT_SLAB_HDR_H
+
+/* allocate ~512kB at once, allowing for malloc overhead */
+#ifndef COMMIT_SLAB_SIZE
+#define COMMIT_SLAB_SIZE (512*1024-32)
+#endif
+
+#define declare_commit_slab(slabname, elemtype)                        \
+                                                                       \
+struct slabname {                                                      \
+       unsigned slab_size;                                             \
+       unsigned stride;                                                \
+       unsigned slab_count;                                            \
+       elemtype **slab;                                                \
+}
+
+/*
+ * Statically initialize a commit slab named "var". Note that this
+ * evaluates "stride" multiple times! Example:
+ *
+ *   struct indegree indegrees = COMMIT_SLAB_INIT(1, indegrees);
+ *
+ */
+#define COMMIT_SLAB_INIT(stride, var) { \
+       COMMIT_SLAB_SIZE / sizeof(**((var).slab)) / (stride), \
+       (stride), 0, NULL \
+}
+
+#define declare_commit_slab_prototypes(slabname, elemtype)             \
+                                                                       \
+void init_ ##slabname## _with_stride(struct slabname *s, unsigned stride); \
+void init_ ##slabname(struct slabname *s);                             \
+void clear_ ##slabname(struct slabname *s);                            \
+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)
+
+#define define_shared_commit_slab(slabname, elemtype) \
+       declare_commit_slab(slabname, elemtype); \
+       declare_commit_slab_prototypes(slabname, elemtype)
+
+#endif /* COMMIT_SLAB_HDR_H */
diff --git a/commit-slab-impl.h b/commit-slab-impl.h
new file mode 100644 (file)
index 0000000..87a9cad
--- /dev/null
@@ -0,0 +1,97 @@
+#ifndef COMMIT_SLAB_IMPL_H
+#define COMMIT_SLAB_IMPL_H
+
+#define MAYBE_UNUSED __attribute__((__unused__))
+
+#define implement_static_commit_slab(slabname, elemtype) \
+       implement_commit_slab(slabname, elemtype, static MAYBE_UNUSED)
+
+#define implement_shared_commit_slab(slabname, elemtype) \
+       implement_commit_slab(slabname, elemtype, )
+
+#define implement_commit_slab(slabname, elemtype, scope)               \
+                                                                       \
+static int stat_ ##slabname## realloc;                                 \
+                                                                       \
+scope void init_ ##slabname## _with_stride(struct slabname *s,         \
+                                                  unsigned stride)     \
+{                                                                      \
+       unsigned int elem_size;                                         \
+       if (!stride)                                                    \
+               stride = 1;                                             \
+       s->stride = stride;                                             \
+       elem_size = sizeof(elemtype) * stride;                          \
+       s->slab_size = COMMIT_SLAB_SIZE / elem_size;                    \
+       s->slab_count = 0;                                              \
+       s->slab = NULL;                                                 \
+}                                                                      \
+                                                                       \
+scope void init_ ##slabname(struct slabname *s)                                \
+{                                                                      \
+       init_ ##slabname## _with_stride(s, 1);                          \
+}                                                                      \
+                                                                       \
+scope void clear_ ##slabname(struct slabname *s)                       \
+{                                                                      \
+       unsigned int i;                                                 \
+       for (i = 0; i < s->slab_count; i++)                             \
+               free(s->slab[i]);                                       \
+       s->slab_count = 0;                                              \
+       FREE_AND_NULL(s->slab);                                         \
+}                                                                      \
+                                                                       \
+scope elemtype *slabname## _at_peek(struct slabname *s,                        \
+                                                 const struct commit *c, \
+                                                 int add_if_missing)   \
+{                                                                      \
+       unsigned int nth_slab, nth_slot;                                \
+                                                                       \
+       nth_slab = c->index / s->slab_size;                             \
+       nth_slot = c->index % s->slab_size;                             \
+                                                                       \
+       if (s->slab_count <= nth_slab) {                                \
+               unsigned int i;                                         \
+               if (!add_if_missing)                                    \
+                       return NULL;                                    \
+               REALLOC_ARRAY(s->slab, nth_slab + 1);                   \
+               stat_ ##slabname## realloc++;                           \
+               for (i = s->slab_count; i <= nth_slab; i++)             \
+                       s->slab[i] = NULL;                              \
+               s->slab_count = nth_slab + 1;                           \
+       }                                                               \
+       if (!s->slab[nth_slab]) {                                       \
+               if (!add_if_missing)                                    \
+                       return NULL;                                    \
+               s->slab[nth_slab] = xcalloc(s->slab_size,               \
+                                           sizeof(**s->slab) * s->stride);             \
+       }                                                               \
+       return &s->slab[nth_slab][nth_slot * s->stride];                \
+}                                                                      \
+                                                                       \
+scope elemtype *slabname## _at(struct slabname *s,                     \
+                                            const struct commit *c)    \
+{                                                                      \
+       return slabname##_at_peek(s, c, 1);                             \
+}                                                                      \
+                                                                       \
+scope elemtype *slabname## _peek(struct slabname *s,                   \
+                                            const struct commit *c)    \
+{                                                                      \
+       return slabname##_at_peek(s, c, 0);                             \
+}                                                                      \
+                                                                       \
+struct slabname
+
+/*
+ * Note that this redundant forward declaration is required
+ * to allow a terminating semicolon, which makes instantiations look
+ * like function declarations.  I.e., the expansion of
+ *
+ *    implement_commit_slab(indegree, int, static);
+ *
+ * ends in 'struct indegree;'.  This would otherwise
+ * be a syntax error according (at least) to ISO C.  It's hard to
+ * catch because GCC silently parses it by default.
+ */
+
+#endif /* COMMIT_SLAB_IMPL_H */
index dcaab8ca0437b3adefb523cad531ac1f4b9264e0..69bf0c807c64b79216118f3485cfd5dac3b6a273 100644 (file)
@@ -1,6 +1,9 @@
 #ifndef COMMIT_SLAB_H
 #define COMMIT_SLAB_H
 
+#include "commit-slab-decl.h"
+#include "commit-slab-impl.h"
+
 /*
  * define_commit_slab(slabname, elemtype) creates boilerplate code to define
  * a new struct (struct slabname) that is used to associate a piece of data
  *   leaking memory.
  */
 
-/* allocate ~512kB at once, allowing for malloc overhead */
-#ifndef COMMIT_SLAB_SIZE
-#define COMMIT_SLAB_SIZE (512*1024-32)
-#endif
-
-#define MAYBE_UNUSED __attribute__((__unused__))
-
-#define define_commit_slab(slabname, elemtype)                                 \
-                                                                       \
-struct slabname {                                                      \
-       unsigned slab_size;                                             \
-       unsigned stride;                                                \
-       unsigned slab_count;                                            \
-       elemtype **slab;                                                \
-};                                                                     \
-static int stat_ ##slabname## realloc;                                 \
-                                                                       \
-static MAYBE_UNUSED void init_ ##slabname## _with_stride(struct slabname *s, \
-                                                  unsigned stride)     \
-{                                                                      \
-       unsigned int elem_size;                                         \
-       if (!stride)                                                    \
-               stride = 1;                                             \
-       s->stride = stride;                                             \
-       elem_size = sizeof(elemtype) * stride;                          \
-       s->slab_size = COMMIT_SLAB_SIZE / elem_size;                    \
-       s->slab_count = 0;                                              \
-       s->slab = NULL;                                                 \
-}                                                                      \
-                                                                       \
-static MAYBE_UNUSED void init_ ##slabname(struct slabname *s)          \
-{                                                                      \
-       init_ ##slabname## _with_stride(s, 1);                          \
-}                                                                      \
-                                                                       \
-static MAYBE_UNUSED void clear_ ##slabname(struct slabname *s)         \
-{                                                                      \
-       unsigned int i;                                                 \
-       for (i = 0; i < s->slab_count; i++)                             \
-               free(s->slab[i]);                                       \
-       s->slab_count = 0;                                              \
-       FREE_AND_NULL(s->slab);                                         \
-}                                                                      \
-                                                                       \
-static MAYBE_UNUSED elemtype *slabname## _at_peek(struct slabname *s,  \
-                                                 const struct commit *c, \
-                                                 int add_if_missing)   \
-{                                                                      \
-       unsigned int nth_slab, nth_slot;                                \
-                                                                       \
-       nth_slab = c->index / s->slab_size;                             \
-       nth_slot = c->index % s->slab_size;                             \
-                                                                       \
-       if (s->slab_count <= nth_slab) {                                \
-               unsigned int i;                                         \
-               if (!add_if_missing)                                    \
-                       return NULL;                                    \
-               REALLOC_ARRAY(s->slab, nth_slab + 1);                   \
-               stat_ ##slabname## realloc++;                           \
-               for (i = s->slab_count; i <= nth_slab; i++)             \
-                       s->slab[i] = NULL;                              \
-               s->slab_count = nth_slab + 1;                           \
-       }                                                               \
-       if (!s->slab[nth_slab]) {                                       \
-               if (!add_if_missing)                                    \
-                       return NULL;                                    \
-               s->slab[nth_slab] = xcalloc(s->slab_size,               \
-                                           sizeof(**s->slab) * s->stride);             \
-       }                                                               \
-       return &s->slab[nth_slab][nth_slot * s->stride];                \
-}                                                                      \
-                                                                       \
-static MAYBE_UNUSED elemtype *slabname## _at(struct slabname *s,       \
-                                            const struct commit *c)    \
-{                                                                      \
-       return slabname##_at_peek(s, c, 1);                             \
-}                                                                      \
-                                                                       \
-static MAYBE_UNUSED elemtype *slabname## _peek(struct slabname *s,     \
-                                            const struct commit *c)    \
-{                                                                      \
-       return slabname##_at_peek(s, c, 0);                             \
-}                                                                      \
-                                                                       \
-struct slabname
-
-/*
- * Note that this redundant forward declaration is required
- * to allow a terminating semicolon, which makes instantiations look
- * like function declarations.  I.e., the expansion of
- *
- *    define_commit_slab(indegree, int);
- *
- * ends in 'struct indegree;'.  This would otherwise
- * be a syntax error according (at least) to ISO C.  It's hard to
- * catch because GCC silently parses it by default.
- */
-
-/*
- * Statically initialize a commit slab named "var". Note that this
- * evaluates "stride" multiple times! Example:
- *
- *   struct indegree indegrees = COMMIT_SLAB_INIT(1, indegrees);
- *
- */
-#define COMMIT_SLAB_INIT(stride, var) { \
-       COMMIT_SLAB_SIZE / sizeof(**((var).slab)) / (stride), \
-       (stride), 0, NULL \
-}
+#define define_commit_slab(slabname, elemtype) \
+       declare_commit_slab(slabname, elemtype); \
+       implement_static_commit_slab(slabname, elemtype)
 
 #endif /* COMMIT_SLAB_H */
index 0030e79940ff8564b5c8c5ebab462eb1bd745174..a7c0b5f8c6ce1d1d41c7ede357116fee4a643bbc 100644 (file)
--- a/commit.c
+++ b/commit.c
@@ -2,11 +2,14 @@
 #include "tag.h"
 #include "commit.h"
 #include "commit-graph.h"
+#include "repository.h"
+#include "object-store.h"
 #include "pkt-line.h"
 #include "utf8.h"
 #include "diff.h"
 #include "revision.h"
 #include "notes.h"
+#include "alloc.h"
 #include "gpg-interface.h"
 #include "mergesort.h"
 #include "commit-slab.h"
@@ -52,7 +55,8 @@ struct commit *lookup_commit(const struct object_id *oid)
 {
        struct object *obj = lookup_object(oid->hash);
        if (!obj)
-               return create_object(oid->hash, alloc_commit_node());
+               return create_object(the_repository, oid->hash,
+                                    alloc_commit_node(the_repository));
        return object_as_type(obj, OBJ_COMMIT, 0);
 }
 
@@ -96,41 +100,44 @@ static timestamp_t parse_commit_date(const char *buf, const char *tail)
        return parse_timestamp(dateptr, NULL, 10);
 }
 
-static struct commit_graft **commit_graft;
-static int commit_graft_alloc, commit_graft_nr;
-
 static const unsigned char *commit_graft_sha1_access(size_t index, void *table)
 {
        struct commit_graft **commit_graft_table = table;
        return commit_graft_table[index]->oid.hash;
 }
 
-static int commit_graft_pos(const unsigned char *sha1)
+static int commit_graft_pos(struct repository *r, const unsigned char *sha1)
 {
-       return sha1_pos(sha1, commit_graft, commit_graft_nr,
+       return sha1_pos(sha1, r->parsed_objects->grafts,
+                       r->parsed_objects->grafts_nr,
                        commit_graft_sha1_access);
 }
 
-int register_commit_graft(struct commit_graft *graft, int ignore_dups)
+int register_commit_graft(struct repository *r, struct commit_graft *graft,
+                         int ignore_dups)
 {
-       int pos = commit_graft_pos(graft->oid.hash);
+       int pos = commit_graft_pos(r, graft->oid.hash);
 
        if (0 <= pos) {
                if (ignore_dups)
                        free(graft);
                else {
-                       free(commit_graft[pos]);
-                       commit_graft[pos] = graft;
+                       free(r->parsed_objects->grafts[pos]);
+                       r->parsed_objects->grafts[pos] = graft;
                }
                return 1;
        }
        pos = -pos - 1;
-       ALLOC_GROW(commit_graft, commit_graft_nr + 1, commit_graft_alloc);
-       commit_graft_nr++;
-       if (pos < commit_graft_nr)
-               MOVE_ARRAY(commit_graft + pos + 1, commit_graft + pos,
-                          commit_graft_nr - pos - 1);
-       commit_graft[pos] = graft;
+       ALLOC_GROW(r->parsed_objects->grafts,
+                  r->parsed_objects->grafts_nr + 1,
+                  r->parsed_objects->grafts_alloc);
+       r->parsed_objects->grafts_nr++;
+       if (pos < r->parsed_objects->grafts_nr)
+               memmove(r->parsed_objects->grafts + pos + 1,
+                       r->parsed_objects->grafts + pos,
+                       (r->parsed_objects->grafts_nr - pos - 1) *
+                       sizeof(*r->parsed_objects->grafts));
+       r->parsed_objects->grafts[pos] = graft;
        return 0;
 }
 
@@ -172,7 +179,7 @@ struct commit_graft *read_graft_line(struct strbuf *line)
        return NULL;
 }
 
-static int read_graft_file(const char *graft_file)
+static int read_graft_file(struct repository *r, const char *graft_file)
 {
        FILE *fp = fopen_or_warn(graft_file, "r");
        struct strbuf buf = STRBUF_INIT;
@@ -192,7 +199,7 @@ static int read_graft_file(const char *graft_file)
                struct commit_graft *graft = read_graft_line(&buf);
                if (!graft)
                        continue;
-               if (register_commit_graft(graft, 1))
+               if (register_commit_graft(r, graft, 1))
                        error("duplicate graft data: %s", buf.buf);
        }
        fclose(fp);
@@ -200,50 +207,50 @@ static int read_graft_file(const char *graft_file)
        return 0;
 }
 
-static void prepare_commit_graft(void)
+static void prepare_commit_graft(struct repository *r)
 {
-       static int commit_graft_prepared;
        char *graft_file;
 
-       if (commit_graft_prepared)
+       if (r->parsed_objects->commit_graft_prepared)
                return;
        if (!startup_info->have_repository)
                return;
 
-       graft_file = get_graft_file();
-       read_graft_file(graft_file);
+       graft_file = get_graft_file(r);
+       read_graft_file(r, graft_file);
        /* make sure shallows are read */
-       is_repository_shallow();
-       commit_graft_prepared = 1;
+       is_repository_shallow(r);
+       r->parsed_objects->commit_graft_prepared = 1;
 }
 
-struct commit_graft *lookup_commit_graft(const struct object_id *oid)
+struct commit_graft *lookup_commit_graft(struct repository *r, const struct object_id *oid)
 {
        int pos;
-       prepare_commit_graft();
-       pos = commit_graft_pos(oid->hash);
+       prepare_commit_graft(r);
+       pos = commit_graft_pos(r, oid->hash);
        if (pos < 0)
                return NULL;
-       return commit_graft[pos];
+       return r->parsed_objects->grafts[pos];
 }
 
 int for_each_commit_graft(each_commit_graft_fn fn, void *cb_data)
 {
        int i, ret;
-       for (i = ret = 0; i < commit_graft_nr && !ret; i++)
-               ret = fn(commit_graft[i], cb_data);
+       for (i = ret = 0; i < the_repository->parsed_objects->grafts_nr && !ret; i++)
+               ret = fn(the_repository->parsed_objects->grafts[i], cb_data);
        return ret;
 }
 
 int unregister_shallow(const struct object_id *oid)
 {
-       int pos = commit_graft_pos(oid->hash);
+       int pos = commit_graft_pos(the_repository, oid->hash);
        if (pos < 0)
                return -1;
-       if (pos + 1 < commit_graft_nr)
-               MOVE_ARRAY(commit_graft + pos, commit_graft + pos + 1,
-                          commit_graft_nr - pos - 1);
-       commit_graft_nr--;
+       if (pos + 1 < the_repository->parsed_objects->grafts_nr)
+               MOVE_ARRAY(the_repository->parsed_objects->grafts + pos,
+                          the_repository->parsed_objects->grafts + pos + 1,
+                          the_repository->parsed_objects->grafts_nr - pos - 1);
+       the_repository->parsed_objects->grafts_nr--;
        return 0;
 }
 
@@ -325,6 +332,17 @@ struct object_id *get_commit_tree_oid(const struct commit *commit)
        return &get_commit_tree(commit)->object.oid;
 }
 
+void release_commit_memory(struct commit *c)
+{
+       c->maybe_tree = NULL;
+       c->index = 0;
+       free_commit_buffer(c);
+       free_commit_list(c->parents);
+       /* TODO: what about commit->util? */
+
+       c->object.parsed = 0;
+}
+
 const void *detach_commit_buffer(struct commit *commit, unsigned long *sizep)
 {
        struct commit_buffer *v = buffer_slab_peek(&buffer_slab, commit);
@@ -344,7 +362,7 @@ const void *detach_commit_buffer(struct commit *commit, unsigned long *sizep)
        return ret;
 }
 
-int parse_commit_buffer(struct commit *item, const void *buffer, unsigned long size)
+int parse_commit_buffer(struct commit *item, const void *buffer, unsigned long size, int check_graph)
 {
        const char *tail = buffer;
        const char *bufptr = buffer;
@@ -368,7 +386,7 @@ int parse_commit_buffer(struct commit *item, const void *buffer, unsigned long s
        bufptr += tree_entry_len + 1; /* "tree " + "hex sha1" + "\n" */
        pptr = &item->parents;
 
-       graft = lookup_commit_graft(&item->object.oid);
+       graft = lookup_commit_graft(the_repository, &item->object.oid);
        while (bufptr + parent_entry_len < tail && !memcmp(bufptr, "parent ", 7)) {
                struct commit *new_parent;
 
@@ -399,6 +417,9 @@ int parse_commit_buffer(struct commit *item, const void *buffer, unsigned long s
        }
        item->date = parse_commit_date(bufptr, tail);
 
+       if (check_graph)
+               load_commit_graph_info(item);
+
        return 0;
 }
 
@@ -425,7 +446,7 @@ int parse_commit_gently(struct commit *item, int quiet_on_missing)
                return error("Object %s not a commit",
                             oid_to_hex(&item->object.oid));
        }
-       ret = parse_commit_buffer(item, buffer, size);
+       ret = parse_commit_buffer(item, buffer, size, 0);
        if (save_commit_buffer && !ret) {
                set_commit_buffer(item, buffer, size);
                return 0;
@@ -653,6 +674,24 @@ static int compare_commits_by_author_date(const void *a_, const void *b_,
        return 0;
 }
 
+int compare_commits_by_gen_then_commit_date(const void *a_, const void *b_, void *unused)
+{
+       const struct commit *a = a_, *b = b_;
+
+       /* newer commits first */
+       if (a->generation < b->generation)
+               return 1;
+       else if (a->generation > b->generation)
+               return -1;
+
+       /* use date as a heuristic when generations are equal */
+       if (a->date < b->date)
+               return 1;
+       else if (a->date > b->date)
+               return -1;
+       return 0;
+}
+
 int compare_commits_by_commit_date(const void *a_, const void *b_, void *unused)
 {
        const struct commit *a = a_, *b = b_;
@@ -800,11 +839,14 @@ static int queue_has_nonstale(struct prio_queue *queue)
 }
 
 /* all input commits in one and twos[] must have been parsed! */
-static struct commit_list *paint_down_to_common(struct commit *one, int n, struct commit **twos)
+static struct commit_list *paint_down_to_common(struct commit *one, int n,
+                                               struct commit **twos,
+                                               int min_generation)
 {
-       struct prio_queue queue = { compare_commits_by_commit_date };
+       struct prio_queue queue = { compare_commits_by_gen_then_commit_date };
        struct commit_list *result = NULL;
        int i;
+       uint32_t last_gen = GENERATION_NUMBER_INFINITY;
 
        one->object.flags |= PARENT1;
        if (!n) {
@@ -823,6 +865,15 @@ static struct commit_list *paint_down_to_common(struct commit *one, int n, struc
                struct commit_list *parents;
                int flags;
 
+               if (commit->generation > last_gen)
+                       BUG("bad generation skip %8x > %8x at %s",
+                           commit->generation, last_gen,
+                           oid_to_hex(&commit->object.oid));
+               last_gen = commit->generation;
+
+               if (commit->generation < min_generation)
+                       break;
+
                flags = commit->object.flags & (PARENT1 | PARENT2 | STALE);
                if (flags == (PARENT1 | PARENT2)) {
                        if (!(commit->object.flags & RESULT)) {
@@ -871,7 +922,7 @@ static struct commit_list *merge_bases_many(struct commit *one, int n, struct co
                        return NULL;
        }
 
-       list = paint_down_to_common(one, n, twos);
+       list = paint_down_to_common(one, n, twos, 0);
 
        while (list) {
                struct commit *commit = pop_commit(&list);
@@ -929,6 +980,7 @@ static int remove_redundant(struct commit **array, int cnt)
                parse_commit(array[i]);
        for (i = 0; i < cnt; i++) {
                struct commit_list *common;
+               uint32_t min_generation = array[i]->generation;
 
                if (redundant[i])
                        continue;
@@ -937,8 +989,12 @@ static int remove_redundant(struct commit **array, int cnt)
                                continue;
                        filled_index[filled] = j;
                        work[filled++] = array[j];
+
+                       if (array[j]->generation < min_generation)
+                               min_generation = array[j]->generation;
                }
-               common = paint_down_to_common(array[i], filled, work);
+               common = paint_down_to_common(array[i], filled, work,
+                                             min_generation);
                if (array[i]->object.flags & PARENT2)
                        redundant[i] = 1;
                for (j = 0; j < filled; j++)
@@ -1048,14 +1104,21 @@ int in_merge_bases_many(struct commit *commit, int nr_reference, struct commit *
 {
        struct commit_list *bases;
        int ret = 0, i;
+       uint32_t min_generation = GENERATION_NUMBER_INFINITY;
 
        if (parse_commit(commit))
                return ret;
-       for (i = 0; i < nr_reference; i++)
+       for (i = 0; i < nr_reference; i++) {
                if (parse_commit(reference[i]))
                        return ret;
+               if (reference[i]->generation < min_generation)
+                       min_generation = reference[i]->generation;
+       }
+
+       if (commit->generation > min_generation)
+               return ret;
 
-       bases = paint_down_to_common(commit, nr_reference, reference);
+       bases = paint_down_to_common(commit, nr_reference, reference, commit->generation);
        if (commit->object.flags & PARENT2)
                ret = 1;
        clear_commit_marks(commit, all_flags);
@@ -1605,13 +1668,21 @@ int commit_tree_extended(const char *msg, size_t msg_len,
        return result;
 }
 
+define_commit_slab(merge_desc_slab, struct merge_remote_desc *);
+static struct merge_desc_slab merge_desc_slab = COMMIT_SLAB_INIT(1, merge_desc_slab);
+
+struct merge_remote_desc *merge_remote_util(struct commit *commit)
+{
+       return *merge_desc_slab_at(&merge_desc_slab, commit);
+}
+
 void set_merge_remote_desc(struct commit *commit,
                           const char *name, struct object *obj)
 {
        struct merge_remote_desc *desc;
        FLEX_ALLOC_STR(desc, name, name);
        desc->obj = obj;
-       commit->util = desc;
+       *merge_desc_slab_at(&merge_desc_slab, commit) = desc;
 }
 
 struct commit *get_merge_parent(const char *name)
@@ -1623,7 +1694,7 @@ struct commit *get_merge_parent(const char *name)
                return NULL;
        obj = parse_object(&oid);
        commit = (struct commit *)peel_to_type(name, 0, obj, OBJ_COMMIT);
-       if (commit && !commit->util)
+       if (commit && !merge_remote_util(commit))
                set_merge_remote_desc(commit, name, obj);
        return commit;
 }
index c3af512f8b1b90b3963d0921f7ec0d0a43a2fcbe..01b8b1d6896b9ce8e532cd49474cc384704fecfc 100644 (file)
--- a/commit.h
+++ b/commit.h
 #include "pretty.h"
 
 #define COMMIT_NOT_FROM_GRAPH 0xFFFFFFFF
+#define GENERATION_NUMBER_INFINITY 0xFFFFFFFF
+#define GENERATION_NUMBER_MAX 0x3FFFFFFF
+#define GENERATION_NUMBER_ZERO 0
 
 struct commit_list {
        struct commit *item;
        struct commit_list *next;
 };
 
+/*
+ * The size of this struct matters in full repo walk operations like
+ * 'git clone' or 'git gc'. Consider using commit-slab to attach data
+ * to a commit instead of adding new fields here.
+ */
 struct commit {
        struct object object;
-       void *util;
        timestamp_t date;
        struct commit_list *parents;
 
@@ -29,6 +36,7 @@ struct commit {
         */
        struct tree *maybe_tree;
        uint32_t graph_pos;
+       uint32_t generation;
        unsigned int index;
 };
 
@@ -68,7 +76,7 @@ struct commit *lookup_commit_reference_by_name(const char *name);
  */
 struct commit *lookup_commit_or_die(const struct object_id *oid, const char *ref_name);
 
-int parse_commit_buffer(struct commit *item, const void *buffer, unsigned long size);
+int parse_commit_buffer(struct commit *item, const void *buffer, unsigned long size, int check_graph);
 int parse_commit_gently(struct commit *item, int quiet_on_missing);
 static inline int parse_commit(struct commit *item)
 {
@@ -111,6 +119,12 @@ void free_commit_buffer(struct commit *);
 struct tree *get_commit_tree(const struct commit *);
 struct object_id *get_commit_tree_oid(const struct commit *);
 
+/*
+ * Release memory related to a commit, including the parent list and
+ * any cached object buffer.
+ */
+void release_commit_memory(struct commit *c);
+
 /*
  * Disassociate any cached object buffer from the commit, but do not free it.
  * The buffer (or NULL, if none) is returned.
@@ -180,8 +194,8 @@ struct commit_graft {
 typedef int (*each_commit_graft_fn)(const struct commit_graft *, void *);
 
 struct commit_graft *read_graft_line(struct strbuf *line);
-int register_commit_graft(struct commit_graft *, int);
-struct commit_graft *lookup_commit_graft(const struct object_id *oid);
+int register_commit_graft(struct repository *r, struct commit_graft *, int);
+struct commit_graft *lookup_commit_graft(struct repository *r, const struct object_id *oid);
 
 extern struct commit_list *get_merge_bases(struct commit *rev1, struct commit *rev2);
 extern struct commit_list *get_merge_bases_many(struct commit *one, int n, struct commit **twos);
@@ -195,15 +209,15 @@ extern struct commit_list *get_merge_bases_many_dirty(struct commit *one, int n,
 
 struct oid_array;
 struct ref;
-extern int register_shallow(const struct object_id *oid);
+extern int register_shallow(struct repository *r, const struct object_id *oid);
 extern int unregister_shallow(const struct object_id *oid);
 extern int for_each_commit_graft(each_commit_graft_fn, void *);
-extern int is_repository_shallow(void);
+extern int is_repository_shallow(struct repository *r);
 extern struct commit_list *get_shallow_commits(struct object_array *heads,
                int depth, int shallow_flag, int not_shallow_flag);
 extern struct commit_list *get_shallow_commits_by_rev_list(
                int ac, const char **av, int shallow_flag, int not_shallow_flag);
-extern void set_alternate_shallow_file(const char *path, int override);
+extern void set_alternate_shallow_file(struct repository *r, const char *path, int override);
 extern int write_shallow_commits(struct strbuf *out, int use_pack_protocol,
                                 const struct oid_array *extra);
 extern void setup_alternate_shallow(struct lock_file *shallow_lock,
@@ -312,7 +326,7 @@ struct merge_remote_desc {
        struct object *obj; /* the named object, could be a tag */
        char name[FLEX_ARRAY];
 };
-#define merge_remote_util(commit) ((struct merge_remote_desc *)((commit)->util))
+extern struct merge_remote_desc *merge_remote_util(struct commit *);
 extern void set_merge_remote_desc(struct commit *commit,
                                  const char *name, struct object *obj);
 
@@ -337,6 +351,7 @@ extern int remove_signature(struct strbuf *buf);
 extern int check_commit_signature(const struct commit *commit, struct signature_check *sigc);
 
 int compare_commits_by_commit_date(const void *a_, const void *b_, void *unused);
+int compare_commits_by_gen_then_commit_date(const void *a_, const void *b_, void *unused);
 
 LAST_ARG_MUST_BE_NULL
 extern int run_commit_hook(int editor_is_used, const char *index_file, const char *name, ...);
index fbbf0f8e9f2b2ae0a96769108d8a2773f071aec1..139c903f6b3f1f35f2a443ebcd8b09b74ffcb7b5 100644 (file)
--- a/config.c
+++ b/config.c
@@ -14,6 +14,7 @@
 #include "quote.h"
 #include "hashmap.h"
 #include "string-list.h"
+#include "object-store.h"
 #include "utf8.h"
 #include "dir.h"
 #include "color.h"
@@ -1233,7 +1234,7 @@ static int git_default_core_config(const char *var, const char *value)
                }
                eol_rndtrp_die = git_config_bool(var, value);
                global_conv_flags_eol = eol_rndtrp_die ?
-                       CONV_EOL_RNDTRP_DIE : CONV_EOL_RNDTRP_WARN;
+                       CONV_EOL_RNDTRP_DIE : 0;
                return 0;
        }
 
@@ -3245,3 +3246,16 @@ enum config_scope current_config_scope(void)
        else
                return current_parsing_scope;
 }
+
+int lookup_config(const char **mapping, int nr_mapping, const char *var)
+{
+       int i;
+
+       for (i = 0; i < nr_mapping; i++) {
+               const char *name = mapping[i];
+
+               if (name && !strcasecmp(var, name))
+                       return i;
+       }
+       return -1;
+}
index cdac2fc73e6a2d0bc3230848425557a23e88d0bf..626d4654bd6f98771be903cca208fdb368920bf4 100644 (file)
--- a/config.h
+++ b/config.h
@@ -257,4 +257,8 @@ struct key_value_info {
 extern NORETURN void git_die_config(const char *key, const char *err, ...) __attribute__((format(printf, 2, 3)));
 extern NORETURN void git_die_config_linenr(const char *key, const char *filename, int linenr);
 
+#define LOOKUP_CONFIG(mapping, var) \
+       lookup_config(mapping, ARRAY_SIZE(mapping), var)
+int lookup_config(const char **mapping, int nr_mapping, const char *var);
+
 #endif /* CONFIG_H */
index dd3e925843acf53c439e504101d46d8606ea5d69..94c95516ebec7f32787cc5a2fb45cae83c7e28e3 100644 (file)
@@ -330,9 +330,32 @@ __gitcomp ()
        case "$cur_" in
        --*=)
                ;;
+       --no-*)
+               local c i=0 IFS=$' \t\n'
+               for c in $1; do
+                       if [[ $c == "--" ]]; then
+                               continue
+                       fi
+                       c="$c${4-}"
+                       if [[ $c == "$cur_"* ]]; then
+                               case $c in
+                               --*=*|*.) ;;
+                               *) c="$c " ;;
+                               esac
+                               COMPREPLY[i++]="${2-}$c"
+                       fi
+               done
+               ;;
        *)
                local c i=0 IFS=$' \t\n'
                for c in $1; do
+                       if [[ $c == "--" ]]; then
+                               c="--no-...${4-}"
+                               if [[ $c == "$cur_"* ]]; then
+                                       COMPREPLY[i++]="${2-}$c "
+                               fi
+                               break
+                       fi
                        c="$c${4-}"
                        if [[ $c == "$cur_"* ]]; then
                                case $c in
@@ -1161,7 +1184,7 @@ _git_am ()
                return
                ;;
        --*)
-               __gitcomp_builtin am "--no-utf8" \
+               __gitcomp_builtin am "" \
                        "$__git_am_inprogress_options"
                return
        esac
@@ -1261,9 +1284,7 @@ _git_branch ()
                __git_complete_refs --cur="${cur##--set-upstream-to=}"
                ;;
        --*)
-               __gitcomp_builtin branch "--no-color --no-abbrev
-                       --no-track --no-column
-                       "
+               __gitcomp_builtin branch
                ;;
        *)
                if [ $only_local_ref = "y" -a $has_r = "n" ]; then
@@ -1304,7 +1325,7 @@ _git_checkout ()
                __gitcomp "diff3 merge" "" "${cur##--conflict=}"
                ;;
        --*)
-               __gitcomp_builtin checkout "--no-track --no-recurse-submodules"
+               __gitcomp_builtin checkout
                ;;
        *)
                # check if --track, --no-track, or --no-guess was specified
@@ -1367,7 +1388,7 @@ _git_clone ()
 {
        case "$cur" in
        --*)
-               __gitcomp_builtin clone "--no-single-branch"
+               __gitcomp_builtin clone
                return
                ;;
        esac
@@ -1400,7 +1421,7 @@ _git_commit ()
                return
                ;;
        --*)
-               __gitcomp_builtin commit "--no-edit --verify"
+               __gitcomp_builtin commit
                return
        esac
 
@@ -1503,7 +1524,7 @@ _git_fetch ()
                return
                ;;
        --*)
-               __gitcomp_builtin fetch "--no-tags"
+               __gitcomp_builtin fetch
                return
                ;;
        esac
@@ -1540,7 +1561,7 @@ _git_fsck ()
 {
        case "$cur" in
        --*)
-               __gitcomp_builtin fsck "--no-reflogs"
+               __gitcomp_builtin fsck
                return
                ;;
        esac
@@ -1646,7 +1667,7 @@ _git_ls_files ()
 {
        case "$cur" in
        --*)
-               __gitcomp_builtin ls-files "--no-empty-directory"
+               __gitcomp_builtin ls-files
                return
                ;;
        esac
@@ -1797,12 +1818,7 @@ _git_merge ()
 
        case "$cur" in
        --*)
-               __gitcomp_builtin merge "--no-rerere-autoupdate
-                               --no-commit --no-edit --no-ff
-                               --no-log --no-progress
-                               --no-squash --no-stat
-                               --no-verify-signatures
-                               "
+               __gitcomp_builtin merge
                return
        esac
        __git_complete_refs
@@ -1901,10 +1917,7 @@ _git_pull ()
                return
                ;;
        --*)
-               __gitcomp_builtin pull "--no-autostash --no-commit --no-edit
-                                       --no-ff --no-log --no-progress --no-rebase
-                                       --no-squash --no-stat --no-tags
-                                       --no-verify-signatures"
+               __gitcomp_builtin pull
 
                return
                ;;
@@ -2095,7 +2108,7 @@ _git_status ()
                return
                ;;
        --*)
-               __gitcomp_builtin status "--no-column"
+               __gitcomp_builtin status
                return
                ;;
        esac
@@ -2142,9 +2155,24 @@ __git_config_get_set_variables ()
        __git config $config_file --name-only --list
 }
 
+__git_config_vars=
+__git_compute_config_vars ()
+{
+       test -n "$__git_config_vars" ||
+       __git_config_vars="$(git help --config-for-completion | sort | uniq)"
+}
+
 _git_config ()
 {
-       case "$prev" in
+       local varname
+
+       if [ "${BASH_VERSINFO[0]:-0}" -ge 4 ]; then
+               varname="${prev,,}"
+       else
+               varname="$(echo "$prev" |tr A-Z a-z)"
+       fi
+
+       case "$varname" in
        branch.*.remote|branch.*.pushremote)
                __gitcomp_nl "$(__git_remotes)"
                return
@@ -2242,20 +2270,20 @@ _git_config ()
                ;;
        branch.*.*)
                local pfx="${cur%.*}." cur_="${cur##*.}"
-               __gitcomp "remote pushremote merge mergeoptions rebase" "$pfx" "$cur_"
+               __gitcomp "remote pushRemote merge mergeOptions rebase" "$pfx" "$cur_"
                return
                ;;
        branch.*)
                local pfx="${cur%.*}." cur_="${cur#*.}"
                __gitcomp_direct "$(__git_heads "$pfx" "$cur_" ".")"
-               __gitcomp_nl_append $'autosetupmerge\nautosetuprebase\n' "$pfx" "$cur_"
+               __gitcomp_nl_append $'autoSetupMerge\nautoSetupRebase\n' "$pfx" "$cur_"
                return
                ;;
        guitool.*.*)
                local pfx="${cur%.*}." cur_="${cur##*.}"
                __gitcomp "
-                       argprompt cmd confirm needsfile noconsole norescan
-                       prompt revprompt revunmerged title
+                       argPrompt cmd confirm needsFile noConsole noRescan
+                       prompt revPrompt revUnmerged title
                        " "$pfx" "$cur_"
                return
                ;;
@@ -2284,14 +2312,14 @@ _git_config ()
                local pfx="${cur%.*}." cur_="${cur##*.}"
                __gitcomp "
                        url proxy fetch push mirror skipDefaultUpdate
-                       receivepack uploadpack tagopt pushurl
+                       receivepack uploadpack tagOpt pushurl
                        " "$pfx" "$cur_"
                return
                ;;
        remote.*)
                local pfx="${cur%.*}." cur_="${cur#*.}"
                __gitcomp_nl "$(__git_remotes)" "$pfx" "$cur_" "."
-               __gitcomp_nl_append "pushdefault" "$pfx" "$cur_"
+               __gitcomp_nl_append "pushDefault" "$pfx" "$cur_"
                return
                ;;
        url.*.*)
@@ -2299,333 +2327,14 @@ _git_config ()
                __gitcomp "insteadOf pushInsteadOf" "$pfx" "$cur_"
                return
                ;;
+       *.*)
+               __git_compute_config_vars
+               __gitcomp "$__git_config_vars"
+               ;;
+       *)
+               __git_compute_config_vars
+               __gitcomp "$(echo "$__git_config_vars" | sed 's/\.[^ ]*/./g')"
        esac
-       __gitcomp "
-               add.ignoreErrors
-               advice.amWorkDir
-               advice.commitBeforeMerge
-               advice.detachedHead
-               advice.implicitIdentity
-               advice.pushAlreadyExists
-               advice.pushFetchFirst
-               advice.pushNeedsForce
-               advice.pushNonFFCurrent
-               advice.pushNonFFMatching
-               advice.pushUpdateRejected
-               advice.resolveConflict
-               advice.rmHints
-               advice.statusHints
-               advice.statusUoption
-               advice.ignoredHook
-               alias.
-               am.keepcr
-               am.threeWay
-               apply.ignorewhitespace
-               apply.whitespace
-               branch.autosetupmerge
-               branch.autosetuprebase
-               browser.
-               clean.requireForce
-               color.branch
-               color.branch.current
-               color.branch.local
-               color.branch.plain
-               color.branch.remote
-               color.decorate.HEAD
-               color.decorate.branch
-               color.decorate.remoteBranch
-               color.decorate.stash
-               color.decorate.tag
-               color.diff
-               color.diff.commit
-               color.diff.frag
-               color.diff.func
-               color.diff.meta
-               color.diff.new
-               color.diff.old
-               color.diff.plain
-               color.diff.whitespace
-               color.grep
-               color.grep.context
-               color.grep.filename
-               color.grep.function
-               color.grep.linenumber
-               color.grep.match
-               color.grep.selected
-               color.grep.separator
-               color.interactive
-               color.interactive.error
-               color.interactive.header
-               color.interactive.help
-               color.interactive.prompt
-               color.pager
-               color.showbranch
-               color.status
-               color.status.added
-               color.status.changed
-               color.status.header
-               color.status.localBranch
-               color.status.nobranch
-               color.status.remoteBranch
-               color.status.unmerged
-               color.status.untracked
-               color.status.updated
-               color.ui
-               commit.cleanup
-               commit.gpgSign
-               commit.status
-               commit.template
-               commit.verbose
-               core.abbrev
-               core.askpass
-               core.attributesfile
-               core.autocrlf
-               core.bare
-               core.bigFileThreshold
-               core.checkStat
-               core.commentChar
-               core.commitGraph
-               core.compression
-               core.createObject
-               core.deltaBaseCacheLimit
-               core.editor
-               core.eol
-               core.excludesfile
-               core.fileMode
-               core.fsyncobjectfiles
-               core.gitProxy
-               core.hideDotFiles
-               core.hooksPath
-               core.ignoreStat
-               core.ignorecase
-               core.logAllRefUpdates
-               core.loosecompression
-               core.notesRef
-               core.packedGitLimit
-               core.packedGitWindowSize
-               core.packedRefsTimeout
-               core.pager
-               core.precomposeUnicode
-               core.preferSymlinkRefs
-               core.preloadindex
-               core.protectHFS
-               core.protectNTFS
-               core.quotepath
-               core.repositoryFormatVersion
-               core.safecrlf
-               core.sharedRepository
-               core.sparseCheckout
-               core.splitIndex
-               core.sshCommand
-               core.symlinks
-               core.trustctime
-               core.untrackedCache
-               core.warnAmbiguousRefs
-               core.whitespace
-               core.worktree
-               credential.helper
-               credential.useHttpPath
-               credential.username
-               credentialCache.ignoreSIGHUP
-               diff.autorefreshindex
-               diff.external
-               diff.ignoreSubmodules
-               diff.mnemonicprefix
-               diff.noprefix
-               diff.renameLimit
-               diff.renames
-               diff.statGraphWidth
-               diff.submodule
-               diff.suppressBlankEmpty
-               diff.tool
-               diff.wordRegex
-               diff.algorithm
-               difftool.
-               difftool.prompt
-               fetch.recurseSubmodules
-               fetch.unpackLimit
-               format.attach
-               format.cc
-               format.coverLetter
-               format.from
-               format.headers
-               format.numbered
-               format.pretty
-               format.signature
-               format.signoff
-               format.subjectprefix
-               format.suffix
-               format.thread
-               format.to
-               gc.
-               gc.aggressiveDepth
-               gc.aggressiveWindow
-               gc.auto
-               gc.autoDetach
-               gc.autopacklimit
-               gc.logExpiry
-               gc.packrefs
-               gc.pruneexpire
-               gc.reflogexpire
-               gc.reflogexpireunreachable
-               gc.rerereresolved
-               gc.rerereunresolved
-               gc.worktreePruneExpire
-               gitcvs.allbinary
-               gitcvs.commitmsgannotation
-               gitcvs.dbTableNamePrefix
-               gitcvs.dbdriver
-               gitcvs.dbname
-               gitcvs.dbpass
-               gitcvs.dbuser
-               gitcvs.enabled
-               gitcvs.logfile
-               gitcvs.usecrlfattr
-               guitool.
-               gui.blamehistoryctx
-               gui.commitmsgwidth
-               gui.copyblamethreshold
-               gui.diffcontext
-               gui.encoding
-               gui.fastcopyblame
-               gui.matchtrackingbranch
-               gui.newbranchtemplate
-               gui.pruneduringfetch
-               gui.spellingdictionary
-               gui.trustmtime
-               help.autocorrect
-               help.browser
-               help.format
-               http.lowSpeedLimit
-               http.lowSpeedTime
-               http.maxRequests
-               http.minSessions
-               http.noEPSV
-               http.postBuffer
-               http.proxy
-               http.sslCipherList
-               http.sslVersion
-               http.sslCAInfo
-               http.sslCAPath
-               http.sslCert
-               http.sslCertPasswordProtected
-               http.sslKey
-               http.sslVerify
-               http.useragent
-               i18n.commitEncoding
-               i18n.logOutputEncoding
-               imap.authMethod
-               imap.folder
-               imap.host
-               imap.pass
-               imap.port
-               imap.preformattedHTML
-               imap.sslverify
-               imap.tunnel
-               imap.user
-               init.templatedir
-               instaweb.browser
-               instaweb.httpd
-               instaweb.local
-               instaweb.modulepath
-               instaweb.port
-               interactive.singlekey
-               log.date
-               log.decorate
-               log.showroot
-               mailmap.file
-               man.
-               man.viewer
-               merge.
-               merge.conflictstyle
-               merge.log
-               merge.renameLimit
-               merge.renormalize
-               merge.stat
-               merge.tool
-               merge.verbosity
-               mergetool.
-               mergetool.keepBackup
-               mergetool.keepTemporaries
-               mergetool.prompt
-               notes.displayRef
-               notes.rewrite.
-               notes.rewrite.amend
-               notes.rewrite.rebase
-               notes.rewriteMode
-               notes.rewriteRef
-               pack.compression
-               pack.deltaCacheLimit
-               pack.deltaCacheSize
-               pack.depth
-               pack.indexVersion
-               pack.packSizeLimit
-               pack.threads
-               pack.window
-               pack.windowMemory
-               pager.
-               pretty.
-               pull.octopus
-               pull.twohead
-               push.default
-               push.followTags
-               rebase.autosquash
-               rebase.stat
-               receive.autogc
-               receive.denyCurrentBranch
-               receive.denyDeleteCurrent
-               receive.denyDeletes
-               receive.denyNonFastForwards
-               receive.fsckObjects
-               receive.unpackLimit
-               receive.updateserverinfo
-               remote.pushdefault
-               remotes.
-               repack.usedeltabaseoffset
-               rerere.autoupdate
-               rerere.enabled
-               sendemail.
-               sendemail.aliasesfile
-               sendemail.aliasfiletype
-               sendemail.bcc
-               sendemail.cc
-               sendemail.cccmd
-               sendemail.chainreplyto
-               sendemail.confirm
-               sendemail.envelopesender
-               sendemail.from
-               sendemail.identity
-               sendemail.multiedit
-               sendemail.signedoffbycc
-               sendemail.smtpdomain
-               sendemail.smtpencryption
-               sendemail.smtppass
-               sendemail.smtpserver
-               sendemail.smtpserveroption
-               sendemail.smtpserverport
-               sendemail.smtpuser
-               sendemail.suppresscc
-               sendemail.suppressfrom
-               sendemail.thread
-               sendemail.to
-               sendemail.tocmd
-               sendemail.validate
-               sendemail.smtpbatchsize
-               sendemail.smtprelogindelay
-               showbranch.default
-               status.relativePaths
-               status.showUntrackedFiles
-               status.submodulesummary
-               submodule.
-               tar.umask
-               transfer.unpackLimit
-               url.
-               user.email
-               user.name
-               user.signingkey
-               web.browser
-               branch. remote.
-       "
 }
 
 _git_remote ()
@@ -2649,7 +2358,7 @@ _git_remote ()
 
        case "$subcommand,$cur" in
        add,--*)
-               __gitcomp_builtin remote_add "--no-tags"
+               __gitcomp_builtin remote_add
                ;;
        add,*)
                ;;
@@ -2666,7 +2375,7 @@ _git_remote ()
                __gitcomp_builtin remote_update
                ;;
        update,*)
-               __gitcomp "$(__git_get_config_variables "remotes")"
+               __gitcomp "$(__git_remotes) $(__git_get_config_variables "remotes")"
                ;;
        set-url,--*)
                __gitcomp_builtin remote_set-url
@@ -2729,7 +2438,7 @@ _git_revert ()
        fi
        case "$cur" in
        --*)
-               __gitcomp_builtin revert "--no-edit" \
+               __gitcomp_builtin revert "" \
                        "$__git_revert_inprogress_options"
                return
                ;;
@@ -2799,7 +2508,7 @@ _git_show_branch ()
 {
        case "$cur" in
        --*)
-               __gitcomp_builtin show-branch "--no-color"
+               __gitcomp_builtin show-branch
                return
                ;;
        esac
index 0ffa40719126fe285722cfa8fc7b461d0584cd3a..6174e3bb83826273f005b01f6d9e9b2093664e33 100644 (file)
@@ -1,3 +1,6 @@
+# The default target of this Makefile is...
+all::
+
 test:
        ./t-git-credential-netrc.sh
 
index 0b9a94102ec90be0a51900113092a5177850f3dc..ebfc123ec641ddfa1bb2aaa83dab268c19083b2a 100755 (executable)
@@ -2,7 +2,6 @@
 
 use strict;
 use warnings;
-use autodie;
 
 use Getopt::Long;
 use File::Basename;
index 58191a62f8623642d4bf1f2af50130132d529fb3..07227d02287618394d649ae915a1b42d93140950 100755 (executable)
        # set up test repository
 
        test_expect_success \
-    'set up test repository' \
-    'git config --add gpg.program test.git-config-gpg'
+               'set up test repository' \
+               'git config --add gpg.program test.git-config-gpg'
 
        # The external test will outputs its own plan
        test_external_has_tap=1
 
+       export PERL5LIB="$GITPERLLIB"
        test_external \
-    'git-credential-netrc' \
-    perl "$TEST_DIRECTORY"/../contrib/credential/netrc/test.pl
+               'git-credential-netrc' \
+               perl "$GIT_BUILD_DIR"/contrib/credential/netrc/test.pl
 
        test_done
 )
index 1e1001030e7631dd49cbfeb002b429158019f191..c0fb3718b280c70316941de7617871360b724525 100755 (executable)
@@ -1,5 +1,4 @@
 #!/usr/bin/perl
-use lib (split(/:/, $ENV{GITPERLLIB}));
 
 use warnings;
 use strict;
@@ -12,7 +11,6 @@ BEGIN
        # t-git-credential-netrc.sh kicks off our testing, so we have to go
        # from there.
        Test::More->builder->current_test(1);
-       Test::More->builder->no_ending(1);
 }
 
 my @global_credential_args = @ARGV;
@@ -104,6 +102,9 @@ BEGIN
 
 ok(scalar keys %$cred == 2, 'Got keys decrypted by command option');
 
+my $is_passing = eval { Test::More->is_passing };
+exit($is_passing ? 0 : 1) unless $@ =~ /Can't locate object method/;
+
 sub run_credential
 {
        my $args = shift @_;
index 64d0d30e08de4acd496bf955d9ce64afa0ff5b8b..56cfe31ec5363c6f1e9b3d51ec700c7d46730080 100644 (file)
--- a/convert.c
+++ b/convert.c
@@ -1,6 +1,7 @@
 #define NO_THE_INDEX_COMPATIBILITY_MACROS
 #include "cache.h"
 #include "config.h"
+#include "object-store.h"
 #include "attr.h"
 #include "run-command.h"
 #include "quote.h"
index 104f954a25700a4eee95507e7ebb7734e94b67c6..a9f38eb5a3e0e17d111301b581d06876ce5fd510 100644 (file)
@@ -389,8 +389,12 @@ static void do_oneway_diff(struct unpack_trees_options *o,
        struct rev_info *revs = o->unpack_data;
        int match_missing, cached;
 
-       /* i-t-a entries do not actually exist in the index */
-       if (revs->diffopt.ita_invisible_in_index &&
+       /*
+        * i-t-a entries do not actually exist in the index (if we're
+        * looking at its content)
+        */
+       if (o->index_only &&
+           revs->diffopt.ita_invisible_in_index &&
            idx && ce_intent_to_add(idx)) {
                idx = NULL;
                if (!tree)
diff --git a/diff.c b/diff.c
index 136d44b45560d5c9db7e88a1ff22aa6b086108e8..dc53a19bab609eac8de52e57f437c79da7fbb1fa 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -13,6 +13,7 @@
 #include "attr.h"
 #include "run-command.h"
 #include "utf8.h"
+#include "object-store.h"
 #include "userdiff.h"
 #include "submodule-config.h"
 #include "submodule.h"
@@ -22,6 +23,7 @@
 #include "argv-array.h"
 #include "graph.h"
 #include "packfile.h"
+#include "help.h"
 
 #ifdef NO_FAST_WORKING_DIRECTORY
 #define FAST_WORKING_DIRECTORY 0
@@ -69,46 +71,37 @@ static char diff_colors[][COLOR_MAXLEN] = {
        GIT_COLOR_FAINT_ITALIC, /* NEW_MOVED_ALTERNATIVE_DIM */
 };
 
+static const char *color_diff_slots[] = {
+       [DIFF_CONTEXT]                = "context",
+       [DIFF_METAINFO]               = "meta",
+       [DIFF_FRAGINFO]               = "frag",
+       [DIFF_FILE_OLD]               = "old",
+       [DIFF_FILE_NEW]               = "new",
+       [DIFF_COMMIT]                 = "commit",
+       [DIFF_WHITESPACE]             = "whitespace",
+       [DIFF_FUNCINFO]               = "func",
+       [DIFF_FILE_OLD_MOVED]         = "oldMoved",
+       [DIFF_FILE_OLD_MOVED_ALT]     = "oldMovedAlternative",
+       [DIFF_FILE_OLD_MOVED_DIM]     = "oldMovedDimmed",
+       [DIFF_FILE_OLD_MOVED_ALT_DIM] = "oldMovedAlternativeDimmed",
+       [DIFF_FILE_NEW_MOVED]         = "newMoved",
+       [DIFF_FILE_NEW_MOVED_ALT]     = "newMovedAlternative",
+       [DIFF_FILE_NEW_MOVED_DIM]     = "newMovedDimmed",
+       [DIFF_FILE_NEW_MOVED_ALT_DIM] = "newMovedAlternativeDimmed",
+};
+
 static NORETURN void die_want_option(const char *option_name)
 {
        die(_("option '%s' requires a value"), option_name);
 }
 
+define_list_config_array_extra(color_diff_slots, {"plain"});
+
 static int parse_diff_color_slot(const char *var)
 {
-       if (!strcasecmp(var, "context") || !strcasecmp(var, "plain"))
+       if (!strcasecmp(var, "plain"))
                return DIFF_CONTEXT;
-       if (!strcasecmp(var, "meta"))
-               return DIFF_METAINFO;
-       if (!strcasecmp(var, "frag"))
-               return DIFF_FRAGINFO;
-       if (!strcasecmp(var, "old"))
-               return DIFF_FILE_OLD;
-       if (!strcasecmp(var, "new"))
-               return DIFF_FILE_NEW;
-       if (!strcasecmp(var, "commit"))
-               return DIFF_COMMIT;
-       if (!strcasecmp(var, "whitespace"))
-               return DIFF_WHITESPACE;
-       if (!strcasecmp(var, "func"))
-               return DIFF_FUNCINFO;
-       if (!strcasecmp(var, "oldmoved"))
-               return DIFF_FILE_OLD_MOVED;
-       if (!strcasecmp(var, "oldmovedalternative"))
-               return DIFF_FILE_OLD_MOVED_ALT;
-       if (!strcasecmp(var, "oldmoveddimmed"))
-               return DIFF_FILE_OLD_MOVED_DIM;
-       if (!strcasecmp(var, "oldmovedalternativedimmed"))
-               return DIFF_FILE_OLD_MOVED_ALT_DIM;
-       if (!strcasecmp(var, "newmoved"))
-               return DIFF_FILE_NEW_MOVED;
-       if (!strcasecmp(var, "newmovedalternative"))
-               return DIFF_FILE_NEW_MOVED_ALT;
-       if (!strcasecmp(var, "newmoveddimmed"))
-               return DIFF_FILE_NEW_MOVED_DIM;
-       if (!strcasecmp(var, "newmovedalternativedimmed"))
-               return DIFF_FILE_NEW_MOVED_ALT_DIM;
-       return -1;
+       return LOOKUP_CONFIG(color_diff_slots, var);
 }
 
 static int parse_dirstat_params(struct diff_options *options, const char *params_string,
index 0b7e4989a87214faa22e4f8ec75a719d3fd857ae..d775183c2fd1bed06a97facb56c4721e4e5df2f6 100644 (file)
@@ -4,6 +4,7 @@
 #include "cache.h"
 #include "diff.h"
 #include "diffcore.h"
+#include "object-store.h"
 #include "hashmap.h"
 #include "progress.h"
 
diff --git a/dir.c b/dir.c
index ccf8b4975e8645182da783b2367e31401a4cdadb..a1fe57e925f8ceede7780fc2542ade4f55b15bca 100644 (file)
--- a/dir.c
+++ b/dir.c
@@ -11,6 +11,7 @@
 #include "cache.h"
 #include "config.h"
 #include "dir.h"
+#include "object-store.h"
 #include "attr.h"
 #include "refs.h"
 #include "wildmatch.h"
@@ -2853,7 +2854,8 @@ struct untracked_cache *read_untracked_extension(const void *data, unsigned long
        struct read_data rd;
        const unsigned char *next = data, *end = (const unsigned char *)data + sz;
        const char *ident;
-       int ident_len, len;
+       int ident_len;
+       ssize_t len;
        const char *exclude_per_dir;
 
        if (sz <= 1 || end[-1] != '\0')
diff --git a/entry.c b/entry.c
index 2101201a111785f449a65e785e9ed5b57b7aa196..b5d1d3cf2312f61b551258759fcc4b217d8a6fa7 100644 (file)
--- a/entry.c
+++ b/entry.c
@@ -1,5 +1,6 @@
 #include "cache.h"
 #include "blob.h"
+#include "object-store.h"
 #include "dir.h"
 #include "streaming.h"
 #include "submodule.h"
index 2a6de2330bc024d19ab0c1d8cc594f146ca6da11..013e845235ea88e977c3181258b3e77e6ecb4c2f 100644 (file)
@@ -192,7 +192,7 @@ void setup_git_env(const char *git_dir)
        git_namespace = expand_namespace(getenv(GIT_NAMESPACE_ENVIRONMENT));
        shallow_file = getenv(GIT_SHALLOW_FILE_ENVIRONMENT);
        if (shallow_file)
-               set_alternate_shallow_file(shallow_file, 0);
+               set_alternate_shallow_file(the_repository, shallow_file, 0);
 }
 
 int is_bare_repository(void)
@@ -319,11 +319,11 @@ char *get_index_file(void)
        return the_repository->index_file;
 }
 
-char *get_graft_file(void)
+char *get_graft_file(struct repository *r)
 {
-       if (!the_repository->graft_file)
+       if (!r->graft_file)
                BUG("git environment hasn't been setup");
-       return the_repository->graft_file;
+       return r->graft_file;
 }
 
 static void set_git_dir_1(const char *path)
index bed1994551cd03532fe56913b0e27343834c805f..33c08c40f896f32d9a1c251c1456755e949d91bd 100644 (file)
@@ -122,16 +122,23 @@ int ewah_serialize_strbuf(struct ewah_bitmap *self, struct strbuf *sb)
        return ewah_serialize_to(self, write_strbuf, sb);
 }
 
-int ewah_read_mmap(struct ewah_bitmap *self, const void *map, size_t len)
+ssize_t ewah_read_mmap(struct ewah_bitmap *self, const void *map, size_t len)
 {
        const uint8_t *ptr = map;
+       size_t data_len;
        size_t i;
 
+       if (len < sizeof(uint32_t))
+               return error("corrupt ewah bitmap: eof before bit size");
        self->bit_size = get_be32(ptr);
        ptr += sizeof(uint32_t);
+       len -= sizeof(uint32_t);
 
+       if (len < sizeof(uint32_t))
+               return error("corrupt ewah bitmap: eof before length");
        self->buffer_size = self->alloc_size = get_be32(ptr);
        ptr += sizeof(uint32_t);
+       len -= sizeof(uint32_t);
 
        REALLOC_ARRAY(self->buffer, self->alloc_size);
 
@@ -141,15 +148,25 @@ int ewah_read_mmap(struct ewah_bitmap *self, const void *map, size_t len)
         * the endianness conversion in a separate pass to ensure
         * we're loading 8-byte aligned words.
         */
-       memcpy(self->buffer, ptr, self->buffer_size * sizeof(eword_t));
-       ptr += self->buffer_size * sizeof(eword_t);
+       data_len = st_mult(self->buffer_size, sizeof(eword_t));
+       if (len < data_len)
+               return error("corrupt ewah bitmap: eof in data "
+                            "(%"PRIuMAX" bytes short)",
+                            (uintmax_t)(data_len - len));
+       memcpy(self->buffer, ptr, data_len);
+       ptr += data_len;
+       len -= data_len;
 
        for (i = 0; i < self->buffer_size; ++i)
                self->buffer[i] = ntohll(self->buffer[i]);
 
+       if (len < sizeof(uint32_t))
+               return error("corrupt ewah bitmap: eof before rlw");
        self->rlw = self->buffer + get_be32(ptr);
+       ptr += sizeof(uint32_t);
+       len -= sizeof(uint32_t);
 
-       return (3 * 4) + (self->buffer_size * 8);
+       return ptr - (const uint8_t *)map;
 }
 
 int ewah_deserialize(struct ewah_bitmap *self, int fd)
index dc43d05b644af07a86bb64dbc6790ea0897d2f43..357fd93c84edbe79f9bcb10e2947ed935ac9f0df 100644 (file)
@@ -91,7 +91,7 @@ int ewah_serialize_native(struct ewah_bitmap *self, int fd);
 int ewah_serialize_strbuf(struct ewah_bitmap *self, struct strbuf *);
 
 int ewah_deserialize(struct ewah_bitmap *self, int fd);
-int ewah_read_mmap(struct ewah_bitmap *self, const void *map, size_t len);
+ssize_t ewah_read_mmap(struct ewah_bitmap *self, const void *map, size_t len);
 
 uint32_t ewah_checksum(struct ewah_bitmap *self);
 
index a320ce9872b5e752aeb592a16cc9108ae87e9d71..dbd879ac7fd92f370a0056593a1d633750e2f7fd 100644 (file)
@@ -19,6 +19,7 @@
 #include "sha1-array.h"
 #include "oidset.h"
 #include "packfile.h"
+#include "object-store.h"
 
 static int transfer_unpack_limit = -1;
 static int fetch_unpack_limit = -1;
@@ -396,7 +397,7 @@ static int find_common(struct fetch_pack_args *args,
                return 1;
        }
 
-       if (is_repository_shallow())
+       if (is_repository_shallow(the_repository))
                write_shallow_commits(&req_buf, 1, NULL);
        if (args->depth > 0)
                packet_buf_write(&req_buf, "deepen %d", args->depth);
@@ -427,7 +428,7 @@ static int find_common(struct fetch_pack_args *args,
                        if (skip_prefix(line, "shallow ", &arg)) {
                                if (get_oid_hex(arg, &oid))
                                        die(_("invalid shallow line: %s"), line);
-                               register_shallow(&oid);
+                               register_shallow(the_repository, &oid);
                                continue;
                        }
                        if (skip_prefix(line, "unshallow ", &arg)) {
@@ -657,11 +658,11 @@ static void filter_refs(struct fetch_pack_args *args,
                                }
                                i++;
                        }
-               }
 
-               if (!keep && args->fetch_all &&
-                   (!args->deepen || !starts_with(ref->name, "refs/tags/")))
-                       keep = 1;
+                       if (!keep && args->fetch_all &&
+                           (!args->deepen || !starts_with(ref->name, "refs/tags/")))
+                               keep = 1;
+               }
 
                if (keep) {
                        *newtail = ref;
@@ -985,7 +986,7 @@ static struct ref *do_fetch_pack(struct fetch_pack_args *args,
        sort_ref_list(&ref, ref_compare_name);
        QSORT(sought, nr_sought, cmp_ref_by_name);
 
-       if ((args->depth > 0 || is_repository_shallow()) && !server_supports("shallow"))
+       if ((args->depth > 0 || is_repository_shallow(the_repository)) && !server_supports("shallow"))
                die(_("Server does not support shallow clients"));
        if (args->depth > 0 || args->deepen_since || args->deepen_not)
                args->deepen = 1;
@@ -1083,7 +1084,7 @@ static struct ref *do_fetch_pack(struct fetch_pack_args *args,
 static void add_shallow_requests(struct strbuf *req_buf,
                                 const struct fetch_pack_args *args)
 {
-       if (is_repository_shallow())
+       if (is_repository_shallow(the_repository))
                write_shallow_commits(req_buf, 1, NULL);
        if (args->depth > 0)
                packet_buf_write(req_buf, "deepen %d", args->depth);
@@ -1195,7 +1196,7 @@ static int send_fetch_request(int fd_out, const struct fetch_pack_args *args,
        /* Add shallow-info and deepen request */
        if (server_supports_feature("fetch", "shallow", 0))
                add_shallow_requests(&req_buf, args);
-       else if (is_repository_shallow() || args->deepen)
+       else if (is_repository_shallow(the_repository) || args->deepen)
                die(_("Server does not support shallow requests"));
 
        /* Add filter */
@@ -1308,7 +1309,7 @@ static void receive_shallow_info(struct fetch_pack_args *args,
                if (skip_prefix(reader->line, "shallow ", &arg)) {
                        if (get_oid_hex(arg, &oid))
                                die(_("invalid shallow line: %s"), reader->line);
-                       register_shallow(&oid);
+                       register_shallow(the_repository, &oid);
                        continue;
                }
                if (skip_prefix(reader->line, "unshallow ", &arg)) {
@@ -1479,7 +1480,7 @@ static void update_shallow(struct fetch_pack_args *args,
 
        if (args->deepen && alternate_shallow_file) {
                if (*alternate_shallow_file == '\0') { /* --unshallow */
-                       unlink_or_warn(git_path_shallow());
+                       unlink_or_warn(git_path_shallow(the_repository));
                        rollback_lock_file(&shallow_lock);
                } else
                        commit_lock_file(&shallow_lock);
diff --git a/fsck.c b/fsck.c
index 48e7e36869a7cbcb47e2e2a0401dd1047612e5d7..4dfe65f715467cb31dab418af658968e491a9645 100644 (file)
--- a/fsck.c
+++ b/fsck.c
@@ -1,4 +1,5 @@
 #include "cache.h"
+#include "object-store.h"
 #include "object.h"
 #include "blob.h"
 #include "tree.h"
@@ -14,6 +15,7 @@
 #include "packfile.h"
 #include "submodule-config.h"
 #include "config.h"
+#include "help.h"
 
 static struct oidset gitmodules_found = OIDSET_INIT;
 static struct oidset gitmodules_done = OIDSET_INIT;
@@ -86,37 +88,60 @@ enum fsck_msg_id {
 #undef MSG_ID
 
 #define STR(x) #x
-#define MSG_ID(id, msg_type) { STR(id), NULL, FSCK_##msg_type },
+#define MSG_ID(id, msg_type) { STR(id), NULL, NULL, FSCK_##msg_type },
 static struct {
        const char *id_string;
        const char *downcased;
+       const char *camelcased;
        int msg_type;
 } msg_id_info[FSCK_MSG_MAX + 1] = {
        FOREACH_MSG_ID(MSG_ID)
-       { NULL, NULL, -1 }
+       { NULL, NULL, NULL, -1 }
 };
 #undef MSG_ID
 
-static int parse_msg_id(const char *text)
+static void prepare_msg_ids(void)
 {
        int i;
 
-       if (!msg_id_info[0].downcased) {
-               /* convert id_string to lower case, without underscores. */
-               for (i = 0; i < FSCK_MSG_MAX; i++) {
-                       const char *p = msg_id_info[i].id_string;
-                       int len = strlen(p);
-                       char *q = xmalloc(len);
-
-                       msg_id_info[i].downcased = q;
-                       while (*p)
-                               if (*p == '_')
-                                       p++;
-                               else
-                                       *(q)++ = tolower(*(p)++);
-                       *q = '\0';
+       if (msg_id_info[0].downcased)
+               return;
+
+       /* convert id_string to lower case, without underscores. */
+       for (i = 0; i < FSCK_MSG_MAX; i++) {
+               const char *p = msg_id_info[i].id_string;
+               int len = strlen(p);
+               char *q = xmalloc(len);
+
+               msg_id_info[i].downcased = q;
+               while (*p)
+                       if (*p == '_')
+                               p++;
+                       else
+                               *(q)++ = tolower(*(p)++);
+               *q = '\0';
+
+               p = msg_id_info[i].id_string;
+               q = xmalloc(len);
+               msg_id_info[i].camelcased = q;
+               while (*p) {
+                       if (*p == '_') {
+                               p++;
+                               if (*p)
+                                       *q++ = *p++;
+                       } else {
+                               *q++ = tolower(*p++);
+                       }
                }
+               *q = '\0';
        }
+}
+
+static int parse_msg_id(const char *text)
+{
+       int i;
+
+       prepare_msg_ids();
 
        for (i = 0; i < FSCK_MSG_MAX; i++)
                if (!strcmp(text, msg_id_info[i].downcased))
@@ -125,6 +150,16 @@ static int parse_msg_id(const char *text)
        return -1;
 }
 
+void list_config_fsck_msg_ids(struct string_list *list, const char *prefix)
+{
+       int i;
+
+       prepare_msg_ids();
+
+       for (i = 0; i < FSCK_MSG_MAX; i++)
+               list_config_item(list, prefix, msg_id_info[i].camelcased);
+}
+
 static int fsck_msg_type(enum fsck_msg_id msg_id,
        struct fsck_options *options)
 {
@@ -761,7 +796,7 @@ static int fsck_commit_buffer(struct commit *commit, const char *buffer,
                buffer = p + 1;
                parent_line_count++;
        }
-       graft = lookup_commit_graft(&commit->object.oid);
+       graft = lookup_commit_graft(the_repository, &commit->object.oid);
        parent_count = commit_list_count(commit->parents);
        if (graft) {
                if (graft->nr_parent == -1 && !parent_count)
index 8d6d8b45ceb0138797eb7e54b15f7546925598ed..c4124acbe7802369ff64c12b48a513437c929a20 100755 (executable)
@@ -76,6 +76,23 @@ print_command_list () {
        echo "};"
 }
 
+print_config_list () {
+       cat <<EOF
+static const char *config_name_list[] = {
+EOF
+       grep '^[a-zA-Z].*\..*::$' Documentation/config.txt |
+       sed '/deprecated/d; s/::$//; s/,  */\n/g' |
+       sort |
+       while read line
+       do
+               echo "  \"$line\","
+       done
+       cat <<EOF
+       NULL,
+};
+EOF
+}
+
 echo "/* Automatically generated by generate-cmdlist.sh */
 struct cmdname_help {
        const char *name;
@@ -88,3 +105,5 @@ echo
 define_category_names "$1"
 echo
 print_command_list "$1"
+echo
+print_config_list
index 36f38ced902e1902a626933bdcda09819acf39a7..20eb81cc92f947d872b31a179d43d97772ff25e4 100755 (executable)
@@ -1062,7 +1062,7 @@ sub recount_edited_hunk {
                        $o_cnt++;
                } elsif ($mode eq '+') {
                        $n_cnt++;
-               } elsif ($mode eq ' ') {
+               } elsif ($mode eq ' ' or $mode eq "\n") {
                        $o_cnt++;
                        $n_cnt++;
                }
index 18bdd4228ba71e9b7c3d33a61d50f0da7fac84e7..0354d4df5cadd5145245d755a8868608b849719f 100755 (executable)
--- a/git-p4.py
+++ b/git-p4.py
@@ -47,8 +47,10 @@ def __str__(self):
 # Only labels/tags matching this will be imported/exported
 defaultLabelRegexp = r'[a-zA-Z0-9_\-.]+$'
 
-# Grab changes in blocks of this many revisions, unless otherwise requested
-defaultBlockSize = 512
+# The block size is reduced automatically if required
+defaultBlockSize = 1<<20
+
+p4_access_checked = False
 
 def p4_build_cmd(cmd):
     """Build a suitable p4 command line.
@@ -91,6 +93,13 @@ def p4_build_cmd(cmd):
         real_cmd = ' '.join(real_cmd) + ' ' + cmd
     else:
         real_cmd += cmd
+
+    # now check that we can actually talk to the server
+    global p4_access_checked
+    if not p4_access_checked:
+        p4_access_checked = True    # suppress access checks in p4_check_access itself
+        p4_check_access()
+
     return real_cmd
 
 def git_dir(path):
@@ -264,6 +273,52 @@ def p4_system(cmd):
     if retcode:
         raise CalledProcessError(retcode, real_cmd)
 
+def die_bad_access(s):
+    die("failure accessing depot: {0}".format(s.rstrip()))
+
+def p4_check_access(min_expiration=1):
+    """ Check if we can access Perforce - account still logged in
+    """
+    results = p4CmdList(["login", "-s"])
+
+    if len(results) == 0:
+        # should never get here: always get either some results, or a p4ExitCode
+        assert("could not parse response from perforce")
+
+    result = results[0]
+
+    if 'p4ExitCode' in result:
+        # p4 returned non-zero status, e.g. P4PORT invalid, or p4 not in path
+        die_bad_access("could not run p4")
+
+    code = result.get("code")
+    if not code:
+        # we get here if we couldn't connect and there was nothing to unmarshal
+        die_bad_access("could not connect")
+
+    elif code == "stat":
+        expiry = result.get("TicketExpiration")
+        if expiry:
+            expiry = int(expiry)
+            if expiry > min_expiration:
+                # ok to carry on
+                return
+            else:
+                die_bad_access("perforce ticket expires in {0} seconds".format(expiry))
+
+        else:
+            # account without a timeout - all ok
+            return
+
+    elif code == "error":
+        data = result.get("data")
+        if data:
+            die_bad_access("p4 error: {0}".format(data))
+        else:
+            die_bad_access("unknown error")
+    else:
+        die_bad_access("unknown error code {0}".format(code))
+
 _p4_version_string = None
 def p4_version_string():
     """Read the version string, showing just the last line, which
@@ -511,10 +566,30 @@ def isModeExec(mode):
     # otherwise False.
     return mode[-3:] == "755"
 
+class P4Exception(Exception):
+    """ Base class for exceptions from the p4 client """
+    def __init__(self, exit_code):
+        self.p4ExitCode = exit_code
+
+class P4ServerException(P4Exception):
+    """ Base class for exceptions where we get some kind of marshalled up result from the server """
+    def __init__(self, exit_code, p4_result):
+        super(P4ServerException, self).__init__(exit_code)
+        self.p4_result = p4_result
+        self.code = p4_result[0]['code']
+        self.data = p4_result[0]['data']
+
+class P4RequestSizeException(P4ServerException):
+    """ One of the maxresults or maxscanrows errors """
+    def __init__(self, exit_code, p4_result, limit):
+        super(P4RequestSizeException, self).__init__(exit_code, p4_result)
+        self.limit = limit
+
 def isModeExecChanged(src_mode, dst_mode):
     return isModeExec(src_mode) != isModeExec(dst_mode)
 
-def p4CmdList(cmd, stdin=None, stdin_mode='w+b', cb=None, skip_info=False):
+def p4CmdList(cmd, stdin=None, stdin_mode='w+b', cb=None, skip_info=False,
+        errors_as_exceptions=False):
 
     if isinstance(cmd,basestring):
         cmd = "-G " + cmd
@@ -561,9 +636,25 @@ def p4CmdList(cmd, stdin=None, stdin_mode='w+b', cb=None, skip_info=False):
         pass
     exitCode = p4.wait()
     if exitCode != 0:
-        entry = {}
-        entry["p4ExitCode"] = exitCode
-        result.append(entry)
+        if errors_as_exceptions:
+            if len(result) > 0:
+                data = result[0].get('data')
+                if data:
+                    m = re.search('Too many rows scanned \(over (\d+)\)', data)
+                    if not m:
+                        m = re.search('Request too large \(over (\d+)\)', data)
+
+                    if m:
+                        limit = int(m.group(1))
+                        raise P4RequestSizeException(exitCode, result, limit)
+
+                raise P4ServerException(exitCode, result)
+            else:
+                raise P4Exception(exitCode)
+        else:
+            entry = {}
+            entry["p4ExitCode"] = exitCode
+            result.append(entry)
 
     return result
 
@@ -868,7 +959,7 @@ def p4ChangesForPaths(depotPaths, changeRange, requestedBlockSize):
         try:
             (changeStart, changeEnd) = p4ParseNumericChangeRange(parts)
             block_size = chooseBlockSize(requestedBlockSize)
-        except:
+        except ValueError:
             changeStart = parts[0][1:]
             changeEnd = parts[1]
             if requestedBlockSize:
@@ -878,7 +969,8 @@ def p4ChangesForPaths(depotPaths, changeRange, requestedBlockSize):
     changes = set()
 
     # Retrieve changes a block at a time, to prevent running
-    # into a MaxResults/MaxScanRows error from the server.
+    # into a MaxResults/MaxScanRows error from the server. If
+    # we _do_ hit one of those errors, turn down the block size
 
     while True:
         cmd = ['changes']
@@ -892,10 +984,24 @@ def p4ChangesForPaths(depotPaths, changeRange, requestedBlockSize):
         for p in depotPaths:
             cmd += ["%s...@%s" % (p, revisionRange)]
 
+        # fetch the changes
+        try:
+            result = p4CmdList(cmd, errors_as_exceptions=True)
+        except P4RequestSizeException as e:
+            if not block_size:
+                block_size = e.limit
+            elif block_size > e.limit:
+                block_size = e.limit
+            else:
+                block_size = max(2, block_size // 2)
+
+            if verbose: print("block size error, retrying with block size {0}".format(block_size))
+            continue
+        except P4Exception as e:
+            die('Error retrieving changes description ({0})'.format(e.p4ExitCode))
+
         # Insert changes in chronological order
-        for entry in reversed(p4CmdList(cmd)):
-            if entry.has_key('p4ExitCode'):
-                die('Error retrieving changes descriptions ({})'.format(entry['p4ExitCode']))
+        for entry in reversed(result):
             if not entry.has_key('change'):
                 continue
             changes.add(int(entry['change']))
@@ -1363,7 +1469,14 @@ def __init__(self):
                 optparse.make_option("--update-shelve", dest="update_shelve", action="append", type="int",
                                      metavar="CHANGELIST",
                                      help="update an existing shelved changelist, implies --shelve, "
-                                           "repeat in-order for multiple shelved changelists")
+                                           "repeat in-order for multiple shelved changelists"),
+                optparse.make_option("--commit", dest="commit", metavar="COMMIT",
+                                     help="submit only the specified commit(s), one commit or xxx..xxx"),
+                optparse.make_option("--disable-rebase", dest="disable_rebase", action="store_true",
+                                     help="Disable rebase after submit is completed. Can be useful if you "
+                                     "work from a local git branch that is not master"),
+                optparse.make_option("--disable-p4sync", dest="disable_p4sync", action="store_true",
+                                     help="Skip Perforce sync of p4/master after submit or shelve"),
         ]
         self.description = "Submit changes from git to the perforce depot."
         self.usage += " [name of git branch to submit into perforce depot]"
@@ -1373,6 +1486,9 @@ def __init__(self):
         self.dry_run = False
         self.shelve = False
         self.update_shelve = list()
+        self.commit = ""
+        self.disable_rebase = gitConfigBool("git-p4.disableRebase")
+        self.disable_p4sync = gitConfigBool("git-p4.disableP4Sync")
         self.prepare_p4_only = False
         self.conflict_behavior = None
         self.isWindows = (platform.system() == "Windows")
@@ -2114,9 +2230,18 @@ def run(self, args):
         else:
             committish = 'HEAD'
 
-        for line in read_pipe_lines(["git", "rev-list", "--no-merges", "%s..%s" % (self.origin, committish)]):
-            commits.append(line.strip())
-        commits.reverse()
+        if self.commit != "":
+            if self.commit.find("..") != -1:
+                limits_ish = self.commit.split("..")
+                for line in read_pipe_lines(["git", "rev-list", "--no-merges", "%s..%s" % (limits_ish[0], limits_ish[1])]):
+                    commits.append(line.strip())
+                commits.reverse()
+            else:
+                commits.append(self.commit)
+        else:
+            for line in read_pipe_lines(["git", "rev-list", "--no-merges", "%s..%s" % (self.origin, committish)]):
+                commits.append(line.strip())
+            commits.reverse()
 
         if self.preserveUser or gitConfigBool("git-p4.skipUserNameCheck"):
             self.checkAuthorship = False
@@ -2224,10 +2349,14 @@ def run(self, args):
             sync = P4Sync()
             if self.branch:
                 sync.branch = self.branch
-            sync.run([])
+            if self.disable_p4sync:
+                sync.sync_origin_only()
+            else:
+                sync.run([])
 
-            rebase = P4Rebase()
-            rebase.rebase()
+                if not self.disable_rebase:
+                    rebase = P4Rebase()
+                    rebase.rebase()
 
         else:
             if len(applied) == 0:
@@ -3307,6 +3436,14 @@ def importChanges(self, changes, shelved=False, origin_revision=0):
                 print self.gitError.read()
                 sys.exit(1)
 
+    def sync_origin_only(self):
+        if self.syncWithOrigin:
+            self.hasOrigin = originP4BranchesExist()
+            if self.hasOrigin:
+                if not self.silent:
+                    print 'Syncing with origin first, using "git fetch origin"'
+                system("git fetch origin")
+
     def importHeadRevision(self, revision):
         print "Doing initial import of %s from revision %s into %s" % (' '.join(self.depotPaths), revision, self.branch)
 
@@ -3385,12 +3522,7 @@ def run(self, args):
         else:
             self.refPrefix = "refs/heads/p4/"
 
-        if self.syncWithOrigin:
-            self.hasOrigin = originP4BranchesExist()
-            if self.hasOrigin:
-                if not self.silent:
-                    print 'Syncing with origin first, using "git fetch origin"'
-                system("git fetch origin")
+        self.sync_origin_only()
 
         branch_arg_given = bool(self.branch)
         if len(self.branch) == 0:
index 06a7b793075d7701b5dafa69b3576d13ba7c9de6..299ded21375ed3146052b9887dd2b56216404105 100644 (file)
 # file and written to the tail of $done.
 todo="$state_dir"/git-rebase-todo
 
-# The rebase command lines that have already been processed.  A line
-# is moved here when it is first handled, before any associated user
-# actions.
-done="$state_dir"/done
-
-# The commit message that is planned to be used for any changes that
-# need to be committed following a user interaction.
-msg="$state_dir"/message
-
-# The file into which is accumulated the suggested commit message for
-# squash/fixup commands.  When the first of a series of squash/fixups
-# is seen, the file is created and the commit message from the
-# previous commit and from the first squash/fixup commit are written
-# to it.  The commit message for each subsequent squash/fixup commit
-# is appended to the file as it is processed.
-#
-# The first line of the file is of the form
-#     # This is a combination of $count commits.
-# where $count is the number of commits whose messages have been
-# written to the file so far (including the initial "pick" commit).
-# Each time that a commit message is processed, this line is read and
-# updated.  It is deleted just before the combined commit is made.
-squash_msg="$state_dir"/message-squash
-
-# If the current series of squash/fixups has not yet included a squash
-# command, then this file exists and holds the commit message of the
-# original "pick" commit.  (If the series ends without a "squash"
-# command, then this can be used as the commit message of the combined
-# commit without opening the editor.)
-fixup_msg="$state_dir"/message-fixup
-
-# $rewritten is the name of a directory containing files for each
-# commit that is reachable by at least one merge base of $head and
-# $upstream. They are not necessarily rewritten, but their children
-# might be.  This ensures that commits on merged, but otherwise
-# unrelated side branches are left alone. (Think "X" in the man page's
-# example.)
-rewritten="$state_dir"/rewritten
-
-dropped="$state_dir"/dropped
-
-end="$state_dir"/end
-msgnum="$state_dir"/msgnum
-
-# A script to set the GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, and
-# GIT_AUTHOR_DATE that will be used for the commit that is currently
-# being rebased.
-author_script="$state_dir"/author-script
-
-# When an "edit" rebase command is being processed, the SHA1 of the
-# commit to be edited is recorded in this file.  When "git rebase
-# --continue" is executed, if there are any staged changes then they
-# will be amended to the HEAD commit, but only provided the HEAD
-# commit is still the commit to be edited.  When any other rebase
-# command is processed, this file is deleted.
-amend="$state_dir"/amend
-
-# For the post-rewrite hook, we make a list of rewritten commits and
-# their new sha1s.  The rewritten-pending list keeps the sha1s of
-# commits that have been processed, but not committed yet,
-# e.g. because they are waiting for a 'squash' command.
-rewritten_list="$state_dir"/rewritten-list
-rewritten_pending="$state_dir"/rewritten-pending
-
-# Work around Git for Windows' Bash whose "read" does not strip CRLF
-# and leaves CR at the end instead.
-cr=$(printf "\015")
-
-empty_tree=$(git hash-object -t tree /dev/null)
-
-strategy_args=${strategy:+--strategy=$strategy}
-test -n "$strategy_opts" &&
-eval '
-       for strategy_opt in '"$strategy_opts"'
-       do
-               strategy_args="$strategy_args -X$(git rev-parse --sq-quote "${strategy_opt#--}")"
-       done
-'
-
 GIT_CHERRY_PICK_HELP="$resolvemsg"
 export GIT_CHERRY_PICK_HELP
 
@@ -107,15 +28,6 @@ case "$comment_char" in
        ;;
 esac
 
-warn () {
-       printf '%s\n' "$*" >&2
-}
-
-# Output the commit message for the specified commit.
-commit_message () {
-       git cat-file commit "$1" | sed "1,/^$/d"
-}
-
 orig_reflog_action="$GIT_REFLOG_ACTION"
 
 comment_for_reflog () {
@@ -127,33 +39,6 @@ comment_for_reflog () {
        esac
 }
 
-last_count=
-mark_action_done () {
-       sed -e 1q < "$todo" >> "$done"
-       sed -e 1d < "$todo" >> "$todo".new
-       mv -f "$todo".new "$todo"
-       new_count=$(( $(git stripspace --strip-comments <"$done" | wc -l) ))
-       echo $new_count >"$msgnum"
-       total=$(($new_count + $(git stripspace --strip-comments <"$todo" | wc -l)))
-       echo $total >"$end"
-       if test "$last_count" != "$new_count"
-       then
-               last_count=$new_count
-               eval_gettext "Rebasing (\$new_count/\$total)"; printf "\r"
-               test -z "$verbose" || echo
-       fi
-}
-
-# Put the last action marked done at the beginning of the todo list
-# again. If there has not been an action marked done yet, leave the list of
-# items on the todo list unchanged.
-reschedule_last_action () {
-       tail -n 1 "$done" | cat - "$todo" >"$todo".new
-       sed -e \$d <"$done" >"$done".new
-       mv -f "$todo".new "$todo"
-       mv -f "$done".new "$done"
-}
-
 append_todo_help () {
        gettext "
 Commands:
@@ -186,50 +71,6 @@ If you remove a line here THAT COMMIT WILL BE LOST.
        fi
 }
 
-make_patch () {
-       sha1_and_parents="$(git rev-list --parents -1 "$1")"
-       case "$sha1_and_parents" in
-       ?*' '?*' '?*)
-               git diff --cc $sha1_and_parents
-               ;;
-       ?*' '?*)
-               git diff-tree -p "$1^!"
-               ;;
-       *)
-               echo "Root commit"
-               ;;
-       esac > "$state_dir"/patch
-       test -f "$msg" ||
-               commit_message "$1" > "$msg"
-       test -f "$author_script" ||
-               get_author_ident_from_commit "$1" > "$author_script"
-}
-
-die_with_patch () {
-       echo "$1" > "$state_dir"/stopped-sha
-       git update-ref REBASE_HEAD "$1"
-       make_patch "$1"
-       die "$2"
-}
-
-exit_with_patch () {
-       echo "$1" > "$state_dir"/stopped-sha
-       git update-ref REBASE_HEAD "$1"
-       make_patch $1
-       git rev-parse --verify HEAD > "$amend"
-       gpg_sign_opt_quoted=${gpg_sign_opt:+$(git rev-parse --sq-quote "$gpg_sign_opt")}
-       warn "$(eval_gettext "\
-You can amend the commit now, with
-
-       git commit --amend \$gpg_sign_opt_quoted
-
-Once you are satisfied with your changes, run
-
-       git rebase --continue")"
-       warn
-       exit $2
-}
-
 die_abort () {
        apply_autostash
        rm -rf "$state_dir"
@@ -240,30 +81,6 @@ has_action () {
        test -n "$(git stripspace --strip-comments <"$1")"
 }
 
-is_empty_commit() {
-       tree=$(git rev-parse -q --verify "$1"^{tree} 2>/dev/null) || {
-               sha1=$1
-               die "$(eval_gettext "\$sha1: not a commit that can be picked")"
-       }
-       ptree=$(git rev-parse -q --verify "$1"^^{tree} 2>/dev/null) ||
-               ptree=$empty_tree
-       test "$tree" = "$ptree"
-}
-
-is_merge_commit()
-{
-       git rev-parse --verify --quiet "$1"^2 >/dev/null 2>&1
-}
-
-# Run command with GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, and
-# GIT_AUTHOR_DATE exported from the current environment.
-do_with_author () {
-       (
-               export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE
-               "$@"
-       )
-}
-
 git_sequence_editor () {
        if test -z "$GIT_SEQUENCE_EDITOR"
        then
@@ -277,455 +94,6 @@ git_sequence_editor () {
        eval "$GIT_SEQUENCE_EDITOR" '"$@"'
 }
 
-pick_one () {
-       ff=--ff
-
-       case "$1" in -n) sha1=$2; ff= ;; *) sha1=$1 ;; esac
-       case "$force_rebase" in '') ;; ?*) ff= ;; esac
-       output git rev-parse --verify $sha1 || die "$(eval_gettext "Invalid commit name: \$sha1")"
-
-       if is_empty_commit "$sha1"
-       then
-               empty_args="--allow-empty"
-       fi
-
-       test -d "$rewritten" &&
-               pick_one_preserving_merges "$@" && return
-       output eval git cherry-pick $allow_rerere_autoupdate $allow_empty_message \
-                       ${gpg_sign_opt:+$(git rev-parse --sq-quote "$gpg_sign_opt")} \
-                       $signoff "$strategy_args" $empty_args $ff "$@"
-
-       # If cherry-pick dies it leaves the to-be-picked commit unrecorded. Reschedule
-       # previous task so this commit is not lost.
-       ret=$?
-       case "$ret" in [01]) ;; *) reschedule_last_action ;; esac
-       return $ret
-}
-
-pick_one_preserving_merges () {
-       fast_forward=t
-       case "$1" in
-       -n)
-               fast_forward=f
-               sha1=$2
-               ;;
-       *)
-               sha1=$1
-               ;;
-       esac
-       sha1=$(git rev-parse $sha1)
-
-       if test -f "$state_dir"/current-commit && test "$fast_forward" = t
-       then
-               while read current_commit
-               do
-                       git rev-parse HEAD > "$rewritten"/$current_commit
-               done <"$state_dir"/current-commit
-               rm "$state_dir"/current-commit ||
-                       die "$(gettext "Cannot write current commit's replacement sha1")"
-       fi
-
-       echo $sha1 >> "$state_dir"/current-commit
-
-       # rewrite parents; if none were rewritten, we can fast-forward.
-       new_parents=
-       pend=" $(git rev-list --parents -1 $sha1 | cut -d' ' -s -f2-)"
-       if test "$pend" = " "
-       then
-               pend=" root"
-       fi
-       while [ "$pend" != "" ]
-       do
-               p=$(expr "$pend" : ' \([^ ]*\)')
-               pend="${pend# $p}"
-
-               if test -f "$rewritten"/$p
-               then
-                       new_p=$(cat "$rewritten"/$p)
-
-                       # If the todo reordered commits, and our parent is marked for
-                       # rewriting, but hasn't been gotten to yet, assume the user meant to
-                       # drop it on top of the current HEAD
-                       if test -z "$new_p"
-                       then
-                               new_p=$(git rev-parse HEAD)
-                       fi
-
-                       test $p != $new_p && fast_forward=f
-                       case "$new_parents" in
-                       *$new_p*)
-                               ;; # do nothing; that parent is already there
-                       *)
-                               new_parents="$new_parents $new_p"
-                               ;;
-                       esac
-               else
-                       if test -f "$dropped"/$p
-                       then
-                               fast_forward=f
-                               replacement="$(cat "$dropped"/$p)"
-                               test -z "$replacement" && replacement=root
-                               pend=" $replacement$pend"
-                       else
-                               new_parents="$new_parents $p"
-                       fi
-               fi
-       done
-       case $fast_forward in
-       t)
-               output warn "$(eval_gettext "Fast-forward to \$sha1")"
-               output git reset --hard $sha1 ||
-                       die "$(eval_gettext "Cannot fast-forward to \$sha1")"
-               ;;
-       f)
-               first_parent=$(expr "$new_parents" : ' \([^ ]*\)')
-
-               if [ "$1" != "-n" ]
-               then
-                       # detach HEAD to current parent
-                       output git checkout $first_parent 2> /dev/null ||
-                               die "$(eval_gettext "Cannot move HEAD to \$first_parent")"
-               fi
-
-               case "$new_parents" in
-               ' '*' '*)
-                       test "a$1" = a-n && die "$(eval_gettext "Refusing to squash a merge: \$sha1")"
-
-                       # redo merge
-                       author_script_content=$(get_author_ident_from_commit $sha1)
-                       eval "$author_script_content"
-                       msg_content="$(commit_message $sha1)"
-                       # No point in merging the first parent, that's HEAD
-                       new_parents=${new_parents# $first_parent}
-                       merge_args="--no-log --no-ff"
-                       if ! do_with_author output eval \
-                               git merge ${gpg_sign_opt:+$(git rev-parse \
-                                       --sq-quote "$gpg_sign_opt")} \
-                               $allow_rerere_autoupdate "$merge_args" \
-                               "$strategy_args" \
-                               -m "$(git rev-parse --sq-quote "$msg_content")" \
-                               "$new_parents"
-                       then
-                               printf "%s\n" "$msg_content" > "$GIT_DIR"/MERGE_MSG
-                               die_with_patch $sha1 "$(eval_gettext "Error redoing merge \$sha1")"
-                       fi
-                       echo "$sha1 $(git rev-parse HEAD^0)" >> "$rewritten_list"
-                       ;;
-               *)
-                       output eval git cherry-pick $allow_rerere_autoupdate \
-                               $allow_empty_message \
-                               ${gpg_sign_opt:+$(git rev-parse --sq-quote "$gpg_sign_opt")} \
-                               "$strategy_args" "$@" ||
-                               die_with_patch $sha1 "$(eval_gettext "Could not pick \$sha1")"
-                       ;;
-               esac
-               ;;
-       esac
-}
-
-this_nth_commit_message () {
-       n=$1
-       eval_gettext "This is the commit message #\${n}:"
-}
-
-skip_nth_commit_message () {
-       n=$1
-       eval_gettext "The commit message #\${n} will be skipped:"
-}
-
-update_squash_messages () {
-       if test -f "$squash_msg"; then
-               mv "$squash_msg" "$squash_msg".bak || exit
-               count=$(($(sed -n \
-                       -e "1s/^$comment_char[^0-9]*\([0-9][0-9]*\).*/\1/p" \
-                       -e "q" < "$squash_msg".bak)+1))
-               {
-                       printf '%s\n' "$comment_char $(eval_ngettext \
-                               "This is a combination of \$count commit." \
-                               "This is a combination of \$count commits." \
-                               $count)"
-                       sed -e 1d -e '2,/^./{
-                               /^$/d
-                       }' <"$squash_msg".bak
-               } >"$squash_msg"
-       else
-               commit_message HEAD >"$fixup_msg" ||
-               die "$(eval_gettext "Cannot write \$fixup_msg")"
-               count=2
-               {
-                       printf '%s\n' "$comment_char $(gettext "This is a combination of 2 commits.")"
-                       printf '%s\n' "$comment_char $(gettext "This is the 1st commit message:")"
-                       echo
-                       cat "$fixup_msg"
-               } >"$squash_msg"
-       fi
-       case $1 in
-       squash)
-               rm -f "$fixup_msg"
-               echo
-               printf '%s\n' "$comment_char $(this_nth_commit_message $count)"
-               echo
-               commit_message $2
-               ;;
-       fixup)
-               echo
-               printf '%s\n' "$comment_char $(skip_nth_commit_message $count)"
-               echo
-               # Change the space after the comment character to TAB:
-               commit_message $2 | git stripspace --comment-lines | sed -e 's/ /       /'
-               ;;
-       esac >>"$squash_msg"
-}
-
-peek_next_command () {
-       git stripspace --strip-comments <"$todo" | sed -n -e 's/ .*//p' -e q
-}
-
-# A squash/fixup has failed.  Prepare the long version of the squash
-# commit message, then die_with_patch.  This code path requires the
-# user to edit the combined commit message for all commits that have
-# been squashed/fixedup so far.  So also erase the old squash
-# messages, effectively causing the combined commit to be used as the
-# new basis for any further squash/fixups.  Args: sha1 rest
-die_failed_squash() {
-       sha1=$1
-       rest=$2
-       mv "$squash_msg" "$msg" || exit
-       rm -f "$fixup_msg"
-       cp "$msg" "$GIT_DIR"/MERGE_MSG || exit
-       warn
-       warn "$(eval_gettext "Could not apply \$sha1... \$rest")"
-       die_with_patch $sha1 ""
-}
-
-flush_rewritten_pending() {
-       test -s "$rewritten_pending" || return
-       newsha1="$(git rev-parse HEAD^0)"
-       sed "s/$/ $newsha1/" < "$rewritten_pending" >> "$rewritten_list"
-       rm -f "$rewritten_pending"
-}
-
-record_in_rewritten() {
-       oldsha1="$(git rev-parse $1)"
-       echo "$oldsha1" >> "$rewritten_pending"
-
-       case "$(peek_next_command)" in
-       squash|s|fixup|f)
-               ;;
-       *)
-               flush_rewritten_pending
-               ;;
-       esac
-}
-
-do_pick () {
-       sha1=$1
-       rest=$2
-       if test "$(git rev-parse HEAD)" = "$squash_onto"
-       then
-               # Set the correct commit message and author info on the
-               # sentinel root before cherry-picking the original changes
-               # without committing (-n).  Finally, update the sentinel again
-               # to include these changes.  If the cherry-pick results in a
-               # conflict, this means our behaviour is similar to a standard
-               # failed cherry-pick during rebase, with a dirty index to
-               # resolve before manually running git commit --amend then git
-               # rebase --continue.
-               git commit --allow-empty --allow-empty-message --amend \
-                          --no-post-rewrite -n -q -C $sha1 $signoff &&
-                       pick_one -n $sha1 &&
-                       git commit --allow-empty --allow-empty-message \
-                                  --amend --no-post-rewrite -n -q -C $sha1 $signoff \
-                                  ${gpg_sign_opt:+"$gpg_sign_opt"} ||
-                                  die_with_patch $sha1 "$(eval_gettext "Could not apply \$sha1... \$rest")"
-       else
-               pick_one $sha1 ||
-                       die_with_patch $sha1 "$(eval_gettext "Could not apply \$sha1... \$rest")"
-       fi
-}
-
-do_next () {
-       rm -f "$msg" "$author_script" "$amend" "$state_dir"/stopped-sha || exit
-       read -r command sha1 rest < "$todo"
-       case "$command" in
-       "$comment_char"*|''|noop|drop|d)
-               mark_action_done
-               ;;
-       "$cr")
-               # Work around CR left by "read" (e.g. with Git for Windows' Bash).
-               mark_action_done
-               ;;
-       pick|p)
-               comment_for_reflog pick
-
-               mark_action_done
-               do_pick $sha1 "$rest"
-               record_in_rewritten $sha1
-               ;;
-       reword|r)
-               comment_for_reflog reword
-
-               mark_action_done
-               do_pick $sha1 "$rest"
-               git commit --amend --no-post-rewrite ${gpg_sign_opt:+"$gpg_sign_opt"} \
-                       $allow_empty_message || {
-                       warn "$(eval_gettext "\
-Could not amend commit after successfully picking \$sha1... \$rest
-This is most likely due to an empty commit message, or the pre-commit hook
-failed. If the pre-commit hook failed, you may need to resolve the issue before
-you are able to reword the commit.")"
-                       exit_with_patch $sha1 1
-               }
-               record_in_rewritten $sha1
-               ;;
-       edit|e)
-               comment_for_reflog edit
-
-               mark_action_done
-               do_pick $sha1 "$rest"
-               sha1_abbrev=$(git rev-parse --short $sha1)
-               warn "$(eval_gettext "Stopped at \$sha1_abbrev... \$rest")"
-               exit_with_patch $sha1 0
-               ;;
-       squash|s|fixup|f)
-               case "$command" in
-               squash|s)
-                       squash_style=squash
-                       ;;
-               fixup|f)
-                       squash_style=fixup
-                       ;;
-               esac
-               comment_for_reflog $squash_style
-
-               test -f "$done" && has_action "$done" ||
-                       die "$(eval_gettext "Cannot '\$squash_style' without a previous commit")"
-
-               mark_action_done
-               update_squash_messages $squash_style $sha1
-               author_script_content=$(get_author_ident_from_commit HEAD)
-               echo "$author_script_content" > "$author_script"
-               eval "$author_script_content"
-               if ! pick_one -n $sha1
-               then
-                       git rev-parse --verify HEAD >"$amend"
-                       die_failed_squash $sha1 "$rest"
-               fi
-               case "$(peek_next_command)" in
-               squash|s|fixup|f)
-                       # This is an intermediate commit; its message will only be
-                       # used in case of trouble.  So use the long version:
-                       do_with_author output git commit --amend --no-verify -F "$squash_msg" \
-                               ${gpg_sign_opt:+"$gpg_sign_opt"} $allow_empty_message ||
-                               die_failed_squash $sha1 "$rest"
-                       ;;
-               *)
-                       # This is the final command of this squash/fixup group
-                       if test -f "$fixup_msg"
-                       then
-                               do_with_author git commit --amend --no-verify -F "$fixup_msg" \
-                                       ${gpg_sign_opt:+"$gpg_sign_opt"} $allow_empty_message ||
-                                       die_failed_squash $sha1 "$rest"
-                       else
-                               cp "$squash_msg" "$GIT_DIR"/SQUASH_MSG || exit
-                               rm -f "$GIT_DIR"/MERGE_MSG
-                               do_with_author git commit --amend --no-verify -F "$GIT_DIR"/SQUASH_MSG -e \
-                                       ${gpg_sign_opt:+"$gpg_sign_opt"} $allow_empty_message ||
-                                       die_failed_squash $sha1 "$rest"
-                       fi
-                       rm -f "$squash_msg" "$fixup_msg"
-                       ;;
-               esac
-               record_in_rewritten $sha1
-               ;;
-       x|"exec")
-               read -r command rest < "$todo"
-               mark_action_done
-               eval_gettextln "Executing: \$rest"
-               "${SHELL:-@SHELL_PATH@}" -c "$rest" # Actual execution
-               status=$?
-               # Run in subshell because require_clean_work_tree can die.
-               dirty=f
-               (require_clean_work_tree "rebase" 2>/dev/null) || dirty=t
-               if test "$status" -ne 0
-               then
-                       warn "$(eval_gettext "Execution failed: \$rest")"
-                       test "$dirty" = f ||
-                               warn "$(gettext "and made changes to the index and/or the working tree")"
-
-                       warn "$(gettext "\
-You can fix the problem, and then run
-
-       git rebase --continue")"
-                       warn
-                       if test $status -eq 127         # command not found
-                       then
-                               status=1
-                       fi
-                       exit "$status"
-               elif test "$dirty" = t
-               then
-                       # TRANSLATORS: after these lines is a command to be issued by the user
-                       warn "$(eval_gettext "\
-Execution succeeded: \$rest
-but left changes to the index and/or the working tree
-Commit or stash your changes, and then run
-
-       git rebase --continue")"
-                       warn
-                       exit 1
-               fi
-               ;;
-       *)
-               warn "$(eval_gettext "Unknown command: \$command \$sha1 \$rest")"
-               fixtodo="$(gettext "Please fix this using 'git rebase --edit-todo'.")"
-               if git rev-parse --verify -q "$sha1" >/dev/null
-               then
-                       die_with_patch $sha1 "$fixtodo"
-               else
-                       die "$fixtodo"
-               fi
-               ;;
-       esac
-       test -s "$todo" && return
-
-       comment_for_reflog finish &&
-       newhead=$(git rev-parse HEAD) &&
-       case $head_name in
-       refs/*)
-               message="$GIT_REFLOG_ACTION: $head_name onto $onto" &&
-               git update-ref -m "$message" $head_name $newhead $orig_head &&
-               git symbolic-ref \
-                 -m "$GIT_REFLOG_ACTION: returning to $head_name" \
-                 HEAD $head_name
-               ;;
-       esac && {
-               test ! -f "$state_dir"/verbose ||
-                       git diff-tree --stat $orig_head..HEAD
-       } &&
-       {
-               test -s "$rewritten_list" &&
-               git notes copy --for-rewrite=rebase < "$rewritten_list" ||
-               true # we don't care if this copying failed
-       } &&
-       hook="$(git rev-parse --git-path hooks/post-rewrite)"
-       if test -x "$hook" && test -s "$rewritten_list"; then
-               "$hook" rebase < "$rewritten_list"
-               true # we don't care if this hook failed
-       fi &&
-               warn "$(eval_gettext "Successfully rebased and updated \$head_name.")"
-
-       return 1 # not failure; just to break the do_rest loop
-}
-
-# can only return 0, when the infinite loop breaks
-do_rest () {
-       while :
-       do
-               do_next || break
-       done
-}
-
 expand_todo_ids() {
        git rebase--helper --expand-ids
 }
@@ -763,77 +131,13 @@ get_missing_commit_check_level () {
 initiate_action () {
        case "$1" in
        continue)
-               if test ! -d "$rewritten"
-               then
-                       exec git rebase--helper ${force_rebase:+--no-ff} $allow_empty_message \
-                               --continue
-               fi
-               # do we have anything to commit?
-               if git diff-index --cached --quiet HEAD --
-               then
-                       # Nothing to commit -- skip this commit
-
-                       test ! -f "$GIT_DIR"/CHERRY_PICK_HEAD ||
-                       rm "$GIT_DIR"/CHERRY_PICK_HEAD ||
-                       die "$(gettext "Could not remove CHERRY_PICK_HEAD")"
-               else
-                       if ! test -f "$author_script"
-                       then
-                               gpg_sign_opt_quoted=${gpg_sign_opt:+$(git rev-parse --sq-quote "$gpg_sign_opt")}
-                               die "$(eval_gettext "\
-You have staged changes in your working tree.
-If these changes are meant to be
-squashed into the previous commit, run:
-
-  git commit --amend \$gpg_sign_opt_quoted
-
-If they are meant to go into a new commit, run:
-
-  git commit \$gpg_sign_opt_quoted
-
-In both cases, once you're done, continue with:
-
-  git rebase --continue
-")"
-                       fi
-                       . "$author_script" ||
-                               die "$(gettext "Error trying to find the author identity to amend commit")"
-                       if test -f "$amend"
-                       then
-                               current_head=$(git rev-parse --verify HEAD)
-                               test "$current_head" = $(cat "$amend") ||
-                               die "$(gettext "\
-You have uncommitted changes in your working tree. Please commit them
-first and then run 'git rebase --continue' again.")"
-                               do_with_author git commit --amend --no-verify -F "$msg" -e \
-                                       ${gpg_sign_opt:+"$gpg_sign_opt"} $allow_empty_message ||
-                                       die "$(gettext "Could not commit staged changes.")"
-                       else
-                               do_with_author git commit --no-verify -F "$msg" -e \
-                                       ${gpg_sign_opt:+"$gpg_sign_opt"} $allow_empty_message ||
-                                       die "$(gettext "Could not commit staged changes.")"
-                       fi
-               fi
-
-               if test -r "$state_dir"/stopped-sha
-               then
-                       record_in_rewritten "$(cat "$state_dir"/stopped-sha)"
-               fi
-
-               require_clean_work_tree "rebase"
-               do_rest
-               return 0
+               exec git rebase--helper ${force_rebase:+--no-ff} $allow_empty_message \
+                    --continue
                ;;
        skip)
                git rerere clear
-
-               if test ! -d "$rewritten"
-               then
-                       exec git rebase--helper ${force_rebase:+--no-ff} $allow_empty_message \
-                               --continue
-               fi
-               do_rest
-               return 0
+               exec git rebase--helper ${force_rebase:+--no-ff} $allow_empty_message \
+                    --continue
                ;;
        edit-todo)
                git stripspace --strip-comments <"$todo" >"$todo".new
@@ -947,18 +251,14 @@ EOF
 
        expand_todo_ids
 
-       test -d "$rewritten" || test -n "$force_rebase" ||
+       test -n "$force_rebase" ||
        onto="$(git rebase--helper --skip-unnecessary-picks)" ||
        die "Could not skip unnecessary pick commands"
 
        checkout_onto
-       if test ! -d "$rewritten"
-       then
-               require_clean_work_tree "rebase"
-               exec git rebase--helper ${force_rebase:+--no-ff} $allow_empty_message \
-                       --continue
-       fi
-       do_rest
+       require_clean_work_tree "rebase"
+       exec git rebase--helper ${force_rebase:+--no-ff} $allow_empty_message \
+            --continue
 }
 
 git_rebase__interactive () {
@@ -981,91 +281,3 @@ git_rebase__interactive () {
 
        complete_action
 }
-
-git_rebase__interactive__preserve_merges () {
-       initiate_action "$action"
-       ret=$?
-       if test $ret = 0; then
-               return 0
-       fi
-
-       setup_reflog_action
-       init_basic_state
-
-       if test -z "$rebase_root"
-       then
-               mkdir "$rewritten" &&
-               for c in $(git merge-base --all $orig_head $upstream)
-               do
-                       echo $onto > "$rewritten"/$c ||
-                               die "$(gettext "Could not init rewritten commits")"
-               done
-       else
-               mkdir "$rewritten" &&
-               echo $onto > "$rewritten"/root ||
-                       die "$(gettext "Could not init rewritten commits")"
-       fi
-
-       init_revisions_and_shortrevisions
-
-       format=$(git config --get rebase.instructionFormat)
-       # the 'rev-list .. | sed' requires %m to parse; the instruction requires %H to parse
-       git rev-list --format="%m%H ${format:-%s}" \
-               --reverse --left-right --topo-order \
-               $revisions ${restrict_revision+^$restrict_revision} | \
-               sed -n "s/^>//p" |
-       while read -r sha1 rest
-       do
-               if test -z "$keep_empty" && is_empty_commit $sha1 && ! is_merge_commit $sha1
-               then
-                       comment_out="$comment_char "
-               else
-                       comment_out=
-               fi
-
-               if test -z "$rebase_root"
-               then
-                       preserve=t
-                       for p in $(git rev-list --parents -1 $sha1 | cut -d' ' -s -f2-)
-                       do
-                               if test -f "$rewritten"/$p
-                               then
-                                       preserve=f
-                               fi
-                       done
-               else
-                       preserve=f
-               fi
-               if test f = "$preserve"
-               then
-                       touch "$rewritten"/$sha1
-                       printf '%s\n' "${comment_out}pick $sha1 $rest" >>"$todo"
-               fi
-       done
-
-       # Watch for commits that been dropped by --cherry-pick
-       mkdir "$dropped"
-       # Save all non-cherry-picked changes
-       git rev-list $revisions --left-right --cherry-pick | \
-               sed -n "s/^>//p" > "$state_dir"/not-cherry-picks
-       # Now all commits and note which ones are missing in
-       # not-cherry-picks and hence being dropped
-       git rev-list $revisions |
-       while read rev
-       do
-               if test -f "$rewritten"/$rev &&
-                  ! sane_grep "$rev" "$state_dir"/not-cherry-picks >/dev/null
-               then
-                       # Use -f2 because if rev-list is telling us this commit is
-                       # not worthwhile, we don't want to track its multiple heads,
-                       # just the history of its first-parent for others that will
-                       # be rebasing on top of it
-                       git rev-list --parents -1 $rev | cut -d' ' -s -f2 > "$dropped"/$rev
-                       sha1=$(git rev-list -1 $rev)
-                       sane_grep -v "^[a-z][a-z]* $sha1" <"$todo" > "${todo}2" ; mv "${todo}2" "$todo"
-                       rm "$rewritten"/$rev
-               fi
-       done
-
-       complete_action
-}
diff --git a/git-rebase--preserve-merges.sh b/git-rebase--preserve-merges.sh
new file mode 100644 (file)
index 0000000..c51c782
--- /dev/null
@@ -0,0 +1,1012 @@
+# This shell script fragment is sourced by git-rebase to implement its
+# preserve-merges mode.
+#
+# Copyright (c) 2006 Johannes E. Schindelin
+#
+# The file containing rebase commands, comments, and empty lines.
+# This file is created by "git rebase -i" then edited by the user.  As
+# the lines are processed, they are removed from the front of this
+# file and written to the tail of $done.
+todo="$state_dir"/git-rebase-todo
+
+# The rebase command lines that have already been processed.  A line
+# is moved here when it is first handled, before any associated user
+# actions.
+done="$state_dir"/done
+
+# The commit message that is planned to be used for any changes that
+# need to be committed following a user interaction.
+msg="$state_dir"/message
+
+# The file into which is accumulated the suggested commit message for
+# squash/fixup commands.  When the first of a series of squash/fixups
+# is seen, the file is created and the commit message from the
+# previous commit and from the first squash/fixup commit are written
+# to it.  The commit message for each subsequent squash/fixup commit
+# is appended to the file as it is processed.
+#
+# The first line of the file is of the form
+#     # This is a combination of $count commits.
+# where $count is the number of commits whose messages have been
+# written to the file so far (including the initial "pick" commit).
+# Each time that a commit message is processed, this line is read and
+# updated.  It is deleted just before the combined commit is made.
+squash_msg="$state_dir"/message-squash
+
+# If the current series of squash/fixups has not yet included a squash
+# command, then this file exists and holds the commit message of the
+# original "pick" commit.  (If the series ends without a "squash"
+# command, then this can be used as the commit message of the combined
+# commit without opening the editor.)
+fixup_msg="$state_dir"/message-fixup
+
+# $rewritten is the name of a directory containing files for each
+# commit that is reachable by at least one merge base of $head and
+# $upstream. They are not necessarily rewritten, but their children
+# might be.  This ensures that commits on merged, but otherwise
+# unrelated side branches are left alone. (Think "X" in the man page's
+# example.)
+rewritten="$state_dir"/rewritten
+
+dropped="$state_dir"/dropped
+
+end="$state_dir"/end
+msgnum="$state_dir"/msgnum
+
+# A script to set the GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, and
+# GIT_AUTHOR_DATE that will be used for the commit that is currently
+# being rebased.
+author_script="$state_dir"/author-script
+
+# When an "edit" rebase command is being processed, the SHA1 of the
+# commit to be edited is recorded in this file.  When "git rebase
+# --continue" is executed, if there are any staged changes then they
+# will be amended to the HEAD commit, but only provided the HEAD
+# commit is still the commit to be edited.  When any other rebase
+# command is processed, this file is deleted.
+amend="$state_dir"/amend
+
+# For the post-rewrite hook, we make a list of rewritten commits and
+# their new sha1s.  The rewritten-pending list keeps the sha1s of
+# commits that have been processed, but not committed yet,
+# e.g. because they are waiting for a 'squash' command.
+rewritten_list="$state_dir"/rewritten-list
+rewritten_pending="$state_dir"/rewritten-pending
+
+# Work around Git for Windows' Bash whose "read" does not strip CRLF
+# and leaves CR at the end instead.
+cr=$(printf "\015")
+
+strategy_args=${strategy:+--strategy=$strategy}
+test -n "$strategy_opts" &&
+eval '
+       for strategy_opt in '"$strategy_opts"'
+       do
+               strategy_args="$strategy_args -X$(git rev-parse --sq-quote "${strategy_opt#--}")"
+       done
+'
+
+GIT_CHERRY_PICK_HELP="$resolvemsg"
+export GIT_CHERRY_PICK_HELP
+
+comment_char=$(git config --get core.commentchar 2>/dev/null)
+case "$comment_char" in
+'' | auto)
+       comment_char="#"
+       ;;
+?)
+       ;;
+*)
+       comment_char=$(echo "$comment_char" | cut -c1)
+       ;;
+esac
+
+warn () {
+       printf '%s\n' "$*" >&2
+}
+
+# Output the commit message for the specified commit.
+commit_message () {
+       git cat-file commit "$1" | sed "1,/^$/d"
+}
+
+orig_reflog_action="$GIT_REFLOG_ACTION"
+
+comment_for_reflog () {
+       case "$orig_reflog_action" in
+       ''|rebase*)
+               GIT_REFLOG_ACTION="rebase -i ($1)"
+               export GIT_REFLOG_ACTION
+               ;;
+       esac
+}
+
+last_count=
+mark_action_done () {
+       sed -e 1q < "$todo" >> "$done"
+       sed -e 1d < "$todo" >> "$todo".new
+       mv -f "$todo".new "$todo"
+       new_count=$(( $(git stripspace --strip-comments <"$done" | wc -l) ))
+       echo $new_count >"$msgnum"
+       total=$(($new_count + $(git stripspace --strip-comments <"$todo" | wc -l)))
+       echo $total >"$end"
+       if test "$last_count" != "$new_count"
+       then
+               last_count=$new_count
+               eval_gettext "Rebasing (\$new_count/\$total)"; printf "\r"
+               test -z "$verbose" || echo
+       fi
+}
+
+# Put the last action marked done at the beginning of the todo list
+# again. If there has not been an action marked done yet, leave the list of
+# items on the todo list unchanged.
+reschedule_last_action () {
+       tail -n 1 "$done" | cat - "$todo" >"$todo".new
+       sed -e \$d <"$done" >"$done".new
+       mv -f "$todo".new "$todo"
+       mv -f "$done".new "$done"
+}
+
+append_todo_help () {
+       gettext "
+Commands:
+p, pick <commit> = use commit
+r, reword <commit> = use commit, but edit the commit message
+e, edit <commit> = use commit, but stop for amending
+s, squash <commit> = use commit, but meld into previous commit
+f, fixup <commit> = like \"squash\", but discard this commit's log message
+x, exec <commit> = run command (the rest of the line) using shell
+d, drop <commit> = remove commit
+l, label <label> = label current HEAD with a name
+t, reset <label> = reset HEAD to a label
+m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
+.       create a merge commit using the original merge commit's
+.       message (or the oneline, if no original merge commit was
+.       specified). Use -c <commit> to reword the commit message.
+
+These lines can be re-ordered; they are executed from top to bottom.
+" | git stripspace --comment-lines >>"$todo"
+
+       if test $(get_missing_commit_check_level) = error
+       then
+               gettext "
+Do not remove any line. Use 'drop' explicitly to remove a commit.
+" | git stripspace --comment-lines >>"$todo"
+       else
+               gettext "
+If you remove a line here THAT COMMIT WILL BE LOST.
+" | git stripspace --comment-lines >>"$todo"
+       fi
+}
+
+make_patch () {
+       sha1_and_parents="$(git rev-list --parents -1 "$1")"
+       case "$sha1_and_parents" in
+       ?*' '?*' '?*)
+               git diff --cc $sha1_and_parents
+               ;;
+       ?*' '?*)
+               git diff-tree -p "$1^!"
+               ;;
+       *)
+               echo "Root commit"
+               ;;
+       esac > "$state_dir"/patch
+       test -f "$msg" ||
+               commit_message "$1" > "$msg"
+       test -f "$author_script" ||
+               get_author_ident_from_commit "$1" > "$author_script"
+}
+
+die_with_patch () {
+       echo "$1" > "$state_dir"/stopped-sha
+       git update-ref REBASE_HEAD "$1"
+       make_patch "$1"
+       die "$2"
+}
+
+exit_with_patch () {
+       echo "$1" > "$state_dir"/stopped-sha
+       git update-ref REBASE_HEAD "$1"
+       make_patch $1
+       git rev-parse --verify HEAD > "$amend"
+       gpg_sign_opt_quoted=${gpg_sign_opt:+$(git rev-parse --sq-quote "$gpg_sign_opt")}
+       warn "$(eval_gettext "\
+You can amend the commit now, with
+
+       git commit --amend \$gpg_sign_opt_quoted
+
+Once you are satisfied with your changes, run
+
+       git rebase --continue")"
+       warn
+       exit $2
+}
+
+die_abort () {
+       apply_autostash
+       rm -rf "$state_dir"
+       die "$1"
+}
+
+has_action () {
+       test -n "$(git stripspace --strip-comments <"$1")"
+}
+
+is_empty_commit() {
+       tree=$(git rev-parse -q --verify "$1"^{tree} 2>/dev/null) || {
+               sha1=$1
+               die "$(eval_gettext "\$sha1: not a commit that can be picked")"
+       }
+       ptree=$(git rev-parse -q --verify "$1"^^{tree} 2>/dev/null) ||
+               ptree=4b825dc642cb6eb9a060e54bf8d69288fbee4904
+       test "$tree" = "$ptree"
+}
+
+is_merge_commit()
+{
+       git rev-parse --verify --quiet "$1"^2 >/dev/null 2>&1
+}
+
+# Run command with GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, and
+# GIT_AUTHOR_DATE exported from the current environment.
+do_with_author () {
+       (
+               export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE
+               "$@"
+       )
+}
+
+git_sequence_editor () {
+       if test -z "$GIT_SEQUENCE_EDITOR"
+       then
+               GIT_SEQUENCE_EDITOR="$(git config sequence.editor)"
+               if [ -z "$GIT_SEQUENCE_EDITOR" ]
+               then
+                       GIT_SEQUENCE_EDITOR="$(git var GIT_EDITOR)" || return $?
+               fi
+       fi
+
+       eval "$GIT_SEQUENCE_EDITOR" '"$@"'
+}
+
+pick_one () {
+       ff=--ff
+
+       case "$1" in -n) sha1=$2; ff= ;; *) sha1=$1 ;; esac
+       case "$force_rebase" in '') ;; ?*) ff= ;; esac
+       output git rev-parse --verify $sha1 || die "$(eval_gettext "Invalid commit name: \$sha1")"
+
+       if is_empty_commit "$sha1"
+       then
+               empty_args="--allow-empty"
+       fi
+
+       pick_one_preserving_merges "$@"
+}
+
+pick_one_preserving_merges () {
+       fast_forward=t
+       case "$1" in
+       -n)
+               fast_forward=f
+               sha1=$2
+               ;;
+       *)
+               sha1=$1
+               ;;
+       esac
+       sha1=$(git rev-parse $sha1)
+
+       if test -f "$state_dir"/current-commit && test "$fast_forward" = t
+       then
+               while read current_commit
+               do
+                       git rev-parse HEAD > "$rewritten"/$current_commit
+               done <"$state_dir"/current-commit
+               rm "$state_dir"/current-commit ||
+                       die "$(gettext "Cannot write current commit's replacement sha1")"
+       fi
+
+       echo $sha1 >> "$state_dir"/current-commit
+
+       # rewrite parents; if none were rewritten, we can fast-forward.
+       new_parents=
+       pend=" $(git rev-list --parents -1 $sha1 | cut -d' ' -s -f2-)"
+       if test "$pend" = " "
+       then
+               pend=" root"
+       fi
+       while [ "$pend" != "" ]
+       do
+               p=$(expr "$pend" : ' \([^ ]*\)')
+               pend="${pend# $p}"
+
+               if test -f "$rewritten"/$p
+               then
+                       new_p=$(cat "$rewritten"/$p)
+
+                       # If the todo reordered commits, and our parent is marked for
+                       # rewriting, but hasn't been gotten to yet, assume the user meant to
+                       # drop it on top of the current HEAD
+                       if test -z "$new_p"
+                       then
+                               new_p=$(git rev-parse HEAD)
+                       fi
+
+                       test $p != $new_p && fast_forward=f
+                       case "$new_parents" in
+                       *$new_p*)
+                               ;; # do nothing; that parent is already there
+                       *)
+                               new_parents="$new_parents $new_p"
+                               ;;
+                       esac
+               else
+                       if test -f "$dropped"/$p
+                       then
+                               fast_forward=f
+                               replacement="$(cat "$dropped"/$p)"
+                               test -z "$replacement" && replacement=root
+                               pend=" $replacement$pend"
+                       else
+                               new_parents="$new_parents $p"
+                       fi
+               fi
+       done
+       case $fast_forward in
+       t)
+               output warn "$(eval_gettext "Fast-forward to \$sha1")"
+               output git reset --hard $sha1 ||
+                       die "$(eval_gettext "Cannot fast-forward to \$sha1")"
+               ;;
+       f)
+               first_parent=$(expr "$new_parents" : ' \([^ ]*\)')
+
+               if [ "$1" != "-n" ]
+               then
+                       # detach HEAD to current parent
+                       output git checkout $first_parent 2> /dev/null ||
+                               die "$(eval_gettext "Cannot move HEAD to \$first_parent")"
+               fi
+
+               case "$new_parents" in
+               ' '*' '*)
+                       test "a$1" = a-n && die "$(eval_gettext "Refusing to squash a merge: \$sha1")"
+
+                       # redo merge
+                       author_script_content=$(get_author_ident_from_commit $sha1)
+                       eval "$author_script_content"
+                       msg_content="$(commit_message $sha1)"
+                       # No point in merging the first parent, that's HEAD
+                       new_parents=${new_parents# $first_parent}
+                       merge_args="--no-log --no-ff"
+                       if ! do_with_author output eval \
+                               git merge ${gpg_sign_opt:+$(git rev-parse \
+                                       --sq-quote "$gpg_sign_opt")} \
+                               $allow_rerere_autoupdate "$merge_args" \
+                               "$strategy_args" \
+                               -m "$(git rev-parse --sq-quote "$msg_content")" \
+                               "$new_parents"
+                       then
+                               printf "%s\n" "$msg_content" > "$GIT_DIR"/MERGE_MSG
+                               die_with_patch $sha1 "$(eval_gettext "Error redoing merge \$sha1")"
+                       fi
+                       echo "$sha1 $(git rev-parse HEAD^0)" >> "$rewritten_list"
+                       ;;
+               *)
+                       output eval git cherry-pick $allow_rerere_autoupdate \
+                               $allow_empty_message \
+                               ${gpg_sign_opt:+$(git rev-parse --sq-quote "$gpg_sign_opt")} \
+                               "$strategy_args" "$@" ||
+                               die_with_patch $sha1 "$(eval_gettext "Could not pick \$sha1")"
+                       ;;
+               esac
+               ;;
+       esac
+}
+
+this_nth_commit_message () {
+       n=$1
+       eval_gettext "This is the commit message #\${n}:"
+}
+
+skip_nth_commit_message () {
+       n=$1
+       eval_gettext "The commit message #\${n} will be skipped:"
+}
+
+update_squash_messages () {
+       if test -f "$squash_msg"; then
+               mv "$squash_msg" "$squash_msg".bak || exit
+               count=$(($(sed -n \
+                       -e "1s/^$comment_char[^0-9]*\([0-9][0-9]*\).*/\1/p" \
+                       -e "q" < "$squash_msg".bak)+1))
+               {
+                       printf '%s\n' "$comment_char $(eval_ngettext \
+                               "This is a combination of \$count commit." \
+                               "This is a combination of \$count commits." \
+                               $count)"
+                       sed -e 1d -e '2,/^./{
+                               /^$/d
+                       }' <"$squash_msg".bak
+               } >"$squash_msg"
+       else
+               commit_message HEAD >"$fixup_msg" ||
+               die "$(eval_gettext "Cannot write \$fixup_msg")"
+               count=2
+               {
+                       printf '%s\n' "$comment_char $(gettext "This is a combination of 2 commits.")"
+                       printf '%s\n' "$comment_char $(gettext "This is the 1st commit message:")"
+                       echo
+                       cat "$fixup_msg"
+               } >"$squash_msg"
+       fi
+       case $1 in
+       squash)
+               rm -f "$fixup_msg"
+               echo
+               printf '%s\n' "$comment_char $(this_nth_commit_message $count)"
+               echo
+               commit_message $2
+               ;;
+       fixup)
+               echo
+               printf '%s\n' "$comment_char $(skip_nth_commit_message $count)"
+               echo
+               # Change the space after the comment character to TAB:
+               commit_message $2 | git stripspace --comment-lines | sed -e 's/ /       /'
+               ;;
+       esac >>"$squash_msg"
+}
+
+peek_next_command () {
+       git stripspace --strip-comments <"$todo" | sed -n -e 's/ .*//p' -e q
+}
+
+# A squash/fixup has failed.  Prepare the long version of the squash
+# commit message, then die_with_patch.  This code path requires the
+# user to edit the combined commit message for all commits that have
+# been squashed/fixedup so far.  So also erase the old squash
+# messages, effectively causing the combined commit to be used as the
+# new basis for any further squash/fixups.  Args: sha1 rest
+die_failed_squash() {
+       sha1=$1
+       rest=$2
+       mv "$squash_msg" "$msg" || exit
+       rm -f "$fixup_msg"
+       cp "$msg" "$GIT_DIR"/MERGE_MSG || exit
+       warn
+       warn "$(eval_gettext "Could not apply \$sha1... \$rest")"
+       die_with_patch $sha1 ""
+}
+
+flush_rewritten_pending() {
+       test -s "$rewritten_pending" || return
+       newsha1="$(git rev-parse HEAD^0)"
+       sed "s/$/ $newsha1/" < "$rewritten_pending" >> "$rewritten_list"
+       rm -f "$rewritten_pending"
+}
+
+record_in_rewritten() {
+       oldsha1="$(git rev-parse $1)"
+       echo "$oldsha1" >> "$rewritten_pending"
+
+       case "$(peek_next_command)" in
+       squash|s|fixup|f)
+               ;;
+       *)
+               flush_rewritten_pending
+               ;;
+       esac
+}
+
+do_pick () {
+       sha1=$1
+       rest=$2
+       if test "$(git rev-parse HEAD)" = "$squash_onto"
+       then
+               # Set the correct commit message and author info on the
+               # sentinel root before cherry-picking the original changes
+               # without committing (-n).  Finally, update the sentinel again
+               # to include these changes.  If the cherry-pick results in a
+               # conflict, this means our behaviour is similar to a standard
+               # failed cherry-pick during rebase, with a dirty index to
+               # resolve before manually running git commit --amend then git
+               # rebase --continue.
+               git commit --allow-empty --allow-empty-message --amend \
+                          --no-post-rewrite -n -q -C $sha1 $signoff &&
+                       pick_one -n $sha1 &&
+                       git commit --allow-empty --allow-empty-message \
+                                  --amend --no-post-rewrite -n -q -C $sha1 $signoff \
+                                  ${gpg_sign_opt:+"$gpg_sign_opt"} ||
+                                  die_with_patch $sha1 "$(eval_gettext "Could not apply \$sha1... \$rest")"
+       else
+               pick_one $sha1 ||
+                       die_with_patch $sha1 "$(eval_gettext "Could not apply \$sha1... \$rest")"
+       fi
+}
+
+do_next () {
+       rm -f "$msg" "$author_script" "$amend" "$state_dir"/stopped-sha || exit
+       read -r command sha1 rest < "$todo"
+       case "$command" in
+       "$comment_char"*|''|noop|drop|d)
+               mark_action_done
+               ;;
+       "$cr")
+               # Work around CR left by "read" (e.g. with Git for Windows' Bash).
+               mark_action_done
+               ;;
+       pick|p)
+               comment_for_reflog pick
+
+               mark_action_done
+               do_pick $sha1 "$rest"
+               record_in_rewritten $sha1
+               ;;
+       reword|r)
+               comment_for_reflog reword
+
+               mark_action_done
+               do_pick $sha1 "$rest"
+               git commit --amend --no-post-rewrite ${gpg_sign_opt:+"$gpg_sign_opt"} \
+                       $allow_empty_message || {
+                       warn "$(eval_gettext "\
+Could not amend commit after successfully picking \$sha1... \$rest
+This is most likely due to an empty commit message, or the pre-commit hook
+failed. If the pre-commit hook failed, you may need to resolve the issue before
+you are able to reword the commit.")"
+                       exit_with_patch $sha1 1
+               }
+               record_in_rewritten $sha1
+               ;;
+       edit|e)
+               comment_for_reflog edit
+
+               mark_action_done
+               do_pick $sha1 "$rest"
+               sha1_abbrev=$(git rev-parse --short $sha1)
+               warn "$(eval_gettext "Stopped at \$sha1_abbrev... \$rest")"
+               exit_with_patch $sha1 0
+               ;;
+       squash|s|fixup|f)
+               case "$command" in
+               squash|s)
+                       squash_style=squash
+                       ;;
+               fixup|f)
+                       squash_style=fixup
+                       ;;
+               esac
+               comment_for_reflog $squash_style
+
+               test -f "$done" && has_action "$done" ||
+                       die "$(eval_gettext "Cannot '\$squash_style' without a previous commit")"
+
+               mark_action_done
+               update_squash_messages $squash_style $sha1
+               author_script_content=$(get_author_ident_from_commit HEAD)
+               echo "$author_script_content" > "$author_script"
+               eval "$author_script_content"
+               if ! pick_one -n $sha1
+               then
+                       git rev-parse --verify HEAD >"$amend"
+                       die_failed_squash $sha1 "$rest"
+               fi
+               case "$(peek_next_command)" in
+               squash|s|fixup|f)
+                       # This is an intermediate commit; its message will only be
+                       # used in case of trouble.  So use the long version:
+                       do_with_author output git commit --amend --no-verify -F "$squash_msg" \
+                               ${gpg_sign_opt:+"$gpg_sign_opt"} $allow_empty_message ||
+                               die_failed_squash $sha1 "$rest"
+                       ;;
+               *)
+                       # This is the final command of this squash/fixup group
+                       if test -f "$fixup_msg"
+                       then
+                               do_with_author git commit --amend --no-verify -F "$fixup_msg" \
+                                       ${gpg_sign_opt:+"$gpg_sign_opt"} $allow_empty_message ||
+                                       die_failed_squash $sha1 "$rest"
+                       else
+                               cp "$squash_msg" "$GIT_DIR"/SQUASH_MSG || exit
+                               rm -f "$GIT_DIR"/MERGE_MSG
+                               do_with_author git commit --amend --no-verify -F "$GIT_DIR"/SQUASH_MSG -e \
+                                       ${gpg_sign_opt:+"$gpg_sign_opt"} $allow_empty_message ||
+                                       die_failed_squash $sha1 "$rest"
+                       fi
+                       rm -f "$squash_msg" "$fixup_msg"
+                       ;;
+               esac
+               record_in_rewritten $sha1
+               ;;
+       x|"exec")
+               read -r command rest < "$todo"
+               mark_action_done
+               eval_gettextln "Executing: \$rest"
+               "${SHELL:-@SHELL_PATH@}" -c "$rest" # Actual execution
+               status=$?
+               # Run in subshell because require_clean_work_tree can die.
+               dirty=f
+               (require_clean_work_tree "rebase" 2>/dev/null) || dirty=t
+               if test "$status" -ne 0
+               then
+                       warn "$(eval_gettext "Execution failed: \$rest")"
+                       test "$dirty" = f ||
+                               warn "$(gettext "and made changes to the index and/or the working tree")"
+
+                       warn "$(gettext "\
+You can fix the problem, and then run
+
+       git rebase --continue")"
+                       warn
+                       if test $status -eq 127         # command not found
+                       then
+                               status=1
+                       fi
+                       exit "$status"
+               elif test "$dirty" = t
+               then
+                       # TRANSLATORS: after these lines is a command to be issued by the user
+                       warn "$(eval_gettext "\
+Execution succeeded: \$rest
+but left changes to the index and/or the working tree
+Commit or stash your changes, and then run
+
+       git rebase --continue")"
+                       warn
+                       exit 1
+               fi
+               ;;
+       *)
+               warn "$(eval_gettext "Unknown command: \$command \$sha1 \$rest")"
+               fixtodo="$(gettext "Please fix this using 'git rebase --edit-todo'.")"
+               if git rev-parse --verify -q "$sha1" >/dev/null
+               then
+                       die_with_patch $sha1 "$fixtodo"
+               else
+                       die "$fixtodo"
+               fi
+               ;;
+       esac
+       test -s "$todo" && return
+
+       comment_for_reflog finish &&
+       newhead=$(git rev-parse HEAD) &&
+       case $head_name in
+       refs/*)
+               message="$GIT_REFLOG_ACTION: $head_name onto $onto" &&
+               git update-ref -m "$message" $head_name $newhead $orig_head &&
+               git symbolic-ref \
+                 -m "$GIT_REFLOG_ACTION: returning to $head_name" \
+                 HEAD $head_name
+               ;;
+       esac && {
+               test ! -f "$state_dir"/verbose ||
+                       git diff-tree --stat $orig_head..HEAD
+       } &&
+       {
+               test -s "$rewritten_list" &&
+               git notes copy --for-rewrite=rebase < "$rewritten_list" ||
+               true # we don't care if this copying failed
+       } &&
+       hook="$(git rev-parse --git-path hooks/post-rewrite)"
+       if test -x "$hook" && test -s "$rewritten_list"; then
+               "$hook" rebase < "$rewritten_list"
+               true # we don't care if this hook failed
+       fi &&
+               warn "$(eval_gettext "Successfully rebased and updated \$head_name.")"
+
+       return 1 # not failure; just to break the do_rest loop
+}
+
+# can only return 0, when the infinite loop breaks
+do_rest () {
+       while :
+       do
+               do_next || break
+       done
+}
+
+expand_todo_ids() {
+       git rebase--helper --expand-ids
+}
+
+collapse_todo_ids() {
+       git rebase--helper --shorten-ids
+}
+
+# Switch to the branch in $into and notify it in the reflog
+checkout_onto () {
+       GIT_REFLOG_ACTION="$GIT_REFLOG_ACTION: checkout $onto_name"
+       output git checkout $onto || die_abort "$(gettext "could not detach HEAD")"
+       git update-ref ORIG_HEAD $orig_head
+}
+
+get_missing_commit_check_level () {
+       check_level=$(git config --get rebase.missingCommitsCheck)
+       check_level=${check_level:-ignore}
+       # Don't be case sensitive
+       printf '%s' "$check_level" | tr 'A-Z' 'a-z'
+}
+
+# Initiate an action. If the cannot be any
+# further action it  may exec a command
+# or exit and not return.
+#
+# TODO: Consider a cleaner return model so it
+# never exits and always return 0 if process
+# is complete.
+#
+# Parameter 1 is the action to initiate.
+#
+# Returns 0 if the action was able to complete
+# and if 1 if further processing is required.
+initiate_action () {
+       case "$1" in
+       continue)
+               # do we have anything to commit?
+               if git diff-index --cached --quiet HEAD --
+               then
+                       # Nothing to commit -- skip this commit
+
+                       test ! -f "$GIT_DIR"/CHERRY_PICK_HEAD ||
+                       rm "$GIT_DIR"/CHERRY_PICK_HEAD ||
+                       die "$(gettext "Could not remove CHERRY_PICK_HEAD")"
+               else
+                       if ! test -f "$author_script"
+                       then
+                               gpg_sign_opt_quoted=${gpg_sign_opt:+$(git rev-parse --sq-quote "$gpg_sign_opt")}
+                               die "$(eval_gettext "\
+You have staged changes in your working tree.
+If these changes are meant to be
+squashed into the previous commit, run:
+
+  git commit --amend \$gpg_sign_opt_quoted
+
+If they are meant to go into a new commit, run:
+
+  git commit \$gpg_sign_opt_quoted
+
+In both cases, once you're done, continue with:
+
+  git rebase --continue
+")"
+                       fi
+                       . "$author_script" ||
+                               die "$(gettext "Error trying to find the author identity to amend commit")"
+                       if test -f "$amend"
+                       then
+                               current_head=$(git rev-parse --verify HEAD)
+                               test "$current_head" = $(cat "$amend") ||
+                               die "$(gettext "\
+You have uncommitted changes in your working tree. Please commit them
+first and then run 'git rebase --continue' again.")"
+                               do_with_author git commit --amend --no-verify -F "$msg" -e \
+                                       ${gpg_sign_opt:+"$gpg_sign_opt"} $allow_empty_message ||
+                                       die "$(gettext "Could not commit staged changes.")"
+                       else
+                               do_with_author git commit --no-verify -F "$msg" -e \
+                                       ${gpg_sign_opt:+"$gpg_sign_opt"} $allow_empty_message ||
+                                       die "$(gettext "Could not commit staged changes.")"
+                       fi
+               fi
+
+               if test -r "$state_dir"/stopped-sha
+               then
+                       record_in_rewritten "$(cat "$state_dir"/stopped-sha)"
+               fi
+
+               require_clean_work_tree "rebase"
+               do_rest
+               return 0
+               ;;
+       skip)
+               git rerere clear
+               do_rest
+               return 0
+               ;;
+       edit-todo)
+               git stripspace --strip-comments <"$todo" >"$todo".new
+               mv -f "$todo".new "$todo"
+               collapse_todo_ids
+               append_todo_help
+               gettext "
+You are editing the todo file of an ongoing interactive rebase.
+To continue rebase after editing, run:
+    git rebase --continue
+
+" | git stripspace --comment-lines >>"$todo"
+
+               git_sequence_editor "$todo" ||
+                       die "$(gettext "Could not execute editor")"
+               expand_todo_ids
+
+               exit
+               ;;
+       show-current-patch)
+               exec git show REBASE_HEAD --
+               ;;
+       *)
+               return 1 # continue
+               ;;
+       esac
+}
+
+setup_reflog_action () {
+       comment_for_reflog start
+
+       if test ! -z "$switch_to"
+       then
+               GIT_REFLOG_ACTION="$GIT_REFLOG_ACTION: checkout $switch_to"
+               output git checkout "$switch_to" -- ||
+                       die "$(eval_gettext "Could not checkout \$switch_to")"
+
+               comment_for_reflog start
+       fi
+}
+
+init_basic_state () {
+       orig_head=$(git rev-parse --verify HEAD) || die "$(gettext "No HEAD?")"
+       mkdir -p "$state_dir" || die "$(eval_gettext "Could not create temporary \$state_dir")"
+       rm -f "$(git rev-parse --git-path REBASE_HEAD)"
+
+       : > "$state_dir"/interactive || die "$(gettext "Could not mark as interactive")"
+       write_basic_state
+}
+
+init_revisions_and_shortrevisions () {
+       shorthead=$(git rev-parse --short $orig_head)
+       shortonto=$(git rev-parse --short $onto)
+       if test -z "$rebase_root"
+               # this is now equivalent to ! -z "$upstream"
+       then
+               shortupstream=$(git rev-parse --short $upstream)
+               revisions=$upstream...$orig_head
+               shortrevisions=$shortupstream..$shorthead
+       else
+               revisions=$onto...$orig_head
+               shortrevisions=$shorthead
+               test -z "$squash_onto" ||
+               echo "$squash_onto" >"$state_dir"/squash-onto
+       fi
+}
+
+complete_action() {
+       test -s "$todo" || echo noop >> "$todo"
+       test -z "$autosquash" || git rebase--helper --rearrange-squash || exit
+       test -n "$cmd" && git rebase--helper --add-exec-commands "$cmd"
+
+       todocount=$(git stripspace --strip-comments <"$todo" | wc -l)
+       todocount=${todocount##* }
+
+cat >>"$todo" <<EOF
+
+$comment_char $(eval_ngettext \
+       "Rebase \$shortrevisions onto \$shortonto (\$todocount command)" \
+       "Rebase \$shortrevisions onto \$shortonto (\$todocount commands)" \
+       "$todocount")
+EOF
+       append_todo_help
+       gettext "
+       However, if you remove everything, the rebase will be aborted.
+
+       " | git stripspace --comment-lines >>"$todo"
+
+       if test -z "$keep_empty"
+       then
+               printf '%s\n' "$comment_char $(gettext "Note that empty commits are commented out")" >>"$todo"
+       fi
+
+
+       has_action "$todo" ||
+               return 2
+
+       cp "$todo" "$todo".backup
+       collapse_todo_ids
+       git_sequence_editor "$todo" ||
+               die_abort "$(gettext "Could not execute editor")"
+
+       has_action "$todo" ||
+               return 2
+
+       git rebase--helper --check-todo-list || {
+               ret=$?
+               checkout_onto
+               exit $ret
+       }
+
+       expand_todo_ids
+       checkout_onto
+       do_rest
+}
+
+git_rebase__preserve_merges () {
+       initiate_action "$action"
+       ret=$?
+       if test $ret = 0; then
+               return 0
+       fi
+
+       setup_reflog_action
+       init_basic_state
+
+       if test -z "$rebase_root"
+       then
+               mkdir "$rewritten" &&
+               for c in $(git merge-base --all $orig_head $upstream)
+               do
+                       echo $onto > "$rewritten"/$c ||
+                               die "$(gettext "Could not init rewritten commits")"
+               done
+       else
+               mkdir "$rewritten" &&
+               echo $onto > "$rewritten"/root ||
+                       die "$(gettext "Could not init rewritten commits")"
+       fi
+
+       init_revisions_and_shortrevisions
+
+       format=$(git config --get rebase.instructionFormat)
+       # the 'rev-list .. | sed' requires %m to parse; the instruction requires %H to parse
+       git rev-list --format="%m%H ${format:-%s}" \
+               --reverse --left-right --topo-order \
+               $revisions ${restrict_revision+^$restrict_revision} | \
+               sed -n "s/^>//p" |
+       while read -r sha1 rest
+       do
+               if test -z "$keep_empty" && is_empty_commit $sha1 && ! is_merge_commit $sha1
+               then
+                       comment_out="$comment_char "
+               else
+                       comment_out=
+               fi
+
+               if test -z "$rebase_root"
+               then
+                       preserve=t
+                       for p in $(git rev-list --parents -1 $sha1 | cut -d' ' -s -f2-)
+                       do
+                               if test -f "$rewritten"/$p
+                               then
+                                       preserve=f
+                               fi
+                       done
+               else
+                       preserve=f
+               fi
+               if test f = "$preserve"
+               then
+                       touch "$rewritten"/$sha1
+                       printf '%s\n' "${comment_out}pick $sha1 $rest" >>"$todo"
+               fi
+       done
+
+       # Watch for commits that been dropped by --cherry-pick
+       mkdir "$dropped"
+       # Save all non-cherry-picked changes
+       git rev-list $revisions --left-right --cherry-pick | \
+               sed -n "s/^>//p" > "$state_dir"/not-cherry-picks
+       # Now all commits and note which ones are missing in
+       # not-cherry-picks and hence being dropped
+       git rev-list $revisions |
+       while read rev
+       do
+               if test -f "$rewritten"/$rev &&
+                  ! sane_grep "$rev" "$state_dir"/not-cherry-picks >/dev/null
+               then
+                       # Use -f2 because if rev-list is telling us this commit is
+                       # not worthwhile, we don't want to track its multiple heads,
+                       # just the history of its first-parent for others that will
+                       # be rebasing on top of it
+                       git rev-list --parents -1 $rev | cut -d' ' -s -f2 > "$dropped"/$rev
+                       sha1=$(git rev-list -1 $rev)
+                       sane_grep -v "^[a-z][a-z]* $sha1" <"$todo" > "${todo}2" ; mv "${todo}2" "$todo"
+                       rm "$rewritten"/$rev
+               fi
+       done
+
+       complete_action
+}
index 40be59ecc4704da05a0e153f1709d4af2c62cd18..19bdebb48025e236c596d554768012951d348632 100755 (executable)
@@ -207,7 +207,14 @@ run_specific_rebase () {
                autosquash=
        fi
        . git-rebase--$type
-       git_rebase__$type${preserve_merges:+__preserve_merges}
+
+       if test -z "$preserve_merges"
+       then
+               git_rebase__$type
+       else
+               git_rebase__preserve_merges
+       fi
+
        ret=$?
        if test $ret -eq 0
        then
@@ -239,7 +246,12 @@ then
        state_dir="$apply_dir"
 elif test -d "$merge_dir"
 then
-       if test -f "$merge_dir"/interactive
+       if test -d "$merge_dir"/rewritten
+       then
+               type=preserve-merges
+               interactive_rebase=explicit
+               preserve_merges=t
+       elif test -f "$merge_dir"/interactive
        then
                type=interactive
                interactive_rebase=explicit
@@ -402,14 +414,14 @@ if test -n "$action"
 then
        test -z "$in_progress" && die "$(gettext "No rebase in progress?")"
        # Only interactive rebase uses detailed reflog messages
-       if test "$type" = interactive && test "$GIT_REFLOG_ACTION" = rebase
+       if test -n "$interactive_rebase" && test "$GIT_REFLOG_ACTION" = rebase
        then
                GIT_REFLOG_ACTION="rebase -i ($action)"
                export GIT_REFLOG_ACTION
        fi
 fi
 
-if test "$action" = "edit-todo" && test "$type" != "interactive"
+if test "$action" = "edit-todo" && test -z "$interactive_rebase"
 then
        die "$(gettext "The --edit-todo action can only be used during interactive rebase.")"
 fi
@@ -487,7 +499,13 @@ fi
 
 if test -n "$interactive_rebase"
 then
-       type=interactive
+       if test -z "$preserve_merges"
+       then
+               type=interactive
+       else
+               type=preserve-merges
+       fi
+
        state_dir="$merge_dir"
 elif test -n "$do_merge"
 then
@@ -647,7 +665,7 @@ require_clean_work_tree "rebase" "$(gettext "Please commit or stash them.")"
 # but this should be done only when upstream and onto are the same
 # and if this is not an interactive rebase.
 mb=$(git merge-base "$onto" "$orig_head")
-if test "$type" != interactive && test "$upstream" = "$onto" &&
+if test -z "$interactive_rebase" && test "$upstream" = "$onto" &&
        test "$mb" = "$onto" && test -z "$restrict_revision" &&
        # linear history?
        ! (git rev-list --parents "$onto".."$orig_head" | sane_grep " .* ") > /dev/null
@@ -691,7 +709,7 @@ then
        GIT_PAGER='' git diff --stat --summary "$mb" "$onto"
 fi
 
-test "$type" = interactive && run_specific_rebase
+test -n "$interactive_rebase" && run_specific_rebase
 
 # Detach HEAD and reset the tree
 say "$(gettext "First, rewinding head to replay your work on top of it...")"
index 6bd0db02b331291cf3acd60cf66bc1abc7844368..8b5ad59bdee39eba4fc56b28d6771a291dac55f0 100755 (executable)
@@ -335,45 +335,7 @@ cmd_foreach()
                shift
        done
 
-       toplevel=$(pwd)
-
-       # dup stdin so that it can be restored when running the external
-       # command in the subshell (and a recursive call to this function)
-       exec 3<&0
-
-       {
-               git submodule--helper list --prefix "$wt_prefix" ||
-               echo "#unmatched" $?
-       } |
-       while read -r mode sha1 stage sm_path
-       do
-               die_if_unmatched "$mode" "$sha1"
-               if test -e "$sm_path"/.git
-               then
-                       displaypath=$(git submodule--helper relative-path "$prefix$sm_path" "$wt_prefix")
-                       say "$(eval_gettext "Entering '\$displaypath'")"
-                       name=$(git submodule--helper name "$sm_path")
-                       (
-                               prefix="$prefix$sm_path/"
-                               sanitize_submodule_env
-                               cd "$sm_path" &&
-                               sm_path=$(git submodule--helper relative-path "$sm_path" "$wt_prefix") &&
-                               # we make $path available to scripts ...
-                               path=$sm_path &&
-                               if test $# -eq 1
-                               then
-                                       eval "$1"
-                               else
-                                       "$@"
-                               fi &&
-                               if test -n "$recursive"
-                               then
-                                       cmd_foreach "--recursive" "$@"
-                               fi
-                       ) <&3 3<&- ||
-                       die "$(eval_gettext "Stopping at '\$displaypath'; script returned non-zero status.")"
-               fi
-       done
+       git ${wt_prefix:+-C "$wt_prefix"} ${prefix:+--super-prefix "$prefix"} submodule--helper foreach ${GIT_QUIET:+--quiet} ${recursive:+--recursive} "$@"
 }
 
 #
diff --git a/git.c b/git.c
index c2f48d53dd4aaba0752aa5f2e6633242d320b248..3fded745195a603d15da399823e060bb75fb26ef 100644 (file)
--- a/git.c
+++ b/git.c
@@ -267,7 +267,7 @@ static int handle_options(const char ***argv, int *argc, int *envchanged)
                } else if (!strcmp(cmd, "--shallow-file")) {
                        (*argv)++;
                        (*argc)--;
-                       set_alternate_shallow_file((*argv)[0], 1);
+                       set_alternate_shallow_file(the_repository, (*argv)[0], 1);
                        if (envchanged)
                                *envchanged = 1;
                } else if (!strcmp(cmd, "-C")) {
@@ -537,6 +537,7 @@ static struct cmd_struct commands[] = {
        { "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-ref", cmd_show_ref, RUN_SETUP },
        { "stage", cmd_add, RUN_SETUP | NEED_WORK_TREE },
        { "status", cmd_status, RUN_SETUP | NEED_WORK_TREE },
diff --git a/grep.c b/grep.c
index 45ec7e636c004dbd35d4e0d05c243bc1d1479d19..7e2f440955a01ae305664df37f77ed87a55c2b06 100644 (file)
--- a/grep.c
+++ b/grep.c
@@ -1,18 +1,31 @@
 #include "cache.h"
 #include "config.h"
 #include "grep.h"
+#include "object-store.h"
 #include "userdiff.h"
 #include "xdiff-interface.h"
 #include "diff.h"
 #include "diffcore.h"
 #include "commit.h"
 #include "quote.h"
+#include "help.h"
 
 static int grep_source_load(struct grep_source *gs);
 static int grep_source_is_binary(struct grep_source *gs);
 
 static struct grep_opt grep_defaults;
 
+static const char *color_grep_slots[] = {
+       [GREP_COLOR_CONTEXT]        = "context",
+       [GREP_COLOR_FILENAME]       = "filename",
+       [GREP_COLOR_FUNCTION]       = "function",
+       [GREP_COLOR_LINENO]         = "lineNumber",
+       [GREP_COLOR_MATCH_CONTEXT]  = "matchContext",
+       [GREP_COLOR_MATCH_SELECTED] = "matchSelected",
+       [GREP_COLOR_SELECTED]       = "selected",
+       [GREP_COLOR_SEP]            = "separator",
+};
+
 static void std_output(struct grep_opt *opt, const void *buf, size_t size)
 {
        fwrite(buf, size, 1, stdout);
@@ -42,14 +55,14 @@ void init_grep_defaults(void)
        opt->pathname = 1;
        opt->max_depth = -1;
        opt->pattern_type_option = GREP_PATTERN_TYPE_UNSPECIFIED;
-       color_set(opt->color_context, "");
-       color_set(opt->color_filename, "");
-       color_set(opt->color_function, "");
-       color_set(opt->color_lineno, "");
-       color_set(opt->color_match_context, GIT_COLOR_BOLD_RED);
-       color_set(opt->color_match_selected, GIT_COLOR_BOLD_RED);
-       color_set(opt->color_selected, "");
-       color_set(opt->color_sep, GIT_COLOR_CYAN);
+       color_set(opt->colors[GREP_COLOR_CONTEXT], "");
+       color_set(opt->colors[GREP_COLOR_FILENAME], "");
+       color_set(opt->colors[GREP_COLOR_FUNCTION], "");
+       color_set(opt->colors[GREP_COLOR_LINENO], "");
+       color_set(opt->colors[GREP_COLOR_MATCH_CONTEXT], GIT_COLOR_BOLD_RED);
+       color_set(opt->colors[GREP_COLOR_MATCH_SELECTED], GIT_COLOR_BOLD_RED);
+       color_set(opt->colors[GREP_COLOR_SELECTED], "");
+       color_set(opt->colors[GREP_COLOR_SEP], GIT_COLOR_CYAN);
        opt->color = -1;
        opt->output = std_output;
 }
@@ -69,6 +82,8 @@ static int parse_pattern_type_arg(const char *opt, const char *arg)
        die("bad %s argument: %s", opt, arg);
 }
 
+define_list_config_array_extra(color_grep_slots, {"match"});
+
 /*
  * Read the configuration file once and store it in
  * the grep_defaults template.
@@ -76,7 +91,7 @@ static int parse_pattern_type_arg(const char *opt, const char *arg)
 int grep_config(const char *var, const char *value, void *cb)
 {
        struct grep_opt *opt = &grep_defaults;
-       char *color = NULL;
+       const char *slot;
 
        if (userdiff_config(var, value) < 0)
                return -1;
@@ -103,32 +118,18 @@ int grep_config(const char *var, const char *value, void *cb)
 
        if (!strcmp(var, "color.grep"))
                opt->color = git_config_colorbool(var, value);
-       else if (!strcmp(var, "color.grep.context"))
-               color = opt->color_context;
-       else if (!strcmp(var, "color.grep.filename"))
-               color = opt->color_filename;
-       else if (!strcmp(var, "color.grep.function"))
-               color = opt->color_function;
-       else if (!strcmp(var, "color.grep.linenumber"))
-               color = opt->color_lineno;
-       else if (!strcmp(var, "color.grep.matchcontext"))
-               color = opt->color_match_context;
-       else if (!strcmp(var, "color.grep.matchselected"))
-               color = opt->color_match_selected;
-       else if (!strcmp(var, "color.grep.selected"))
-               color = opt->color_selected;
-       else if (!strcmp(var, "color.grep.separator"))
-               color = opt->color_sep;
-       else if (!strcmp(var, "color.grep.match")) {
-               int rc = 0;
-               if (!value)
-                       return config_error_nonbool(var);
-               rc |= color_parse(value, opt->color_match_context);
-               rc |= color_parse(value, opt->color_match_selected);
-               return rc;
-       }
-
-       if (color) {
+       if (!strcmp(var, "color.grep.match")) {
+               if (grep_config("color.grep.matchcontext", value, cb) < 0)
+                       return -1;
+               if (grep_config("color.grep.matchselected", value, cb) < 0)
+                       return -1;
+       } else if (skip_prefix(var, "color.grep.", &slot)) {
+               int i = LOOKUP_CONFIG(color_grep_slots, slot);
+               char *color;
+
+               if (i < 0)
+                       return -1;
+               color = opt->colors[i];
                if (!value)
                        return config_error_nonbool(var);
                return color_parse(value, color);
@@ -144,6 +145,7 @@ int grep_config(const char *var, const char *value, void *cb)
 void grep_init(struct grep_opt *opt, const char *prefix)
 {
        struct grep_opt *def = &grep_defaults;
+       int i;
 
        memset(opt, 0, sizeof(*opt));
        opt->prefix = prefix;
@@ -160,14 +162,8 @@ void grep_init(struct grep_opt *opt, const char *prefix)
        opt->relative = def->relative;
        opt->output = def->output;
 
-       color_set(opt->color_context, def->color_context);
-       color_set(opt->color_filename, def->color_filename);
-       color_set(opt->color_function, def->color_function);
-       color_set(opt->color_lineno, def->color_lineno);
-       color_set(opt->color_match_context, def->color_match_context);
-       color_set(opt->color_match_selected, def->color_match_selected);
-       color_set(opt->color_selected, def->color_selected);
-       color_set(opt->color_sep, def->color_sep);
+       for (i = 0; i < NR_GREP_COLORS; i++)
+               color_set(opt->colors[i], def->colors[i]);
 }
 
 static void grep_set_pattern_type_option(enum grep_pattern_type pattern_type, struct grep_opt *opt)
@@ -1098,12 +1094,12 @@ static void output_sep(struct grep_opt *opt, char sign)
        if (opt->null_following_name)
                opt->output(opt, "\0", 1);
        else
-               output_color(opt, &sign, 1, opt->color_sep);
+               output_color(opt, &sign, 1, opt->colors[GREP_COLOR_SEP]);
 }
 
 static void show_name(struct grep_opt *opt, const char *name)
 {
-       output_color(opt, name, strlen(name), opt->color_filename);
+       output_color(opt, name, strlen(name), opt->colors[GREP_COLOR_FILENAME]);
        opt->output(opt, opt->null_following_name ? "\0" : "\n", 1);
 }
 
@@ -1370,28 +1366,28 @@ static void show_line(struct grep_opt *opt, char *bol, char *eol,
        } else if (opt->pre_context || opt->post_context || opt->funcbody) {
                if (opt->last_shown == 0) {
                        if (opt->show_hunk_mark) {
-                               output_color(opt, "--", 2, opt->color_sep);
+                               output_color(opt, "--", 2, opt->colors[GREP_COLOR_SEP]);
                                opt->output(opt, "\n", 1);
                        }
                } else if (lno > opt->last_shown + 1) {
-                       output_color(opt, "--", 2, opt->color_sep);
+                       output_color(opt, "--", 2, opt->colors[GREP_COLOR_SEP]);
                        opt->output(opt, "\n", 1);
                }
        }
        if (opt->heading && opt->last_shown == 0) {
-               output_color(opt, name, strlen(name), opt->color_filename);
+               output_color(opt, name, strlen(name), opt->colors[GREP_COLOR_FILENAME]);
                opt->output(opt, "\n", 1);
        }
        opt->last_shown = lno;
 
        if (!opt->heading && opt->pathname) {
-               output_color(opt, name, strlen(name), opt->color_filename);
+               output_color(opt, name, strlen(name), opt->colors[GREP_COLOR_FILENAME]);
                output_sep(opt, sign);
        }
        if (opt->linenum) {
                char buf[32];
                xsnprintf(buf, sizeof(buf), "%d", lno);
-               output_color(opt, buf, strlen(buf), opt->color_lineno);
+               output_color(opt, buf, strlen(buf), opt->colors[GREP_COLOR_LINENO]);
                output_sep(opt, sign);
        }
        if (opt->color) {
@@ -1401,15 +1397,15 @@ static void show_line(struct grep_opt *opt, char *bol, char *eol,
                int eflags = 0;
 
                if (sign == ':')
-                       match_color = opt->color_match_selected;
+                       match_color = opt->colors[GREP_COLOR_MATCH_SELECTED];
                else
-                       match_color = opt->color_match_context;
+                       match_color = opt->colors[GREP_COLOR_MATCH_CONTEXT];
                if (sign == ':')
-                       line_color = opt->color_selected;
+                       line_color = opt->colors[GREP_COLOR_SELECTED];
                else if (sign == '-')
-                       line_color = opt->color_context;
+                       line_color = opt->colors[GREP_COLOR_CONTEXT];
                else if (sign == '=')
-                       line_color = opt->color_function;
+                       line_color = opt->colors[GREP_COLOR_FUNCTION];
                *eol = '\0';
                while (next_match(opt, bol, eol, ctx, &match, eflags)) {
                        if (match.rm_so == match.rm_eo)
@@ -1816,7 +1812,7 @@ static int grep_source_1(struct grep_opt *opt, struct grep_source *gs, int colle
                        if (binary_match_only) {
                                opt->output(opt, "Binary file ", 12);
                                output_color(opt, gs->name, strlen(gs->name),
-                                            opt->color_filename);
+                                            opt->colors[GREP_COLOR_FILENAME]);
                                opt->output(opt, " matches\n", 9);
                                return 1;
                        }
@@ -1890,7 +1886,7 @@ static int grep_source_1(struct grep_opt *opt, struct grep_source *gs, int colle
                char buf[32];
                if (opt->pathname) {
                        output_color(opt, gs->name, strlen(gs->name),
-                                    opt->color_filename);
+                                    opt->colors[GREP_COLOR_FILENAME]);
                        output_sep(opt, ':');
                }
                xsnprintf(buf, sizeof(buf), "%u\n", count);
diff --git a/grep.h b/grep.h
index 399381c908c2c93cbcf447498fb435e517dddde0..ed25be271b5b6a002fdb582fd5c11a499a4f0c94 100644 (file)
--- a/grep.h
+++ b/grep.h
@@ -62,6 +62,18 @@ enum grep_header_field {
        GREP_HEADER_FIELD_MAX
 };
 
+enum grep_color {
+       GREP_COLOR_CONTEXT,
+       GREP_COLOR_FILENAME,
+       GREP_COLOR_FUNCTION,
+       GREP_COLOR_LINENO,
+       GREP_COLOR_MATCH_CONTEXT,
+       GREP_COLOR_MATCH_SELECTED,
+       GREP_COLOR_SELECTED,
+       GREP_COLOR_SEP,
+       NR_GREP_COLORS
+};
+
 struct grep_pat {
        struct grep_pat *next;
        const char *origin;
@@ -155,14 +167,7 @@ struct grep_opt {
        int funcbody;
        int extended_regexp_option;
        int pattern_type_option;
-       char color_context[COLOR_MAXLEN];
-       char color_filename[COLOR_MAXLEN];
-       char color_function[COLOR_MAXLEN];
-       char color_lineno[COLOR_MAXLEN];
-       char color_match_context[COLOR_MAXLEN];
-       char color_match_selected[COLOR_MAXLEN];
-       char color_selected[COLOR_MAXLEN];
-       char color_sep[COLOR_MAXLEN];
+       char colors[NR_GREP_COLORS][COLOR_MAXLEN];
        unsigned pre_context;
        unsigned post_context;
        unsigned last_shown;
diff --git a/help.c b/help.c
index dd35fcc133094e4dc89898463868e89162637076..3ebf0568dba1f20039b6e4d02c18c652078ad2cb 100644 (file)
--- a/help.c
+++ b/help.c
@@ -409,6 +409,90 @@ void list_common_guides_help(void)
        putchar('\n');
 }
 
+struct slot_expansion {
+       const char *prefix;
+       const char *placeholder;
+       void (*fn)(struct string_list *list, const char *prefix);
+       int found;
+};
+
+void list_config_help(int for_human)
+{
+       struct slot_expansion slot_expansions[] = {
+               { "advice", "*", list_config_advices },
+               { "color.branch", "<slot>", list_config_color_branch_slots },
+               { "color.decorate", "<slot>", list_config_color_decorate_slots },
+               { "color.diff", "<slot>", list_config_color_diff_slots },
+               { "color.grep", "<slot>", list_config_color_grep_slots },
+               { "color.interactive", "<slot>", list_config_color_interactive_slots },
+               { "color.status", "<slot>", list_config_color_status_slots },
+               { "fsck", "<msg-id>", list_config_fsck_msg_ids },
+               { "receive.fsck", "<msg-id>", list_config_fsck_msg_ids },
+               { NULL, NULL, NULL }
+       };
+       const char **p;
+       struct slot_expansion *e;
+       struct string_list keys = STRING_LIST_INIT_DUP;
+       int i;
+
+       for (p = config_name_list; *p; p++) {
+               const char *var = *p;
+               struct strbuf sb = STRBUF_INIT;
+
+               for (e = slot_expansions; e->prefix; e++) {
+
+                       strbuf_reset(&sb);
+                       strbuf_addf(&sb, "%s.%s", e->prefix, e->placeholder);
+                       if (!strcasecmp(var, sb.buf)) {
+                               e->fn(&keys, e->prefix);
+                               e->found++;
+                               break;
+                       }
+               }
+               strbuf_release(&sb);
+               if (!e->prefix)
+                       string_list_append(&keys, var);
+       }
+
+       for (e = slot_expansions; e->prefix; e++)
+               if (!e->found)
+                       BUG("slot_expansion %s.%s is not used",
+                           e->prefix, e->placeholder);
+
+       string_list_sort(&keys);
+       for (i = 0; i < keys.nr; i++) {
+               const char *var = keys.items[i].string;
+               const char *wildcard, *tag, *cut;
+
+               if (for_human) {
+                       puts(var);
+                       continue;
+               }
+
+               wildcard = strchr(var, '*');
+               tag = strchr(var, '<');
+
+               if (!wildcard && !tag) {
+                       puts(var);
+                       continue;
+               }
+
+               if (wildcard && !tag)
+                       cut = wildcard;
+               else if (!wildcard && tag)
+                       cut = tag;
+               else
+                       cut = wildcard < tag ? wildcard : tag;
+
+               /*
+                * We may produce duplicates, but that's up to
+                * git-completion.bash to handle
+                */
+               printf("%.*s\n", (int)(cut - var), var);
+       }
+       string_list_clear(&keys, 0);
+}
+
 void list_all_cmds_help(void)
 {
        print_cmd_by_category(main_categories);
diff --git a/help.h b/help.h
index 3b38292a1b317ba32d934be6006cb86e0e7d0d94..f8b15323a60dd318820c7295a4eebbcbd1de43dc 100644 (file)
--- a/help.h
+++ b/help.h
@@ -1,7 +1,8 @@
 #ifndef HELP_H
 #define HELP_H
 
-struct string_list;
+#include "string-list.h"
+#include "strbuf.h"
 
 struct cmdnames {
        int alloc;
@@ -21,6 +22,7 @@ static inline void mput_char(char c, unsigned int num)
 extern void list_common_cmds_help(void);
 extern void list_all_cmds_help(void);
 extern void list_common_guides_help(void);
+extern void list_config_help(int for_human);
 
 extern void list_all_main_cmds(struct string_list *list);
 extern void list_all_other_cmds(struct string_list *list);
@@ -42,4 +44,45 @@ extern void list_commands(unsigned int colopts, struct cmdnames *main_cmds, stru
  * ref to the command, to give suggested "correct" refs.
  */
 extern void help_unknown_ref(const char *ref, const char *cmd, const char *error);
+
+static inline void list_config_item(struct string_list *list,
+                                   const char *prefix,
+                                   const char *str)
+{
+       string_list_append_nodup(list, xstrfmt("%s.%s", prefix, str));
+}
+
+#define define_list_config_array(array)                                        \
+void list_config_##array(struct string_list *list, const char *prefix) \
+{                                                                      \
+       int i;                                                          \
+       for (i = 0; i < ARRAY_SIZE(array); i++)                         \
+               if (array[i])                                           \
+                       list_config_item(list, prefix, array[i]);       \
+}                                                                      \
+struct string_list
+
+#define define_list_config_array_extra(array, values)                  \
+void list_config_##array(struct string_list *list, const char *prefix) \
+{                                                                      \
+       int i;                                                          \
+       static const char *extra[] = values;                            \
+       for (i = 0; i < ARRAY_SIZE(extra); i++)                         \
+               list_config_item(list, prefix, extra[i]);               \
+       for (i = 0; i < ARRAY_SIZE(array); i++)                         \
+               if (array[i])                                           \
+                       list_config_item(list, prefix, array[i]);       \
+}                                                                      \
+struct string_list
+
+/* These are actually scattered over many C files */
+void list_config_advices(struct string_list *list, const char *prefix);
+void list_config_color_branch_slots(struct string_list *list, const char *prefix);
+void list_config_color_decorate_slots(struct string_list *list, const char *prefix);
+void list_config_color_diff_slots(struct string_list *list, const char *prefix);
+void list_config_color_grep_slots(struct string_list *list, const char *prefix);
+void list_config_color_interactive_slots(struct string_list *list, const char *prefix);
+void list_config_color_status_slots(struct string_list *list, const char *prefix);
+void list_config_fsck_msg_ids(struct string_list *list, const char *prefix);
+
 #endif /* HELP_H */
index 6a3cc985c45e751dd0c3f37880cf0bfd205ef088..c0e2bd6a06a27b6056364c43b003d74539fd6cad 100644 (file)
@@ -146,6 +146,8 @@ void partial_clone_get_default_filter_spec(
        /*
         * Parse default value, but silently ignore it if it is invalid.
         */
+       if (!core_partial_clone_filter_default)
+               return;
        gently_parse_list_objects_filter(filter_options,
                                         core_partial_clone_filter_default,
                                         NULL);
index 5b14d2711ad3791169f5d8cbc03836b4254bd55c..a0ba78b20cc99bfcd2c41abd4f312b5649a2b9cd 100644 (file)
@@ -11,6 +11,7 @@
 #include "list-objects-filter.h"
 #include "list-objects-filter-options.h"
 #include "oidset.h"
+#include "object-store.h"
 
 /* Remember to update object flag allocation in object.h */
 /*
index 3eec510357337f5e33eea08a05faa22373d98c07..3e5e1992eb0cd1c535ed42e9729941403ca89054 100644 (file)
@@ -10,6 +10,7 @@
 #include "list-objects-filter.h"
 #include "list-objects-filter-options.h"
 #include "packfile.h"
+#include "object-store.h"
 
 static void process_blob(struct rev_info *revs,
                         struct blob *blob,
index 4aef85331e0b696d0373cf1bdb0743a7e6b58c36..4a3907fea02d50e1074ca1b785780a0753e77468 100644 (file)
@@ -1,6 +1,7 @@
 #include "cache.h"
 #include "config.h"
 #include "diff.h"
+#include "object-store.h"
 #include "commit.h"
 #include "tag.h"
 #include "graph.h"
@@ -12,6 +13,7 @@
 #include "gpg-interface.h"
 #include "sequencer.h"
 #include "line-log.h"
+#include "help.h"
 
 static struct decoration name_decoration = { "object names" };
 static int decoration_loaded;
@@ -27,6 +29,15 @@ static char decoration_colors[][COLOR_MAXLEN] = {
        GIT_COLOR_BOLD_BLUE,    /* GRAFTED */
 };
 
+static const char *color_decorate_slots[] = {
+       [DECORATION_REF_LOCAL]  = "branch",
+       [DECORATION_REF_REMOTE] = "remoteBranch",
+       [DECORATION_REF_TAG]    = "tag",
+       [DECORATION_REF_STASH]  = "stash",
+       [DECORATION_REF_HEAD]   = "HEAD",
+       [DECORATION_GRAFTED]    = "grafted",
+};
+
 static const char *decorate_get_color(int decorate_use_color, enum decoration_type ix)
 {
        if (want_color(decorate_use_color))
@@ -34,34 +45,11 @@ static const char *decorate_get_color(int decorate_use_color, enum decoration_ty
        return "";
 }
 
-static int parse_decorate_color_slot(const char *slot)
-{
-       /*
-        * We're comparing with 'ignore-case' on
-        * (because config.c sets them all tolower),
-        * but let's match the letters in the literal
-        * string values here with how they are
-        * documented in Documentation/config.txt, for
-        * consistency.
-        *
-        * We love being consistent, don't we?
-        */
-       if (!strcasecmp(slot, "branch"))
-               return DECORATION_REF_LOCAL;
-       if (!strcasecmp(slot, "remoteBranch"))
-               return DECORATION_REF_REMOTE;
-       if (!strcasecmp(slot, "tag"))
-               return DECORATION_REF_TAG;
-       if (!strcasecmp(slot, "stash"))
-               return DECORATION_REF_STASH;
-       if (!strcasecmp(slot, "HEAD"))
-               return DECORATION_REF_HEAD;
-       return -1;
-}
+define_list_config_array(color_decorate_slots);
 
 int parse_decorate_color_config(const char *var, const char *slot_name, const char *value)
 {
-       int slot = parse_decorate_color_slot(slot_name);
+       int slot = LOOKUP_CONFIG(color_decorate_slots, slot_name);
        if (slot < 0)
                return 0;
        if (!value)
@@ -295,8 +283,12 @@ void show_decorations(struct rev_info *opt, struct commit *commit)
 {
        struct strbuf sb = STRBUF_INIT;
 
-       if (opt->show_source && commit->util)
-               fprintf(opt->diffopt.file, "\t%s", (char *) commit->util);
+       if (opt->sources) {
+               char **slot = revision_sources_peek(opt->sources, commit);
+
+               if (slot && *slot)
+                       fprintf(opt->diffopt.file, "\t%s", *slot);
+       }
        if (!opt->show_decorations)
                return;
        format_decorations(&sb, commit, opt->diffopt.use_color);
index 13f0d2884e25edef3fde5bdf72b89a770111e472..962fd86d6d7067e84bc0dbf499cc0c47b6ad3c11 100644 (file)
--- a/mailmap.c
+++ b/mailmap.c
@@ -1,6 +1,7 @@
 #include "cache.h"
 #include "string-list.h"
 #include "mailmap.h"
+#include "object-store.h"
 
 #define DEBUG_MAILMAP 0
 #if DEBUG_MAILMAP
index 72cc2baa3f96b2cbfa296335c7f0ff1094b6e96c..4cdeff53e1e8533b0dba168c19187353901253ea 100644 (file)
@@ -1,6 +1,7 @@
 #include "cache.h"
 #include "tree.h"
 #include "tree-walk.h"
+#include "object-store.h"
 
 static int score_missing(unsigned mode, const char *path)
 {
index fa49c17287f4120b4bbb75acc6b92b3d339710cd..fabb8c19ce983962b45c415f66c11236fa906bfe 100644 (file)
@@ -4,6 +4,7 @@
 #include "ll-merge.h"
 #include "blob.h"
 #include "merge-blobs.h"
+#include "object-store.h"
 
 static int fill_mmfile_blob(mmfile_t *f, struct blob *obj)
 {
index 5eb907f46e04bc560833ed42074a60d217ef19bd..113c1d69625935a2f3c476af0ec0ca92201417e7 100644 (file)
@@ -8,6 +8,7 @@
 #include "advice.h"
 #include "lockfile.h"
 #include "cache-tree.h"
+#include "object-store.h"
 #include "commit.h"
 #include "blob.h"
 #include "builtin.h"
@@ -15,6 +16,7 @@
 #include "diff.h"
 #include "diffcore.h"
 #include "tag.h"
+#include "alloc.h"
 #include "unpack-trees.h"
 #include "string-list.h"
 #include "xdiff-interface.h"
@@ -160,7 +162,7 @@ static struct tree *shift_tree_object(struct tree *one, struct tree *two,
 
 static struct commit *make_virtual_commit(struct tree *tree, const char *comment)
 {
-       struct commit *commit = alloc_commit_node();
+       struct commit *commit = alloc_commit_node(the_repository);
 
        set_merge_remote_desc(commit, comment, (struct object *)commit);
        commit->maybe_tree = tree;
@@ -181,7 +183,7 @@ static int oid_eq(const struct object_id *a, const struct object_id *b)
 
 enum rename_type {
        RENAME_NORMAL = 0,
-       RENAME_DIR,
+       RENAME_VIA_DIR,
        RENAME_DELETE,
        RENAME_ONE_FILE_TO_ONE,
        RENAME_ONE_FILE_TO_TWO,
@@ -286,10 +288,12 @@ static void output(struct merge_options *o, int v, const char *fmt, ...)
 
 static void output_commit_title(struct merge_options *o, struct commit *commit)
 {
+       struct merge_remote_desc *desc;
+
        strbuf_addchars(&o->obuf, ' ', o->call_depth * 2);
-       if (commit->util)
-               strbuf_addf(&o->obuf, "virtual %s\n",
-                       merge_remote_util(commit)->name);
+       desc = merge_remote_util(commit);
+       if (desc)
+               strbuf_addf(&o->obuf, "virtual %s\n", desc->name);
        else {
                strbuf_add_unique_abbrev(&o->obuf, &commit->object.oid,
                                         DEFAULT_ABBREV);
@@ -309,8 +313,8 @@ static void output_commit_title(struct merge_options *o, struct commit *commit)
 }
 
 static int add_cacheinfo(struct merge_options *o,
-               unsigned int mode, const struct object_id *oid,
-               const char *path, int stage, int refresh, int options)
+                        unsigned int mode, const struct object_id *oid,
+                        const char *path, int stage, int refresh, int options)
 {
        struct cache_entry *ce;
        int ret;
@@ -417,8 +421,8 @@ struct tree *write_tree_from_memory(struct merge_options *o)
 }
 
 static int save_files_dirs(const struct object_id *oid,
-               struct strbuf *base, const char *path,
-               unsigned int mode, int stage, void *context)
+                          struct strbuf *base, const char *path,
+                          unsigned int mode, int stage, void *context)
 {
        struct path_hashmap_entry *entry;
        int baselen = base->len;
@@ -539,7 +543,7 @@ static void record_df_conflict_files(struct merge_options *o,
                                     struct string_list *entries)
 {
        /* If there is a D/F conflict and the file for such a conflict
-        * currently exist in the working tree, we want to allow it to be
+        * currently exists in the working tree, we want to allow it to be
         * removed to make room for the corresponding directory if needed.
         * The files underneath the directories of such D/F conflicts will
         * be processed before the corresponding file involved in the D/F
@@ -913,7 +917,7 @@ static int make_room_for_path(struct merge_options *o, const char *path)
         */
        if (would_lose_untracked(path))
                return err(o, _("refusing to lose untracked file at '%s'"),
-                            path);
+                          path);
 
        /* Successful unlink is good.. */
        if (!unlink(path))
@@ -992,16 +996,16 @@ static int update_file_flags(struct merge_options *o,
                        unlink(path);
                        if (symlink(lnk, path))
                                ret = err(o, _("failed to symlink '%s': %s"),
-                                       path, strerror(errno));
+                                         path, strerror(errno));
                        free(lnk);
                } else
                        ret = err(o,
                                  _("do not know what to do with %06o %s '%s'"),
                                  mode, oid_to_hex(oid), path);
- free_buf:
      free_buf:
                free(buf);
        }
- update_index:
+update_index:
        if (!ret && update_cache)
                if (add_cacheinfo(o, mode, oid, path, 0, update_wd,
                                  ADD_CACHE_OK_TO_ADD))
@@ -1090,7 +1094,7 @@ static int merge_3way(struct merge_options *o,
 }
 
 static int find_first_merges(struct object_array *result, const char *path,
-               struct commit *a, struct commit *b)
+                            struct commit *a, struct commit *b)
 {
        int i, j;
        struct object_array merges = OBJECT_ARRAY_INIT;
@@ -1108,7 +1112,7 @@ static int find_first_merges(struct object_array *result, const char *path,
 
        /* get all revisions that merge commit a */
        xsnprintf(merged_revision, sizeof(merged_revision), "^%s",
-                       oid_to_hex(&a->object.oid));
+                 oid_to_hex(&a->object.oid));
        init_revisions(&revs, NULL);
        rev_opts.submodule = path;
        /* FIXME: can't handle linked worktrees in submodules yet */
@@ -1250,12 +1254,12 @@ static int merge_submodule(struct merge_options *o,
                output(o, 2, _("Found a possible merge resolution for the submodule:\n"));
                print_commit((struct commit *) merges.objects[0].item);
                output(o, 2, _(
-                       "If this is correct simply add it to the index "
-                       "for example\n"
-                       "by using:\n\n"
-                       "  git update-index --cacheinfo 160000 %s \"%s\"\n\n"
-                       "which will accept this suggestion.\n"),
-                       oid_to_hex(&merges.objects[0].item->oid), path);
+                      "If this is correct simply add it to the index "
+                      "for example\n"
+                      "by using:\n\n"
+                      "  git update-index --cacheinfo 160000 %s \"%s\"\n\n"
+                      "which will accept this suggestion.\n"),
+                      oid_to_hex(&merges.objects[0].item->oid), path);
                break;
 
        default:
@@ -1332,10 +1336,10 @@ static int merge_file_1(struct merge_options *o,
                        result->clean = (merge_status == 0);
                } else if (S_ISGITLINK(a->mode)) {
                        result->clean = merge_submodule(o, &result->oid,
-                                                      one->path,
-                                                      &one->oid,
-                                                      &a->oid,
-                                                      &b->oid);
+                                                       one->path,
+                                                       &one->oid,
+                                                       &a->oid,
+                                                       &b->oid);
                } else if (S_ISLNK(a->mode)) {
                        switch (o->recursive_variant) {
                        case MERGE_RECURSIVE_NORMAL:
@@ -1410,11 +1414,17 @@ static int merge_file_one(struct merge_options *o,
        return merge_file_1(o, &one, &a, &b, path, branch1, branch2, mfi);
 }
 
-static int conflict_rename_dir(struct merge_options *o,
-                              struct diff_filepair *pair,
-                              const char *rename_branch,
-                              const char *other_branch)
+static int handle_rename_via_dir(struct merge_options *o,
+                                struct diff_filepair *pair,
+                                const char *rename_branch,
+                                const char *other_branch)
 {
+       /*
+        * Handle file adds that need to be renamed due to directory rename
+        * detection.  This differs from handle_rename_normal, because
+        * there is no content merge to do; just move the file into the
+        * desired final location.
+        */
        const struct diff_filespec *dest = pair->two;
 
        if (!o->call_depth && would_lose_untracked(dest->path)) {
@@ -1443,13 +1453,13 @@ static int conflict_rename_dir(struct merge_options *o,
 }
 
 static int handle_change_delete(struct merge_options *o,
-                                const char *path, const char *old_path,
-                                const struct object_id *o_oid, int o_mode,
-                                const struct object_id *changed_oid,
-                                int changed_mode,
-                                const char *change_branch,
-                                const char *delete_branch,
-                                const char *change, const char *change_past)
+                               const char *path, const char *old_path,
+                               const struct object_id *o_oid, int o_mode,
+                               const struct object_id *changed_oid,
+                               int changed_mode,
+                               const char *change_branch,
+                               const char *delete_branch,
+                               const char *change, const char *change_past)
 {
        char *alt_path = NULL;
        const char *update_path = path;
@@ -1470,6 +1480,21 @@ static int handle_change_delete(struct merge_options *o,
                if (!ret)
                        ret = update_file(o, 0, o_oid, o_mode, update_path);
        } else {
+               /*
+                * Despite the four nearly duplicate messages and argument
+                * lists below and the ugliness of the nested if-statements,
+                * having complete messages makes the job easier for
+                * translators.
+                *
+                * The slight variance among the cases is due to the fact
+                * that:
+                *   1) directory/file conflicts (in effect if
+                *      !alt_path) could cause us to need to write the
+                *      file to a different path.
+                *   2) renames (in effect if !old_path) could mean that
+                *      there are two names for the path that the user
+                *      may know the file by.
+                */
                if (!alt_path) {
                        if (!old_path) {
                                output(o, 1, _("CONFLICT (%s/delete): %s deleted in %s "
@@ -1509,10 +1534,10 @@ static int handle_change_delete(struct merge_options *o,
        return ret;
 }
 
-static int conflict_rename_delete(struct merge_options *o,
-                                  struct diff_filepair *pair,
-                                  const char *rename_branch,
-                                  const char *delete_branch)
+static int handle_rename_delete(struct merge_options *o,
+                               struct diff_filepair *pair,
+                               const char *rename_branch,
+                               const char *delete_branch)
 {
        const struct diff_filespec *orig = pair->one;
        const struct diff_filespec *dest = pair->two;
@@ -1614,8 +1639,8 @@ static int handle_file(struct merge_options *o,
        return ret;
 }
 
-static int conflict_rename_rename_1to2(struct merge_options *o,
-                                       struct rename_conflict_info *ci)
+static int handle_rename_rename_1to2(struct merge_options *o,
+                                    struct rename_conflict_info *ci)
 {
        /* One file was renamed in both branches, but to different names. */
        struct diff_filespec *one = ci->pair1->one;
@@ -1676,8 +1701,8 @@ static int conflict_rename_rename_1to2(struct merge_options *o,
        return 0;
 }
 
-static int conflict_rename_rename_2to1(struct merge_options *o,
-                                       struct rename_conflict_info *ci)
+static int handle_rename_rename_2to1(struct merge_options *o,
+                                    struct rename_conflict_info *ci)
 {
        /* Two files, a & b, were renamed to the same thing, c. */
        struct diff_filespec *a = ci->pair1->one;
@@ -2211,18 +2236,18 @@ static struct hashmap *get_directory_renames(struct diff_queue_struct *pairs,
 static struct dir_rename_entry *check_dir_renamed(const char *path,
                                                  struct hashmap *dir_renames)
 {
-       char temp[PATH_MAX];
+       char *temp = xstrdup(path);
        char *end;
-       struct dir_rename_entry *entry;
+       struct dir_rename_entry *entry = NULL;;
 
-       strcpy(temp, path);
        while ((end = strrchr(temp, '/'))) {
                *end = '\0';
                entry = dir_rename_find_entry(dir_renames, temp);
                if (entry)
-                       return entry;
+                       break;
        }
-       return NULL;
+       free(temp);
+       return entry;
 }
 
 static void compute_collisions(struct hashmap *collisions,
@@ -2419,7 +2444,7 @@ static void apply_directory_rename_modifications(struct merge_options *o,
         * "NOTE" in update_stages(), doing so will modify the current
         * in-memory index which will break calls to would_lose_untracked()
         * that we need to make.  Instead, we need to just make sure that
-        * the various conflict_rename_*() functions update the index
+        * the various handle_rename_*() functions update the index
         * explicitly rather than relying on unpack_trees() to have done it.
         */
        get_tree_entry(&tree->object.oid,
@@ -2692,7 +2717,7 @@ static int process_renames(struct merge_options *o,
 
                        if (oid_eq(&src_other.oid, &null_oid) &&
                            ren1->add_turned_into_rename) {
-                               setup_rename_conflict_info(RENAME_DIR,
+                               setup_rename_conflict_info(RENAME_VIA_DIR,
                                                           ren1->pair,
                                                           NULL,
                                                           branch1,
@@ -2823,12 +2848,12 @@ static void initial_cleanup_rename(struct diff_queue_struct *pairs,
        free(pairs);
 }
 
-static int handle_renames(struct merge_options *o,
-                         struct tree *common,
-                         struct tree *head,
-                         struct tree *merge,
-                         struct string_list *entries,
-                         struct rename_info *ri)
+static int detect_and_process_renames(struct merge_options *o,
+                                     struct tree *common,
+                                     struct tree *head,
+                                     struct tree *merge,
+                                     struct string_list *entries,
+                                     struct rename_info *ri)
 {
        struct diff_queue_struct *head_pairs, *merge_pairs;
        struct hashmap *dir_re_head, *dir_re_merge;
@@ -2904,7 +2929,8 @@ static struct object_id *stage_oid(const struct object_id *oid, unsigned mode)
 }
 
 static int read_oid_strbuf(struct merge_options *o,
-       const struct object_id *oid, struct strbuf *dst)
+                          const struct object_id *oid,
+                          struct strbuf *dst)
 {
        void *buf;
        enum object_type type;
@@ -2957,10 +2983,10 @@ static int blob_unchanged(struct merge_options *opt,
 }
 
 static int handle_modify_delete(struct merge_options *o,
-                                const char *path,
-                                struct object_id *o_oid, int o_mode,
-                                struct object_id *a_oid, int a_mode,
-                                struct object_id *b_oid, int b_mode)
+                               const char *path,
+                               struct object_id *o_oid, int o_mode,
+                               struct object_id *a_oid, int a_mode,
+                               struct object_id *b_oid, int b_mode)
 {
        const char *modify_branch, *delete_branch;
        struct object_id *changed_oid;
@@ -3098,12 +3124,12 @@ static int merge_content(struct merge_options *o,
        return !is_dirty && mfi.clean;
 }
 
-static int conflict_rename_normal(struct merge_options *o,
-                                 const char *path,
-                                 struct object_id *o_oid, unsigned int o_mode,
-                                 struct object_id *a_oid, unsigned int a_mode,
-                                 struct object_id *b_oid, unsigned int b_mode,
-                                 struct rename_conflict_info *ci)
+static int handle_rename_normal(struct merge_options *o,
+                               const char *path,
+                               struct object_id *o_oid, unsigned int o_mode,
+                               struct object_id *a_oid, unsigned int a_mode,
+                               struct object_id *b_oid, unsigned int b_mode,
+                               struct rename_conflict_info *ci)
 {
        /* Merge the content and write it out */
        return merge_content(o, path, was_dirty(o, path),
@@ -3130,37 +3156,37 @@ static int process_entry(struct merge_options *o,
                switch (conflict_info->rename_type) {
                case RENAME_NORMAL:
                case RENAME_ONE_FILE_TO_ONE:
-                       clean_merge = conflict_rename_normal(o,
-                                                            path,
-                                                            o_oid, o_mode,
-                                                            a_oid, a_mode,
-                                                            b_oid, b_mode,
-                                                            conflict_info);
+                       clean_merge = handle_rename_normal(o,
+                                                          path,
+                                                          o_oid, o_mode,
+                                                          a_oid, a_mode,
+                                                          b_oid, b_mode,
+                                                          conflict_info);
                        break;
-               case RENAME_DIR:
+               case RENAME_VIA_DIR:
                        clean_merge = 1;
-                       if (conflict_rename_dir(o,
-                                               conflict_info->pair1,
-                                               conflict_info->branch1,
-                                               conflict_info->branch2))
+                       if (handle_rename_via_dir(o,
+                                                 conflict_info->pair1,
+                                                 conflict_info->branch1,
+                                                 conflict_info->branch2))
                                clean_merge = -1;
                        break;
                case RENAME_DELETE:
                        clean_merge = 0;
-                       if (conflict_rename_delete(o,
-                                                  conflict_info->pair1,
-                                                  conflict_info->branch1,
-                                                  conflict_info->branch2))
+                       if (handle_rename_delete(o,
+                                                conflict_info->pair1,
+                                                conflict_info->branch1,
+                                                conflict_info->branch2))
                                clean_merge = -1;
                        break;
                case RENAME_ONE_FILE_TO_TWO:
                        clean_merge = 0;
-                       if (conflict_rename_rename_1to2(o, conflict_info))
+                       if (handle_rename_rename_1to2(o, conflict_info))
                                clean_merge = -1;
                        break;
                case RENAME_TWO_FILES_TO_ONE:
                        clean_merge = 0;
-                       if (conflict_rename_rename_2to1(o, conflict_info))
+                       if (handle_rename_rename_2to1(o, conflict_info))
                                clean_merge = -1;
                        break;
                default:
@@ -3300,8 +3326,8 @@ int merge_trees(struct merge_options *o,
                get_files_dirs(o, merge);
 
                entries = get_unmerged();
-               clean = handle_renames(o, common, head, merge, entries,
-                                      &re_info);
+               clean = detect_and_process_renames(o, common, head, merge,
+                                                  entries, &re_info);
                record_df_conflict_files(o, entries);
                if (clean < 0)
                        goto cleanup;
@@ -3325,7 +3351,7 @@ int merge_trees(struct merge_options *o,
                                    entries->items[i].string);
                }
 
-cleanup:
+       cleanup:
                final_cleanup_renames(&re_info);
 
                string_list_clear(entries, 1);
@@ -3493,14 +3519,14 @@ int merge_recursive_generic(struct merge_options *o,
                        struct commit *base;
                        if (!(base = get_ref(base_list[i], oid_to_hex(base_list[i]))))
                                return err(o, _("Could not parse object '%s'"),
-                                       oid_to_hex(base_list[i]));
+                                          oid_to_hex(base_list[i]));
                        commit_list_insert(base, &ca);
                }
        }
 
        hold_locked_index(&lock, LOCK_DIE_ON_ERROR);
        clean = merge_recursive(o, head_commit, next_commit, ca,
-                       result);
+                               result);
        if (clean < 0) {
                rollback_lock_file(&lock);
                return clean;
index e61988e503b0b2097afeb6716123d88429c0717d..d5770031776283171d702886dc1ebb301bb6e6b1 100644 (file)
@@ -1,5 +1,6 @@
 #include "cache.h"
 #include "notes-cache.h"
+#include "object-store.h"
 #include "commit.h"
 #include "refs.h"
 
index d613e06574aec31e0ecaf083b489b0465e5c27f1..9cc2ee16a8c04c43dabebd61b0b7d41627af40ee 100644 (file)
@@ -1,6 +1,7 @@
 #include "cache.h"
 #include "commit.h"
 #include "refs.h"
+#include "object-store.h"
 #include "diff.h"
 #include "diffcore.h"
 #include "xdiff-interface.h"
diff --git a/notes.c b/notes.c
index a386d450c4c812ef30d0fc661fe2c03e1d062a83..32d3dbcc1e74ce344da89b9aa2b9ca09f6e62d2b 100644 (file)
--- a/notes.c
+++ b/notes.c
@@ -1,6 +1,7 @@
 #include "cache.h"
 #include "config.h"
 #include "notes.h"
+#include "object-store.h"
 #include "blob.h"
 #include "tree.h"
 #include "utf8.h"
index d683112fd7bbab5df7e8cd5656b497cb8fd2bda1..a3db17bbf5a70c9920181e26eeba5c348ad87671 100644 (file)
@@ -139,4 +139,121 @@ void sha1_file_name(struct repository *r, struct strbuf *buf, const unsigned cha
 
 void *map_sha1_file(struct repository *r, const unsigned char *sha1, unsigned long *size);
 
+extern void *read_object_file_extended(const struct object_id *oid,
+                                      enum object_type *type,
+                                      unsigned long *size, int lookup_replace);
+static inline void *read_object_file(const struct object_id *oid, enum object_type *type, unsigned long *size)
+{
+       return read_object_file_extended(oid, type, size, 1);
+}
+
+/* Read and unpack an object file into memory, write memory to an object file */
+int oid_object_info(struct repository *r, const struct object_id *, unsigned long *);
+
+extern int hash_object_file(const void *buf, unsigned long len,
+                           const char *type, struct object_id *oid);
+
+extern int write_object_file(const void *buf, unsigned long len,
+                            const char *type, struct object_id *oid);
+
+extern int hash_object_file_literally(const void *buf, unsigned long len,
+                                     const char *type, struct object_id *oid,
+                                     unsigned flags);
+
+extern int pretend_object_file(void *, unsigned long, enum object_type,
+                              struct object_id *oid);
+
+extern int force_object_loose(const struct object_id *oid, time_t mtime);
+
+/*
+ * Open the loose object at path, check its hash, and return the contents,
+ * type, and size. If the object is a blob, then "contents" may return NULL,
+ * to allow streaming of large blobs.
+ *
+ * Returns 0 on success, negative on error (details may be written to stderr).
+ */
+int read_loose_object(const char *path,
+                     const struct object_id *expected_oid,
+                     enum object_type *type,
+                     unsigned long *size,
+                     void **contents);
+
+/*
+ * Convenience for sha1_object_info_extended() with a NULL struct
+ * object_info. OBJECT_INFO_SKIP_CACHED is automatically set; pass
+ * nonzero flags to also set other flags.
+ */
+extern int has_sha1_file_with_flags(const unsigned char *sha1, int flags);
+static inline int has_sha1_file(const unsigned char *sha1)
+{
+       return has_sha1_file_with_flags(sha1, 0);
+}
+
+/* Same as the above, except for struct object_id. */
+extern int has_object_file(const struct object_id *oid);
+extern int has_object_file_with_flags(const struct object_id *oid, int flags);
+
+/*
+ * Return true iff an alternate object database has a loose object
+ * with the specified name.  This function does not respect replace
+ * references.
+ */
+extern int has_loose_object_nonlocal(const struct object_id *);
+
+extern void assert_oid_type(const struct object_id *oid, enum object_type expect);
+
+struct object_info {
+       /* Request */
+       enum object_type *typep;
+       unsigned long *sizep;
+       off_t *disk_sizep;
+       unsigned char *delta_base_sha1;
+       struct strbuf *type_name;
+       void **contentp;
+
+       /* Response */
+       enum {
+               OI_CACHED,
+               OI_LOOSE,
+               OI_PACKED,
+               OI_DBCACHED
+       } whence;
+       union {
+               /*
+                * struct {
+                *      ... Nothing to expose in this case
+                * } cached;
+                * struct {
+                *      ... Nothing to expose in this case
+                * } loose;
+                */
+               struct {
+                       struct packed_git *pack;
+                       off_t offset;
+                       unsigned int is_delta;
+               } packed;
+       } u;
+};
+
+/*
+ * Initializer for a "struct object_info" that wants no items. You may
+ * also memset() the memory to all-zeroes.
+ */
+#define OBJECT_INFO_INIT {NULL}
+
+/* Invoke lookup_replace_object() on the given hash */
+#define OBJECT_INFO_LOOKUP_REPLACE 1
+/* Allow reading from a loose object file of unknown/bogus type */
+#define OBJECT_INFO_ALLOW_UNKNOWN_TYPE 2
+/* Do not check cached storage */
+#define OBJECT_INFO_SKIP_CACHED 4
+/* Do not retry packed storage after checking packed and loose storage */
+#define OBJECT_INFO_QUICK 8
+/* Do not check loose object */
+#define OBJECT_INFO_IGNORE_LOOSE 16
+
+int oid_object_info_extended(struct repository *r,
+                            const struct object_id *,
+                            struct object_info *, unsigned flags);
+
 #endif /* OBJECT_STORE_H */
index f7f4de3aaf6d42a6dde5811b37aa8239ac183754..9b0f819fae38bcc2fe6b15bfe8e5b9b17f7385bc 100644 (file)
--- a/object.c
+++ b/object.c
@@ -1,24 +1,23 @@
 #include "cache.h"
 #include "object.h"
 #include "replace-object.h"
+#include "object-store.h"
 #include "blob.h"
 #include "tree.h"
 #include "commit.h"
 #include "tag.h"
+#include "alloc.h"
 #include "object-store.h"
 #include "packfile.h"
 
-static struct object **obj_hash;
-static int nr_objs, obj_hash_size;
-
 unsigned int get_max_object_index(void)
 {
-       return obj_hash_size;
+       return the_repository->parsed_objects->obj_hash_size;
 }
 
 struct object *get_indexed_object(unsigned int idx)
 {
-       return obj_hash[idx];
+       return the_repository->parsed_objects->obj_hash[idx];
 }
 
 static const char *object_type_strings[] = {
@@ -90,15 +89,16 @@ struct object *lookup_object(const unsigned char *sha1)
        unsigned int i, first;
        struct object *obj;
 
-       if (!obj_hash)
+       if (!the_repository->parsed_objects->obj_hash)
                return NULL;
 
-       first = i = hash_obj(sha1, obj_hash_size);
-       while ((obj = obj_hash[i]) != NULL) {
+       first = i = hash_obj(sha1,
+                            the_repository->parsed_objects->obj_hash_size);
+       while ((obj = the_repository->parsed_objects->obj_hash[i]) != NULL) {
                if (!hashcmp(sha1, obj->oid.hash))
                        break;
                i++;
-               if (i == obj_hash_size)
+               if (i == the_repository->parsed_objects->obj_hash_size)
                        i = 0;
        }
        if (obj && i != first) {
@@ -107,7 +107,8 @@ struct object *lookup_object(const unsigned char *sha1)
                 * that we do not need to walk the hash table the next
                 * time we look for it.
                 */
-               SWAP(obj_hash[i], obj_hash[first]);
+               SWAP(the_repository->parsed_objects->obj_hash[i],
+                    the_repository->parsed_objects->obj_hash[first]);
        }
        return obj;
 }
@@ -117,29 +118,30 @@ struct object *lookup_object(const unsigned char *sha1)
  * power of 2 (but at least 32).  Copy the existing values to the new
  * hash map.
  */
-static void grow_object_hash(void)
+static void grow_object_hash(struct repository *r)
 {
        int i;
        /*
         * Note that this size must always be power-of-2 to match hash_obj
         * above.
         */
-       int new_hash_size = obj_hash_size < 32 ? 32 : 2 * obj_hash_size;
+       int new_hash_size = r->parsed_objects->obj_hash_size < 32 ? 32 : 2 * r->parsed_objects->obj_hash_size;
        struct object **new_hash;
 
        new_hash = xcalloc(new_hash_size, sizeof(struct object *));
-       for (i = 0; i < obj_hash_size; i++) {
-               struct object *obj = obj_hash[i];
+       for (i = 0; i < r->parsed_objects->obj_hash_size; i++) {
+               struct object *obj = r->parsed_objects->obj_hash[i];
+
                if (!obj)
                        continue;
                insert_obj_hash(obj, new_hash, new_hash_size);
        }
-       free(obj_hash);
-       obj_hash = new_hash;
-       obj_hash_size = new_hash_size;
+       free(r->parsed_objects->obj_hash);
+       r->parsed_objects->obj_hash = new_hash;
+       r->parsed_objects->obj_hash_size = new_hash_size;
 }
 
-void *create_object(const unsigned char *sha1, void *o)
+void *create_object(struct repository *r, const unsigned char *sha1, void *o)
 {
        struct object *obj = o;
 
@@ -147,11 +149,12 @@ void *create_object(const unsigned char *sha1, void *o)
        obj->flags = 0;
        hashcpy(obj->oid.hash, sha1);
 
-       if (obj_hash_size - 1 <= nr_objs * 2)
-               grow_object_hash();
+       if (r->parsed_objects->obj_hash_size - 1 <= r->parsed_objects->nr_objs * 2)
+               grow_object_hash(r);
 
-       insert_obj_hash(obj, obj_hash, obj_hash_size);
-       nr_objs++;
+       insert_obj_hash(obj, r->parsed_objects->obj_hash,
+                       r->parsed_objects->obj_hash_size);
+       r->parsed_objects->nr_objs++;
        return obj;
 }
 
@@ -161,7 +164,7 @@ void *object_as_type(struct object *obj, enum object_type type, int quiet)
                return obj;
        else if (obj->type == OBJ_NONE) {
                if (type == OBJ_COMMIT)
-                       ((struct commit *)obj)->index = alloc_commit_index();
+                       ((struct commit *)obj)->index = alloc_commit_index(the_repository);
                obj->type = type;
                return obj;
        }
@@ -178,7 +181,8 @@ struct object *lookup_unknown_object(const unsigned char *sha1)
 {
        struct object *obj = lookup_object(sha1);
        if (!obj)
-               obj = create_object(sha1, alloc_object_node());
+               obj = create_object(the_repository, sha1,
+                                   alloc_object_node(the_repository));
        return obj;
 }
 
@@ -210,7 +214,7 @@ struct object *parse_object_buffer(const struct object_id *oid, enum object_type
        } else if (type == OBJ_COMMIT) {
                struct commit *commit = lookup_commit(oid);
                if (commit) {
-                       if (parse_commit_buffer(commit, buffer, size))
+                       if (parse_commit_buffer(commit, buffer, size, 1))
                                return NULL;
                        if (!get_cached_commit_buffer(commit, NULL)) {
                                set_commit_buffer(commit, buffer, size);
@@ -431,8 +435,8 @@ void clear_object_flags(unsigned flags)
 {
        int i;
 
-       for (i=0; i < obj_hash_size; i++) {
-               struct object *obj = obj_hash[i];
+       for (i=0; i < the_repository->parsed_objects->obj_hash_size; i++) {
+               struct object *obj = the_repository->parsed_objects->obj_hash[i];
                if (obj)
                        obj->flags &= ~flags;
        }
@@ -442,13 +446,30 @@ void clear_commit_marks_all(unsigned int flags)
 {
        int i;
 
-       for (i = 0; i < obj_hash_size; i++) {
-               struct object *obj = obj_hash[i];
+       for (i = 0; i < the_repository->parsed_objects->obj_hash_size; i++) {
+               struct object *obj = the_repository->parsed_objects->obj_hash[i];
                if (obj && obj->type == OBJ_COMMIT)
                        obj->flags &= ~flags;
        }
 }
 
+struct parsed_object_pool *parsed_object_pool_new(void)
+{
+       struct parsed_object_pool *o = xmalloc(sizeof(*o));
+       memset(o, 0, sizeof(*o));
+
+       o->blob_state = allocate_alloc_state();
+       o->tree_state = allocate_alloc_state();
+       o->commit_state = allocate_alloc_state();
+       o->tag_state = allocate_alloc_state();
+       o->object_state = allocate_alloc_state();
+
+       o->is_shallow = -1;
+       o->shallow_stat = xcalloc(1, sizeof(*o->shallow_stat));
+
+       return o;
+}
+
 struct raw_object_store *raw_object_store_new(void)
 {
        struct raw_object_store *o = xmalloc(sizeof(*o));
@@ -491,3 +512,43 @@ void raw_object_store_clear(struct raw_object_store *o)
        close_all_packs(o);
        o->packed_git = NULL;
 }
+
+void parsed_object_pool_clear(struct parsed_object_pool *o)
+{
+       /*
+        * As objects are allocated in slabs (see alloc.c), we do
+        * not need to free each object, but each slab instead.
+        *
+        * Before doing so, we need to free any additional memory
+        * the objects may hold.
+        */
+       unsigned i;
+
+       for (i = 0; i < o->obj_hash_size; i++) {
+               struct object *obj = o->obj_hash[i];
+
+               if (!obj)
+                       continue;
+
+               if (obj->type == OBJ_TREE)
+                       free_tree_buffer((struct tree*)obj);
+               else if (obj->type == OBJ_COMMIT)
+                       release_commit_memory((struct commit*)obj);
+               else if (obj->type == OBJ_TAG)
+                       release_tag_memory((struct tag*)obj);
+       }
+
+       FREE_AND_NULL(o->obj_hash);
+       o->obj_hash_size = 0;
+
+       clear_alloc_state(o->blob_state);
+       clear_alloc_state(o->tree_state);
+       clear_alloc_state(o->commit_state);
+       clear_alloc_state(o->tag_state);
+       clear_alloc_state(o->object_state);
+       FREE_AND_NULL(o->blob_state);
+       FREE_AND_NULL(o->tree_state);
+       FREE_AND_NULL(o->commit_state);
+       FREE_AND_NULL(o->tag_state);
+       FREE_AND_NULL(o->object_state);
+}
index 5c13955000cdaec252f29a3b93599560c35deb8a..1b96073601f2cd239e7fe6923a078572ee820bcc 100644 (file)
--- a/object.h
+++ b/object.h
@@ -1,6 +1,32 @@
 #ifndef OBJECT_H
 #define OBJECT_H
 
+struct parsed_object_pool {
+       struct object **obj_hash;
+       int nr_objs, obj_hash_size;
+
+       /* TODO: migrate alloc_states to mem-pool? */
+       struct alloc_state *blob_state;
+       struct alloc_state *tree_state;
+       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;
+       int grafts_alloc, grafts_nr;
+
+       int is_shallow;
+       struct stat_validity *shallow_stat;
+       char *alternate_shallow_file;
+
+       int commit_graft_prepared;
+};
+
+struct parsed_object_pool *parsed_object_pool_new(void);
+void parsed_object_pool_clear(struct parsed_object_pool *o);
+
 struct object_list {
        struct object *item;
        struct object_list *next;
@@ -42,6 +68,7 @@ struct object_array {
  * builtin/index-pack.c:                                     2021
  * builtin/pack-objects.c:                                   20
  * builtin/reflog.c:                   10--12
+ * builtin/show-branch.c:    0-------------------------------------------26
  * builtin/unpack-objects.c:                                 2021
  */
 #define FLAG_BITS  27
@@ -84,7 +111,7 @@ extern struct object *get_indexed_object(unsigned int);
  */
 struct object *lookup_object(const unsigned char *sha1);
 
-extern void *create_object(const unsigned char *sha1, void *obj);
+extern void *create_object(struct repository *r, const unsigned char *sha1, void *obj);
 
 void *object_as_type(struct object *obj, enum object_type type, int quiet);
 
index 7b2dc3e7dc768a2d2405a9ae3b1d13f86069a93d..953c5dd84dff2d87b639d29b71d844b29f925618 100644 (file)
@@ -1,4 +1,5 @@
 #include "cache.h"
+#include "object-store.h"
 #include "commit.h"
 #include "tag.h"
 #include "diff.h"
index 06771113fb311e4a75fa7a1e325221e4b60c850c..18f8b22aeb422bb81999e1e564006daf8b64f637 100644 (file)
@@ -120,7 +120,7 @@ static struct ewah_bitmap *read_bitmap_1(struct bitmap_index *index)
 {
        struct ewah_bitmap *b = ewah_pool_new();
 
-       int bitmap_size = ewah_read_mmap(b,
+       ssize_t bitmap_size = ewah_read_mmap(b,
                index->map + index->map_pos,
                index->map_size - index->map_pos);
 
index 1a714fbde994f8b4a7bde68f1fcad1725970fe9b..7cd45aa4b2a0e098d597e4dea633d9b097b9b94c 100644 (file)
@@ -1454,6 +1454,9 @@ static void *unpack_compressed_entry(struct packed_git *p,
                return NULL;
        }
 
+       /* versions of zlib can clobber unconsumed portion of outbuf */
+       buffer[size] = '\0';
+
        return buffer;
 }
 
index e0a38aba9321deae1d64aea7cd87067fde240b10..cc7eaffe1baef8accc1476c92145b7c4bcdcf046 100644 (file)
@@ -3,6 +3,11 @@
 
 #include "oidset.h"
 
+/* in object-store.h */
+struct packed_git;
+struct object_info;
+enum object_type;
+
 /*
  * Generate the filename to be used for a pack file with checksum "sha1" and
  * extension "ext". The result is written into the strbuf "buf", overwriting
index 0f7059a8ab32a624775026d7dc2289245c87c192..7db84227ab34cb33849f4327af58acd925f782c8 100644 (file)
@@ -427,13 +427,59 @@ void parse_options_start(struct parse_opt_ctx_t *ctx,
        parse_options_check(options);
 }
 
-/*
- * TODO: we are not completing the --no-XXX form yet because there are
- * many options that do not suppress it properly.
- */
+static void show_negated_gitcomp(const struct option *opts, int nr_noopts)
+{
+       int printed_dashdash = 0;
+
+       for (; opts->type != OPTION_END; opts++) {
+               int has_unset_form = 0;
+               const char *name;
+
+               if (!opts->long_name)
+                       continue;
+               if (opts->flags & (PARSE_OPT_HIDDEN | PARSE_OPT_NOCOMPLETE))
+                       continue;
+               if (opts->flags & PARSE_OPT_NONEG)
+                       continue;
+
+               switch (opts->type) {
+               case OPTION_STRING:
+               case OPTION_FILENAME:
+               case OPTION_INTEGER:
+               case OPTION_MAGNITUDE:
+               case OPTION_CALLBACK:
+               case OPTION_BIT:
+               case OPTION_NEGBIT:
+               case OPTION_COUNTUP:
+               case OPTION_SET_INT:
+                       has_unset_form = 1;
+                       break;
+               default:
+                       break;
+               }
+               if (!has_unset_form)
+                       continue;
+
+               if (skip_prefix(opts->long_name, "no-", &name)) {
+                       if (nr_noopts < 0)
+                               printf(" --%s", name);
+               } else if (nr_noopts >= 0) {
+                       if (nr_noopts && !printed_dashdash) {
+                               printf(" --");
+                               printed_dashdash = 1;
+                       }
+                       printf(" --no-%s", opts->long_name);
+                       nr_noopts++;
+               }
+       }
+}
+
 static int show_gitcomp(struct parse_opt_ctx_t *ctx,
                        const struct option *opts)
 {
+       const struct option *original_opts = opts;
+       int nr_noopts = 0;
+
        for (; opts->type != OPTION_END; opts++) {
                const char *suffix = "";
 
@@ -463,8 +509,12 @@ static int show_gitcomp(struct parse_opt_ctx_t *ctx,
                }
                if (opts->flags & PARSE_OPT_COMP_ARG)
                        suffix = "=";
+               if (starts_with(opts->long_name, "no-"))
+                       nr_noopts++;
                printf(" --%s%s", opts->long_name, suffix);
        }
+       show_negated_gitcomp(original_opts, -1);
+       show_negated_gitcomp(original_opts, nr_noopts);
        fputc('\n', stdout);
        exit(0);
 }
diff --git a/path.c b/path.c
index 7f109f661816039768e4d8050bdb3c12384f9f85..34f0f98349a6eccd462614cdf143bb031ca348c8 100644 (file)
--- a/path.c
+++ b/path.c
@@ -1442,12 +1442,12 @@ char *xdg_cache_home(const char *filename)
        return NULL;
 }
 
-GIT_PATH_FUNC(git_path_cherry_pick_head, "CHERRY_PICK_HEAD")
-GIT_PATH_FUNC(git_path_revert_head, "REVERT_HEAD")
-GIT_PATH_FUNC(git_path_squash_msg, "SQUASH_MSG")
-GIT_PATH_FUNC(git_path_merge_msg, "MERGE_MSG")
-GIT_PATH_FUNC(git_path_merge_rr, "MERGE_RR")
-GIT_PATH_FUNC(git_path_merge_mode, "MERGE_MODE")
-GIT_PATH_FUNC(git_path_merge_head, "MERGE_HEAD")
-GIT_PATH_FUNC(git_path_fetch_head, "FETCH_HEAD")
-GIT_PATH_FUNC(git_path_shallow, "shallow")
+REPO_GIT_PATH_FUNC(cherry_pick_head, "CHERRY_PICK_HEAD")
+REPO_GIT_PATH_FUNC(revert_head, "REVERT_HEAD")
+REPO_GIT_PATH_FUNC(squash_msg, "SQUASH_MSG")
+REPO_GIT_PATH_FUNC(merge_msg, "MERGE_MSG")
+REPO_GIT_PATH_FUNC(merge_rr, "MERGE_RR")
+REPO_GIT_PATH_FUNC(merge_mode, "MERGE_MODE")
+REPO_GIT_PATH_FUNC(merge_head, "MERGE_HEAD")
+REPO_GIT_PATH_FUNC(fetch_head, "FETCH_HEAD")
+REPO_GIT_PATH_FUNC(shallow, "shallow")
diff --git a/path.h b/path.h
index 1ccd0373c9db8460c7ad7a3f9c5465f84408fd56..5263f40519a3d4093f196513b27b2f8dc19418a4 100644 (file)
--- a/path.h
+++ b/path.h
@@ -160,14 +160,36 @@ extern void report_linked_checkout_garbage(void);
                return ret; \
        }
 
-const char *git_path_cherry_pick_head(void);
-const char *git_path_revert_head(void);
-const char *git_path_squash_msg(void);
-const char *git_path_merge_msg(void);
-const char *git_path_merge_rr(void);
-const char *git_path_merge_mode(void);
-const char *git_path_merge_head(void);
-const char *git_path_fetch_head(void);
-const char *git_path_shallow(void);
+#define REPO_GIT_PATH_FUNC(var, filename) \
+       const char *git_path_##var(struct repository *r) \
+       { \
+               if (!r->cached_paths.var) \
+                       r->cached_paths.var = git_pathdup(filename); \
+               return r->cached_paths.var; \
+       }
+
+struct path_cache {
+       const char *cherry_pick_head;
+       const char *revert_head;
+       const char *squash_msg;
+       const char *merge_msg;
+       const char *merge_rr;
+       const char *merge_mode;
+       const char *merge_head;
+       const char *fetch_head;
+       const char *shallow;
+};
+
+#define PATH_CACHE_INIT { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
+
+const char *git_path_cherry_pick_head(struct repository *r);
+const char *git_path_revert_head(struct repository *r);
+const char *git_path_squash_msg(struct repository *r);
+const char *git_path_merge_msg(struct repository *r);
+const char *git_path_merge_rr(struct repository *r);
+const char *git_path_merge_mode(struct repository *r);
+const char *git_path_merge_head(struct repository *r);
+const char *git_path_fetch_head(struct repository *r);
+const char *git_path_shallow(struct repository *r);
 
 #endif /* PATH_H */
index 065771cfe6b5208503f3b9d768792ff8206a2b06..d8f7a2ba38d9520e6f4b62d187bfd4f9fe9ba4b3 100644 (file)
--- a/po/TEAMS
+++ b/po/TEAMS
@@ -13,12 +13,8 @@ Members:     Alex Henrie <alexhenrie24@gmail.com>
 Language:      de (German)
 Repository:    https://github.com/ralfth/git-po-de
 Leader:                Ralf Thielow <ralf.thielow@gmail.com>
-Members:       Thomas Rast <tr@thomasrast.ch>
-               Jan Krüger <jk@jk.gs>
-               Christian Stimming <stimming@tuhh.de>
+Members:       Matthias Rüster <matthias.ruester@gmail.com>
                Phillip Szelat <phillip.szelat@gmail.com>
-               Matthias Rüster <matthias.ruester@gmail.com>
-               Magnus Görlitz <magnus.goerlitz@googlemail.com>
 
 Language:      es (Spanish)
 Repository:    https://github.com/ChrisADR/git-po
@@ -39,8 +35,8 @@ Members:      Stefano Lattarini <stefano.lattarini AT gmail.com>
 
 Language:      ko (Korean)
 Repository:    https://github.com/git-l10n-ko/git-l10n-ko/
-Leader:                Changwoo Ryu <cwryu@debian.org>
-Members:       Gwan-gyeong Mun <elongbug@gmail.com>
+Leader:                Gwan-gyeong Mun <elongbug@gmail.com>
+Members:       Changwoo Ryu <cwryu@debian.org>
                Sihyeon Jang <uneedsihyeon@gmail.com>
 
 Language:      pt_PT (Portuguese - Portugal)
index 48fe3158e591f4782183e338dc453495eb6ba1d0..036918f44d1a5fb872f0b9a9e56b47f1a6e4c806 100644 (file)
--- a/po/bg.po
+++ b/po/bg.po
 # octopus merge множествено сливане
 # stale remote старо хранилище
 # rebase пребазирам
+# merge base база за сливане
 # force (push) принудително изтласквам
 # stash/index индекс
-# squash commits смачкване на подавания
+# squash commit вкарвам подаване в преднходното
+# fixup commit вкарвам подаване в предходното без следа
 # root commit начално подаване
-# fixup вкарвам подаване в предното без следа
 # remote-tracking branch следящ клон
 # git bundle пратка на git
 # bisect двоично търсене
@@ -32,7 +33,9 @@
 # revision range диапазон на версиите
 # cover letter придружаващо писмо
 # reference repository еталонно хранилище
+# graft присадка
 # grafted repository хранилище с присаждане
+# replace refs заместващи указатели
 # embedded repository вградено/вътрешно хранилище (добавянето му е грешка)
 # thin pack съкратен пакет
 # stat (a file) получавам информация чрез „stat“ (за файл)
@@ -81,6 +84,7 @@
 # binary patch двоична кръпка
 # reverse-apply прилагам в обратна посока
 # todo file файл с команди
+# todo command запланувава команда
 # alternate алтернативен източник
 # superproject обхващащ проект
 # split index разделяне на индекса
 # manual, man page ръководство
 # guide въведение
 # partial clone непълно хранилище
+# cousins сестрински клони
+# expiration date дата на срок
+# is well formed е по правилата
+# namespace пространство от имена
+# repository layout устройство на хранилището
+# collection/series of patches поредица от кръпки
+# recieve получавам
+# BOM маркер за поредността на байтовете
 # ------------------------
 # „$var“ - може да не сработва за shell има gettext и eval_gettext - проверка - намират се лесно по „$
 # ------------------------
 # HEAD as a reference vs head of a branch
 # git update-index -h извежда само един ред, а не цялата помощ за опциите
 # git fetch --al работи подобно на --all
-#
 msgid ""
 msgstr ""
 "Project-Id-Version: git master\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2018-03-16 07:29+0800\n"
-"PO-Revision-Date: 2018-03-16 09:53+0100\n"
+"POT-Creation-Date: 2018-06-16 22:06+0800\n"
+"PO-Revision-Date: 2018-06-17 13:16+0200\n"
 "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
 "Language-Team: Bulgarian <dict@fsa-bg.org>\n"
 "Language: bg\n"
@@ -113,37 +124,37 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: advice.c:62
+#: advice.c:92
 #, c-format
-msgid "hint: %.*s\n"
-msgstr "Подсказка: %.*s\n"
+msgid "%shint: %.*s%s\n"
+msgstr "%sподсказка: %.*s%s\n"
 
-#: advice.c:90
+#: advice.c:137
 msgid "Cherry-picking is not possible because you have unmerged files."
 msgstr "Отбирането на подавания е блокирано от неслети файлове."
 
-#: advice.c:92
+#: advice.c:139
 msgid "Committing is not possible because you have unmerged files."
 msgstr "Подаването е блокирано от неслети файлове."
 
-#: advice.c:94
+#: advice.c:141
 msgid "Merging is not possible because you have unmerged files."
 msgstr "Сливането е блокирано от неслети файлове."
 
-#: advice.c:96
+#: advice.c:143
 msgid "Pulling is not possible because you have unmerged files."
 msgstr "Издърпването е блокирано от неслети файлове."
 
-#: advice.c:98
+#: advice.c:145
 msgid "Reverting is not possible because you have unmerged files."
 msgstr "Отмяната е блокирана от неслети файлове."
 
-#: advice.c:100
+#: advice.c:147
 #, c-format
 msgid "It is not possible to %s because you have unmerged files."
 msgstr "Действието „%s“ е блокирано от неслети файлове."
 
-#: advice.c:108
+#: advice.c:155
 msgid ""
 "Fix them up in the work tree, and then use 'git add/rm <file>'\n"
 "as appropriate to mark resolution and make a commit."
@@ -151,23 +162,23 @@ msgstr ""
 "Редактирайте ги в работното дърво, и тогава ползвайте „git add/rm ФАЙЛ“,\n"
 "за да отбележите коригирането им.  След това извършете подаването."
 
-#: advice.c:116
+#: advice.c:163
 msgid "Exiting because of an unresolved conflict."
 msgstr "Изход от програмата заради некоригиран конфликт."
 
-#: advice.c:121 builtin/merge.c:1251
+#: advice.c:168 builtin/merge.c:1250
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "Не сте завършили сливане.  (Указателят „MERGE_HEAD“ съществува)."
 
-#: advice.c:123
+#: advice.c:170
 msgid "Please, commit your changes before merging."
 msgstr "Промените трябва да се подадат преди сливане."
 
-#: advice.c:124
+#: advice.c:171
 msgid "Exiting because of unfinished merge."
 msgstr "Изход от програмата заради незавършено сливане."
 
-#: advice.c:130
+#: advice.c:177
 #, c-format
 msgid ""
 "Note: checking out '%s'.\n"
@@ -449,7 +460,7 @@ msgstr "неуспешно прилагане на кръпка: „%s:%ld“"
 msgid "cannot checkout %s"
 msgstr "„%s“ не може да се изтегли"
 
-#: apply.c:3396 apply.c:3407 apply.c:3453 setup.c:277
+#: apply.c:3396 apply.c:3407 apply.c:3453 setup.c:278
 #, c-format
 msgid "failed to read %s"
 msgstr "файлът „%s“ не може да бъде прочетен"
@@ -477,7 +488,7 @@ msgstr "„%s“ не съответства на индекса"
 #: apply.c:3560
 msgid "repository lacks the necessary blob to fall back on 3-way merge."
 msgstr ""
-"в хранилището липсват необходимите обекти BLOB, за да се премине към тройно "
+"в хранилището липсват необходимите обекти-BLOB, за да се премине към тройно "
 "сливане."
 
 #: apply.c:3563
@@ -654,7 +665,7 @@ msgstr[1] "Прилагане на кръпката „%%s“ с %d отхвър
 msgid "truncating .rej filename to %.*s.rej"
 msgstr "съкращаване на името на файла с отхвърлените парчета на „ %.*s.rej“"
 
-#: apply.c:4545 builtin/fetch.c:775 builtin/fetch.c:1025
+#: apply.c:4545 builtin/fetch.c:786 builtin/fetch.c:1036
 #, c-format
 msgid "cannot open %s"
 msgstr "„%s“ не може да бъде отворен"
@@ -710,15 +721,15 @@ msgstr[0] ""
 msgstr[1] ""
 "Добавени са %d реда след корекцията на грешките в знаците за интервали."
 
-#: apply.c:4894 builtin/add.c:539 builtin/mv.c:298 builtin/rm.c:390
+#: apply.c:4894 builtin/add.c:538 builtin/mv.c:300 builtin/rm.c:389
 msgid "Unable to write new index file"
 msgstr "Новият индекс не може да бъде записан"
 
 #: apply.c:4921 apply.c:4924 builtin/am.c:2254 builtin/am.c:2257
-#: builtin/clone.c:118 builtin/fetch.c:127 builtin/pull.c:193
-#: builtin/submodule--helper.c:403 builtin/submodule--helper.c:1197
-#: builtin/submodule--helper.c:1200 builtin/submodule--helper.c:1567
-#: builtin/submodule--helper.c:1570 builtin/submodule--helper.c:1787
+#: builtin/clone.c:120 builtin/fetch.c:126 builtin/pull.c:198
+#: builtin/submodule--helper.c:405 builtin/submodule--helper.c:1210
+#: builtin/submodule--helper.c:1213 builtin/submodule--helper.c:1584
+#: builtin/submodule--helper.c:1587 builtin/submodule--helper.c:1807
 #: git-add--interactive.perl:197
 msgid "path"
 msgstr "път"
@@ -796,7 +807,7 @@ msgstr "да се осигури контекст от поне такъв БР
 
 #: apply.c:4960 builtin/am.c:2242 builtin/interpret-trailers.c:95
 #: builtin/interpret-trailers.c:97 builtin/interpret-trailers.c:99
-#: builtin/pack-objects.c:3035
+#: builtin/pack-objects.c:3177
 msgid "action"
 msgstr "действие"
 
@@ -825,9 +836,9 @@ msgstr "оставяне на отхвърлените парчета във ф
 msgid "allow overlapping hunks"
 msgstr "позволяване на застъпващи се парчета"
 
-#: apply.c:4977 builtin/add.c:292 builtin/check-ignore.c:21
-#: builtin/commit.c:1276 builtin/count-objects.c:96 builtin/fsck.c:665
-#: builtin/log.c:1901 builtin/mv.c:123 builtin/read-tree.c:125
+#: apply.c:4977 builtin/add.c:290 builtin/check-ignore.c:21
+#: builtin/commit.c:1301 builtin/count-objects.c:98 builtin/fsck.c:666
+#: builtin/log.c:1901 builtin/mv.c:122 builtin/read-tree.c:124
 msgid "be verbose"
 msgstr "повече подробности"
 
@@ -866,98 +877,98 @@ msgstr ""
 msgid "git archive --remote <repo> [--exec <cmd>] --list"
 msgstr "git archive --remote ХРАНИЛИЩЕ [--exec КОМАНДА] --list"
 
-#: archive.c:351 builtin/add.c:176 builtin/add.c:515 builtin/rm.c:299
+#: archive.c:351 builtin/add.c:176 builtin/add.c:514 builtin/rm.c:298
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "пътят „%s“ не съвпада с никой файл"
 
-#: archive.c:436
+#: archive.c:434
 msgid "fmt"
 msgstr "ФОРМАТ"
 
-#: archive.c:436
+#: archive.c:434
 msgid "archive format"
 msgstr "ФОРМАТ на архива"
 
-#: archive.c:437 builtin/log.c:1462
+#: archive.c:435 builtin/log.c:1462
 msgid "prefix"
 msgstr "ПРЕФИКС"
 
-#: archive.c:438
+#: archive.c:436
 msgid "prepend prefix to each pathname in the archive"
 msgstr "добавяне на този ПРЕФИКС към всеки път в архива"
 
-#: archive.c:439 builtin/blame.c:702 builtin/blame.c:703 builtin/config.c:62
-#: builtin/fast-export.c:1005 builtin/fast-export.c:1007 builtin/grep.c:869
+#: archive.c:437 builtin/blame.c:813 builtin/blame.c:814 builtin/config.c:127
+#: builtin/fast-export.c:1007 builtin/fast-export.c:1009 builtin/grep.c:869
 #: builtin/hash-object.c:103 builtin/ls-files.c:551 builtin/ls-files.c:554
-#: builtin/notes.c:405 builtin/notes.c:568 builtin/read-tree.c:120
+#: builtin/notes.c:405 builtin/notes.c:568 builtin/read-tree.c:119
 #: parse-options.h:165
 msgid "file"
 msgstr "ФАЙЛ"
 
-#: archive.c:440 builtin/archive.c:89
+#: archive.c:438 builtin/archive.c:89
 msgid "write the archive to this file"
 msgstr "запазване на архива в този ФАЙЛ"
 
-#: archive.c:442
+#: archive.c:440
 msgid "read .gitattributes in working directory"
 msgstr "изчитане на „.gitattributes“ в работната директория"
 
-#: archive.c:443
+#: archive.c:441
 msgid "report archived files on stderr"
 msgstr "извеждане на архивираните файлове на стандартната грешка"
 
-#: archive.c:444
+#: archive.c:442
 msgid "store only"
 msgstr "само съхранение без компресиране"
 
-#: archive.c:445
+#: archive.c:443
 msgid "compress faster"
 msgstr "бързо компресиране"
 
-#: archive.c:453
+#: archive.c:451
 msgid "compress better"
 msgstr "добро компресиране"
 
-#: archive.c:456
+#: archive.c:454
 msgid "list supported archive formats"
 msgstr "извеждане на списъка с поддържаните формати"
 
-#: archive.c:458 builtin/archive.c:90 builtin/clone.c:108 builtin/clone.c:111
-#: builtin/submodule--helper.c:1209 builtin/submodule--helper.c:1576
+#: archive.c:456 builtin/archive.c:90 builtin/clone.c:110 builtin/clone.c:113
+#: builtin/submodule--helper.c:1222 builtin/submodule--helper.c:1593
 msgid "repo"
 msgstr "хранилище"
 
-#: archive.c:459 builtin/archive.c:91
+#: archive.c:457 builtin/archive.c:91
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "изтегляне на архива от отдалеченото ХРАНИЛИЩЕ"
 
-#: archive.c:460 builtin/archive.c:92 builtin/notes.c:489
+#: archive.c:458 builtin/archive.c:92 builtin/notes.c:489
 msgid "command"
 msgstr "команда"
 
-#: archive.c:461 builtin/archive.c:93
+#: archive.c:459 builtin/archive.c:93
 msgid "path to the remote git-upload-archive command"
 msgstr "път към отдалечената команда „git-upload-archive“"
 
-#: archive.c:468
+#: archive.c:466
 msgid "Unexpected option --remote"
 msgstr "Неочаквана опция „--remote“"
 
-#: archive.c:470
+#: archive.c:468
 msgid "Option --exec can only be used together with --remote"
 msgstr "Опцията „--exec“ изисква „--remote“"
 
-#: archive.c:472
+#: archive.c:470
 msgid "Unexpected option --output"
 msgstr "Неочаквана опция „--output“"
 
-#: archive.c:494
+#: archive.c:492
 #, c-format
 msgid "Unknown archive format '%s'"
 msgstr "Непознат формат на архив: „%s“"
 
-#: archive.c:501
+#: archive.c:499
 #, c-format
 msgid "Argument not supported for format '%s': -%d"
 msgstr "Аргументът не се поддържа за форма̀та „%s“: -%d"
@@ -975,22 +986,22 @@ msgstr ""
 "Отрицателните шаблони се игнорират в атрибутите на git.\n"
 "Ако ви трябва начална удивителна, ползвайте „\\!“."
 
-#: bisect.c:460
+#: bisect.c:461
 #, c-format
 msgid "Badly quoted content in file '%s': %s"
 msgstr "Неправилно цитирано съдържание във файла „%s“: %s"
 
-#: bisect.c:668
+#: bisect.c:669
 #, c-format
 msgid "We cannot bisect more!\n"
 msgstr "Повече не може да се търси двоично!\n"
 
-#: bisect.c:722
+#: bisect.c:723
 #, c-format
 msgid "Not a valid commit name %s"
 msgstr "Неправилно име на подаване „%s“"
 
-#: bisect.c:746
+#: bisect.c:747
 #, c-format
 msgid ""
 "The merge base %s is bad.\n"
@@ -999,7 +1010,7 @@ msgstr ""
 "Неправилна база за сливане: %s.\n"
 "Следователно грешката е коригирана между „%s“ и [%s].\n"
 
-#: bisect.c:751
+#: bisect.c:752
 #, c-format
 msgid ""
 "The merge base %s is new.\n"
@@ -1008,7 +1019,7 @@ msgstr ""
 "Нова база за сливане: %s.\n"
 "Свойството е променено между „%s“ и [%s].\n"
 
-#: bisect.c:756
+#: bisect.c:757
 #, c-format
 msgid ""
 "The merge base %s is %s.\n"
@@ -1017,7 +1028,7 @@ msgstr ""
 "Базата за сливане „%s“ е %s.\n"
 "Следователно първото %s подаване е между „%s“ и [%s].\n"
 
-#: bisect.c:764
+#: bisect.c:765
 #, c-format
 msgid ""
 "Some %s revs are not ancestors of the %s rev.\n"
@@ -1028,7 +1039,7 @@ msgstr ""
 "Двоичното търсене с git bisect няма да работи правилно.\n"
 "Дали не сте объркали указателите „%s“ и „%s“?\n"
 
-#: bisect.c:777
+#: bisect.c:778
 #, c-format
 msgid ""
 "the merge base between %s and [%s] must be skipped.\n"
@@ -1039,36 +1050,36 @@ msgstr ""
 "Не може да сме сигурни, че първото %s подаване е между „%s“ и „%s“.\n"
 "Двоичното търсене продължава."
 
-#: bisect.c:810
+#: bisect.c:811
 #, c-format
 msgid "Bisecting: a merge base must be tested\n"
 msgstr "Двоично търсене: трябва да се провери база за сливане\n"
 
-#: bisect.c:850
+#: bisect.c:851
 #, c-format
 msgid "a %s revision is needed"
 msgstr "необходима е версия „%s“"
 
-#: bisect.c:869 builtin/notes.c:175 builtin/tag.c:235
+#: bisect.c:870 builtin/notes.c:175 builtin/tag.c:236
 #, c-format
 msgid "could not create file '%s'"
 msgstr "файлът „%s“ не може да бъде създаден"
 
-#: bisect.c:920
+#: bisect.c:921
 #, c-format
 msgid "could not read file '%s'"
 msgstr "файлът „%s“ не може да бъде прочетен"
 
-#: bisect.c:950
+#: bisect.c:951
 msgid "reading bisect refs failed"
 msgstr "неуспешно прочитане на указателите за двоично търсене"
 
-#: bisect.c:969
+#: bisect.c:970
 #, c-format
 msgid "%s was both %s and %s\n"
 msgstr "„%s“ e както „%s“, така и „%s“\n"
 
-#: bisect.c:977
+#: bisect.c:978
 #, c-format
 msgid ""
 "No testable commit found.\n"
@@ -1077,7 +1088,7 @@ msgstr ""
 "Липсва подходящо за тестване подаване.\n"
 "Проверете параметрите за пътищата.\n"
 
-#: bisect.c:996
+#: bisect.c:997
 #, c-format
 msgid "(roughly %d step)"
 msgid_plural "(roughly %d steps)"
@@ -1087,52 +1098,52 @@ msgstr[1] "(приблизително %d стъпки)"
 #. TRANSLATORS: the last %s will be replaced with "(roughly %d
 #. steps)" translation.
 #.
-#: bisect.c:1002
+#: bisect.c:1003
 #, c-format
 msgid "Bisecting: %d revision left to test after this %s\n"
 msgid_plural "Bisecting: %d revisions left to test after this %s\n"
 msgstr[0] "Двоично търсене: остава %d версия след тази %s\n"
 msgstr[1] "Двоично търсене: остават %d версии след тази %s\n"
 
-#: blame.c:1758
+#: blame.c:1756
 msgid "--contents and --reverse do not blend well."
 msgstr "Опциите „--contents“ и „--reverse“ са несъвместими"
 
-#: blame.c:1769
+#: blame.c:1767
 msgid "cannot use --contents with final commit object name"
 msgstr "Опцията „--contents“ е несъвместима с име на обект от крайно подаване"
 
-#: blame.c:1789
+#: blame.c:1787
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr ""
 "Едновременното задаване на опциите „--reverse“ и „--first-parent“ изисква "
 "указването на крайно подаване"
 
-#: blame.c:1798 bundle.c:160 ref-filter.c:1978 sequencer.c:1699
-#: sequencer.c:2901 builtin/commit.c:976 builtin/log.c:366 builtin/log.c:920
-#: builtin/log.c:1371 builtin/log.c:1702 builtin/log.c:1950 builtin/merge.c:370
-#: builtin/shortlog.c:191
+#: blame.c:1796 bundle.c:160 ref-filter.c:2075 sequencer.c:1861
+#: sequencer.c:3632 builtin/commit.c:981 builtin/log.c:366 builtin/log.c:920
+#: builtin/log.c:1371 builtin/log.c:1702 builtin/log.c:1950 builtin/merge.c:372
+#: builtin/shortlog.c:192
 msgid "revision walk setup failed"
 msgstr "неуспешно настройване на обхождането на версиите"
 
-#: blame.c:1816
+#: blame.c:1814
 msgid ""
 "--reverse --first-parent together require range along first-parent chain"
 msgstr ""
 "Едновременното задаване на опциите „--reverse“ и „--first-parent“ изисква "
 "указването на диапазон по веригата на първите наследници"
 
-#: blame.c:1827
+#: blame.c:1825
 #, c-format
 msgid "no such path %s in %s"
 msgstr "няма път на име „%s“ в „%s“"
 
-#: blame.c:1838
+#: blame.c:1836
 #, c-format
 msgid "cannot read blob %s for path %s"
-msgstr "обектът BLOB „%s“ в пътя %s не може да бъде прочетен"
+msgstr "обектът-BLOB „%s“ в пътя %s не може да бъде прочетен"
 
-#: branch.c:53
+#: branch.c:54
 #, c-format
 msgid ""
 "\n"
@@ -1145,88 +1156,88 @@ msgstr ""
 "информацията за следения клон чрез:\n"
 "git branch --set-upstream-to=%s%s%s"
 
-#: branch.c:67
+#: branch.c:68
 #, c-format
 msgid "Not setting branch %s as its own upstream."
 msgstr ""
 "Клонът „%s“ не може да служи като източник за собствената си синхронизация."
 
-#: branch.c:93
+#: branch.c:94
 #, c-format
 msgid "Branch '%s' set up to track remote branch '%s' from '%s' by rebasing."
 msgstr ""
 "Клонът „%s“ ще следи отдалечения клон „%s“ от хранилището „%s“ чрез "
 "пребазиране."
 
-#: branch.c:94
+#: branch.c:95
 #, c-format
 msgid "Branch '%s' set up to track remote branch '%s' from '%s'."
 msgstr "Клонът „%s“ ще следи отдалечения клон „%s“ от хранилището „%s“."
 
-#: branch.c:98
+#: branch.c:99
 #, c-format
 msgid "Branch '%s' set up to track local branch '%s' by rebasing."
 msgstr "Клонът „%s“ ще следи локалния клон „%s“ чрез пребазиране."
 
-#: branch.c:99
+#: branch.c:100
 #, c-format
 msgid "Branch '%s' set up to track local branch '%s'."
 msgstr "Клонът „%s“ ще следи локалния клон „%s“."
 
-#: branch.c:104
+#: branch.c:105
 #, c-format
 msgid "Branch '%s' set up to track remote ref '%s' by rebasing."
 msgstr "Клонът „%s“ ще следи отдалечения указател „%s“ чрез пребазиране."
 
-#: branch.c:105
+#: branch.c:106
 #, c-format
 msgid "Branch '%s' set up to track remote ref '%s'."
 msgstr "Клонът „%s“ ще следи отдалечения указател „%s“."
 
-#: branch.c:109
+#: branch.c:110
 #, c-format
 msgid "Branch '%s' set up to track local ref '%s' by rebasing."
 msgstr "Клонът „%s“ ще следи локалния указател „%s“ чрез пребазиране."
 
-#: branch.c:110
+#: branch.c:111
 #, c-format
 msgid "Branch '%s' set up to track local ref '%s'."
 msgstr "Клонът „%s“ ще следи локалния указател „%s“."
 
-#: branch.c:119
+#: branch.c:120
 msgid "Unable to write upstream branch configuration"
 msgstr "Настройките за следения клон не могат да бъдат записани"
 
-#: branch.c:156
+#: branch.c:157
 #, c-format
 msgid "Not tracking: ambiguous information for ref %s"
 msgstr "Няма следене: информацията за указателя „%s“ не е еднозначна"
 
-#: branch.c:189
+#: branch.c:190
 #, c-format
 msgid "'%s' is not a valid branch name."
 msgstr "„%s“ не е позволено име за клон."
 
-#: branch.c:208
+#: branch.c:209
 #, c-format
 msgid "A branch named '%s' already exists."
 msgstr "Вече съществува клон с име „%s“."
 
-#: branch.c:213
+#: branch.c:214
 msgid "Cannot force update the current branch."
 msgstr "Текущият клон не може да бъде принудително обновен."
 
-#: branch.c:233
+#: branch.c:234
 #, c-format
 msgid "Cannot setup tracking information; starting point '%s' is not a branch."
 msgstr "Зададените настройки за следенето са грешни — началото „%s“ не е клон."
 
-#: branch.c:235
+#: branch.c:236
 #, c-format
 msgid "the requested upstream branch '%s' does not exist"
 msgstr "заявеният отдалечен клон „%s“ не съществува"
 
-#: branch.c:237
+#: branch.c:238
 msgid ""
 "\n"
 "If you are planning on basing your work on an upstream\n"
@@ -1245,27 +1256,27 @@ msgstr ""
 "може да използвате „git push -u“, за да настроите към кой клон да се "
 "изтласква."
 
-#: branch.c:280
+#: branch.c:281
 #, c-format
 msgid "Not a valid object name: '%s'."
 msgstr "Неправилно име на обект: „%s“"
 
-#: branch.c:300
+#: branch.c:301
 #, c-format
 msgid "Ambiguous object name: '%s'."
 msgstr "Името на обект не е еднозначно: „%s“"
 
-#: branch.c:305
+#: branch.c:306
 #, c-format
 msgid "Not a valid branch point: '%s'."
 msgstr "Неправилно място за начало на клон: „%s“"
 
-#: branch.c:359
+#: branch.c:360
 #, c-format
 msgid "'%s' is already checked out at '%s'"
 msgstr "„%s“ вече е изтеглен в „%s“"
 
-#: branch.c:382
+#: branch.c:383
 #, c-format
 msgid "HEAD of working tree %s is not updated"
 msgstr "Указателят „HEAD“ на работното дърво „%s“ не е обновен"
@@ -1280,7 +1291,7 @@ msgstr "Файлът „%s“ не изглежда да е пратка на gi
 msgid "unrecognized header: %s%s (%d)"
 msgstr "непозната заглавна част: %s%s (%d)"
 
-#: bundle.c:88 sequencer.c:1879 sequencer.c:2337 builtin/commit.c:750
+#: bundle.c:88 sequencer.c:2081 sequencer.c:2558 builtin/commit.c:755
 #, c-format
 msgid "could not open '%s'"
 msgstr "„%s“ не може да се отвори"
@@ -1325,7 +1336,7 @@ msgid "ref '%s' is excluded by the rev-list options"
 msgstr ""
 "указателят „%s“ не е бил включен поради опциите зададени на „git rev-list“"
 
-#: bundle.c:450 builtin/log.c:183 builtin/log.c:1607 builtin/shortlog.c:296
+#: bundle.c:450 builtin/log.c:183 builtin/log.c:1607 builtin/shortlog.c:303
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "непознат аргумент: %s"
@@ -1348,18 +1359,42 @@ msgstr "Командата „git index-pack“ не завърши успешн
 msgid "invalid color value: %.*s"
 msgstr "неправилна стойност за цвят: %.*s"
 
-#: commit.c:41 sequencer.c:2141 builtin/am.c:421 builtin/am.c:465
-#: builtin/am.c:1436 builtin/am.c:2072
+#: commit.c:43 sequencer.c:2364 builtin/am.c:421 builtin/am.c:465
+#: builtin/am.c:1436 builtin/am.c:2072 builtin/replace.c:376
+#: builtin/replace.c:448
 #, c-format
 msgid "could not parse %s"
 msgstr "„%s“ не може да се анализира"
 
-#: commit.c:43
+#: commit.c:45
 #, c-format
 msgid "%s %s is not a commit!"
 msgstr "%s %s не е подаване!"
 
-#: commit.c:1506
+#: commit.c:182
+msgid ""
+"Support for <GIT_DIR>/info/grafts is deprecated\n"
+"and will be removed in a future Git version.\n"
+"\n"
+"Please use \"git replace --convert-graft-file\"\n"
+"to convert the grafts into replace refs.\n"
+"\n"
+"Turn this message off by running\n"
+"\"git config advice.graftFileDeprecated false\""
+msgstr ""
+"Поддръжката на „<GIT_DIR>/info/grafts“ е остаряла.\n"
+"В бъдеща версия на Git ще бъде премахната.\n"
+"\n"
+"Може да преобразувате присадките в заместващи\n"
+"указатели с командата:\n"
+"\n"
+"    git replace --convert-graft-file\n"
+"\n"
+"За да изключите това съобщение, ползвайте командата:\n"
+"\n"
+"    git config advice.graftFileDeprecated false"
+
+#: commit.c:1540
 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"
@@ -1369,174 +1404,188 @@ msgstr ""
 "Може да поправите подаването заедно със съобщението или може да\n"
 "зададете ползваното кодиране в настройката „i18n.commitencoding“.\n"
 
+#: commit-graph.c:669
+#, c-format
+msgid "the commit graph format cannot write %d commits"
+msgstr "форматът на гра̀фа с подаванията не може да запише %d подавания"
+
+#: commit-graph.c:696
+msgid "too many commits to write graph"
+msgstr "прекалено много подавания за записване на гра̀фа"
+
+#: commit-graph.c:707 builtin/init-db.c:516 builtin/init-db.c:521
+#, c-format
+msgid "cannot mkdir %s"
+msgstr "директорията „%s“ не може да бъде създадена"
+
 #: compat/obstack.c:405 compat/obstack.c:407
 msgid "memory exhausted"
 msgstr "паметта свърши"
 
-#: config.c:186
+#: config.c:187
 msgid "relative config include conditionals must come from files"
 msgstr "относителните условни изрази за вмъкване трябва да идват от файлове"
 
-#: config.c:720
+#: config.c:788
 #, c-format
 msgid "bad config line %d in blob %s"
 msgstr "неправилен ред за настройки %d в BLOB „%s“"
 
-#: config.c:724
+#: config.c:792
 #, c-format
 msgid "bad config line %d in file %s"
 msgstr "неправилен ред за настройки %d във файла „%s“"
 
-#: config.c:728
+#: config.c:796
 #, c-format
 msgid "bad config line %d in standard input"
 msgstr "неправилен ред за настройки %d на стандартния вход"
 
-#: config.c:732
+#: config.c:800
 #, c-format
 msgid "bad config line %d in submodule-blob %s"
 msgstr "неправилен ред за настройки %d в BLOB за подмодул „%s“"
 
-#: config.c:736
+#: config.c:804
 #, c-format
 msgid "bad config line %d in command line %s"
 msgstr "неправилен ред за настройки %d на командния ред „%s“"
 
-#: config.c:740
+#: config.c:808
 #, c-format
 msgid "bad config line %d in %s"
 msgstr "неправилен ред за настройки %d в „%s“"
 
-#: config.c:868
+#: config.c:936
 msgid "out of range"
 msgstr "извън диапазона"
 
-#: config.c:868
+#: config.c:936
 msgid "invalid unit"
 msgstr "неправилна мерна единица"
 
-#: config.c:874
+#: config.c:942
 #, c-format
 msgid "bad numeric config value '%s' for '%s': %s"
 msgstr "неправилна числова стойност „%s“ за „%s“: %s"
 
-#: config.c:879
+#: config.c:947
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
 msgstr "неправилна числова стойност „%s“ за „%s“ в BLOB „%s“: %s"
 
-#: config.c:882
+#: config.c:950
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in file %s: %s"
 msgstr "неправилна числова стойност „%s“ за „%s“ във файла „%s“: %s"
 
-#: config.c:885
+#: config.c:953
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
 msgstr "неправилна числова стойност „%s“ за „%s“ на стандартния вход: %s"
 
-#: config.c:888
+#: config.c:956
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
 msgstr "неправилна числова стойност „%s“ за „%s“ в BLOB от подмодул „%s“: %s"
 
-#: config.c:891
+#: config.c:959
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
 msgstr "неправилна числова стойност „%s“ за „%s“ на командния ред „%s“: %s"
 
-#: config.c:894
+#: config.c:962
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in %s: %s"
 msgstr "неправилна числова стойност „%s“ за „%s“ в %s: %s"
 
-#: config.c:989
+#: config.c:1057
 #, c-format
 msgid "failed to expand user dir in: '%s'"
 msgstr "домашната папка на потребителя не може да бъде открита: „%s“"
 
-#: config.c:998
+#: config.c:1066
 #, c-format
 msgid "'%s' for '%s' is not a valid timestamp"
 msgstr "„%s“ не е правилна стойност за време за „%s“"
 
-#: config.c:1094 config.c:1105
+#: config.c:1171 config.c:1182
 #, c-format
 msgid "bad zlib compression level %d"
 msgstr "неправилно ниво на компресиране: %d"
 
-#: config.c:1225
+#: config.c:1307
 #, c-format
 msgid "invalid mode for object creation: %s"
 msgstr "неправилен режим за създаването на обекти: %s"
 
-#: config.c:1386
+#: config.c:1473
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "неправилно ниво на компресиране при пакетиране: %d"
 
-#: config.c:1582
+#: config.c:1681
 msgid "unable to parse command-line config"
 msgstr "неправилни настройки от командния ред"
 
-#: config.c:1914
+#: config.c:2013
 msgid "unknown error occurred while reading the configuration files"
 msgstr "неочаквана грешка при изчитането на конфигурационните файлове"
 
-#: config.c:2101
+#: config.c:2200
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "Неправилен %s: „%s“"
 
-#: config.c:2144
+#: config.c:2243
 #, c-format
 msgid "unknown core.untrackedCache value '%s'; using 'keep' default value"
 msgstr ""
 "непозната стойност „%s“ за настройката „core.untrackedCache“.  Ще се ползва "
 "стандартната стойност „keep“ (запазване)"
 
-#: config.c:2170
+#: config.c:2269
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr ""
 "стойността на „splitIndex.maxPercentChange“ трябва да е между 1 и 100, а не "
 "%d"
 
-#: config.c:2195
+#: config.c:2294
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "неразпозната стойност „%s“ от командния ред"
 
-#: config.c:2197
+#: config.c:2296
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "неправилна настройка „%s“ във файла „%s“ на ред №%d"
 
-#: config.c:2256
+#: config.c:2402
 #, c-format
 msgid "%s has multiple values"
 msgstr "зададени са няколко стойности за „%s“"
 
-#: config.c:2599 config.c:2816
+#: config.c:2766 config.c:3019
 #, c-format
 msgid "fstat on %s failed"
 msgstr "неуспешно изпълнение на „fstat“ върху „%s“"
 
-#: config.c:2706
+#: config.c:2905
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "„%s“ не може да се зададе да е „%s“"
 
-#: config.c:2708 builtin/remote.c:776
+#: config.c:2907 builtin/remote.c:779
 #, c-format
 msgid "could not unset '%s'"
 msgstr "„%s“ не може да се премахне"
 
-#: connect.c:52
+#: connect.c:61
 msgid "The remote end hung up upon initial contact"
 msgstr "Отдалеченото хранилище прекъсна връзката веднага след отварянето ѝ"
 
-#: connect.c:54
+#: connect.c:63
 msgid ""
 "Could not read from remote repository.\n"
 "\n"
@@ -1548,7 +1597,7 @@ msgstr ""
 "Проверете дали то съществува и дали имате права\n"
 "за достъп."
 
-#: connected.c:66 builtin/fsck.c:198 builtin/prune.c:144
+#: connected.c:66 builtin/fsck.c:201 builtin/prune.c:145
 msgid "Checking connectivity"
 msgstr "Проверка на връзката"
 
@@ -1564,12 +1613,12 @@ msgstr "неуспешен запис на списъка с версиите"
 msgid "failed to close rev-list's stdin"
 msgstr "стандартният вход на списъка с версиите не може да бъде затворен"
 
-#: convert.c:205
+#: convert.c:206
 #, c-format
 msgid "CRLF would be replaced by LF in %s."
 msgstr "Всяка последователност от знаци „CRLF“ ще бъдe заменена с „LF“ в „%s“."
 
-#: convert.c:207
+#: convert.c:208
 #, c-format
 msgid ""
 "CRLF will be replaced by LF in %s.\n"
@@ -1579,13 +1628,13 @@ msgstr ""
 "Файлът ще остане с първоначалните знаци за край на ред в работната ви "
 "директория."
 
-#: convert.c:215
+#: convert.c:216
 #, c-format
 msgid "LF would be replaced by CRLF in %s"
 msgstr ""
 "Всеки знак „LF“ ще бъдe заменен с последователността от знаци „CRLF“ в „%s“."
 
-#: convert.c:217
+#: convert.c:218
 #, c-format
 msgid ""
 "LF will be replaced by CRLF in %s.\n"
@@ -1596,6 +1645,53 @@ msgstr ""
 "Файлът ще остане с първоначалните знаци за край на ред в работната ви "
 "директория."
 
+#: convert.c:279
+#, c-format
+msgid "BOM is prohibited in '%s' if encoded as %s"
+msgstr ""
+"„%s“ не трябва да съдържа маркер за поредността на байтовете (BOM) при "
+"кодиране „%s“"
+
+#: convert.c:286
+#, c-format
+msgid ""
+"The file '%s' contains a byte order mark (BOM). Please use UTF-%s as working-"
+"tree-encoding."
+msgstr ""
+"Файлът „%s“ съдържа маркер за поредността на байтовете (BOM).  Използвайте "
+"„UTF-%s“ като кодиране за работното дърво."
+
+#: convert.c:304
+#, c-format
+msgid "BOM is required in '%s' if encoded as %s"
+msgstr ""
+"„%s“ трябва да съдържа маркер за поредността на байтовете (BOM) при кодиране "
+"„%s“"
+
+#: convert.c:306
+#, c-format
+msgid ""
+"The file '%s' is missing a byte order mark (BOM). Please use UTF-%sBE or UTF-"
+"%sLE (depending on the byte order) as working-tree-encoding."
+msgstr ""
+"Във файла „%s“ липсва маркер за поредността на байтовете (BOM).  За кодиране "
+"на работното дърво използвайте UTF-%sBE или UTF-%sLE (в зависимост от "
+"поредността на байтовете)."
+
+#: convert.c:424
+#, c-format
+msgid "failed to encode '%s' from %s to %s"
+msgstr "неуспешно прекодиране на „%s“ от „%s“ към „%s“"
+
+#: convert.c:467
+#, c-format
+msgid "encoding '%s' from %s to %s and back is not the same"
+msgstr "Прекодирането на „%s“ от „%s“ към „%s“ и обратно променя файла"
+
+#: convert.c:1225
+msgid "true/false are no valid working-tree-encodings"
+msgstr "„true“/„false“ не може да са кодирания на работното дърво"
+
 #: date.c:116
 msgid "in the future"
 msgstr "в бъдещето"
@@ -1713,27 +1809,27 @@ msgstr ""
 "Грешки в настройката „diff.dirstat“:\n"
 "%s"
 
-#: diff.c:3822
+#: diff.c:3823
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr ""
 "външната програма за разлики завърши неуспешно.  Спиране на работата при „%s“"
 
-#: diff.c:4146
+#: diff.c:4153
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr ""
 "Опциите „--name-only“, „--name-status“, „--check“ и „-s“ са несъвместими "
 "една с друга"
 
-#: diff.c:4149
+#: diff.c:4156
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "Опциите „-G“, „-S“ и „--find-object“ са несъвместими една с друга"
 
-#: diff.c:4237
+#: diff.c:4244
 msgid "--follow requires exactly one pathspec"
 msgstr "Опцията „--follow“ изисква точно един път"
 
-#: diff.c:4403
+#: diff.c:4410
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -1742,48 +1838,48 @@ msgstr ""
 "Неразпознат параметър към опцията „--dirstat/-X“:\n"
 "%s"
 
-#: diff.c:4417
+#: diff.c:4424
 #, c-format
 msgid "Failed to parse --submodule option parameter: '%s'"
 msgstr "Неразпознат параметър към опцията „--submodule“: „%s“"
 
-#: diff.c:5493
+#: diff.c:5500
 msgid "inexact rename detection was skipped due to too many files."
 msgstr ""
 "търсенето на преименувания на обекти съчетани с промени се прескача поради "
 "многото файлове."
 
-#: diff.c:5496
+#: diff.c:5503
 msgid "only found copies from modified paths due to too many files."
 msgstr ""
 "установени са точните копия на променените пътища поради многото файлове."
 
-#: diff.c:5499
+#: diff.c:5506
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
 msgstr "задайте променливата „%s“ да е поне %d и отново изпълнете командата."
 
-#: dir.c:1866
+#: dir.c:1867
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "директорията „%s“ не може да бъде отворена"
 
-#: dir.c:2108
+#: dir.c:2109
 msgid "failed to get kernel name and information"
 msgstr "името и версията на ядрото не бяха получени"
 
-#: dir.c:2232
+#: dir.c:2233
 msgid "Untracked cache is disabled on this system or location."
 msgstr ""
 "Кеша за неследените файлове е изключен на тази система или местоположение."
 
-#: dir.c:3024 dir.c:3029
+#: dir.c:3075 dir.c:3080
 #, c-format
 msgid "could not create directories for %s"
 msgstr "директориите за „%s“ не може да бъдат създадени"
 
-#: dir.c:3054
+#: dir.c:3109
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "директорията на git не може да се мигрира от „%s“ до „%s“"
@@ -1806,202 +1902,206 @@ msgstr "неуспешно изпълнение на „stat“ върху фа
 msgid "Remote with no URL"
 msgstr "Липсва адрес за отдалеченото хранилище"
 
-#: fetch-pack.c:253
+#: fetch-pack.c:254
 msgid "git fetch-pack: expected shallow list"
 msgstr "git fetch-pack: очаква се плитък списък"
 
-#: fetch-pack.c:265
+#: fetch-pack.c:266
 msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
 msgstr ""
 "git fetch-pack: очакваше се „ACK“/„NAK“, а бе получен изчистващ пакет „flush“"
 
-#: fetch-pack.c:284 builtin/archive.c:63
+#: fetch-pack.c:285 builtin/archive.c:63
 #, c-format
 msgid "remote error: %s"
 msgstr "отдалечена грешка: %s"
 
-#: fetch-pack.c:285
+#: fetch-pack.c:286
 #, c-format
 msgid "git fetch-pack: expected ACK/NAK, got '%s'"
 msgstr "git fetch-pack: очакваше се „ACK“/„NAK“, а бе получен „%s“"
 
-#: fetch-pack.c:337
+#: fetch-pack.c:338
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "опцията „--stateless-rpc“ изисква  „multi_ack_detailed“"
 
-#: fetch-pack.c:428
+#: fetch-pack.c:429 fetch-pack.c:1310
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "неправилен плитък ред: „%s“"
 
-#: fetch-pack.c:434
+#: fetch-pack.c:435 fetch-pack.c:1316
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "неправилен неплитък ред: „%s“"
 
-#: fetch-pack.c:436
+#: fetch-pack.c:437 fetch-pack.c:1318
 #, c-format
 msgid "object not found: %s"
 msgstr "обектът „%s“ липсва"
 
-#: fetch-pack.c:439
+#: fetch-pack.c:440 fetch-pack.c:1321
 #, c-format
 msgid "error in object: %s"
 msgstr "грешка в обекта: „%s“"
 
-#: fetch-pack.c:441
+#: fetch-pack.c:442 fetch-pack.c:1323
 #, c-format
 msgid "no shallow found: %s"
 msgstr "не е открит плитък обект: %s"
 
-#: fetch-pack.c:444
+#: fetch-pack.c:445 fetch-pack.c:1326
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "очаква се плитък или не обект, а бе получено: %s"
 
-#: fetch-pack.c:485
+#: fetch-pack.c:486
 #, c-format
 msgid "got %s %d %s"
 msgstr "получено бе %s %d %s"
 
-#: fetch-pack.c:499
+#: fetch-pack.c:500
 #, c-format
 msgid "invalid commit %s"
 msgstr "неправилно подаване: „%s“"
 
-#: fetch-pack.c:532
+#: fetch-pack.c:533
 msgid "giving up"
 msgstr "преустановяване"
 
-#: fetch-pack.c:542 progress.c:229
+#: fetch-pack.c:543 progress.c:229
 msgid "done"
 msgstr "действието завърши"
 
-#: fetch-pack.c:554
+#: fetch-pack.c:555
 #, c-format
 msgid "got %s (%d) %s"
 msgstr "получено бе %s (%d) %s"
 
-#: fetch-pack.c:600
+#: fetch-pack.c:601
 #, c-format
 msgid "Marking %s as complete"
 msgstr "Отбелязване на „%s“ като пълно"
 
-#: fetch-pack.c:788
+#: fetch-pack.c:828
 #, c-format
 msgid "already have %s (%s)"
 msgstr "вече има „%s“ (%s)"
 
-#: fetch-pack.c:829
+#: fetch-pack.c:869
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack: не може да се създаде процес за демултиплексора"
 
-#: fetch-pack.c:837
+#: fetch-pack.c:877
 msgid "protocol error: bad pack header"
 msgstr "протоколна грешка: неправилна заглавна част на пакет"
 
-#: fetch-pack.c:895
+#: fetch-pack.c:944
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack: не може да се създаде процес за „%s“"
 
-#: fetch-pack.c:911
+#: fetch-pack.c:960
 #, c-format
 msgid "%s failed"
 msgstr "неуспешно изпълнение на „%s“"
 
-#: fetch-pack.c:913
+#: fetch-pack.c:962
 msgid "error in sideband demultiplexer"
 msgstr "грешка в демултиплексора"
 
-#: fetch-pack.c:940
+#: fetch-pack.c:989
 msgid "Server does not support shallow clients"
 msgstr "Сървърът не поддържа плитки клиенти"
 
-#: fetch-pack.c:944
+#: fetch-pack.c:993
 msgid "Server supports multi_ack_detailed"
 msgstr "Сървърът поддържа „multi_ack_detailed“"
 
-#: fetch-pack.c:947
+#: fetch-pack.c:996
 msgid "Server supports no-done"
 msgstr "Сървърът поддържа „no-done“"
 
-#: fetch-pack.c:953
+#: fetch-pack.c:1002
 msgid "Server supports multi_ack"
 msgstr "Сървърът поддържа „multi_ack“"
 
-#: fetch-pack.c:957
+#: fetch-pack.c:1006
 msgid "Server supports side-band-64k"
 msgstr "Сървърът поддържа „side-band-64k“"
 
-#: fetch-pack.c:961
+#: fetch-pack.c:1010
 msgid "Server supports side-band"
 msgstr "Сървърът поддържа „side-band“"
 
-#: fetch-pack.c:965
+#: fetch-pack.c:1014
 msgid "Server supports allow-tip-sha1-in-want"
 msgstr "Сървърът поддържа „allow-tip-sha1-in-want“"
 
-#: fetch-pack.c:969
+#: fetch-pack.c:1018
 msgid "Server supports allow-reachable-sha1-in-want"
 msgstr "Сървърът поддържа „allow-reachable-sha1-in-want“"
 
-#: fetch-pack.c:979
+#: fetch-pack.c:1028
 msgid "Server supports ofs-delta"
 msgstr "Сървърът поддържа „ofs-delta“"
 
-#: fetch-pack.c:985
+#: fetch-pack.c:1034 fetch-pack.c:1204
 msgid "Server supports filter"
 msgstr "Сървърът поддържа филтри"
 
-#: fetch-pack.c:993
+#: fetch-pack.c:1042
 #, c-format
 msgid "Server version is %.*s"
 msgstr "Версията на сървъра е: %.*s"
 
-#: fetch-pack.c:999
+#: fetch-pack.c:1048
 msgid "Server does not support --shallow-since"
 msgstr "Сървърът не поддържа опцията „--shallow-since“"
 
-#: fetch-pack.c:1003
+#: fetch-pack.c:1052
 msgid "Server does not support --shallow-exclude"
 msgstr "Сървърът не поддържа опцията „--shallow-exclude“"
 
-#: fetch-pack.c:1005
+#: fetch-pack.c:1054
 msgid "Server does not support --deepen"
 msgstr "Сървърът не поддържа опцията „--deepen“"
 
-#: fetch-pack.c:1016
+#: fetch-pack.c:1065
 msgid "no common commits"
 msgstr "няма общи подавания"
 
-#: fetch-pack.c:1028
+#: fetch-pack.c:1077 fetch-pack.c:1414
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: неуспешно доставяне."
 
-#: fetch-pack.c:1190
+#: fetch-pack.c:1199
+msgid "Server does not support shallow requests"
+msgstr "Сървърът не поддържа плитки заявки"
+
+#: fetch-pack.c:1584
 msgid "no matching remote head"
 msgstr "не може да бъде открит подходящ връх от отдалеченото хранилище"
 
-#: fetch-pack.c:1212
+#: fetch-pack.c:1610
 #, c-format
 msgid "no such remote ref %s"
 msgstr "такъв отдалечен указател няма: %s"
 
-#: fetch-pack.c:1215
+#: fetch-pack.c:1613
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "Сървърът не позволява заявка за необявен „%s“"
 
-#: gpg-interface.c:181
+#: gpg-interface.c:185
 msgid "gpg failed to sign the data"
 msgstr "Програмата „gpg“ не подписа данните."
 
-#: gpg-interface.c:211
+#: gpg-interface.c:210
 msgid "could not create temporary file"
 msgstr "не може да се създаде временен файл"
 
-#: gpg-interface.c:214
+#: gpg-interface.c:213
 #, c-format
 msgid "failed writing detached signature to '%s'"
 msgstr "Програмата не успя да запише самостоятелния подпис в „%s“"
@@ -2011,36 +2111,97 @@ msgstr "Програмата не успя да запише самостоят
 msgid "ignore invalid color '%.*s' in log.graphColors"
 msgstr "прескачане на неправилния цвят „%.*s“ в „log.graphColors“"
 
-#: grep.c:2022
+#: grep.c:2020
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "„%s“: файлът сочен от „%s“ не може да бъде прочетен"
 
-#: grep.c:2039 setup.c:163 builtin/clone.c:407 builtin/diff.c:81
+#: grep.c:2037 setup.c:164 builtin/clone.c:409 builtin/diff.c:81
 #: builtin/rm.c:134
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "не може да бъде получена информация чрез „stat“ за „%s“"
 
-#: grep.c:2050
+#: grep.c:2048
 #, c-format
 msgid "'%s': short read"
 msgstr "„%s“: изчитането върна по-малко байтове от очакваното"
 
-#: help.c:179
+#: help.c:23
+msgid "start a working area (see also: git help tutorial)"
+msgstr "създаване на работно дърво (погледнете: „git help tutorial“)"
+
+#: help.c:24
+msgid "work on the current change (see also: git help everyday)"
+msgstr "работа по текущата промяна (погледнете: „git help everyday“)"
+
+#: help.c:25
+msgid "examine the history and state (see also: git help revisions)"
+msgstr "преглед на историята и състоянието (погледнете: „git help revisions“)"
+
+#: help.c:26
+msgid "grow, mark and tweak your common history"
+msgstr "увеличаване, отбелязване и промяна на общата история"
+
+#: help.c:27
+msgid "collaborate (see also: git help workflows)"
+msgstr "съвместна работа (погледнете: „git help workflows“)"
+
+#: help.c:31
+msgid "Main Porcelain Commands"
+msgstr "Основни команди от потребителско ниво"
+
+#: help.c:32
+msgid "Ancillary Commands / Manipulators"
+msgstr "Помощни команди/Променящи"
+
+#: help.c:33
+msgid "Ancillary Commands / Interrogators"
+msgstr "Помощни команди/Запитващи"
+
+#: help.c:34
+msgid "Interacting with Others"
+msgstr "Съвместна работа с други хора"
+
+#: help.c:35
+msgid "Low-level Commands / Manipulators"
+msgstr "Команди от ниско ниво/Променящи"
+
+#: help.c:36
+msgid "Low-level Commands / Interrogators"
+msgstr "Команди от ниско ниво/Запитващи"
+
+#: help.c:37
+msgid "Low-level Commands / Synching Repositories"
+msgstr "Команди от ниско ниво/Синхронизация на хранилища"
+
+#: help.c:38
+msgid "Low-level Commands / Internal Helpers"
+msgstr "Команди от ниско ниво/Допълнителни инструменти"
+
+#: help.c:293
 #, c-format
 msgid "available git commands in '%s'"
 msgstr "налични команди на git от „%s“"
 
-#: help.c:186
+#: help.c:300
 msgid "git commands available from elsewhere on your $PATH"
 msgstr "команди на git от други директории от „$PATH“"
 
-#: help.c:217
+#: help.c:309
 msgid "These are common Git commands used in various situations:"
 msgstr "Това са най-често използваните команди на Git:"
 
-#: help.c:281
+#: help.c:358 git.c:90
+#, c-format
+msgid "unsupported command listing type '%s'"
+msgstr "неподдържан списък от команди „%s“"
+
+#: help.c:405
+msgid "The common Git guides are:"
+msgstr "Популярните въведения в Git са:"
+
+#: help.c:467
 #, c-format
 msgid ""
 "'%s' appears to be a git command, but we were not\n"
@@ -2049,36 +2210,36 @@ msgstr ""
 "Изглежда, че „%s“ е команда на git, но тя не може да\n"
 "бъде изпълнена.  Вероятно пакетът „git-%s“ е повреден."
 
-#: help.c:336
+#: help.c:526
 msgid "Uh oh. Your system reports no Git commands at all."
 msgstr "Странно, изглежда, че на системата ви няма нито една команда на git."
 
-#: help.c:358
+#: help.c:548
 #, c-format
 msgid "WARNING: You called a Git command named '%s', which does not exist."
 msgstr ""
 "ПРЕДУПРЕЖДЕНИЕ: Пробвахте да изпълните команда на Git на име „%s“, а такава "
 "не съществува."
 
-#: help.c:363
+#: help.c:553
 #, c-format
 msgid "Continuing under the assumption that you meant '%s'."
 msgstr ""
 "Изпълнението автоматично продължава, като се счита, че имате предвид „%s“."
 
-#: help.c:368
+#: help.c:558
 #, c-format
 msgid "Continuing in %0.1f seconds, assuming that you meant '%s'."
 msgstr ""
 "Изпълнението автоматично ще продължи след %0.1f сек., като се счита, че "
 "имате предвид „%s“."
 
-#: help.c:376
+#: help.c:566
 #, c-format
 msgid "git: '%s' is not a git command. See 'git --help'."
 msgstr "git: „%s“ не е команда на git.  Погледнете изхода от „git --help“."
 
-#: help.c:380
+#: help.c:570
 msgid ""
 "\n"
 "The most similar command is"
@@ -2092,16 +2253,16 @@ msgstr[1] ""
 "\n"
 "Най-близките команди са"
 
-#: help.c:395
+#: help.c:585
 msgid "git version [<options>]"
 msgstr "git version [ОПЦИЯ…]"
 
-#: help.c:462
+#: help.c:652
 #, c-format
 msgid "%s: %s - %s"
 msgstr "%s: %s — %s"
 
-#: help.c:466
+#: help.c:656
 msgid ""
 "\n"
 "Did you mean this?"
@@ -2172,7 +2333,7 @@ msgstr "не може да се ползва празно име като иде
 msgid "name consists only of disallowed characters: %s"
 msgstr "името съдържа само непозволени знаци: „%s“"
 
-#: ident.c:416 builtin/commit.c:582
+#: ident.c:416 builtin/commit.c:587
 #, c-format
 msgid "invalid date format: %s"
 msgstr "неправилен формат на дата: %s"
@@ -2209,84 +2370,169 @@ msgstr ""
 msgid "Unable to create '%s.lock': %s"
 msgstr "Файлът-ключалка „%s.lock“ не може да бъде създаден: %s"
 
-#: merge.c:74
+#: merge.c:71
 msgid "failed to read the cache"
 msgstr "кешът не може да бъде прочетен"
 
-#: merge.c:134 builtin/am.c:1946 builtin/am.c:1980 builtin/checkout.c:378
-#: builtin/checkout.c:599 builtin/clone.c:759
+#: merge.c:136 builtin/am.c:1946 builtin/am.c:1980 builtin/checkout.c:378
+#: builtin/checkout.c:606 builtin/clone.c:761
 msgid "unable to write new index file"
 msgstr "неуспешно записване на новия индекс"
 
-#: merge-recursive.c:235
+#: merge-recursive.c:298
 msgid "(bad commit)\n"
 msgstr "(лошо подаване)\n"
 
-#: merge-recursive.c:257 merge-recursive.c:265
+#: merge-recursive.c:320
+#, c-format
+msgid "add_cacheinfo failed for path '%s'; merge aborting."
+msgstr ""
+"неуспешно изпълнение на „add_cacheinfo“ за пътя „%s“.  Сливането е "
+"преустановено."
+
+#: merge-recursive.c:328
 #, c-format
-msgid "addinfo_cache failed for path '%s'"
-msgstr "неуспешно изпълнение на „addinfo_cache“ за пътя „%s“"
+msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+msgstr ""
+"неуспешно изпълнение на „add_cacheinfo“ за обновяването на пътя „%s“.  "
+"Сливането е преустановено."
 
-#: merge-recursive.c:329
+#: merge-recursive.c:410
 msgid "error building trees"
 msgstr "грешка при изграждане на дърветата"
 
-#: merge-recursive.c:771
+#: merge-recursive.c:881
 #, c-format
 msgid "failed to create path '%s'%s"
 msgstr "грешка при създаването на пътя „%s“%s"
 
-#: merge-recursive.c:782
+#: merge-recursive.c:892
 #, c-format
 msgid "Removing %s to make room for subdirectory\n"
 msgstr "Изтриване на „%s“, за да се освободи място за поддиректория\n"
 
-#: merge-recursive.c:796 merge-recursive.c:815
+#: merge-recursive.c:906 merge-recursive.c:925
 msgid ": perhaps a D/F conflict?"
 msgstr ": възможно е да има конфликт директория/файл."
 
-#: merge-recursive.c:805
+#: merge-recursive.c:915
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
 msgstr ""
 "преустановяване на действието, за да не се изтрие неследеният файл „%s“"
 
-#: merge-recursive.c:847 builtin/cat-file.c:37
+#: merge-recursive.c:957 builtin/cat-file.c:37
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr "обектът „%s“ (%s) не може да бъде прочетен"
 
-#: merge-recursive.c:849
+#: merge-recursive.c:959
 #, c-format
 msgid "blob expected for %s '%s'"
 msgstr "обектът „%s“ (%s) се очакваше да е BLOB, а не е"
 
-#: merge-recursive.c:873
+#: merge-recursive.c:983
 #, c-format
 msgid "failed to open '%s': %s"
 msgstr "„%s“ не може да се отвори: %s"
 
-#: merge-recursive.c:884
+#: merge-recursive.c:994
 #, c-format
 msgid "failed to symlink '%s': %s"
 msgstr "неуспешно създаване на символната връзка „%s“: %s"
 
-#: merge-recursive.c:889
+#: merge-recursive.c:999
 #, c-format
 msgid "do not know what to do with %06o %s '%s'"
 msgstr ""
 "не е ясно какво да се прави с обекта „%2$s“ (%3$s) с права за достъп „%1$06o“"
 
-#: merge-recursive.c:1029
+#: merge-recursive.c:1186
+#, c-format
+msgid "Failed to merge submodule %s (not checked out)"
+msgstr "Неуспешно сливане на подмодула „%s“ (не е изтеглен)"
+
+#: merge-recursive.c:1193
+#, c-format
+msgid "Failed to merge submodule %s (commits not present)"
+msgstr "Неуспешно сливане на подмодула „%s“ (няма подавания)"
+
+#: merge-recursive.c:1200
+#, c-format
+msgid "Failed to merge submodule %s (commits don't follow merge-base)"
+msgstr ""
+"Подмодулът „%s“ не може да бъде слят (базата за сливане не предшества "
+"подаванията)"
+
+#: merge-recursive.c:1208 merge-recursive.c:1220
+#, c-format
+msgid "Fast-forwarding submodule %s to the following commit:"
+msgstr "Превъртане на подмодула „%s“ до следното подаване:"
+
+#: merge-recursive.c:1211 merge-recursive.c:1223
+#, c-format
+msgid "Fast-forwarding submodule %s"
+msgstr "Превъртане на подмодула „%s“"
+
+#: merge-recursive.c:1245
+#, c-format
+msgid "Failed to merge submodule %s (merge following commits not found)"
+msgstr ""
+"Неуспешно сливане на подмодула „%s“ (липсва сливането, което се предшества "
+"от подаванията)"
+
+#: merge-recursive.c:1249
+#, c-format
+msgid "Failed to merge submodule %s (not fast-forward)"
+msgstr "Неуспешно сливане на подмодула „%s“ (не е превъртане)"
+
+#: merge-recursive.c:1250
+msgid "Found a possible merge resolution for the submodule:\n"
+msgstr ""
+"Открито е сливане, което може да решава проблема със сливането на "
+"подмодула:\n"
+
+#: merge-recursive.c:1253
+#, c-format
+msgid ""
+"If this is correct simply add it to the index for example\n"
+"by using:\n"
+"\n"
+"  git update-index --cacheinfo 160000 %s \"%s\"\n"
+"\n"
+"which will accept this suggestion.\n"
+msgstr ""
+"Ако това е така, добавете го към индекса с команда като следната:\n"
+"\n"
+"    git update-index --cacheinfo 160000 %s \"%s\"\n"
+"\n"
+"Това приема предложеното.\n"
+
+#: merge-recursive.c:1262
+#, c-format
+msgid "Failed to merge submodule %s (multiple merges found)"
+msgstr "Неуспешно сливане на подмодула „%s“ (открити са множество сливания)"
+
+#: merge-recursive.c:1321
 msgid "Failed to execute internal merge"
 msgstr "Неуспешно вътрешно сливане"
 
-#: merge-recursive.c:1034
+#: merge-recursive.c:1326
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "„%s“ не може да се добави в базата с данни"
 
-#: merge-recursive.c:1146
+#: merge-recursive.c:1358
+#, c-format
+msgid "Auto-merging %s"
+msgstr "Автоматично сливане на „%s“"
+
+#: merge-recursive.c:1423
+#, c-format
+msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+msgstr "Грешка: за да не се изтрие неследеният файл „%s“, се записва в „%s“."
+
+#: merge-recursive.c:1475
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -2295,7 +2541,7 @@ msgstr ""
 "КОНФЛИКТ (%s/изтриване): „%s“ е изтрит в %s, а „%s“ в %s.  Версия %s на „%s“ "
 "е оставена в дървото."
 
-#: merge-recursive.c:1151
+#: merge-recursive.c:1480
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -2304,7 +2550,7 @@ msgstr ""
 "КОНФЛИКТ (%s/изтриване): „%s“ е изтрит в %s, а „%s“ е преименуван на „%s“ в "
 "%s.  Версия %s на „%s“ е оставена в дървото."
 
-#: merge-recursive.c:1158
+#: merge-recursive.c:1487
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -2313,7 +2559,7 @@ msgstr ""
 "КОНФЛИКТ (%s/изтриване): „%s“ е изтрит в %s, а „%s“ в %s.  Версия %s на „%s“ "
 "е оставена в дървото: %s."
 
-#: merge-recursive.c:1163
+#: merge-recursive.c:1492
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -2322,20 +2568,33 @@ msgstr ""
 "КОНФЛИКТ (%s/изтриване): „%s“ е изтрит в %s, а „%s“ е преименуван на „%s“ в "
 "%s.  Версия %s на „%s“ е оставена в дървото: %s."
 
-#: merge-recursive.c:1197
+#: merge-recursive.c:1526
 msgid "rename"
 msgstr "преименуване"
 
-#: merge-recursive.c:1197
+#: merge-recursive.c:1526
 msgid "renamed"
 msgstr "преименуван"
 
-#: merge-recursive.c:1254
+#: merge-recursive.c:1580 merge-recursive.c:1736 merge-recursive.c:2368
+#: merge-recursive.c:3086
+#, c-format
+msgid "Refusing to lose dirty file at %s"
+msgstr "Преустановяване на действието, за да не се изгуби промененият „%s“"
+
+#: merge-recursive.c:1594
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr "„%s“ е директория в „%s“, затова се добавя като „%s“"
 
-#: merge-recursive.c:1279
+#: merge-recursive.c:1599
+#, c-format
+msgid "Refusing to lose untracked file at %s; adding as %s instead"
+msgstr ""
+"Преустановяване на действието, за да не се изгуби неследеният файл „%s“.  "
+"Вместо него се добавя „%s“"
+
+#: merge-recursive.c:1625
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
@@ -2344,145 +2603,194 @@ msgstr ""
 "КОНФЛИКТ (преименуване/преименуване): „%s“ е преименуван на „%s“ в клон "
 "„%s“, а „%s“ е преименуван на „%s“ в „%s“/%s."
 
-#: merge-recursive.c:1284
+#: merge-recursive.c:1630
 msgid " (left unresolved)"
 msgstr " (некоригиран конфликт)"
 
-#: merge-recursive.c:1346
+#: merge-recursive.c:1694
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
 msgstr ""
 "КОНФЛИКТ (преименуване/преименуване): „%s“ е преименуван на „%s“ в клон "
 "„%s“, а „%s“ е преименуван на „%s“ в „%s“"
 
-#: merge-recursive.c:1379
+#: merge-recursive.c:1733
 #, c-format
 msgid "Renaming %s to %s and %s to %s instead"
 msgstr "Преименуване на „%s“ на „%s“, а „%s“ на „%s“"
 
-#: merge-recursive.c:1582
+#: merge-recursive.c:1745
+#, c-format
+msgid "Refusing to lose untracked file at %s, even though it's in the way."
+msgstr ""
+"Отказ да се загуби неследеният файл „%s“, защото е на място, където пречи."
+
+#: merge-recursive.c:1951
+#, c-format
+msgid ""
+"CONFLICT (directory rename split): Unclear where to place %s because "
+"directory %s was renamed to multiple other directories, with no destination "
+"getting a majority of the files."
+msgstr ""
+"КОНФЛИКТ (раздвояване при преименуване на директория): Не е ясно къде да се "
+"постави „%s“, защото няколко нови директории поделят съдържанието на "
+"директория „%s“, като никоя не съдържа мнозинство от файловете ѝ."
+
+#: merge-recursive.c:1983
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
+"implicit directory rename(s) putting the following path(s) there: %s."
+msgstr ""
+"КОНФЛИКТ (косвено преименуване на директория): следният файл или директория "
+"„%s“ не позволяват косвеното преименуване на следния път/ища: %s."
+
+#: merge-recursive.c:1993
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
+"implicit directory renames tried to put these paths there: %s"
+msgstr ""
+"КОНФЛИКТ (косвено преименуване на директория): повече от един път "
+"съответства на „%s“.  Косвено преименуване на директория води до поставянето "
+"на тези пътища там: %s."
+
+#: merge-recursive.c:2085
+#, c-format
+msgid ""
+"CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
+">%s in %s"
+msgstr ""
+"КОНФЛИКТ (преименуване/преименуване): „%s“ е преименуван на „%s“ в клон "
+"„%s“, а „%s“ е преименуван на „%s“ в „%s“"
+
+#: merge-recursive.c:2330
+#, c-format
+msgid ""
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
+msgstr ""
+"ПРЕДУПРЕЖДЕНИЕ: прескачане на преименуването на „%s“ на „%s“ в „%s“, защото "
+"„%s“ също е с променено име."
+
+#: merge-recursive.c:2736
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s. %s added in %s"
 msgstr ""
 "КОНФЛИКТ (преименуване/добавяне): „%s“ е преименуван на „%s“ в клон „%s“, а "
 "„%s“ е добавен в „%s“"
 
-#: merge-recursive.c:1597
+#: merge-recursive.c:2751
 #, c-format
 msgid "Adding merged %s"
 msgstr "Добавяне на слетия „%s“"
 
-#: merge-recursive.c:1604 merge-recursive.c:1834
+#: merge-recursive.c:2758 merge-recursive.c:3089
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Добавяне като „%s“"
 
-#: merge-recursive.c:1661
+#: merge-recursive.c:2914
 #, c-format
 msgid "cannot read object %s"
 msgstr "обектът „%s“ не може да се прочете"
 
-#: merge-recursive.c:1664
+#: merge-recursive.c:2917
 #, c-format
 msgid "object %s is not a blob"
 msgstr "обектът „%s“ не е BLOB"
 
-#: merge-recursive.c:1733
+#: merge-recursive.c:2986
 msgid "modify"
 msgstr "промяна"
 
-#: merge-recursive.c:1733
+#: merge-recursive.c:2986
 msgid "modified"
 msgstr "променен"
 
-#: merge-recursive.c:1743
+#: merge-recursive.c:2997
 msgid "content"
 msgstr "съдържание"
 
-#: merge-recursive.c:1750
+#: merge-recursive.c:3004
 msgid "add/add"
 msgstr "добавяне/добавяне"
 
-#: merge-recursive.c:1786
+#: merge-recursive.c:3046
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "Прескачане на „%s“ (слетият резултат е идентичен със сегашния)"
 
-#: merge-recursive.c:1800
-#, c-format
-msgid "Auto-merging %s"
-msgstr "Автоматично сливане на „%s“"
-
-#: merge-recursive.c:1804 git-submodule.sh:879
+#: merge-recursive.c:3055 git-submodule.sh:895
 msgid "submodule"
 msgstr "ПОДМОДУЛ"
 
-#: merge-recursive.c:1805
+#: merge-recursive.c:3056
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr "КОНФЛИКТ (%s): Конфликт при сливане на „%s“"
 
-#: merge-recursive.c:1899
+#: merge-recursive.c:3178
 #, c-format
 msgid "Removing %s"
 msgstr "Изтриване на „%s“"
 
-#: merge-recursive.c:1925
+#: merge-recursive.c:3204
 msgid "file/directory"
 msgstr "файл/директория"
 
-#: merge-recursive.c:1931
+#: merge-recursive.c:3210
 msgid "directory/file"
 msgstr "директория/файл"
 
-#: merge-recursive.c:1938
+#: merge-recursive.c:3217
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
 msgstr ""
 "КОНФЛИКТ (%s): Съществува директория на име „%s“ в „%s“.  Добавяне на „%s“ "
 "като „%s“"
 
-#: merge-recursive.c:1947
+#: merge-recursive.c:3226
 #, c-format
 msgid "Adding %s"
 msgstr "Добавяне на „%s“"
 
-#: merge-recursive.c:1987
+#: merge-recursive.c:3267
 #, c-format
 msgid "Dirty index: cannot merge (dirty: %s)"
 msgstr ""
 "Индексът не е чист: кръпките не могат да бъдат приложени (замърсени са: %s)"
 
-#: merge-recursive.c:1991
+#: merge-recursive.c:3271
 msgid "Already up to date!"
 msgstr "Вече е обновено!"
 
-#: merge-recursive.c:2000
+#: merge-recursive.c:3280
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr "неуспешно сливане на дърветата „%s“ и „%s“"
 
-#: merge-recursive.c:2097
+#: merge-recursive.c:3379
 msgid "Merging:"
 msgstr "Сливане:"
 
-#: merge-recursive.c:2110
+#: merge-recursive.c:3392
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] "открит е %u общ предшественик:"
 msgstr[1] "открити са %u общи предшественици:"
 
-#: merge-recursive.c:2149
+#: merge-recursive.c:3431
 msgid "merge returned no commit"
 msgstr "сливането не върна подаване"
 
-#: merge-recursive.c:2212
+#: merge-recursive.c:3495
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "Неуспешен анализ на обекта „%s“"
 
-#: merge-recursive.c:2228 builtin/merge.c:657 builtin/merge.c:816
+#: merge-recursive.c:3511 builtin/merge.c:659 builtin/merge.c:816
 msgid "Unable to write index."
 msgstr "Индексът не може да бъде прочетен"
 
@@ -2534,35 +2842,35 @@ msgstr ""
 msgid "Bad %s value: '%s'"
 msgstr "Зададена е лоша стойност на променливата „%s“: „%s“"
 
-#: object.c:239
+#: object.c:242
 #, c-format
 msgid "unable to parse object: %s"
 msgstr "обектът „%s“ не може да бъде анализиран"
 
-#: packfile.c:561
+#: packfile.c:563
 msgid "offset before end of packfile (broken .idx?)"
 msgstr ""
 "отместване преди края на пакетния файл (възможно е индексът да е повреден)"
 
-#: packfile.c:1694
+#: packfile.c:1742
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr ""
 "отместване преди началото на индекса на пакетния файл „%s“ (възможно е "
 "индексът да е повреден)"
 
-#: packfile.c:1698
+#: packfile.c:1746
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr ""
 "отместване преди края на индекса на пакетния файл „%s“ (възможно е индексът "
 "да е отрязан)"
 
-#: parse-options.c:619
+#: parse-options.c:621
 msgid "..."
 msgstr "…"
 
-#: parse-options.c:638
+#: parse-options.c:640
 #, c-format
 msgid "usage: %s"
 msgstr "употреба: %s"
@@ -2570,26 +2878,31 @@ msgstr "употреба: %s"
 #. TRANSLATORS: the colon here should align with the
 #. one in "usage: %s" translation.
 #.
-#: parse-options.c:644
+#: parse-options.c:646
 #, c-format
 msgid "   or: %s"
 msgstr "     или: %s"
 
-#: parse-options.c:647
+#: parse-options.c:649
 #, c-format
 msgid "    %s"
 msgstr "    %s"
 
-#: parse-options.c:686
+#: parse-options.c:688
 msgid "-NUM"
 msgstr "-ЧИСЛО"
 
-#: parse-options-cb.c:108
+#: parse-options-cb.c:44
+#, c-format
+msgid "malformed expiration date '%s'"
+msgstr "неправилна дата на срок: „%s“"
+
+#: parse-options-cb.c:112
 #, c-format
 msgid "malformed object name '%s'"
 msgstr "неправилно име на обект „%s“"
 
-#: path.c:891
+#: path.c:892
 #, c-format
 msgid "Could not make %s writable by group"
 msgstr "Не могат да се дадат права за запис в директорията „%s“ на групата"
@@ -2672,7 +2985,7 @@ msgstr "пътят „%s“ е след символна връзка"
 msgid "unable to parse --pretty format"
 msgstr "аргументът към опцията „--pretty“ не може да се анализира"
 
-#: read-cache.c:1473
+#: read-cache.c:1500
 #, c-format
 msgid ""
 "index.version set, but the value is invalid.\n"
@@ -2681,7 +2994,7 @@ msgstr ""
 "Зададена е неправилна стойност на настройката „index.version“.\n"
 "Ще се ползва версия %i"
 
-#: read-cache.c:1483
+#: read-cache.c:1510
 #, c-format
 msgid ""
 "GIT_INDEX_VERSION set, but the value is invalid.\n"
@@ -2691,52 +3004,53 @@ msgstr ""
 "„GIT_INDEX_VERSION“.\n"
 "Ще се ползва версия %i"
 
-#: read-cache.c:2375 sequencer.c:3248 wrapper.c:658 builtin/merge.c:1049
+#: read-cache.c:2404 sequencer.c:4338 wrapper.c:658 builtin/merge.c:1048
 #, c-format
 msgid "could not close '%s'"
 msgstr "„%s“ не може да се затвори"
 
-#: read-cache.c:2448 sequencer.c:1900 sequencer.c:2627
+#: read-cache.c:2477 sequencer.c:2102 sequencer.c:3234
 #, c-format
 msgid "could not stat '%s'"
 msgstr "неуспешно изпълнение на „stat“ върху „%s“"
 
-#: read-cache.c:2461
+#: read-cache.c:2490
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr "не може да се отвори директорията на git: %s"
 
-#: read-cache.c:2473
+#: read-cache.c:2502
 #, c-format
 msgid "unable to unlink: %s"
 msgstr "неуспешно изтриване на „%s“"
 
-#: refs.c:706
+#: refs.c:732 sequencer.c:4334 sequencer.c:4393 wrapper.c:225 wrapper.c:395
+#: builtin/am.c:779
 #, c-format
-msgid "Could not open '%s' for writing"
+msgid "could not open '%s' for writing"
 msgstr "„%s“ не може да бъде отворен за запис"
 
-#: refs.c:1850
+#: refs.c:1880
 msgid "ref updates forbidden inside quarantine environment"
 msgstr "обновяванията на указатели са забранени в среди под карантина"
 
-#: refs/files-backend.c:1189
+#: refs/files-backend.c:1191
 #, c-format
 msgid "could not remove reference %s"
 msgstr "Указателят „%s“ не може да бъде изтрит"
 
-#: refs/files-backend.c:1203 refs/packed-backend.c:1528
-#: refs/packed-backend.c:1538
+#: refs/files-backend.c:1205 refs/packed-backend.c:1531
+#: refs/packed-backend.c:1541
 #, c-format
 msgid "could not delete reference %s: %s"
 msgstr "Указателят „%s“ не може да бъде изтрит: %s"
 
-#: refs/files-backend.c:1206 refs/packed-backend.c:1541
+#: refs/files-backend.c:1208 refs/packed-backend.c:1544
 #, c-format
 msgid "could not delete references: %s"
 msgstr "Указателите не може да бъдат изтрити: %s"
 
-#: ref-filter.c:35 wt-status.c:1842
+#: ref-filter.c:35 wt-status.c:1850
 msgid "gone"
 msgstr "изтрит"
 
@@ -2755,157 +3069,162 @@ msgstr "назад с %d"
 msgid "ahead %d, behind %d"
 msgstr "напред с %d, назад с %d"
 
-#: ref-filter.c:107
+#: ref-filter.c:121
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr "очакван формат: %%(color:ЦВЯТ)"
 
-#: ref-filter.c:109
+#: ref-filter.c:123
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr "непознат цвят: %%(color:%s)"
 
-#: ref-filter.c:129
+#: ref-filter.c:145
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr "очаква се цяло число за „refname:lstrip=%s“"
 
-#: ref-filter.c:133
+#: ref-filter.c:149
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr "очаква се цяло число за „refname:rstrip=%s“"
 
-#: ref-filter.c:135
+#: ref-filter.c:151
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr "непознат аргумент за „%%(%s)“: %s"
 
-#: ref-filter.c:184
+#: ref-filter.c:206
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr "%%(body) не приема аргументи"
 
-#: ref-filter.c:191
+#: ref-filter.c:215
 #, c-format
 msgid "%%(subject) does not take arguments"
 msgstr "%%(subject) не приема аргументи"
 
-#: ref-filter.c:209
+#: ref-filter.c:235
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr "непознат аргумент „%%(trailers)“: %s"
 
-#: ref-filter.c:232
+#: ref-filter.c:264
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr "очаква се положителна стойност за „contents:lines=%s“"
 
-#: ref-filter.c:234
+#: ref-filter.c:266
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr "непознат аргумент за %%(contents): %s"
 
-#: ref-filter.c:247
+#: ref-filter.c:281
 #, c-format
 msgid "positive value expected objectname:short=%s"
 msgstr "очаква се положителна стойност за „objectname:short=%s“"
 
-#: ref-filter.c:251
+#: ref-filter.c:285
 #, c-format
 msgid "unrecognized %%(objectname) argument: %s"
 msgstr "непознат аргумент за %%(objectname): %s"
 
-#: ref-filter.c:278
+#: ref-filter.c:315
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr "очакван формат: %%(align:ШИРОЧИНА,ПОЗИЦИЯ)"
 
-#: ref-filter.c:290
+#: ref-filter.c:327
 #, c-format
 msgid "unrecognized position:%s"
 msgstr "непозната позиция: %s"
 
-#: ref-filter.c:294
+#: ref-filter.c:334
 #, c-format
 msgid "unrecognized width:%s"
 msgstr "непозната широчина: %s"
 
-#: ref-filter.c:300
+#: ref-filter.c:343
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr "непознат аргумент за %%(align): %s"
 
-#: ref-filter.c:304
+#: ref-filter.c:351
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr "очаква се положителна широчина с лексемата „%%(align)“"
 
-#: ref-filter.c:319
+#: ref-filter.c:369
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
 msgstr "непознат аргумент за „%%(if)“: %s"
 
-#: ref-filter.c:409
+#: ref-filter.c:464
 #, c-format
 msgid "malformed field name: %.*s"
 msgstr "неправилно име на обект: „%.*s“"
 
-#: ref-filter.c:435
+#: ref-filter.c:491
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr "непознато име на обект: „%.*s“"
 
-#: ref-filter.c:547
+#: ref-filter.c:608
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr "формат: лексемата %%(if) е използвана без съответната ѝ %%(then)"
 
-#: ref-filter.c:607
+#: ref-filter.c:671
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr "формат: лексемата %%(then) е използвана без съответната ѝ %%(if)"
 
-#: ref-filter.c:609
+#: ref-filter.c:673
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr "формат: лексемата %%(then) е използвана повече от един път"
 
-#: ref-filter.c:611
+#: ref-filter.c:675
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr "формат: лексемата %%(then) е използвана след %%(else)"
 
-#: ref-filter.c:637
+#: ref-filter.c:703
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr "формат: лексемата %%(else) е използвана без съответната ѝ %%(if)"
 
-#: ref-filter.c:639
+#: ref-filter.c:705
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr "формат: лексемата %%(else) е използвана без съответната ѝ %%(then)"
 
-#: ref-filter.c:641
+#: ref-filter.c:707
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr "формат: лексемата %%(else) е използвана повече от един път"
 
-#: ref-filter.c:654
+#: ref-filter.c:722
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr "формат: лексемата %%(end) е използвана без съответната ѝ"
 
-#: ref-filter.c:709
+#: ref-filter.c:779
 #, c-format
 msgid "malformed format string %s"
 msgstr "неправилен форматиращ низ „%s“"
 
-#: ref-filter.c:1313
+#: ref-filter.c:1387
 #, c-format
 msgid "(no branch, rebasing %s)"
 msgstr "(извън клон, пребазиране на „%s“)"
 
-#: ref-filter.c:1316
+#: ref-filter.c:1390
+#, c-format
+msgid "(no branch, rebasing detached HEAD %s)"
+msgstr "(извън клон, пребазиране на несвързан указател „HEAD“ при „%s“)"
+
+#: ref-filter.c:1393
 #, c-format
 msgid "(no branch, bisect started on %s)"
 msgstr "(извън клон, двоично търсене от „%s“)"
@@ -2913,7 +3232,7 @@ msgstr "(извън клон, двоично търсене от „%s“)"
 #. TRANSLATORS: make sure this matches "HEAD
 #. detached at " in wt-status.c
 #.
-#: ref-filter.c:1324
+#: ref-filter.c:1401
 #, c-format
 msgid "(HEAD detached at %s)"
 msgstr "(Указателят „HEAD“ не е свързан и е при „%s“)"
@@ -2921,149 +3240,149 @@ msgstr "(Указателят „HEAD“ не е свързан и е при „
 #. TRANSLATORS: make sure this matches "HEAD
 #. detached from " in wt-status.c
 #.
-#: ref-filter.c:1331
+#: ref-filter.c:1408
 #, c-format
 msgid "(HEAD detached from %s)"
 msgstr "Указателят „HEAD“ не е свързан и е отделѐн от „%s“"
 
-#: ref-filter.c:1335
+#: ref-filter.c:1412
 msgid "(no branch)"
 msgstr "(извън клон)"
 
-#: ref-filter.c:1364
+#: ref-filter.c:1442
 #, c-format
 msgid "missing object %s for %s"
 msgstr "обектът „%s“ липсва за „%s“"
 
-#: ref-filter.c:1367
+#: ref-filter.c:1445
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr "неуспешно анализиране чрез „parse_object_buffer“ на „%s“ за „%s“"
 
-#: ref-filter.c:1819
+#: ref-filter.c:1902
 #, c-format
 msgid "malformed object at '%s'"
 msgstr "обект със сгрешен формат при „%s“"
 
-#: ref-filter.c:1886
+#: ref-filter.c:1984
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr "игнориране на указателя с грешно име „%s“"
 
-#: ref-filter.c:1891
+#: ref-filter.c:1989
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "игнориране на повредения указател „%s“"
 
-#: ref-filter.c:2152
+#: ref-filter.c:2261
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr "грешка във форма̀та: липсва лексемата %%(end)"
 
-#: ref-filter.c:2246
+#: ref-filter.c:2365
 #, c-format
 msgid "malformed object name %s"
 msgstr "неправилно име на обект „%s“"
 
-#: remote.c:795
+#: remote.c:605
 #, c-format
 msgid "Cannot fetch both %s and %s to %s"
 msgstr "Невъзможно е да се доставят едновременно и „%s“, и „%s“ към „%s“"
 
-#: remote.c:799
+#: remote.c:609
 #, c-format
 msgid "%s usually tracks %s, not %s"
 msgstr "„%s“ обикновено следи „%s“, а не „%s“"
 
-#: remote.c:803
+#: remote.c:613
 #, c-format
 msgid "%s tracks both %s and %s"
 msgstr "„%s“ следи както „%s“, така и „%s“"
 
-#: remote.c:811
+#: remote.c:621
 msgid "Internal error"
 msgstr "Вътрешна грешка"
 
-#: remote.c:1726 remote.c:1828
+#: remote.c:1534 remote.c:1635
 msgid "HEAD does not point to a branch"
 msgstr "Указателят „HEAD“ не сочи към клон"
 
-#: remote.c:1735
+#: remote.c:1543
 #, c-format
 msgid "no such branch: '%s'"
 msgstr "няма клон на име „%s“"
 
-#: remote.c:1738
+#: remote.c:1546
 #, c-format
 msgid "no upstream configured for branch '%s'"
 msgstr "не е зададен клон-източник за клона „%s“"
 
-#: remote.c:1744
+#: remote.c:1552
 #, c-format
 msgid "upstream branch '%s' not stored as a remote-tracking branch"
 msgstr "клонът-източник „%s“ не е съхранен като следящ клон"
 
-#: remote.c:1759
+#: remote.c:1567
 #, c-format
 msgid "push destination '%s' on remote '%s' has no local tracking branch"
 msgstr ""
 "липсва локален следящ клон за местоположението за изтласкване „%s“ в "
 "хранилището „%s“"
 
-#: remote.c:1771
+#: remote.c:1579
 #, c-format
 msgid "branch '%s' has no remote for pushing"
 msgstr "няма информация клонът „%s“ да следи някой друг"
 
-#: remote.c:1782
+#: remote.c:1589
 #, c-format
 msgid "push refspecs for '%s' do not include '%s'"
 msgstr "указателят за изтласкване на „%s“ не включва „%s“"
 
-#: remote.c:1795
+#: remote.c:1602
 msgid "push has no destination (push.default is 'nothing')"
 msgstr "указателят за изтласкване не включва цел („push.default“ е „nothing“)"
 
-#: remote.c:1817
+#: remote.c:1624
 msgid "cannot resolve 'simple' push to a single destination"
 msgstr "простото (simple) изтласкване не съответства на една цел"
 
-#: remote.c:2132
+#: remote.c:1939
 #, c-format
 msgid "Your branch is based on '%s', but the upstream is gone.\n"
 msgstr "Този клон следи „%s“, но следеният клон е изтрит.\n"
 
-#: remote.c:2136
+#: remote.c:1943
 msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
 msgstr "  (за да коригирате това, използвайте „git branch --unset-upstream“)\n"
 
-#: remote.c:2139
+#: remote.c:1946
 #, c-format
 msgid "Your branch is up to date with '%s'.\n"
 msgstr "Клонът е актуализиран към „%s“.\n"
 
-#: remote.c:2143
+#: remote.c:1950
 #, c-format
 msgid "Your branch and '%s' refer to different commits.\n"
 msgstr "Клонът ви и „%s“ сочат към различни подавания.\n"
 
-#: remote.c:2146
+#: remote.c:1953
 #, c-format
 msgid "  (use \"%s\" for details)\n"
 msgstr "  (за повече информация ползвайте „%s“)\n"
 
-#: remote.c:2150
+#: remote.c:1957
 #, c-format
 msgid "Your branch is ahead of '%s' by %d commit.\n"
 msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
 msgstr[0] "Клонът ви е с %2$d подаване пред „%1$s“.\n"
 msgstr[1] "Клонът ви е с %2$d подавания пред „%1$s“.\n"
 
-#: remote.c:2156
+#: remote.c:1963
 msgid "  (use \"git push\" to publish your local commits)\n"
 msgstr "  (публикувайте локалните си промени чрез „git push“)\n"
 
-#: remote.c:2159
+#: remote.c:1966
 #, c-format
 msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
 msgid_plural ""
@@ -3071,11 +3390,11 @@ msgid_plural ""
 msgstr[0] "Клонът ви е с %2$d подаване зад „%1$s“ и може да бъде превъртян.\n"
 msgstr[1] "Клонът ви е с %2$d подавания зад „%1$s“ и може да бъде превъртян.\n"
 
-#: remote.c:2167
+#: remote.c:1974
 msgid "  (use \"git pull\" to update your local branch)\n"
 msgstr "  (обновете локалния си клон чрез „git pull“)\n"
 
-#: remote.c:2170
+#: remote.c:1977
 #, c-format
 msgid ""
 "Your branch and '%s' have diverged,\n"
@@ -3090,28 +3409,28 @@ msgstr[1] ""
 "Текущият клон се е отделил от „%s“,\n"
 "двата имат съответно по %d и %d несъвпадащи подавания.\n"
 
-#: remote.c:2180
+#: remote.c:1987
 msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
 msgstr "  (слейте отдалечения клон в локалния чрез „git pull“)\n"
 
-#: revision.c:2277
+#: revision.c:2289
 msgid "your current branch appears to be broken"
 msgstr "Текущият клон е повреден"
 
-#: revision.c:2280
+#: revision.c:2292
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr "Текущият клон „%s“ е без подавания "
 
-#: revision.c:2477
+#: revision.c:2489
 msgid "--first-parent is incompatible with --bisect"
 msgstr "опциите „--first-parent“ и „--bisect“ са несъвместими"
 
-#: run-command.c:731
+#: run-command.c:728
 msgid "open /dev/null failed"
 msgstr "неуспешно отваряне на „/dev/null“"
 
-#: run-command.c:1274
+#: run-command.c:1271
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
@@ -3162,29 +3481,34 @@ msgstr "получаващата страна не поддържа изтлас
 msgid "the receiving end does not support push options"
 msgstr "отсрещната страна не поддържа опции при изтласкване"
 
-#: sequencer.c:158
+#: sequencer.c:175
 #, c-format
 msgid "invalid commit message cleanup mode '%s'"
 msgstr "несъществуващ режим на изчистване „%s“ на съобщение при подаване"
 
-#: sequencer.c:267
+#: sequencer.c:275
+#, c-format
+msgid "could not delete '%s'"
+msgstr "„%s“ не може да бъде изтрит"
+
+#: sequencer.c:301
 msgid "revert"
 msgstr "отмяна"
 
-#: sequencer.c:269
+#: sequencer.c:303
 msgid "cherry-pick"
 msgstr "отбиране"
 
-#: sequencer.c:271
+#: sequencer.c:305
 msgid "rebase -i"
 msgstr "rebase -i"
 
-#: sequencer.c:273
+#: sequencer.c:307
 #, c-format
 msgid "Unknown action: %d"
 msgstr "Неизвестно действие: %d"
 
-#: sequencer.c:330
+#: sequencer.c:364
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'"
@@ -3192,7 +3516,7 @@ msgstr ""
 "след коригирането на конфликтите, отбележете съответните\n"
 "пътища с „git add ПЪТ…“ или „git rm ПЪТ…“."
 
-#: sequencer.c:333
+#: sequencer.c:367
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'\n"
@@ -3202,43 +3526,45 @@ msgstr ""
 "пътища с „git add ПЪТ…“ или „git rm ПЪТ…“, след което\n"
 "подайте резултата с командата „git commit'“."
 
-#: sequencer.c:346 sequencer.c:2245
+#: sequencer.c:380 sequencer.c:2468
 #, c-format
 msgid "could not lock '%s'"
 msgstr "„%s“ не може да се заключи"
 
-#: sequencer.c:349 sequencer.c:2124 sequencer.c:2250 sequencer.c:2264
-#: sequencer.c:3246 sequencer.c:3310 wrapper.c:656
+#: sequencer.c:382 sequencer.c:2346 sequencer.c:2472 sequencer.c:2486
+#: sequencer.c:2694 sequencer.c:4336 sequencer.c:4399 wrapper.c:656
 #, c-format
 msgid "could not write to '%s'"
 msgstr "в „%s“ не може да се пише"
 
-#: sequencer.c:353
+#: sequencer.c:387
 #, c-format
 msgid "could not write eol to '%s'"
 msgstr "краят на ред не може да се запише в „%s“"
 
-#: sequencer.c:356 sequencer.c:2128 sequencer.c:2252
+#: sequencer.c:392 sequencer.c:2351 sequencer.c:2474 sequencer.c:2488
+#: sequencer.c:2702
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr "„%s“ не може да се завърши"
 
-#: sequencer.c:379 sequencer.c:1340 sequencer.c:2148 builtin/am.c:259
-#: builtin/commit.c:722 builtin/merge.c:1047
+#: sequencer.c:415 sequencer.c:804 sequencer.c:1493 sequencer.c:2371
+#: sequencer.c:2684 sequencer.c:2788 builtin/am.c:259 builtin/commit.c:727
+#: builtin/merge.c:1046
 #, c-format
 msgid "could not read '%s'"
 msgstr "файлът „%s“ не може да бъде прочетен"
 
-#: sequencer.c:405
+#: sequencer.c:441
 #, c-format
 msgid "your local changes would be overwritten by %s."
 msgstr "локалните ви промени ще бъдат презаписани при %s."
 
-#: sequencer.c:409
+#: sequencer.c:445
 msgid "commit your changes or stash them to proceed."
 msgstr "подайте или скатайте промените, за да продължите"
 
-#: sequencer.c:438
+#: sequencer.c:474
 #, c-format
 msgid "%s: fast-forward"
 msgstr "%s: превъртане"
@@ -3246,20 +3572,20 @@ msgstr "%s: превъртане"
 #. TRANSLATORS: %s will be "revert", "cherry-pick" or
 #. "rebase -i".
 #.
-#: sequencer.c:526
+#: sequencer.c:563
 #, c-format
 msgid "%s: Unable to write new index file"
 msgstr "%s: новият индекс не може да бъде запазен"
 
-#: sequencer.c:542
-msgid "could not resolve HEAD commit"
-msgstr "подаването, сочено от указателя „HEAD“, не може да бъде открито"
-
-#: sequencer.c:562
+#: sequencer.c:579
 msgid "unable to update cache tree"
 msgstr "дървото на кеша не може да бъде обновено"
 
-#: sequencer.c:658
+#: sequencer.c:592
+msgid "could not resolve HEAD commit"
+msgstr "подаването, сочено от указателя „HEAD“, не може да бъде открито"
+
+#: sequencer.c:749
 #, c-format
 msgid ""
 "you have staged changes in your working tree\n"
@@ -3276,7 +3602,7 @@ msgid ""
 "  git rebase --continue\n"
 msgstr ""
 "в това работно дърво има скатани промени.\n"
-"Ако искате да ги слеете с предишното подаване, изпълнете:\n"
+"Ако искате да ги вкарате в предишното подаване, изпълнете:\n"
 "\n"
 "    git commit --amend %s\n"
 "\n"
@@ -3288,13 +3614,17 @@ msgstr ""
 "\n"
 "    git rebase --continue\n"
 
-#: sequencer.c:915
+#: sequencer.c:818
+msgid "writing root commit"
+msgstr "запазване на начално подаване"
+
+#: sequencer.c:1043
 msgid "'prepare-commit-msg' hook failed"
 msgstr ""
 "неуспешно изпълнение на куката при промяна на съобщението при подаване "
 "(prepare-commit-msg)"
 
-#: sequencer.c:922
+#: sequencer.c:1050
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -3323,7 +3653,7 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:935
+#: sequencer.c:1063
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -3349,339 +3679,325 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:975
+#: sequencer.c:1103
 msgid "couldn't look up newly created commit"
 msgstr "току що създаденото подаване не може да бъде открито"
 
-#: sequencer.c:977
+#: sequencer.c:1105
 msgid "could not parse newly created commit"
 msgstr "току що създаденото подаване не може да бъде анализирано"
 
-#: sequencer.c:1023
+#: sequencer.c:1151
 msgid "unable to resolve HEAD after creating commit"
 msgstr ""
 "състоянието сочено от указателя „HEAD“ не може да бъде открито след "
 "подаването"
 
-#: sequencer.c:1025
+#: sequencer.c:1153
 msgid "detached HEAD"
 msgstr "несвързан връх „HEAD“"
 
-#: sequencer.c:1029
+#: sequencer.c:1157
 msgid " (root-commit)"
 msgstr " (начално подаване)"
 
-#: sequencer.c:1050
+#: sequencer.c:1178
 msgid "could not parse HEAD"
 msgstr "указателят „HEAD“ не може да бъде анализиран"
 
-#: sequencer.c:1052
+#: sequencer.c:1180
 #, c-format
 msgid "HEAD %s is not a commit!"
 msgstr "указателят „HEAD“ „%s“ сочи към нещо, което не е подаване!"
 
-#: sequencer.c:1056 builtin/commit.c:1491
+#: sequencer.c:1184 builtin/commit.c:1528
 msgid "could not parse HEAD commit"
 msgstr "върховото подаване „HEAD“ не може да бъде прочетено"
 
-#: sequencer.c:1107 sequencer.c:1673
+#: sequencer.c:1235 sequencer.c:1832
 msgid "unable to parse commit author"
 msgstr "авторът на подаването не може да бъде анализиран"
 
-#: sequencer.c:1117 builtin/am.c:1630 builtin/merge.c:643
+#: sequencer.c:1245 builtin/am.c:1630 builtin/merge.c:645
 msgid "git write-tree failed to write a tree"
 msgstr "Командата „git write-tree“ не успя да запише обект-дърво"
 
-#: sequencer.c:1134 sequencer.c:1186
+#: sequencer.c:1262 sequencer.c:1317
 #, c-format
 msgid "unable to read commit message from '%s'"
 msgstr "съобщението за подаване не може да бъде прочетено от „%s“"
 
-#: sequencer.c:1154 builtin/am.c:1650 builtin/commit.c:1594 builtin/merge.c:826
-#: builtin/merge.c:851
+#: sequencer.c:1284 builtin/am.c:1650 builtin/commit.c:1631 builtin/merge.c:825
+#: builtin/merge.c:850
 msgid "failed to write commit object"
 msgstr "обектът за подаването не може да бъде записан"
 
-#: sequencer.c:1213
+#: sequencer.c:1344
 #, c-format
 msgid "could not parse commit %s"
 msgstr "подаването „%s“ не може да бъде анализирано"
 
-#: sequencer.c:1218
+#: sequencer.c:1349
 #, c-format
 msgid "could not parse parent commit %s"
 msgstr "родителското подаване „%s“ не може да бъде анализирано"
 
-#: sequencer.c:1347
-#, c-format
-msgid ""
-"unexpected 1st line of squash message:\n"
-"\n"
-"\t%.*s"
-msgstr ""
-"неочакван първи ред на съобщението при смачкване:\n"
-"\n"
-"    %.*s"
-
-#: sequencer.c:1353
-#, c-format
-msgid ""
-"invalid 1st line of squash message:\n"
-"\n"
-"\t%.*s"
-msgstr ""
-"неправилен първи ред на съобщението при смачкване:\n"
-"\n"
-"    %.*s"
-
-#: sequencer.c:1359 sequencer.c:1384
+#: sequencer.c:1500 sequencer.c:1525
 #, c-format
 msgid "This is a combination of %d commits."
 msgstr "Това е обединение от %d подавания"
 
-#: sequencer.c:1368 sequencer.c:3265
+#: sequencer.c:1510 sequencer.c:4355
 msgid "need a HEAD to fixup"
-msgstr "За смачкване ви трябва указател „HEAD“"
+msgstr "За вкарване в предходното подаване ви трябва указател „HEAD“"
 
-#: sequencer.c:1370
+#: sequencer.c:1512 sequencer.c:2729
 msgid "could not read HEAD"
 msgstr "указателят „HEAD“ не може да се прочете"
 
-#: sequencer.c:1372
+#: sequencer.c:1514
 msgid "could not read HEAD's commit message"
 msgstr ""
 "съобщението за подаване към указателя „HEAD“ не може да бъде прочетено: %s"
 
-#: sequencer.c:1378
+#: sequencer.c:1520
 #, c-format
 msgid "cannot write '%s'"
 msgstr "„%s“ не може да се запази"
 
-#: sequencer.c:1387 git-rebase--interactive.sh:452
+#: sequencer.c:1527 git-rebase--interactive.sh:457
 msgid "This is the 1st commit message:"
 msgstr "Това е 1-то съобщение при подаване:"
 
-#: sequencer.c:1395
+#: sequencer.c:1535
 #, c-format
 msgid "could not read commit message of %s"
 msgstr "съобщението за подаване към „%s“ не може да бъде прочетено"
 
-#: sequencer.c:1402
+#: sequencer.c:1542
 #, c-format
 msgid "This is the commit message #%d:"
 msgstr "Това е съобщение при подаване №%d:"
 
-#: sequencer.c:1407
+#: sequencer.c:1548
 #, c-format
 msgid "The commit message #%d will be skipped:"
 msgstr "Съобщение при подаване №%d ще бъде прескочено:"
 
-#: sequencer.c:1412
+#: sequencer.c:1553
 #, c-format
 msgid "unknown command: %d"
 msgstr "непозната команда: %d"
 
-#: sequencer.c:1479
+#: sequencer.c:1631
 msgid "your index file is unmerged."
 msgstr "индексът не е слят."
 
-#: sequencer.c:1498
+#: sequencer.c:1638
+msgid "cannot fixup root commit"
+msgstr "началното подаване не може да се вкара в предходното му"
+
+#: sequencer.c:1657
 #, c-format
 msgid "commit %s is a merge but no -m option was given."
 msgstr "подаването „%s“ е сливане, но не е дадена опцията „-m“"
 
-#: sequencer.c:1506
+#: sequencer.c:1665
 #, c-format
 msgid "commit %s does not have parent %d"
 msgstr "подаването „%s“ няма родител %d"
 
-#: sequencer.c:1510
+#: sequencer.c:1669
 #, c-format
 msgid "mainline was specified but commit %s is not a merge."
 msgstr "указано е базово подаване, но подаването „%s“ не е сливане."
 
-#: sequencer.c:1516
+#: sequencer.c:1675
 #, c-format
 msgid "cannot get commit message for %s"
 msgstr "неуспешно извличане на съобщението за подаване на „%s“"
 
 #. TRANSLATORS: The first %s will be a "todo" command like
 #. "revert" or "pick", the second %s a SHA1.
-#: sequencer.c:1535
+#: sequencer.c:1694
 #, c-format
 msgid "%s: cannot parse parent commit %s"
 msgstr "%s: неразпозната стойност за родителското подаване „%s“"
 
-#: sequencer.c:1600 sequencer.c:2397
+#: sequencer.c:1759
 #, c-format
 msgid "could not rename '%s' to '%s'"
 msgstr "„%s“ не може да се преименува на „%s“"
 
-#: sequencer.c:1654
+#: sequencer.c:1813
 #, c-format
 msgid "could not revert %s... %s"
 msgstr "подаването „%s“… не може да бъде отменено: „%s“"
 
-#: sequencer.c:1655
+#: sequencer.c:1814
 #, c-format
 msgid "could not apply %s... %s"
 msgstr "подаването „%s“… не може да бъде приложено: „%s“"
 
-#: sequencer.c:1702
+#: sequencer.c:1864
 msgid "empty commit set passed"
 msgstr "зададено е празно множество от подавания"
 
-#: sequencer.c:1712
+#: sequencer.c:1874
 #, c-format
 msgid "git %s: failed to read the index"
 msgstr "git %s: неуспешно изчитане на индекса"
 
-#: sequencer.c:1718
+#: sequencer.c:1881
 #, c-format
 msgid "git %s: failed to refresh the index"
 msgstr "git %s: неуспешно обновяване на индекса"
 
-#: sequencer.c:1792
+#: sequencer.c:1961
 #, c-format
 msgid "%s does not accept arguments: '%s'"
 msgstr "„%s“ не приема аргументи: „%s“"
 
-#: sequencer.c:1801
+#: sequencer.c:1970
 #, c-format
 msgid "missing arguments for %s"
 msgstr "„%s“ изисква аргументи"
 
-#: sequencer.c:1844
+#: sequencer.c:2029
 #, c-format
 msgid "invalid line %d: %.*s"
 msgstr "неправилен ред %d: %.*s"
 
-#: sequencer.c:1852
+#: sequencer.c:2037
 #, c-format
 msgid "cannot '%s' without a previous commit"
 msgstr "Без предишно подаване не може да се изпълни „%s“"
 
-#: sequencer.c:1883 sequencer.c:3056 sequencer.c:3091
+#: sequencer.c:2085 sequencer.c:4138 sequencer.c:4173
 #, c-format
 msgid "could not read '%s'."
 msgstr "от „%s“ не може да се чете."
 
-#: sequencer.c:1906
+#: sequencer.c:2108
 msgid "please fix this using 'git rebase --edit-todo'."
 msgstr "коригирайте това чрез „git rebase --edit-todo“."
 
-#: sequencer.c:1908
+#: sequencer.c:2110
 #, c-format
 msgid "unusable instruction sheet: '%s'"
 msgstr "неизползваем файл с описание на предстоящите действия: „%s“"
 
-#: sequencer.c:1913
+#: sequencer.c:2115
 msgid "no commits parsed."
 msgstr "никое от подаванията не може да се разпознае."
 
-#: sequencer.c:1924
+#: sequencer.c:2126
 msgid "cannot cherry-pick during a revert."
 msgstr ""
 "по време на отмяна на подаване не може да се извърши отбиране на подаване."
 
-#: sequencer.c:1926
+#: sequencer.c:2128
 msgid "cannot revert during a cherry-pick."
 msgstr "по време на отбиране не може да се извърши отмяна на подаване."
 
-#: sequencer.c:1993
+#: sequencer.c:2195
 #, c-format
 msgid "invalid key: %s"
 msgstr "неправилен ключ: „%s“"
 
-#: sequencer.c:1996
+#: sequencer.c:2198
 #, c-format
 msgid "invalid value for %s: %s"
 msgstr "неправилна стойност за „%s“: „%s“"
 
-#: sequencer.c:2062
+#: sequencer.c:2269
+msgid "unusable squash-onto"
+msgstr "подаването, в което другите да се вкарат, не може да се използва"
+
+#: sequencer.c:2285
 #, c-format
 msgid "malformed options sheet: '%s'"
 msgstr "неправилен файл с опции: „%s“"
 
-#: sequencer.c:2100
+#: sequencer.c:2323
 msgid "a cherry-pick or revert is already in progress"
 msgstr ""
 "в момента вече се извършва отбиране на подавания или пребазиране на клона"
 
-#: sequencer.c:2101
+#: sequencer.c:2324
 msgid "try \"git cherry-pick (--continue | --quit | --abort)\""
 msgstr "използвайте „git cherry-pick (--continue | --quit | --abort)“"
 
-#: sequencer.c:2104
+#: sequencer.c:2327
 #, c-format
 msgid "could not create sequencer directory '%s'"
 msgstr "директорията за секвенсора „%s“ не може да бъде създадена"
 
-#: sequencer.c:2118
+#: sequencer.c:2341
 msgid "could not lock HEAD"
 msgstr "указателят „HEAD“ не може да се заключи"
 
-#: sequencer.c:2173 sequencer.c:2761
+#: sequencer.c:2396 sequencer.c:3403
 msgid "no cherry-pick or revert in progress"
 msgstr ""
 "в момента не се извършва отбиране на подавания или пребазиране на клона"
 
-#: sequencer.c:2175
+#: sequencer.c:2398
 msgid "cannot resolve HEAD"
 msgstr "Подаването сочено от указателя „HEAD“ не може да бъде открито"
 
-#: sequencer.c:2177 sequencer.c:2212
+#: sequencer.c:2400 sequencer.c:2435
 msgid "cannot abort from a branch yet to be born"
 msgstr ""
 "действието не може да бъде преустановено, когато сте на клон, който тепърва "
 "предстои да бъде създаден"
 
-#: sequencer.c:2198 builtin/grep.c:720
+#: sequencer.c:2421 builtin/grep.c:720
 #, c-format
 msgid "cannot open '%s'"
 msgstr "„%s“ не може да бъде отворен"
 
-#: sequencer.c:2200
+#: sequencer.c:2423
 #, c-format
 msgid "cannot read '%s': %s"
 msgstr "„%s“ не може да бъде прочетен: %s"
 
-#: sequencer.c:2201
+#: sequencer.c:2424
 msgid "unexpected end of file"
 msgstr "неочакван край на файл"
 
-#: sequencer.c:2207
+#: sequencer.c:2430
 #, c-format
 msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
 msgstr ""
 "запазеният преди започването на отбирането файл за указателя „HEAD“ — „%s“ е "
 "повреден"
 
-#: sequencer.c:2218
+#: sequencer.c:2441
 msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
 msgstr ""
 "Изглежда указателят „HEAD“ е променен.  Проверете към какво сочи.\n"
 "Не се правят промени."
 
-#: sequencer.c:2324 sequencer.c:2679
+#: sequencer.c:2545 sequencer.c:3321
 #, c-format
 msgid "could not update %s"
 msgstr "„%s“ не може да се обнови"
 
-#: sequencer.c:2362 sequencer.c:2659
+#: sequencer.c:2583 sequencer.c:3301
 msgid "cannot read HEAD"
 msgstr "указателят „HEAD“ не може да бъде прочетен"
 
-#: sequencer.c:2402 builtin/difftool.c:639
+#: sequencer.c:2618 sequencer.c:2622 builtin/difftool.c:639
 #, c-format
 msgid "could not copy '%s' to '%s'"
 msgstr "„%s“ не може да се копира като „%s“"
 
-#: sequencer.c:2421
+#: sequencer.c:2641
 msgid "could not read index"
 msgstr "индексът не може да бъде прочетен"
 
-#: sequencer.c:2426
+#: sequencer.c:2646
 #, c-format
 msgid ""
 "execution failed: %s\n"
@@ -3696,11 +4012,11 @@ msgstr ""
 "    git rebase --continue\n"
 "\n"
 
-#: sequencer.c:2432
+#: sequencer.c:2652
 msgid "and made changes to the index and/or the working tree\n"
 msgstr "и промени индекса и/или работното дърво\n"
 
-#: sequencer.c:2438
+#: sequencer.c:2658
 #, c-format
 msgid ""
 "execution succeeded: %s\n"
@@ -3717,17 +4033,62 @@ msgstr ""
 "    git rebase --continue\n"
 "\n"
 
-#: sequencer.c:2497
+#: sequencer.c:2771
+msgid "writing fake root commit"
+msgstr "запазване на фалшиво начално подаване"
+
+#: sequencer.c:2776
+msgid "writing squash-onto"
+msgstr "запазване на подаването, в което другите да се вкарат"
+
+#: sequencer.c:2811
+#, c-format
+msgid "failed to find tree of %s"
+msgstr "дървото, сочено от „%s“, не може да бъде открито"
+
+#: sequencer.c:2829
+msgid "could not write index"
+msgstr "индексът не може да бъде записан"
+
+#: sequencer.c:2861
+msgid "cannot merge without a current revision"
+msgstr "без текущо подаване не може да се слива"
+
+#: sequencer.c:2884
+#, c-format
+msgid "could not resolve '%s'"
+msgstr "„%s“ не може да бъде открит"
+
+#: sequencer.c:2906
+#, c-format
+msgid "could not get commit message of '%s'"
+msgstr "съобщението за подаване към „%s“ не може да бъде получено"
+
+#: sequencer.c:2916 sequencer.c:2941
+#, c-format
+msgid "could not write '%s'"
+msgstr "„%s“ не може да се запише"
+
+#: sequencer.c:3005
+#, c-format
+msgid "could not even attempt to merge '%.*s'"
+msgstr "сливането на „%.*s“ не може даже да започне"
+
+#: sequencer.c:3021
+msgid "merge: Unable to write new index file"
+msgstr "сливане: новият индекс не може да бъде запазен"
+
+#: sequencer.c:3088
 #, c-format
 msgid "Applied autostash.\n"
 msgstr "Автоматично скатаното е приложено.\n"
 
-#: sequencer.c:2509
+#: sequencer.c:3100
 #, c-format
 msgid "cannot store %s"
 msgstr "„%s“ не може да бъде запазен"
 
-#: sequencer.c:2512 git-rebase.sh:178
+#: sequencer.c:3103 git-rebase.sh:188
 #, c-format
 msgid ""
 "Applying autostash resulted in conflicts.\n"
@@ -3738,52 +4099,71 @@ msgstr ""
 "надеждно скатани.  Можете да пробвате да ги приложите чрез „git stash pop“\n"
 "или да ги изхвърлите чрез „git stash drop“, когато поискате.\n"
 
-#: sequencer.c:2595
+#: sequencer.c:3134
+#, c-format
+msgid ""
+"Could not execute the todo command\n"
+"\n"
+"    %.*s\n"
+"It has been rescheduled; To edit the command before continuing, please\n"
+"edit the todo list first:\n"
+"\n"
+"    git rebase --edit-todo\n"
+"    git rebase --continue\n"
+msgstr ""
+"Следната запланувана команда не може да бъде изпълнена:\n"
+"\n"
+"    %.*s\n"
+"\n"
+"Тя е запланувана за по-късно.  За да редактирате командата преди "
+"изпълнение,\n"
+"редактирайте списъка за изпълнение:\n"
+"\n"
+"    git rebase --edit-todo\n"
+"    git rebase --continue\n"
+
+#: sequencer.c:3202
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
 msgstr "Спиране при „%s“…  %.*s\n"
 
-#: sequencer.c:2637
+#: sequencer.c:3264
 #, c-format
 msgid "unknown command %d"
 msgstr "непозната команда %d"
 
-#: sequencer.c:2667
+#: sequencer.c:3309
 msgid "could not read orig-head"
 msgstr "указателят за „orig-head“ не може да се прочете"
 
-#: sequencer.c:2672 sequencer.c:3262
+#: sequencer.c:3314 sequencer.c:4352
 msgid "could not read 'onto'"
 msgstr "указателят за „onto“ не може да се прочете"
 
-#: sequencer.c:2686
+#: sequencer.c:3328
 #, c-format
 msgid "could not update HEAD to %s"
 msgstr "„HEAD“ не може да бъде обновен до „%s“"
 
-#: sequencer.c:2770
+#: sequencer.c:3414
 msgid "cannot rebase: You have unstaged changes."
 msgstr "не може да пребазирате, защото има промени, които не са в индекса."
 
-#: sequencer.c:2775
-msgid "could not remove CHERRY_PICK_HEAD"
-msgstr "указателят „CHERRY_PICK_HEAD“ не може да бъде изтрит"
-
-#: sequencer.c:2784
+#: sequencer.c:3423
 msgid "cannot amend non-existing commit"
 msgstr "несъществуващо подаване не може да се поправи"
 
-#: sequencer.c:2786
+#: sequencer.c:3425
 #, c-format
 msgid "invalid file: '%s'"
 msgstr "неправилен файл: „%s“"
 
-#: sequencer.c:2788
+#: sequencer.c:3427
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr "неправилно съдържание: „%s“"
 
-#: sequencer.c:2791
+#: sequencer.c:3430
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
@@ -3793,38 +4173,47 @@ msgstr ""
 "В работното дърво има неподадени промени.  Първо ги подайте, а след това\n"
 "отново изпълнете „git rebase --continue“."
 
-#: sequencer.c:2801
+#: sequencer.c:3455 sequencer.c:3493
+#, c-format
+msgid "could not write file: '%s'"
+msgstr "файлът „%s“ не може да бъде записан"
+
+#: sequencer.c:3508
+msgid "could not remove CHERRY_PICK_HEAD"
+msgstr "указателят „CHERRY_PICK_HEAD“ не може да бъде изтрит"
+
+#: sequencer.c:3515
 msgid "could not commit staged changes."
 msgstr "промените в индекса не могат да бъдат подадени."
 
-#: sequencer.c:2881
+#: sequencer.c:3612
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr "%s: не може да се отбере „%s“"
 
-#: sequencer.c:2885
+#: sequencer.c:3616
 #, c-format
 msgid "%s: bad revision"
 msgstr "%s: неправилна версия"
 
-#: sequencer.c:2918
+#: sequencer.c:3649
 msgid "can't revert as initial commit"
 msgstr "първоначалното подаване не може да бъде отменено"
 
-#: sequencer.c:3023
+#: sequencer.c:4098
 msgid "make_script: unhandled options"
 msgstr "make_script: неподдържани опции"
 
-#: sequencer.c:3026
+#: sequencer.c:4101
 msgid "make_script: error preparing revisions"
 msgstr "make_script: грешка при подготовката на версии"
 
-#: sequencer.c:3060 sequencer.c:3095
+#: sequencer.c:4142 sequencer.c:4177
 #, c-format
 msgid "unusable todo list: '%s'"
 msgstr "неуспешно изтриване на списъка за изпълнение: „%s“"
 
-#: sequencer.c:3146
+#: sequencer.c:4236
 #, c-format
 msgid ""
 "unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
@@ -3832,7 +4221,7 @@ msgstr ""
 "Непозната стойност „%s“ за настройката „rebase.missingCommitsCheck“.  "
 "Настройката се прескача."
 
-#: sequencer.c:3212
+#: sequencer.c:4302
 #, c-format
 msgid ""
 "Warning: some commits may have been dropped accidentally.\n"
@@ -3841,7 +4230,7 @@ msgstr ""
 "Предупреждение: някои подавания може да са пропуснати.\n"
 "Пропуснати подавания (новите са най-отгоре):\n"
 
-#: sequencer.c:3219
+#: sequencer.c:4309
 #, c-format
 msgid ""
 "To avoid this message, use \"drop\" to explicitly remove a commit.\n"
@@ -3858,7 +4247,7 @@ msgstr ""
 "предупреждение)\n"
 "или „error“ (считане за грешка).\n"
 
-#: sequencer.c:3231
+#: sequencer.c:4321
 #, c-format
 msgid ""
 "You can fix this with 'git rebase --edit-todo' and then run 'git rebase --"
@@ -3869,27 +4258,21 @@ msgstr ""
 "continue“ след това.\n"
 "Може и да преустановите пребазирането с командата „git rebase --abort“.\n"
 
-#: sequencer.c:3244 sequencer.c:3304 wrapper.c:225 wrapper.c:395
-#: builtin/am.c:779
-#, c-format
-msgid "could not open '%s' for writing"
-msgstr "„%s“ не може да бъде отворен за запис"
-
-#: sequencer.c:3285
+#: sequencer.c:4375
 #, c-format
 msgid "could not parse commit '%s'"
 msgstr "подаването „%s“ не може да бъде анализирано"
 
-#: sequencer.c:3401
+#: sequencer.c:4490
 msgid "the script was already rearranged."
 msgstr "скриптът вече е преподреден."
 
-#: setup.c:122
+#: setup.c:123
 #, c-format
 msgid "'%s' is outside repository"
 msgstr "„%s“ е извън хранилището"
 
-#: setup.c:171
+#: setup.c:172
 #, c-format
 msgid ""
 "%s: no such path in the working tree.\n"
@@ -3900,7 +4283,7 @@ msgstr ""
 "\n"
 "    git КОМАНДА -- ПЪТ…"
 
-#: setup.c:184
+#: setup.c:185
 #, c-format
 msgid ""
 "ambiguous argument '%s': unknown revision or path not in the working tree.\n"
@@ -3913,12 +4296,12 @@ msgstr ""
 "\n"
 "    git КОМАНДА [ВЕРСИЯ…] -- [ФАЙЛ…]"
 
-#: setup.c:233
+#: setup.c:234
 #, c-format
 msgid "option '%s' must come before non-option arguments"
 msgstr "опцията „%s“ трябва да е преди първия аргумент, който не е опция"
 
-#: setup.c:252
+#: setup.c:253
 #, c-format
 msgid ""
 "ambiguous argument '%s': both revision and filename\n"
@@ -3930,95 +4313,95 @@ msgstr ""
 "\n"
 "    git КОМАНДА [ВЕРСИЯ…] -- [ФАЙЛ…]"
 
-#: setup.c:388
+#: setup.c:389
 msgid "unable to set up work tree using invalid config"
 msgstr ""
 "не може да се зададе текуща работна директория при неправилни настройки"
 
-#: setup.c:395
+#: setup.c:393
 msgid "this operation must be run in a work tree"
 msgstr "тази команда трябва да се изпълни в работно дърво"
 
-#: setup.c:506
+#: setup.c:503
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "Очаква се версия на хранилището на git <= %d, а не %d"
 
-#: setup.c:514
+#: setup.c:511
 msgid "unknown repository extensions found:"
 msgstr "открити са непознати разширения в хранилището:"
 
-#: setup.c:533
+#: setup.c:530
 #, c-format
 msgid "error opening '%s'"
 msgstr "„%s“ не може да се отвори"
 
-#: setup.c:535
+#: setup.c:532
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr "прекалено голям файл „.git“: „%s“"
 
-#: setup.c:537
+#: setup.c:534
 #, c-format
 msgid "error reading %s"
 msgstr "грешка при прочитане на „%s“"
 
-#: setup.c:539
+#: setup.c:536
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "неправилен формат на gitfile: %s"
 
-#: setup.c:541
+#: setup.c:538
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "липсва път в gitfile: „%s“"
 
-#: setup.c:543
+#: setup.c:540
 #, c-format
 msgid "not a git repository: %s"
 msgstr "не е хранилище на Git: %s"
 
-#: setup.c:642
+#: setup.c:639
 #, c-format
 msgid "'$%s' too big"
 msgstr "„%s“ е прекалено голям"
 
-#: setup.c:656
+#: setup.c:653
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "не е хранилище на git: „%s“"
 
-#: setup.c:685 setup.c:687 setup.c:718
+#: setup.c:682 setup.c:684 setup.c:715
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "не може да се влезе в директорията „%s“"
 
-#: setup.c:690 setup.c:746 setup.c:756 setup.c:795 setup.c:803 setup.c:818
+#: setup.c:687 setup.c:743 setup.c:753 setup.c:792 setup.c:800 setup.c:815
 msgid "cannot come back to cwd"
 msgstr "процесът не може да се върне към предишната работна директория"
 
-#: setup.c:816
+#: setup.c:813
 #, c-format
 msgid "not a git repository (or any of the parent directories): %s"
 msgstr ""
 "нито тази, нито която и да е от по-горните директории, не е хранилище на "
 "git: %s"
 
-#: setup.c:827
+#: setup.c:824
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "не може да бъде получена информация чрез „stat“ за „%*s%s%s“"
 
-#: setup.c:1057
+#: setup.c:1054
 msgid "Unable to read current working directory"
 msgstr "Текущата работна директория не може да бъде прочетена"
 
-#: setup.c:1069 setup.c:1075
+#: setup.c:1066 setup.c:1072
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "не може да се влезе в директорията „%s“"
 
-#: setup.c:1088
+#: setup.c:1085
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -4029,7 +4412,7 @@ msgstr ""
 "Git работи в рамките на една файлова система, защото променливата на средата "
 "„GIT_DISCOVERY_ACROSS_FILESYSTEM“ не е зададена."
 
-#: setup.c:1172
+#: setup.c:1168
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -4039,53 +4422,53 @@ msgstr ""
 "(0%.3o).\n"
 "Собственикът на файла трябва да има права за писане и четене."
 
-#: setup.c:1215
+#: setup.c:1211
 msgid "open /dev/null or dup failed"
 msgstr "неуспешно изпълнение на „open“ или „dup“ върху „/dev/null“"
 
-#: setup.c:1230
+#: setup.c:1226
 msgid "fork failed"
 msgstr "неуспешно изпълнение на „fork“"
 
-#: setup.c:1235
+#: setup.c:1231
 msgid "setsid failed"
 msgstr "неуспешно изпълнение на „setsid“"
 
-#: sha1_file.c:592
+#: sha1-file.c:625
 #, c-format
 msgid "path '%s' does not exist"
 msgstr "пътят „%s“ не съществува."
 
-#: sha1_file.c:618
+#: sha1-file.c:651
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr "все още не се поддържа еталонно хранилище „%s“ като свързано."
 
-#: sha1_file.c:624
+#: sha1-file.c:657
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr "еталонното хранилище „%s“ не е локално"
 
-#: sha1_file.c:630
+#: sha1-file.c:663
 #, c-format
 msgid "reference repository '%s' is shallow"
 msgstr "еталонното хранилище „%s“ е плитко"
 
-#: sha1_file.c:638
+#: sha1-file.c:671
 #, c-format
 msgid "reference repository '%s' is grafted"
 msgstr "еталонното хранилище „%s“ е с присаждане"
 
-#: sha1_name.c:422
+#: sha1-name.c:442
 #, c-format
 msgid "short SHA1 %s is ambiguous"
 msgstr "късият SHA1 „%s“ не е еднозначен"
 
-#: sha1_name.c:433
+#: sha1-name.c:453
 msgid "The candidates are:"
 msgstr "Възможностите са:"
 
-#: sha1_name.c:693
+#: sha1-name.c:695
 msgid ""
 "Git normally never creates a ref that ends with 40 hex characters\n"
 "because it will be ignored when you just specify 40-hex. These refs\n"
@@ -4109,71 +4492,71 @@ msgstr ""
 "спрете това съобщение като изпълните командата:\n"
 "„git config advice.objectNameWarning false“"
 
-#: submodule.c:96 submodule.c:130
+#: submodule.c:97 submodule.c:131
 msgid "Cannot change unmerged .gitmodules, resolve merge conflicts first"
 msgstr ""
 "Неслетите файлове „.gitmodules“ не могат да бъдат променяни.  Първо "
 "коригирайте конфликтите"
 
-#: submodule.c:100 submodule.c:134
+#: submodule.c:101 submodule.c:135
 #, c-format
 msgid "Could not find section in .gitmodules where path=%s"
 msgstr "Във файла „.gitmodules“ липсва раздел за директория „path=%s“"
 
-#: submodule.c:108
+#: submodule.c:109
 #, c-format
 msgid "Could not update .gitmodules entry %s"
 msgstr "Записът „%s“ във файла „.gitmodules“ не може да бъде променен"
 
-#: submodule.c:141
+#: submodule.c:142
 #, c-format
 msgid "Could not remove .gitmodules entry for %s"
 msgstr "Записът „%s“ във файла „.gitmodules“ не може да бъде изтрит"
 
-#: submodule.c:152
+#: submodule.c:153
 msgid "staging updated .gitmodules failed"
 msgstr "неуспешно добавяне на променения файл „.gitmodules“ в индекса"
 
-#: submodule.c:312
+#: submodule.c:315
 #, c-format
 msgid "in unpopulated submodule '%s'"
 msgstr "в неподготвения подмодул „%s“"
 
-#: submodule.c:343
+#: submodule.c:346
 #, c-format
 msgid "Pathspec '%s' is in submodule '%.*s'"
 msgstr "Пътят „%s“ е в подмодула „%.*s“"
 
-#: submodule.c:833
+#: submodule.c:837
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "записът за подмодула „%s“ (%s) е %s, а не подаване!"
 
-#: submodule.c:1065 builtin/branch.c:648 builtin/submodule--helper.c:1724
+#: submodule.c:1069 builtin/branch.c:651 builtin/submodule--helper.c:1743
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "Не може да се открие към какво сочи указателят „HEAD“"
 
-#: submodule.c:1370
+#: submodule.c:1375
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "„%s“ не е хранилище на git"
 
-#: submodule.c:1508
+#: submodule.c:1513
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "командата „git status“ не може да се изпълни в подмодула „%s“"
 
-#: submodule.c:1521
+#: submodule.c:1526
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "командата „git status“ не може да се изпълни в подмодула „%s“"
 
-#: submodule.c:1614
+#: submodule.c:1619
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "индексът на подмодула „%s“ не е чист"
 
-#: submodule.c:1878
+#: submodule.c:1718
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
@@ -4181,18 +4564,18 @@ msgstr ""
 "не се поддържа „relocate_gitdir“ за подмодула „%s“, който има повече от едно "
 "работно дърво"
 
-#: submodule.c:1890 submodule.c:1946
+#: submodule.c:1730 submodule.c:1786
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "името на подмодула „%s“ не може да бъде намерено"
 
-#: submodule.c:1894 builtin/submodule--helper.c:1246
-#: builtin/submodule--helper.c:1256
+#: submodule.c:1734 builtin/submodule--helper.c:1261
+#: builtin/submodule--helper.c:1271
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "Директорията „%s“ не може да бъде създадена"
 
-#: submodule.c:1897
+#: submodule.c:1737
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -4203,29 +4586,30 @@ msgstr ""
 "„%s“ към\n"
 "„%s“\n"
 
-#: submodule.c:1981
+#: submodule.c:1821
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "неуспешна обработка на поддиректориите в подмодула „%s“"
 
-#: submodule.c:2025
+#: submodule.c:1865
 msgid "could not start ls-files in .."
 msgstr "„ls-stat“ не може да се стартира в „..“"
 
-#: submodule.c:2045
-msgid "BUG: returned path string doesn't match cwd?"
-msgstr "ГРЕШКА: полученият низ за пътя не съвпада с върнатото от „cwd“"
-
-#: submodule.c:2064
+#: submodule.c:1904
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "„ls-tree“ завърши с неочакван изходен код: %d"
 
-#: submodule-config.c:263
+#: submodule-config.c:230
+#, c-format
+msgid "ignoring suspicious submodule name: %s"
+msgstr "игнориране на подозрително име на подмодул: „%s“"
+
+#: submodule-config.c:294
 msgid "negative values not allowed for submodule.fetchjobs"
 msgstr "настройката „submodule.fetchjobs“ не приема отрицателни стойности"
 
-#: submodule-config.c:436
+#: submodule-config.c:467
 #, c-format
 msgid "invalid value for %s"
 msgstr "Неправилна стойност за „%s“"
@@ -4241,7 +4625,7 @@ msgstr "неуспешно изпълнение на завършващата к
 msgid "unknown value '%s' for key '%s'"
 msgstr "непозната стойност „%s“ за настройката „%s“"
 
-#: trailer.c:539 trailer.c:544 builtin/remote.c:290
+#: trailer.c:539 trailer.c:544 builtin/remote.c:293
 #, c-format
 msgid "more than one %s"
 msgstr "стойността „%s“ се повтаря в настройките"
@@ -4284,17 +4668,21 @@ msgstr "временният файл не може да се отвори"
 msgid "could not rename temporary file to %s"
 msgstr "временният файл не може да се преименува на „%s“"
 
-#: transport.c:63
+#: transport.c:116
 #, c-format
 msgid "Would set upstream of '%s' to '%s' of '%s'\n"
 msgstr "Клонът „%s“ ще следи „%s“ от „%s“\n"
 
-#: transport.c:152
+#: transport.c:208
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "transport: неправилна опция за дълбочина: %s"
 
-#: transport.c:916
+#: transport.c:584
+msgid "could not parse transport.color.* config"
+msgstr "стойността на настройката „transport.color.*“ не може да се разпознае"
+
+#: transport.c:996
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -4303,7 +4691,7 @@ msgstr ""
 "Следните пътища за подмодули съдържат промени,\n"
 "които липсват от всички отдалечени хранилища:\n"
 
-#: transport.c:920
+#: transport.c:1000
 #, c-format
 msgid ""
 "\n"
@@ -4328,11 +4716,11 @@ msgstr ""
 "    git push\n"
 "\n"
 
-#: transport.c:928
+#: transport.c:1008
 msgid "Aborting."
 msgstr "Преустановяване на действието."
 
-#: transport-helper.c:1079
+#: transport-helper.c:1087
 #, c-format
 msgid "Could not read ref %s"
 msgstr "Указателят „%s“ не може да се прочете."
@@ -4349,11 +4737,11 @@ msgstr "неправилни права за достъп в запис в дъ
 msgid "empty filename in tree entry"
 msgstr "празно име на файл в запис в дърво"
 
-#: tree-walk.c:114
+#: tree-walk.c:113
 msgid "too-short tree file"
 msgstr "прекалено кратък файл-дърво"
 
-#: unpack-trees.c:108
+#: unpack-trees.c:111
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by checkout:\n"
@@ -4362,7 +4750,7 @@ msgstr ""
 "Изтеглянето ще презапише локалните промени на тези файлове:\n"
 "%%sПодайте или скатайте промените, за да преминете към нов клон."
 
-#: unpack-trees.c:110
+#: unpack-trees.c:113
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by checkout:\n"
@@ -4371,7 +4759,7 @@ msgstr ""
 "Изтеглянето ще презапише локалните промени на тези файлове:\n"
 "%%s"
 
-#: unpack-trees.c:113
+#: unpack-trees.c:116
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -4380,7 +4768,7 @@ msgstr ""
 "Сливането ще презапише локалните промени на тези файлове:\n"
 "%%sПодайте или скатайте промените, за да слеете."
 
-#: unpack-trees.c:115
+#: unpack-trees.c:118
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -4389,7 +4777,7 @@ msgstr ""
 "Сливането ще презапише локалните промени на тези файлове:\n"
 "%%s"
 
-#: unpack-trees.c:118
+#: unpack-trees.c:121
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by %s:\n"
@@ -4398,7 +4786,7 @@ msgstr ""
 "„%s“ ще презапише локалните промени на тези файлове:\n"
 "%%sПодайте или скатайте промените, за да извършите „%s“."
 
-#: unpack-trees.c:120
+#: unpack-trees.c:123
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by %s:\n"
@@ -4407,7 +4795,7 @@ msgstr ""
 "„%s“ ще презапише локалните промени на тези файлове:\n"
 "%%s"
 
-#: unpack-trees.c:125
+#: unpack-trees.c:128
 #, c-format
 msgid ""
 "Updating the following directories would lose untracked files in them:\n"
@@ -4416,7 +4804,7 @@ msgstr ""
 "Обновяването на следните директории ще изтрие неследените файлове в тях:\n"
 "%s"
 
-#: unpack-trees.c:129
+#: unpack-trees.c:132
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by checkout:\n"
@@ -4425,7 +4813,7 @@ msgstr ""
 "Изтеглянето ще изтрие тези неследени файлове в работното дърво:\n"
 "%%sПреместете ги или ги изтрийте, за да преминете на друг клон."
 
-#: unpack-trees.c:131
+#: unpack-trees.c:134
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by checkout:\n"
@@ -4434,7 +4822,7 @@ msgstr ""
 "Изтеглянето ще изтрие тези неследени файлове в работното дърво:\n"
 "%%s"
 
-#: unpack-trees.c:134
+#: unpack-trees.c:137
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by merge:\n"
@@ -4443,7 +4831,7 @@ msgstr ""
 "Сливането ще изтрие тези неследени файлове в работното дърво:\n"
 "%%sПреместете ги или ги изтрийте, за да слеете."
 
-#: unpack-trees.c:136
+#: unpack-trees.c:139
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by merge:\n"
@@ -4452,7 +4840,7 @@ msgstr ""
 "Сливането ще изтрие тези неследени файлове в работното дърво:\n"
 "%%s"
 
-#: unpack-trees.c:139
+#: unpack-trees.c:142
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by %s:\n"
@@ -4461,7 +4849,7 @@ msgstr ""
 "„%s“ ще изтрие тези неследени файлове в работното дърво:\n"
 "%%sПреместете ги или ги изтрийте, за да извършите „%s“."
 
-#: unpack-trees.c:141
+#: unpack-trees.c:144
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by %s:\n"
@@ -4470,7 +4858,7 @@ msgstr ""
 "„%s“ ще изтрие тези неследени файлове в работното дърво:\n"
 "%%s"
 
-#: unpack-trees.c:146
+#: unpack-trees.c:150
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by "
@@ -4480,7 +4868,7 @@ msgstr ""
 "Изтеглянето ще презапише тези неследени файлове в работното дърво:\n"
 "%%sПреместете ги или ги изтрийте, за да смените клон."
 
-#: unpack-trees.c:148
+#: unpack-trees.c:152
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by "
@@ -4490,7 +4878,7 @@ msgstr ""
 "Изтеглянето ще презапише тези неследени файлове в работното дърво:\n"
 "%%s"
 
-#: unpack-trees.c:151
+#: unpack-trees.c:155
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by merge:\n"
@@ -4499,7 +4887,7 @@ msgstr ""
 "Сливането ще презапише тези неследени файлове в работното дърво:\n"
 "%%sПреместете ги или ги изтрийте, за да слеете."
 
-#: unpack-trees.c:153
+#: unpack-trees.c:157
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by merge:\n"
@@ -4508,7 +4896,7 @@ msgstr ""
 "Сливането ще презапише тези неследени файлове в работното дърво:\n"
 "%%s"
 
-#: unpack-trees.c:156
+#: unpack-trees.c:160
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by %s:\n"
@@ -4517,7 +4905,7 @@ msgstr ""
 "„%s“ ще презапише тези неследени файлове в работното дърво:\n"
 "%%sПреместете ги или ги изтрийте, за да извършите „%s“."
 
-#: unpack-trees.c:158
+#: unpack-trees.c:162
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by %s:\n"
@@ -4526,12 +4914,12 @@ msgstr ""
 "„%s“ ще презапише тези неследени файлове в работното дърво:\n"
 "%%s"
 
-#: unpack-trees.c:165
+#: unpack-trees.c:170
 #, c-format
 msgid "Entry '%s' overlaps with '%s'.  Cannot bind."
 msgstr "Записът за „%s“ съвпада с този за „%s“.  Не може да се присвои."
 
-#: unpack-trees.c:168
+#: unpack-trees.c:173
 #, c-format
 msgid ""
 "Cannot update sparse checkout: the following entries are not up to date:\n"
@@ -4541,7 +4929,7 @@ msgstr ""
 "актуални:\n"
 "%s"
 
-#: unpack-trees.c:170
+#: unpack-trees.c:175
 #, c-format
 msgid ""
 "The following working tree files would be overwritten by sparse checkout "
@@ -4552,7 +4940,7 @@ msgstr ""
 "дърво:\n"
 "%s"
 
-#: unpack-trees.c:172
+#: unpack-trees.c:177
 #, c-format
 msgid ""
 "The following working tree files would be removed by sparse checkout "
@@ -4563,7 +4951,7 @@ msgstr ""
 "дърво:\n"
 "%s"
 
-#: unpack-trees.c:174
+#: unpack-trees.c:179
 #, c-format
 msgid ""
 "Cannot update submodule:\n"
@@ -4572,12 +4960,12 @@ msgstr ""
 "Подмодулът не може да бъде обновен:\n"
 "„%s“"
 
-#: unpack-trees.c:251
+#: unpack-trees.c:262
 #, c-format
 msgid "Aborting\n"
 msgstr "Преустановяване на действието\n"
 
-#: unpack-trees.c:333
+#: unpack-trees.c:344
 msgid "Checking out files"
 msgstr "Изтегляне на файлове"
 
@@ -4647,7 +5035,7 @@ msgid "could not open '%s' for reading and writing"
 msgstr "„%s“ не може да бъде отворен и за четене, и за запис"
 
 #: wrapper.c:227 wrapper.c:397 builtin/am.c:320 builtin/am.c:770
-#: builtin/am.c:862 builtin/merge.c:1044
+#: builtin/am.c:862 builtin/merge.c:1043
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "файлът не може да бъде прочетен: „%s“"
@@ -4661,161 +5049,161 @@ msgstr "няма достъп до „%s“"
 msgid "unable to get current working directory"
 msgstr "текущата работна директория е недостъпна"
 
-#: wt-status.c:151
+#: wt-status.c:154
 msgid "Unmerged paths:"
 msgstr "Неслети пътища:"
 
-#: wt-status.c:178 wt-status.c:205
+#: wt-status.c:181 wt-status.c:208
 #, c-format
 msgid "  (use \"git reset %s <file>...\" to unstage)"
 msgstr "  (използвайте „git reset %s ФАЙЛ…“, за да извадите ФАЙЛа от индекса)"
 
-#: wt-status.c:180 wt-status.c:207
+#: wt-status.c:183 wt-status.c:210
 msgid "  (use \"git rm --cached <file>...\" to unstage)"
 msgstr ""
 "  (използвайте „git rm --cached %s ФАЙЛ…“, за да извадите ФАЙЛа от индекса)"
 
-#: wt-status.c:184
+#: wt-status.c:187
 msgid "  (use \"git add <file>...\" to mark resolution)"
 msgstr ""
 "  (използвайте „git add ФАЙЛ…“, за да укажете разрешаването на конфликта)"
 
-#: wt-status.c:186 wt-status.c:190
+#: wt-status.c:189 wt-status.c:193
 msgid "  (use \"git add/rm <file>...\" as appropriate to mark resolution)"
 msgstr ""
 "  (използвайте „git add/rm ФАЙЛ…“, според решението, което избирате за "
 "конфликта)"
 
-#: wt-status.c:188
+#: wt-status.c:191
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr ""
 "  (използвайте „git rm ФАЙЛ…“, за да укажете разрешаването на конфликта)"
 
-#: wt-status.c:199 wt-status.c:1007
+#: wt-status.c:202 wt-status.c:1015
 msgid "Changes to be committed:"
 msgstr "Промени, които ще бъдат подадени:"
 
-#: wt-status.c:217 wt-status.c:1016
+#: wt-status.c:220 wt-status.c:1024
 msgid "Changes not staged for commit:"
 msgstr "Промени, които не са в индекса за подаване:"
 
-#: wt-status.c:221
+#: wt-status.c:224
 msgid "  (use \"git add <file>...\" to update what will be committed)"
 msgstr ""
 "  (използвайте „git add ФАЙЛ…“, за да обновите съдържанието за подаване)"
 
-#: wt-status.c:223
+#: wt-status.c:226
 msgid "  (use \"git add/rm <file>...\" to update what will be committed)"
 msgstr ""
 "  (използвайте „git add/rm ФАЙЛ…“, за да обновите съдържанието за подаване)"
 
-#: wt-status.c:224
+#: wt-status.c:227
 msgid ""
 "  (use \"git checkout -- <file>...\" to discard changes in working directory)"
 msgstr ""
 "  (използвайте „git checkout -- ФАЙЛ…“, за да отхвърлите промените в "
 "работното дърво)"
 
-#: wt-status.c:226
+#: wt-status.c:229
 msgid "  (commit or discard the untracked or modified content in submodules)"
 msgstr ""
 "  (подайте или отхвърлете неследеното или промененото съдържание в "
 "подмодулите)"
 
-#: wt-status.c:238
+#: wt-status.c:241
 #, c-format
 msgid "  (use \"git %s <file>...\" to include in what will be committed)"
 msgstr ""
 "  (използвайте „git %s ФАЙЛ…“, за да определите какво включвате в подаването)"
 
-#: wt-status.c:253
+#: wt-status.c:256
 msgid "both deleted:"
 msgstr "изтрити в двата случая:"
 
-#: wt-status.c:255
+#: wt-status.c:258
 msgid "added by us:"
 msgstr "добавени от вас:"
 
-#: wt-status.c:257
+#: wt-status.c:260
 msgid "deleted by them:"
 msgstr "изтрити от тях:"
 
-#: wt-status.c:259
+#: wt-status.c:262
 msgid "added by them:"
 msgstr "добавени от тях:"
 
-#: wt-status.c:261
+#: wt-status.c:264
 msgid "deleted by us:"
 msgstr "изтрити от вас:"
 
-#: wt-status.c:263
+#: wt-status.c:266
 msgid "both added:"
 msgstr "добавени и в двата случая:"
 
-#: wt-status.c:265
+#: wt-status.c:268
 msgid "both modified:"
 msgstr "променени и в двата случая:"
 
-#: wt-status.c:275
+#: wt-status.c:278
 msgid "new file:"
 msgstr "нов файл:"
 
-#: wt-status.c:277
+#: wt-status.c:280
 msgid "copied:"
 msgstr "копиран:"
 
-#: wt-status.c:279
+#: wt-status.c:282
 msgid "deleted:"
 msgstr "изтрит:"
 
-#: wt-status.c:281
+#: wt-status.c:284
 msgid "modified:"
 msgstr "променен:"
 
-#: wt-status.c:283
+#: wt-status.c:286
 msgid "renamed:"
 msgstr "преименуван:"
 
-#: wt-status.c:285
+#: wt-status.c:288
 msgid "typechange:"
 msgstr "смяна на вида:"
 
-#: wt-status.c:287
+#: wt-status.c:290
 msgid "unknown:"
 msgstr "непозната промяна:"
 
-#: wt-status.c:289
+#: wt-status.c:292
 msgid "unmerged:"
 msgstr "неслят:"
 
-#: wt-status.c:369
+#: wt-status.c:372
 msgid "new commits, "
 msgstr "нови подавания, "
 
-#: wt-status.c:371
+#: wt-status.c:374
 msgid "modified content, "
 msgstr "променено съдържание, "
 
-#: wt-status.c:373
+#: wt-status.c:376
 msgid "untracked content, "
 msgstr "неследено съдържание, "
 
-#: wt-status.c:847
+#: wt-status.c:853
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] "Има %d скатаване."
 msgstr[1] "Има %d скатавания."
 
-#: wt-status.c:879
+#: wt-status.c:885
 msgid "Submodules changed but not updated:"
 msgstr "Подмодулите са променени, но не са обновени:"
 
-#: wt-status.c:881
+#: wt-status.c:887
 msgid "Submodule changes to be committed:"
 msgstr "Промени в подмодулите за подаване:"
 
-#: wt-status.c:963
+#: wt-status.c:969
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -4823,241 +5211,241 @@ msgstr ""
 "Не променяйте и не изтривайте горния ред.\n"
 "Всичко отдолу ще бъде изтрито."
 
-#: wt-status.c:1076
+#: wt-status.c:1084
 msgid "You have unmerged paths."
 msgstr "Някои пътища не са слети."
 
-#: wt-status.c:1079
+#: wt-status.c:1087
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (коригирайте конфликтите и изпълнете „git commit“)"
 
-#: wt-status.c:1081
+#: wt-status.c:1089
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (използвайте „git merge --abort“, за да преустановите сливането)"
 
-#: wt-status.c:1086
+#: wt-status.c:1094
 msgid "All conflicts fixed but you are still merging."
 msgstr "Всички конфликти са решени, но продължавате сливането."
 
-#: wt-status.c:1089
+#: wt-status.c:1097
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (използвайте „git commit“, за да завършите сливането)"
 
-#: wt-status.c:1099
+#: wt-status.c:1107
 msgid "You are in the middle of an am session."
 msgstr "В момента прилагате поредица от кръпки чрез „git am“."
 
-#: wt-status.c:1102
+#: wt-status.c:1110
 msgid "The current patch is empty."
 msgstr "Текущата кръпка е празна."
 
-#: wt-status.c:1106
+#: wt-status.c:1114
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (коригирайте конфликтите и изпълнете „git am --continue“)"
 
-#: wt-status.c:1108
+#: wt-status.c:1116
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (използвайте „git am --skip“, за да пропуснете тази кръпка)"
 
-#: wt-status.c:1110
+#: wt-status.c:1118
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr ""
 "  (използвайте „git am --abort“, за да възстановите първоначалния клон)"
 
-#: wt-status.c:1242
+#: wt-status.c:1250
 msgid "git-rebase-todo is missing."
 msgstr "„git-rebase-todo“ липсва."
 
-#: wt-status.c:1244
+#: wt-status.c:1252
 msgid "No commands done."
 msgstr "Не са изпълнени команди."
 
-#: wt-status.c:1247
+#: wt-status.c:1255
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] "Последна изпълнена команда (изпълнена е общо %d команда):"
 msgstr[1] "Последна изпълнена команда (изпълнени са общо %d команди):"
 
-#: wt-status.c:1258
+#: wt-status.c:1266
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  повече информация има във файла „%s“)"
 
-#: wt-status.c:1263
+#: wt-status.c:1271
 msgid "No commands remaining."
 msgstr "Не остават повече команди."
 
-#: wt-status.c:1266
+#: wt-status.c:1274
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
 msgstr[0] "Следваща команда за изпълнение (остава още %d команда):"
 msgstr[1] "Следваща команда за изпълнение (остават още %d команди):"
 
-#: wt-status.c:1274
+#: wt-status.c:1282
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr ""
 "  (използвайте „git rebase --edit-todo“, за да разгледате и редактирате)"
 
-#: wt-status.c:1287
+#: wt-status.c:1295
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "В момента пребазирате клона „%s“ върху „%s“."
 
-#: wt-status.c:1292
+#: wt-status.c:1300
 msgid "You are currently rebasing."
 msgstr "В момента пребазирате."
 
-#: wt-status.c:1306
+#: wt-status.c:1314
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (коригирайте конфликтите и използвайте „git rebase --continue“)"
 
-#: wt-status.c:1308
+#: wt-status.c:1316
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (използвайте „git rebase --skip“, за да пропуснете тази кръпка)"
 
-#: wt-status.c:1310
+#: wt-status.c:1318
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr ""
 "  (използвайте „git rebase --abort“, за да възстановите първоначалния клон)"
 
-#: wt-status.c:1316
+#: wt-status.c:1324
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (всички конфликти са коригирани: изпълнете „git rebase --continue“)"
 
-#: wt-status.c:1320
+#: wt-status.c:1328
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
 msgstr "В момента разделяте подаване докато пребазирате клона „%s“ върху „%s“."
 
-#: wt-status.c:1325
+#: wt-status.c:1333
 msgid "You are currently splitting a commit during a rebase."
 msgstr "В момента разделяте подаване докато пребазирате."
 
-#: wt-status.c:1328
+#: wt-status.c:1336
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr ""
 "  (След като работното ви дърво стане чисто, използвайте „git rebase --"
 "continue“)"
 
-#: wt-status.c:1332
+#: wt-status.c:1340
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 "В момента редактирате подаване докато пребазирате клона „%s“ върху „%s“."
 
-#: wt-status.c:1337
+#: wt-status.c:1345
 msgid "You are currently editing a commit during a rebase."
 msgstr "В момента редактирате подаване докато пребазирате."
 
-#: wt-status.c:1340
+#: wt-status.c:1348
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr ""
 "  (използвайте „git commit --amend“, за да редактирате текущото подаване)"
 
-#: wt-status.c:1342
+#: wt-status.c:1350
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr ""
 "  (използвайте „git rebase --continue“, след като завършите промените си)"
 
-#: wt-status.c:1352
+#: wt-status.c:1360
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "В момента отбирате подаването „%s“."
 
-#: wt-status.c:1357
+#: wt-status.c:1365
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (коригирайте конфликтите и изпълнете „git cherry-pick --continue“)"
 
-#: wt-status.c:1360
+#: wt-status.c:1368
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr ""
 "  (всички конфликти са коригирани, изпълнете „git cherry-pick --continue“)"
 
-#: wt-status.c:1362
+#: wt-status.c:1370
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr ""
 "  (използвайте „git cherry-pick --abort“, за да отмените всички действия с "
 "отбиране)"
 
-#: wt-status.c:1371
+#: wt-status.c:1379
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "В момента отменяте подаване „%s“."
 
-#: wt-status.c:1376
+#: wt-status.c:1384
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (коригирайте конфликтите и изпълнете „git revert --continue“)"
 
-#: wt-status.c:1379
+#: wt-status.c:1387
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (всички конфликти са коригирани, изпълнете „git revert --continue“)"
 
-#: wt-status.c:1381
+#: wt-status.c:1389
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr ""
 "  (използвайте „git revert --abort“, за да преустановите отмяната на "
 "подаване)"
 
-#: wt-status.c:1392
+#: wt-status.c:1400
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "В момента търсите двоично, като сте стартирали от клон „%s“."
 
-#: wt-status.c:1396
+#: wt-status.c:1404
 msgid "You are currently bisecting."
 msgstr "В момента търсите двоично."
 
-#: wt-status.c:1399
+#: wt-status.c:1407
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr ""
 "  (използвайте „git bisect reset“, за да се върнете към първоначалното "
 "състояние и клон)"
 
-#: wt-status.c:1596
+#: wt-status.c:1604
 msgid "On branch "
 msgstr "На клон "
 
-#: wt-status.c:1602
+#: wt-status.c:1610
 msgid "interactive rebase in progress; onto "
 msgstr "извършвате интерактивно пребазиране върху "
 
-#: wt-status.c:1604
+#: wt-status.c:1612
 msgid "rebase in progress; onto "
 msgstr "извършвате пребазиране върху "
 
-#: wt-status.c:1609
+#: wt-status.c:1617
 msgid "HEAD detached at "
 msgstr "Указателят „HEAD“ не е свързан и е при "
 
-#: wt-status.c:1611
+#: wt-status.c:1619
 msgid "HEAD detached from "
 msgstr "Указателят „HEAD“ не е свързан и е отделѐн от "
 
-#: wt-status.c:1614
+#: wt-status.c:1622
 msgid "Not currently on any branch."
 msgstr "Извън всички клони."
 
-#: wt-status.c:1634
+#: wt-status.c:1642
 msgid "Initial commit"
 msgstr "Първоначално подаване"
 
-#: wt-status.c:1635
+#: wt-status.c:1643
 msgid "No commits yet"
 msgstr "Все още липсват подавания"
 
-#: wt-status.c:1649
+#: wt-status.c:1657
 msgid "Untracked files"
 msgstr "Неследени файлове"
 
-#: wt-status.c:1651
+#: wt-status.c:1659
 msgid "Ignored files"
 msgstr "Игнорирани файлове"
 
-#: wt-status.c:1655
+#: wt-status.c:1663
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -5069,32 +5457,32 @@ msgstr ""
 "изпълнението, но не трябва да забравяте ръчно да добавяте новите файлове.\n"
 "За повече подробности погледнете „git status help“."
 
-#: wt-status.c:1661
+#: wt-status.c:1669
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Неследените файлове не са изведени%s"
 
-#: wt-status.c:1663
+#: wt-status.c:1671
 msgid " (use -u option to show untracked files)"
 msgstr " (използвайте опцията „-u“, за да изведете неследените файлове)"
 
-#: wt-status.c:1669
+#: wt-status.c:1677
 msgid "No changes"
 msgstr "Няма промени"
 
-#: wt-status.c:1674
+#: wt-status.c:1682
 #, 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:1677
+#: wt-status.c:1685
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "към индекса за подаване не са добавени промени\n"
 
-#: wt-status.c:1680
+#: wt-status.c:1688
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -5103,71 +5491,71 @@ msgstr ""
 "към индекса за подаване не са добавени промени, но има нови файлове "
 "(използвайте „git add“, за да започне тяхното следене)\n"
 
-#: wt-status.c:1683
+#: wt-status.c:1691
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr "към индекса за подаване не са добавени промени, но има нови файлове\n"
 
-#: wt-status.c:1686
+#: wt-status.c:1694
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr ""
 "липсват каквито и да е промени (създайте или копирайте файлове и използвайте "
 "„git add“, за да започне тяхното следене)\n"
 
-#: wt-status.c:1689 wt-status.c:1694
+#: wt-status.c:1697 wt-status.c:1702
 #, c-format
 msgid "nothing to commit\n"
 msgstr "липсват каквито и да е промени\n"
 
-#: wt-status.c:1692
+#: wt-status.c:1700
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr ""
 "липсват каквито и да е промени (използвайте опцията „-u“, за да се изведат и "
 "неследените файлове)\n"
 
-#: wt-status.c:1696
+#: wt-status.c:1704
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "липсват каквито и да е промени, работното дърво е чисто\n"
 
-#: wt-status.c:1809
+#: wt-status.c:1817
 msgid "No commits yet on "
 msgstr "Все още липсват подавания в "
 
-#: wt-status.c:1813
+#: wt-status.c:1821
 msgid "HEAD (no branch)"
 msgstr "HEAD (извън клон)"
 
-#: wt-status.c:1844
+#: wt-status.c:1852
 msgid "different"
 msgstr "различен"
 
-#: wt-status.c:1846 wt-status.c:1854
+#: wt-status.c:1854 wt-status.c:1862
 msgid "behind "
 msgstr "назад с "
 
-#: wt-status.c:1849 wt-status.c:1852
+#: wt-status.c:1857 wt-status.c:1860
 msgid "ahead "
 msgstr "напред с "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2358
+#: wt-status.c:2366
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "не може да извършите „%s“, защото има промени, които не са в индекса."
 
-#: wt-status.c:2364
+#: wt-status.c:2372
 msgid "additionally, your index contains uncommitted changes."
 msgstr "освен това в индекса има неподадени промени."
 
-#: wt-status.c:2366
+#: wt-status.c:2374
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "не може да извършите „%s“, защото в индекса има неподадени промени."
 
-#: compat/precompose_utf8.c:58 builtin/clone.c:440
+#: compat/precompose_utf8.c:58 builtin/clone.c:442
 #, c-format
 msgid "failed to unlink '%s'"
 msgstr "неуспешно изтриване на „%s“"
@@ -5181,7 +5569,7 @@ msgstr "git add [ОПЦИЯ…] [--] ПЪТ…"
 msgid "unexpected diff status %c"
 msgstr "неочакван изходен код при генериране на разлика: %c"
 
-#: builtin/add.c:88 builtin/commit.c:257
+#: builtin/add.c:88 builtin/commit.c:266
 msgid "updating files failed"
 msgstr "неуспешно обновяване на файловете"
 
@@ -5194,7 +5582,7 @@ msgstr "изтриване на „%s“\n"
 msgid "Unstaged changes after refreshing the index:"
 msgstr "Промени, които и след обновяването на индекса не са добавени към него:"
 
-#: builtin/add.c:233 builtin/rev-parse.c:888
+#: builtin/add.c:233 builtin/rev-parse.c:892
 msgid "Could not read the index"
 msgstr "Индексът не може да бъде прочетен"
 
@@ -5225,83 +5613,83 @@ msgstr "Празна кръпка, преустановяване на дейс
 msgid "Could not apply '%s'"
 msgstr "Кръпката „%s“ не може да бъде приложена"
 
-#: builtin/add.c:271
+#: builtin/add.c:269
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr ""
 "Следните пътища ще бъдат игнорирани според някой от файловете „.gitignore“:\n"
 
-#: builtin/add.c:291 builtin/clean.c:911 builtin/fetch.c:146 builtin/mv.c:124
-#: builtin/prune-packed.c:55 builtin/pull.c:207 builtin/push.c:541
-#: builtin/remote.c:1333 builtin/rm.c:242 builtin/send-pack.c:164
+#: builtin/add.c:289 builtin/clean.c:911 builtin/fetch.c:145 builtin/mv.c:123
+#: builtin/prune-packed.c:55 builtin/pull.c:212 builtin/push.c:557
+#: builtin/remote.c:1342 builtin/rm.c:240 builtin/send-pack.c:165
 msgid "dry run"
 msgstr "пробно изпълнение"
 
-#: builtin/add.c:294
+#: builtin/add.c:292
 msgid "interactive picking"
 msgstr "интерактивно отбиране на промени"
 
-#: builtin/add.c:295 builtin/checkout.c:1128 builtin/reset.c:302
+#: builtin/add.c:293 builtin/checkout.c:1135 builtin/reset.c:302
 msgid "select hunks interactively"
 msgstr "интерактивен избор на парчета код"
 
-#: builtin/add.c:296
+#: builtin/add.c:294
 msgid "edit current diff and apply"
 msgstr "редактиране на текущата разлика и прилагане"
 
-#: builtin/add.c:297
+#: builtin/add.c:295
 msgid "allow adding otherwise ignored files"
 msgstr "добавяне и на иначе игнорираните файлове"
 
-#: builtin/add.c:298
+#: builtin/add.c:296
 msgid "update tracked files"
 msgstr "обновяване на следените файлове"
 
-#: builtin/add.c:299
+#: builtin/add.c:297
 msgid "renormalize EOL of tracked files (implies -u)"
 msgstr "уеднаквяване на знаците за край на файл (включва опцията „-u“)"
 
-#: builtin/add.c:300
+#: builtin/add.c:298
 msgid "record only the fact that the path will be added later"
 msgstr "отбелязване само на факта, че пътят ще бъде добавен по-късно"
 
-#: builtin/add.c:301
+#: builtin/add.c:299
 msgid "add changes from all tracked and untracked files"
 msgstr "добавяне на всички промени в следените и неследените файлове"
 
-#: builtin/add.c:304
+#: builtin/add.c:302
 msgid "ignore paths removed in the working tree (same as --no-all)"
 msgstr ""
 "игнориране на пътищата, които са изтрити от работното дърво (същото като „--"
 "no-all“)"
 
-#: builtin/add.c:306
+#: builtin/add.c:304
 msgid "don't add, only refresh the index"
 msgstr "без добавяне на нови файлове, само обновяване на индекса"
 
-#: builtin/add.c:307
+#: builtin/add.c:305
 msgid "just skip files which cannot be added because of errors"
 msgstr ""
 "прескачане на файловете, които не могат да бъдат добавени поради грешки"
 
-#: builtin/add.c:308
+#: builtin/add.c:306
 msgid "check if - even missing - files are ignored in dry run"
 msgstr ""
 "проверка, че при пробно изпълнение всички файлове, дори и изтритите, се "
 "игнорират"
 
-#: builtin/add.c:309 builtin/update-index.c:964
+#: builtin/add.c:307 builtin/update-index.c:974
 msgid "(+/-)x"
 msgstr "(+/-)x"
 
-#: builtin/add.c:309 builtin/update-index.c:965
+#: builtin/add.c:307 builtin/update-index.c:975
 msgid "override the executable bit of the listed files"
 msgstr "изрично задаване на стойността на флага дали файлът е изпълним"
 
-#: builtin/add.c:311
+#: builtin/add.c:309
 msgid "warn when adding an embedded repository"
 msgstr "предупреждаване при добавяне на вградено хранилище"
 
-#: builtin/add.c:326
+#: builtin/add.c:324
 #, c-format
 msgid ""
 "You've added another git repository inside your current repository.\n"
@@ -5332,47 +5720,47 @@ msgstr ""
 "\n"
 "За повече информация погледнете „git help submodule“."
 
-#: builtin/add.c:354
+#: builtin/add.c:352
 #, c-format
 msgid "adding embedded git repository: %s"
 msgstr "добавяне на вградено хранилище: %s"
 
-#: builtin/add.c:372
+#: builtin/add.c:370
 #, c-format
 msgid "Use -f if you really want to add them.\n"
 msgstr "Използвайте опцията „-f“, за да ги добавите наистина.\n"
 
-#: builtin/add.c:380
+#: builtin/add.c:378
 msgid "adding files failed"
 msgstr "неуспешно добавяне на файлове"
 
-#: builtin/add.c:417
+#: builtin/add.c:416
 msgid "-A and -u are mutually incompatible"
 msgstr "опциите „-A“ и „-u“ са несъвместими"
 
-#: builtin/add.c:424
+#: builtin/add.c:423
 msgid "Option --ignore-missing can only be used together with --dry-run"
 msgstr "Опцията „--ignore-missing“ е съвместима само с „--dry-run“"
 
-#: builtin/add.c:428
+#: builtin/add.c:427
 #, c-format
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "параметърът към „--chmod“ — „%s“ може да е или „-x“, или „+x“"
 
-#: builtin/add.c:443
+#: builtin/add.c:442
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr "Нищо не е зададено и нищо не е добавено.\n"
 
-#: builtin/add.c:444
+#: builtin/add.c:443
 #, c-format
 msgid "Maybe you wanted to say 'git add .'?\n"
 msgstr "Вероятно искахте да използвате „git add .“?\n"
 
-#: builtin/add.c:449 builtin/check-ignore.c:177 builtin/checkout.c:280
-#: builtin/checkout.c:483 builtin/clean.c:958 builtin/commit.c:316
+#: builtin/add.c:448 builtin/check-ignore.c:177 builtin/checkout.c:280
+#: builtin/checkout.c:483 builtin/clean.c:958 builtin/commit.c:325
 #: builtin/diff-tree.c:114 builtin/mv.c:144 builtin/reset.c:241
-#: builtin/rm.c:271 builtin/submodule--helper.c:326
+#: builtin/rm.c:270 builtin/submodule--helper.c:328
 msgid "index file corrupt"
 msgstr "файлът с индекса е повреден"
 
@@ -5407,7 +5795,7 @@ msgstr "кръпката „%s“ не може да се анализира"
 #: builtin/am.c:855
 msgid "Only one StGIT patch series can be applied at once"
 msgstr ""
-"Само една серия кръпки от „StGIT“ може да бъде прилагана в даден момент"
+"Само една поредица от кръпки от „StGIT“ може да бъде прилагана в даден момент"
 
 #: builtin/am.c:903
 msgid "invalid timestamp"
@@ -5425,7 +5813,7 @@ msgstr "неправилно отместване на часовия пояс"
 msgid "Patch format detection failed."
 msgstr "Форматът на кръпката не може да бъде определен."
 
-#: builtin/am.c:1013 builtin/clone.c:405
+#: builtin/am.c:1013 builtin/clone.c:407
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr "директорията „%s“ не може да бъде създадена"
@@ -5434,7 +5822,7 @@ msgstr "директорията „%s“ не може да бъде създа
 msgid "Failed to split patches."
 msgstr "Кръпките не могат да бъдат разделени."
 
-#: builtin/am.c:1148 builtin/commit.c:342
+#: builtin/am.c:1148 builtin/commit.c:351
 msgid "unable to write index file"
 msgstr "индексът не може да бъде записан"
 
@@ -5470,7 +5858,7 @@ msgstr "подаването не може да бъде анализирано:
 #: builtin/am.c:1554
 msgid "Repository lacks necessary blobs to fall back on 3-way merge."
 msgstr ""
-"В хранилището липсват необходимите обекти BLOB, за да се премине към тройно "
+"В хранилището липсват необходимите обекти-BLOB, за да се премине към тройно "
 "сливане."
 
 #: builtin/am.c:1556
@@ -5482,7 +5870,7 @@ msgid ""
 "Did you hand edit your patch?\n"
 "It does not apply to blobs recorded in its index."
 msgstr ""
-"Кръпката не може да се приложи към обектите BLOB в индекса.\n"
+"Кръпката не може да се приложи към обектите-BLOB в индекса.\n"
 "Да не би да сте я редактирали на ръка?"
 
 #: builtin/am.c:1581
@@ -5616,7 +6004,7 @@ msgid "allow fall back on 3way merging if needed"
 msgstr "да се преминава към тройно сливане при нужда."
 
 #: builtin/am.c:2222 builtin/init-db.c:484 builtin/prune-packed.c:57
-#: builtin/repack.c:182
+#: builtin/repack.c:192
 msgid "be quiet"
 msgstr "без извеждане на информация"
 
@@ -5661,16 +6049,17 @@ msgstr "пропускане на всичко преди реда за отря
 msgid "pass it through git-apply"
 msgstr "прекарване през „git-apply“"
 
-#: builtin/am.c:2260 builtin/fmt-merge-msg.c:665 builtin/fmt-merge-msg.c:668
-#: builtin/grep.c:853 builtin/merge.c:206 builtin/pull.c:145 builtin/pull.c:203
-#: builtin/repack.c:191 builtin/repack.c:195 builtin/repack.c:197
-#: builtin/show-branch.c:631 builtin/show-ref.c:169 builtin/tag.c:382
-#: parse-options.h:144 parse-options.h:146 parse-options.h:257
+#: builtin/am.c:2260 builtin/commit.c:1332 builtin/fmt-merge-msg.c:665
+#: builtin/fmt-merge-msg.c:668 builtin/grep.c:853 builtin/merge.c:208
+#: builtin/pull.c:150 builtin/pull.c:208 builtin/repack.c:201
+#: builtin/repack.c:205 builtin/repack.c:207 builtin/show-branch.c:631
+#: builtin/show-ref.c:169 builtin/tag.c:383 parse-options.h:144
+#: parse-options.h:146 parse-options.h:258
 msgid "n"
 msgstr "БРОЙ"
 
-#: builtin/am.c:2266 builtin/branch.c:629 builtin/for-each-ref.c:38
-#: builtin/replace.c:445 builtin/tag.c:418 builtin/verify-tag.c:39
+#: builtin/am.c:2266 builtin/branch.c:632 builtin/for-each-ref.c:38
+#: builtin/replace.c:543 builtin/tag.c:419 builtin/verify-tag.c:39
 msgid "format"
 msgstr "ФОРМАТ"
 
@@ -5717,8 +6106,8 @@ msgstr "дата за подаване различна от първонача
 msgid "use current timestamp for author date"
 msgstr "използване на текущото време като това за автор"
 
-#: builtin/am.c:2298 builtin/commit.c:1431 builtin/merge.c:237
-#: builtin/pull.c:178 builtin/revert.c:112 builtin/tag.c:398
+#: builtin/am.c:2298 builtin/commit.c:1468 builtin/merge.c:239
+#: builtin/pull.c:183 builtin/revert.c:112 builtin/tag.c:399
 msgid "key-id"
 msgstr "ИДЕНТИФИКАТОР_НА_КЛЮЧ"
 
@@ -5861,133 +6250,160 @@ msgstr "опцията „--write-terms“ изисква точно два ар
 msgid "--bisect-clean-state requires no arguments"
 msgstr "опцията „--bisect-clean-state“ не приема аргументи"
 
-#: builtin/blame.c:27
+#: builtin/blame.c:29
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
 msgstr "git blame [ОПЦИЯ…] [ОПЦИЯ_ЗА_ВЕРСИЯТА…] [ВЕРСИЯ] [--] ФАЙЛ"
 
-#: builtin/blame.c:32
+#: builtin/blame.c:34
 msgid "<rev-opts> are documented in git-rev-list(1)"
 msgstr "ОПЦИИте_ЗА_ВЕРСИЯТА са документирани в ръководството git-rev-list(1)"
 
-#: builtin/blame.c:677
+#: builtin/blame.c:404
+#, c-format
+msgid "expecting a color: %s"
+msgstr "трябва да е цвят: %s"
+
+#: builtin/blame.c:411
+msgid "must end with a color"
+msgstr "трябва да завършва с цвят"
+
+#: builtin/blame.c:697
+#, c-format
+msgid "invalid color '%s' in color.blame.repeatedLines"
+msgstr "неправилен цвят „%s“ в „color.blame.repeatedLines“"
+
+#: builtin/blame.c:715
+msgid "invalid value for blame.coloring"
+msgstr "неправилна стойност за „blame.coloring“"
+
+#: builtin/blame.c:786
 msgid "Show blame entries as we find them, incrementally"
 msgstr "Извеждане на анотациите с намирането им, последователно"
 
-#: builtin/blame.c:678
+#: builtin/blame.c:787
 msgid "Show blank SHA-1 for boundary commits (Default: off)"
 msgstr ""
 "Извеждане на празни суми по SHA1 за граничните подавания (стандартно опцията "
 "е изключена)"
 
-#: builtin/blame.c:679
+#: builtin/blame.c:788
 msgid "Do not treat root commits as boundaries (Default: off)"
 msgstr ""
 "Началните подавания да не се считат за гранични (стандартно опцията е "
 "изключена)"
 
-#: builtin/blame.c:680
+#: builtin/blame.c:789
 msgid "Show work cost statistics"
 msgstr "Извеждане на статистика за извършените действия"
 
-#: builtin/blame.c:681
+#: builtin/blame.c:790
 msgid "Force progress reporting"
 msgstr "Принудително извеждане на напредъка"
 
-#: builtin/blame.c:682
+#: builtin/blame.c:791
 msgid "Show output score for blame entries"
 msgstr "Извеждане на допълнителна информация за определянето на анотациите"
 
-#: builtin/blame.c:683
+#: builtin/blame.c:792
 msgid "Show original filename (Default: auto)"
 msgstr ""
 "Извеждане на първоначалното име на файл (стандартно това е автоматично)"
 
-#: builtin/blame.c:684
+#: builtin/blame.c:793
 msgid "Show original linenumber (Default: off)"
 msgstr ""
 "Извеждане на първоначалният номер на ред (стандартно опцията е изключена)"
 
-#: builtin/blame.c:685
+#: builtin/blame.c:794
 msgid "Show in a format designed for machine consumption"
 msgstr "Извеждане във формат за по-нататъшна обработка"
 
-#: builtin/blame.c:686
+#: builtin/blame.c:795
 msgid "Show porcelain format with per-line commit information"
 msgstr ""
 "Извеждане във формат за команди от потребителско ниво с информация на всеки "
 "ред"
 
-#: builtin/blame.c:687
+#: builtin/blame.c:796
 msgid "Use the same output mode as git-annotate (Default: off)"
 msgstr ""
 "Използване на същия формат като „git-annotate“ (стандартно опцията е "
 "изключена)"
 
-#: builtin/blame.c:688
+#: builtin/blame.c:797
 msgid "Show raw timestamp (Default: off)"
 msgstr "Извеждане на неформатирани времена (стандартно опцията е изключена)"
 
-#: builtin/blame.c:689
+#: builtin/blame.c:798
 msgid "Show long commit SHA1 (Default: off)"
 msgstr "Извеждане на пълните суми по SHA1 (стандартно опцията е изключена)"
 
-#: builtin/blame.c:690
+#: builtin/blame.c:799
 msgid "Suppress author name and timestamp (Default: off)"
 msgstr "Без име на автор и време на промяна (стандартно опцията е изключена)"
 
-#: builtin/blame.c:691
+#: builtin/blame.c:800
 msgid "Show author email instead of name (Default: off)"
 msgstr ""
 "Извеждане на е-пощата на автора, а не името му (стандартно опцията е "
 "изключена)"
 
-#: builtin/blame.c:692
+#: builtin/blame.c:801
 msgid "Ignore whitespace differences"
 msgstr "Без разлики в знаците за интервали"
 
-#: builtin/blame.c:699
+#: builtin/blame.c:802
+msgid "color redundant metadata from previous line differently"
+msgstr ""
+"оцветяване на повтарящите се метаданни от предишния ред в различен цвят"
+
+#: builtin/blame.c:803
+msgid "color lines by age"
+msgstr "оцветяване на редовете по възраст"
+
+#: builtin/blame.c:810
 msgid "Use an experimental heuristic to improve diffs"
 msgstr "Подобряване на разликите чрез експериментална евристика"
 
-#: builtin/blame.c:701
+#: builtin/blame.c:812
 msgid "Spend extra cycles to find better match"
 msgstr "Допълнителни изчисления за по-добри резултати"
 
-#: builtin/blame.c:702
+#: builtin/blame.c:813
 msgid "Use revisions from <file> instead of calling git-rev-list"
 msgstr "Изчитане на версиите от ФАЙЛ, а не чрез изпълнение на „git-rev-list“"
 
-#: builtin/blame.c:703
+#: builtin/blame.c:814
 msgid "Use <file>'s contents as the final image"
 msgstr "Използване на съдържанието на ФАЙЛа като крайно положение"
 
-#: builtin/blame.c:704 builtin/blame.c:705
+#: builtin/blame.c:815 builtin/blame.c:816
 msgid "score"
 msgstr "напасване на редовете"
 
-#: builtin/blame.c:704
+#: builtin/blame.c:815
 msgid "Find line copies within and across files"
 msgstr ""
 "Търсене на копирани редове както в рамките на един файл, така и от един файл "
 "към друг"
 
-#: builtin/blame.c:705
+#: builtin/blame.c:816
 msgid "Find line movements within and across files"
 msgstr ""
 "Търсене на преместени редове както в рамките на един файл, така и от един "
 "файл към друг"
 
-#: builtin/blame.c:706
+#: builtin/blame.c:817
 msgid "n,m"
 msgstr "n,m"
 
-#: builtin/blame.c:706
+#: builtin/blame.c:817
 msgid "Process only line range n,m, counting from 1"
 msgstr ""
 "Информация само за редовете в диапазона от n до m включително.  Броенето "
 "започва от 1"
 
-#: builtin/blame.c:753
+#: builtin/blame.c:866
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr ""
 "опцията „--progress“ е несъвместима с „--incremental“ и форма̀та на командите "
@@ -6001,18 +6417,18 @@ msgstr ""
 #. your language may need more or fewer display
 #. columns.
 #.
-#: builtin/blame.c:804
+#: builtin/blame.c:917
 msgid "4 years, 11 months ago"
 msgstr "преди 4 години и 11 месеца"
 
-#: builtin/blame.c:890
+#: builtin/blame.c:1003
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
 msgstr[0] "има само %2$lu ред във файла „%1$s“"
 msgstr[1] "има само %2$lu реда във файла „%1$s“"
 
-#: builtin/blame.c:936
+#: builtin/blame.c:1049
 msgid "Blaming lines"
 msgstr "Анотирани редове"
 
@@ -6123,66 +6539,66 @@ msgstr "Изтрит следящ клон „%s“ (той сочеше към
 msgid "Deleted branch %s (was %s).\n"
 msgstr "Изтрит клон „%s“ (той сочеше към „%s“).\n"
 
-#: builtin/branch.c:417 builtin/tag.c:58
+#: builtin/branch.c:416 builtin/tag.c:58
 msgid "unable to parse format string"
 msgstr "форматиращият низ не може да бъде анализиран: %s"
 
-#: builtin/branch.c:450
+#: builtin/branch.c:453
 #, c-format
 msgid "Branch %s is being rebased at %s"
 msgstr "Клонът „%s“ се пребазира върху „%s“"
 
-#: builtin/branch.c:454
+#: builtin/branch.c:457
 #, c-format
 msgid "Branch %s is being bisected at %s"
 msgstr "Търси се двоично в клона „%s“ при „%s“"
 
-#: builtin/branch.c:471
+#: builtin/branch.c:474
 msgid "cannot copy the current branch while not on any."
 msgstr "не можете да копирате текущия клон, защото сте извън който и да е клон"
 
-#: builtin/branch.c:473
+#: builtin/branch.c:476
 msgid "cannot rename the current branch while not on any."
 msgstr ""
 "не можете да преименувате текущия клон, защото сте извън който и да е клон"
 
-#: builtin/branch.c:484
+#: builtin/branch.c:487
 #, c-format
 msgid "Invalid branch name: '%s'"
 msgstr "Неправилно име на клон: „%s“"
 
-#: builtin/branch.c:511
+#: builtin/branch.c:514
 msgid "Branch rename failed"
 msgstr "Неуспешно преименуване на клон"
 
-#: builtin/branch.c:513
+#: builtin/branch.c:516
 msgid "Branch copy failed"
 msgstr "Неуспешно копиране на клон"
 
-#: builtin/branch.c:517
+#: builtin/branch.c:520
 #, c-format
 msgid "Created a copy of a misnamed branch '%s'"
 msgstr "Клонът с неправилно име „%s“ е копиран"
 
-#: builtin/branch.c:520
+#: builtin/branch.c:523
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
 msgstr "Клонът с неправилно име „%s“ е преименуван"
 
-#: builtin/branch.c:526
+#: builtin/branch.c:529
 #, c-format
 msgid "Branch renamed to %s, but HEAD is not updated!"
 msgstr "Клонът е преименуван на „%s“, но указателят „HEAD“ не е обновен"
 
-#: builtin/branch.c:535
+#: builtin/branch.c:538
 msgid "Branch is renamed, but update of config-file failed"
 msgstr "Клонът е преименуван, но конфигурационният файл не е обновен"
 
-#: builtin/branch.c:537
+#: builtin/branch.c:540
 msgid "Branch is copied, but update of config-file failed"
 msgstr "Клонът е копиран, но конфигурационният файл не е обновен"
 
-#: builtin/branch.c:553
+#: builtin/branch.c:556
 #, c-format
 msgid ""
 "Please edit the description for the branch\n"
@@ -6193,187 +6609,189 @@ msgstr ""
 "    %s\n"
 "Редовете, които започват с „%c“, ще бъдат пропуснати.\n"
 
-#: builtin/branch.c:586
+#: builtin/branch.c:589
 msgid "Generic options"
 msgstr "Общи настройки"
 
-#: builtin/branch.c:588
+#: builtin/branch.c:591
 msgid "show hash and subject, give twice for upstream branch"
 msgstr ""
 "извеждане на хеша и темата.  Повтарянето на опцията прибавя отдалечените "
 "клони"
 
-#: builtin/branch.c:589
+#: builtin/branch.c:592
 msgid "suppress informational messages"
 msgstr "без информационни съобщения"
 
-#: builtin/branch.c:590
+#: builtin/branch.c:593
 msgid "set up tracking mode (see git-pull(1))"
 msgstr "задаване на режима на следене (виж git-pull(1))"
 
-#: builtin/branch.c:592
+#: builtin/branch.c:595
 msgid "do not use"
 msgstr "да не се ползва"
 
-#: builtin/branch.c:594
+#: builtin/branch.c:597
 msgid "upstream"
 msgstr "клон-източник"
 
-#: builtin/branch.c:594
+#: builtin/branch.c:597
 msgid "change the upstream info"
 msgstr "смяна на клона-източник"
 
-#: builtin/branch.c:595
+#: builtin/branch.c:598
 msgid "Unset the upstream info"
 msgstr "без клон-източник"
 
-#: builtin/branch.c:596
+#: builtin/branch.c:599
 msgid "use colored output"
 msgstr "цветен изход"
 
-#: builtin/branch.c:597
+#: builtin/branch.c:600
 msgid "act on remote-tracking branches"
 msgstr "действие върху следящите клони"
 
-#: builtin/branch.c:599 builtin/branch.c:601
+#: builtin/branch.c:602 builtin/branch.c:604
 msgid "print only branches that contain the commit"
 msgstr "извеждане само на клоните, които съдържат това ПОДАВАНЕ"
 
-#: builtin/branch.c:600 builtin/branch.c:602
+#: builtin/branch.c:603 builtin/branch.c:605
 msgid "print only branches that don't contain the commit"
 msgstr "извеждане само на клоните, които не съдържат това ПОДАВАНЕ"
 
-#: builtin/branch.c:605
+#: builtin/branch.c:608
 msgid "Specific git-branch actions:"
 msgstr "Специални действия на „git-branch“:"
 
-#: builtin/branch.c:606
+#: builtin/branch.c:609
 msgid "list both remote-tracking and local branches"
 msgstr "извеждане както на следящите, така и на локалните клони"
 
-#: builtin/branch.c:608
+#: builtin/branch.c:611
 msgid "delete fully merged branch"
 msgstr "изтриване на клони, които са напълно слети"
 
-#: builtin/branch.c:609
+#: builtin/branch.c:612
 msgid "delete branch (even if not merged)"
 msgstr "изтриване и на клони, които не са напълно слети"
 
-#: builtin/branch.c:610
+#: builtin/branch.c:613
 msgid "move/rename a branch and its reflog"
 msgstr ""
 "преместване/преименуване на клон и принадлежащият му журнал на указателите"
 
-#: builtin/branch.c:611
+#: builtin/branch.c:614
 msgid "move/rename a branch, even if target exists"
 msgstr "преместване/преименуване на клон, дори ако има вече клон с такова име"
 
-#: builtin/branch.c:612
+#: builtin/branch.c:615
 msgid "copy a branch and its reflog"
 msgstr "копиране на клон и принадлежащия му журнал на указателите"
 
-#: builtin/branch.c:613
+#: builtin/branch.c:616
 msgid "copy a branch, even if target exists"
 msgstr "копиране на клон, дори ако има вече клон с такова име"
 
-#: builtin/branch.c:614
+#: builtin/branch.c:617
 msgid "list branch names"
 msgstr "извеждане на имената на клоните"
 
-#: builtin/branch.c:615
+#: builtin/branch.c:618
 msgid "create the branch's reflog"
 msgstr "създаване на журнала на указателите на клона"
 
-#: builtin/branch.c:617
+#: builtin/branch.c:620
 msgid "edit the description for the branch"
 msgstr "редактиране на описанието на клона"
 
-#: builtin/branch.c:618
+#: builtin/branch.c:621
 msgid "force creation, move/rename, deletion"
 msgstr "принудително създаване, преместване, преименуване, изтриване"
 
-#: builtin/branch.c:619
+#: builtin/branch.c:622
 msgid "print only branches that are merged"
 msgstr "извеждане само на слетите клони"
 
-#: builtin/branch.c:620
+#: builtin/branch.c:623
 msgid "print only branches that are not merged"
 msgstr "извеждане само на неслетите клони"
 
-#: builtin/branch.c:621
+#: builtin/branch.c:624
 msgid "list branches in columns"
 msgstr "извеждане по колони"
 
-#: builtin/branch.c:622 builtin/for-each-ref.c:40 builtin/tag.c:411
+#: builtin/branch.c:625 builtin/for-each-ref.c:40 builtin/ls-remote.c:70
+#: builtin/tag.c:412
 msgid "key"
 msgstr "КЛЮЧ"
 
-#: builtin/branch.c:623 builtin/for-each-ref.c:41 builtin/tag.c:412
+#: builtin/branch.c:626 builtin/for-each-ref.c:41 builtin/ls-remote.c:71
+#: builtin/tag.c:413
 msgid "field name to sort on"
 msgstr "име на полето, по което да е подредбата"
 
-#: builtin/branch.c:625 builtin/for-each-ref.c:43 builtin/notes.c:408
+#: builtin/branch.c:628 builtin/for-each-ref.c:43 builtin/notes.c:408
 #: builtin/notes.c:411 builtin/notes.c:571 builtin/notes.c:574
-#: builtin/tag.c:414
+#: builtin/tag.c:415
 msgid "object"
 msgstr "ОБЕКТ"
 
-#: builtin/branch.c:626
+#: builtin/branch.c:629
 msgid "print only branches of the object"
 msgstr "извеждане само на клоните на ОБЕКТА"
 
-#: builtin/branch.c:628 builtin/for-each-ref.c:49 builtin/tag.c:421
+#: builtin/branch.c:631 builtin/for-each-ref.c:49 builtin/tag.c:422
 msgid "sorting and filtering are case insensitive"
 msgstr "подредбата и филтрирането третират еднакво малките и главните букви"
 
-#: builtin/branch.c:629 builtin/for-each-ref.c:38 builtin/tag.c:419
+#: builtin/branch.c:632 builtin/for-each-ref.c:38 builtin/tag.c:420
 #: builtin/verify-tag.c:39
 msgid "format to use for the output"
 msgstr "ФОРМАТ за изхода"
 
-#: builtin/branch.c:652 builtin/clone.c:735
+#: builtin/branch.c:655 builtin/clone.c:737
 msgid "HEAD not found below refs/heads!"
 msgstr "В директорията „refs/heads“ липсва файл „HEAD“"
 
-#: builtin/branch.c:675
+#: builtin/branch.c:678
 msgid "--column and --verbose are incompatible"
 msgstr "Опциите „--column“ и „--verbose“ са несъвместими"
 
-#: builtin/branch.c:690 builtin/branch.c:742 builtin/branch.c:751
+#: builtin/branch.c:693 builtin/branch.c:745 builtin/branch.c:754
 msgid "branch name required"
 msgstr "Необходимо е име на клон"
 
-#: builtin/branch.c:718
+#: builtin/branch.c:721
 msgid "Cannot give description to detached HEAD"
 msgstr "Не може да зададете описание на несвързан „HEAD“"
 
-#: builtin/branch.c:723
+#: builtin/branch.c:726
 msgid "cannot edit description of more than one branch"
 msgstr "Не може да редактирате описанието на повече от един клон едновременно"
 
-#: builtin/branch.c:730
+#: builtin/branch.c:733
 #, c-format
 msgid "No commit on branch '%s' yet."
 msgstr "В клона „%s“ все още няма подавания."
 
-#: builtin/branch.c:733
+#: builtin/branch.c:736
 #, c-format
 msgid "No branch named '%s'."
 msgstr "Липсва клон на име „%s“."
 
-#: builtin/branch.c:748
+#: builtin/branch.c:751
 msgid "too many branches for a copy operation"
 msgstr "прекалено много клони за копиране"
 
-#: builtin/branch.c:757
+#: builtin/branch.c:760
 msgid "too many arguments for a rename operation"
 msgstr "прекалено много аргументи към командата за преименуване"
 
-#: builtin/branch.c:762
+#: builtin/branch.c:765
 msgid "too many arguments to set new upstream"
 msgstr "прекалено много аргументи към командата за следене"
 
-#: builtin/branch.c:766
+#: builtin/branch.c:769
 #, c-format
 msgid ""
 "could not set upstream of HEAD to %s when it does not point to any branch."
@@ -6381,35 +6799,35 @@ msgstr ""
 "Следеното от „HEAD“ не може да се зададе да е „%s“, защото то не сочи към "
 "никой клон."
 
-#: builtin/branch.c:769 builtin/branch.c:791 builtin/branch.c:807
+#: builtin/branch.c:772 builtin/branch.c:794 builtin/branch.c:810
 #, c-format
 msgid "no such branch '%s'"
 msgstr "Няма клон на име „%s“."
 
-#: builtin/branch.c:773
+#: builtin/branch.c:776
 #, c-format
 msgid "branch '%s' does not exist"
 msgstr "Не съществува клон на име „%s“."
 
-#: builtin/branch.c:785
+#: builtin/branch.c:788
 msgid "too many arguments to unset upstream"
 msgstr "прекалено много аргументи към командата за спиране на следене"
 
-#: builtin/branch.c:789
+#: builtin/branch.c:792
 msgid "could not unset upstream of HEAD when it does not point to any branch."
 msgstr ""
 "Следеното от „HEAD“ не може да махне, защото то не сочи към никой клон."
 
-#: builtin/branch.c:795
+#: builtin/branch.c:798
 #, c-format
 msgid "Branch '%s' has no upstream information"
 msgstr "Няма информация клонът „%s“ да следи някой друг"
 
-#: builtin/branch.c:810
+#: builtin/branch.c:813
 msgid "-a and -r options to 'git branch' do not make sense with a branch name"
 msgstr "Опциите „-a“ и „-r“ на „git branch“ са несъвместими с име на клон"
 
-#: builtin/branch.c:813
+#: builtin/branch.c:816
 msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
@@ -6430,7 +6848,7 @@ msgstr "За създаването на пратка е необходимо х
 msgid "Need a repository to unbundle."
 msgstr "За приемането на пратка е необходимо хранилище."
 
-#: builtin/cat-file.c:523
+#: builtin/cat-file.c:525
 msgid ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <type> | --textconv | --filters) [--path=<path>] <object>"
@@ -6438,7 +6856,7 @@ msgstr ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | ВИД | --textconv --filters) [--path=ПЪТ] ОБЕКТ"
 
-#: builtin/cat-file.c:524
+#: builtin/cat-file.c:526
 msgid ""
 "git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
 "filters]"
@@ -6446,71 +6864,71 @@ msgstr ""
 "git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
 "filters]"
 
-#: builtin/cat-file.c:561
+#: builtin/cat-file.c:563
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr ""
-"ВИДът може да е: „blob“ (обект BLOB), „tree“ (дърво), „commit“ (подаване), "
+"ВИДът може да е: „blob“ (BLOB), „tree“ (дърво), „commit“ (подаване), "
 "„tag“ (етикет)"
 
-#: builtin/cat-file.c:562
+#: builtin/cat-file.c:564
 msgid "show object type"
 msgstr "извеждане на вида на обект"
 
-#: builtin/cat-file.c:563
+#: builtin/cat-file.c:565
 msgid "show object size"
 msgstr "извеждане на размера на обект"
 
-#: builtin/cat-file.c:565
+#: builtin/cat-file.c:567
 msgid "exit with zero when there's no error"
 msgstr "изход с 0, когато няма грешка"
 
-#: builtin/cat-file.c:566
+#: builtin/cat-file.c:568
 msgid "pretty-print object's content"
 msgstr "форматирано извеждане на съдържанието на обекта"
 
-#: builtin/cat-file.c:568
+#: builtin/cat-file.c:570
 msgid "for blob objects, run textconv on object's content"
 msgstr ""
 "да се стартира програмата зададена в настройката „textconv“ за преобразуване "
-"на съдържанието на обекта BLOB"
+"на съдържанието на обекта-BLOB"
 
-#: builtin/cat-file.c:570
+#: builtin/cat-file.c:572
 msgid "for blob objects, run filters on object's content"
 msgstr ""
-"да се стартират програмите за преобразуване на съдържанието на обектите BLOB"
+"да се стартират програмите за преобразуване на съдържанието на обектите-BLOB"
 
-#: builtin/cat-file.c:571 git-submodule.sh:878
+#: builtin/cat-file.c:573 git-submodule.sh:894
 msgid "blob"
-msgstr "обект BLOB"
+msgstr "обект-BLOB"
 
-#: builtin/cat-file.c:572
+#: builtin/cat-file.c:574
 msgid "use a specific path for --textconv/--filters"
 msgstr "опциите „--textconv“/„--filters“ изискват път"
 
-#: builtin/cat-file.c:574
+#: builtin/cat-file.c:576
 msgid "allow -s and -t to work with broken/corrupt objects"
 msgstr "позволяване на опциите „-s“ и „-t“ да работят с повредени обекти"
 
-#: builtin/cat-file.c:575
+#: builtin/cat-file.c:577
 msgid "buffer --batch output"
 msgstr "буфериране на изхода от „--batch“"
 
-#: builtin/cat-file.c:577
+#: builtin/cat-file.c:579
 msgid "show info and content of objects fed from the standard input"
 msgstr ""
 "извеждане на информация и съдържание на обектите подадени на стандартния вход"
 
-#: builtin/cat-file.c:580
+#: builtin/cat-file.c:582
 msgid "show info about objects fed from the standard input"
 msgstr "извеждане на информация за обектите подадени на стандартния вход"
 
-#: builtin/cat-file.c:583
+#: builtin/cat-file.c:585
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
 msgstr ""
 "следване на символните връзки сочещи в дървото (ползва се с „--batch“ или „--"
 "batch-check“)"
 
-#: builtin/cat-file.c:585
+#: builtin/cat-file.c:587
 msgid "show all objects with --batch or --batch-check"
 msgstr "извеждане на всички обекти с „--batch“ или „--batch-check“"
 
@@ -6538,7 +6956,7 @@ msgstr "изчитане на имената на файловете от ста
 msgid "terminate input and output records by a NUL character"
 msgstr "разделяне на входните и изходните записи с нулевия знак „NUL“"
 
-#: builtin/check-ignore.c:20 builtin/checkout.c:1106 builtin/gc.c:358
+#: builtin/check-ignore.c:20 builtin/checkout.c:1113 builtin/gc.c:500
 msgid "suppress progress reporting"
 msgstr "без показване на напредъка"
 
@@ -6628,9 +7046,9 @@ msgid "write the content to temporary files"
 msgstr "записване на съдържанието във временни файлове"
 
 #: builtin/checkout-index.c:173 builtin/column.c:31
-#: builtin/submodule--helper.c:1203 builtin/submodule--helper.c:1206
-#: builtin/submodule--helper.c:1212 builtin/submodule--helper.c:1574
-#: builtin/worktree.c:570
+#: builtin/submodule--helper.c:1216 builtin/submodule--helper.c:1219
+#: builtin/submodule--helper.c:1227 builtin/submodule--helper.c:1591
+#: builtin/worktree.c:610
 msgid "string"
 msgstr "НИЗ"
 
@@ -6702,54 +7120,54 @@ msgstr ""
 msgid "path '%s' is unmerged"
 msgstr "пътят „%s“ не е слят"
 
-#: builtin/checkout.c:505
+#: builtin/checkout.c:506
 msgid "you need to resolve your current index first"
 msgstr "първо трябва да коригирате индекса си"
 
-#: builtin/checkout.c:636
+#: builtin/checkout.c:643
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "Журналът на указателите за „%s“ не може да се проследи: %s\n"
 
-#: builtin/checkout.c:677
+#: builtin/checkout.c:684
 msgid "HEAD is now at"
 msgstr "Указателят „HEAD“ в момента сочи към"
 
-#: builtin/checkout.c:681 builtin/clone.c:689
+#: builtin/checkout.c:688 builtin/clone.c:691
 msgid "unable to update HEAD"
 msgstr "Указателят „HEAD“ не може да бъде обновен"
 
-#: builtin/checkout.c:685
+#: builtin/checkout.c:692
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Зануляване на клона „%s“\n"
 
-#: builtin/checkout.c:688
+#: builtin/checkout.c:695
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Вече сте на „%s“\n"
 
-#: builtin/checkout.c:692
+#: builtin/checkout.c:699
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Преминаване към клона „%s“ и зануляване на промените\n"
 
-#: builtin/checkout.c:694 builtin/checkout.c:1039
+#: builtin/checkout.c:701 builtin/checkout.c:1046
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Преминахте към новия клон „%s“\n"
 
-#: builtin/checkout.c:696
+#: builtin/checkout.c:703
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Преминахте към клона „%s“\n"
 
-#: builtin/checkout.c:747
+#: builtin/checkout.c:754
 #, c-format
 msgid " ... and %d more.\n"
 msgstr "… и още %d.\n"
 
-#: builtin/checkout.c:753
+#: builtin/checkout.c:760
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -6771,7 +7189,7 @@ msgstr[1] ""
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:772
+#: builtin/checkout.c:779
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -6798,164 +7216,164 @@ msgstr[1] ""
 " git branch ИМЕ_НА_НОВИЯ_КЛОН %s\n"
 "\n"
 
-#: builtin/checkout.c:804
+#: builtin/checkout.c:811
 msgid "internal error in revision walk"
 msgstr "вътрешна грешка при обхождането на версиите"
 
-#: builtin/checkout.c:808
+#: builtin/checkout.c:815
 msgid "Previous HEAD position was"
 msgstr "Преди това „HEAD“ сочеше към"
 
-#: builtin/checkout.c:836 builtin/checkout.c:1034
+#: builtin/checkout.c:843 builtin/checkout.c:1041
 msgid "You are on a branch yet to be born"
 msgstr "В момента сте на клон, който предстои да бъде създаден"
 
-#: builtin/checkout.c:940
+#: builtin/checkout.c:947
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "очакваше се един указател, а сте подали %d."
 
-#: builtin/checkout.c:980 builtin/worktree.c:249
+#: builtin/checkout.c:987 builtin/worktree.c:240 builtin/worktree.c:389
 #, c-format
 msgid "invalid reference: %s"
 msgstr "неправилен указател: %s"
 
-#: builtin/checkout.c:1009
+#: builtin/checkout.c:1016
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "указателят не сочи към обект-дърво: %s"
 
-#: builtin/checkout.c:1048
+#: builtin/checkout.c:1055
 msgid "paths cannot be used with switching branches"
 msgstr "задаването на път е несъвместимо с преминаването от един клон към друг"
 
-#: builtin/checkout.c:1051 builtin/checkout.c:1055
+#: builtin/checkout.c:1058 builtin/checkout.c:1062
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "опцията „%s“ е несъвместима с преминаването от един клон към друг"
 
-#: builtin/checkout.c:1059 builtin/checkout.c:1062 builtin/checkout.c:1067
-#: builtin/checkout.c:1070
+#: builtin/checkout.c:1066 builtin/checkout.c:1069 builtin/checkout.c:1074
+#: builtin/checkout.c:1077
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "опцията „%s“ е несъвместима с „%s“"
 
-#: builtin/checkout.c:1075
+#: builtin/checkout.c:1082
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr ""
 "За да преминете към клон, подайте указател, който сочи към подаване.  „%s“ "
 "не е такъв"
 
-#: builtin/checkout.c:1107 builtin/checkout.c:1109 builtin/clone.c:116
-#: builtin/remote.c:166 builtin/remote.c:168 builtin/worktree.c:387
-#: builtin/worktree.c:389
+#: builtin/checkout.c:1114 builtin/checkout.c:1116 builtin/clone.c:118
+#: builtin/remote.c:167 builtin/remote.c:169 builtin/worktree.c:433
+#: builtin/worktree.c:435
 msgid "branch"
 msgstr "клон"
 
-#: builtin/checkout.c:1108
+#: builtin/checkout.c:1115
 msgid "create and checkout a new branch"
 msgstr "създаване и преминаване към нов клон"
 
-#: builtin/checkout.c:1110
+#: builtin/checkout.c:1117
 msgid "create/reset and checkout a branch"
 msgstr "създаване/зануляване на клон и преминаване към него"
 
-#: builtin/checkout.c:1111
+#: builtin/checkout.c:1118
 msgid "create reflog for new branch"
 msgstr "създаване на журнал на указателите за нов клон"
 
-#: builtin/checkout.c:1112 builtin/worktree.c:391
+#: builtin/checkout.c:1119 builtin/worktree.c:437
 msgid "detach HEAD at named commit"
 msgstr "отделяне на указателя „HEAD“ към указаното подаване"
 
-#: builtin/checkout.c:1113
+#: builtin/checkout.c:1120
 msgid "set upstream info for new branch"
 msgstr "задаване на кой клон бива следен при създаването на новия клон"
 
-#: builtin/checkout.c:1115
+#: builtin/checkout.c:1122
 msgid "new-branch"
 msgstr "НОВ_КЛОН"
 
-#: builtin/checkout.c:1115
+#: builtin/checkout.c:1122
 msgid "new unparented branch"
 msgstr "нов клон без родител"
 
-#: builtin/checkout.c:1116
+#: builtin/checkout.c:1123
 msgid "checkout our version for unmerged files"
 msgstr "изтегляне на вашата версия на неслетите файлове"
 
-#: builtin/checkout.c:1118
+#: builtin/checkout.c:1125
 msgid "checkout their version for unmerged files"
 msgstr "изтегляне на чуждата версия на неслетите файлове"
 
-#: builtin/checkout.c:1120
+#: builtin/checkout.c:1127
 msgid "force checkout (throw away local modifications)"
 msgstr "принудително изтегляне (вашите промени ще бъдат занулени)"
 
-#: builtin/checkout.c:1122
+#: builtin/checkout.c:1129
 msgid "perform a 3-way merge with the new branch"
 msgstr "извършване на тройно сливане с новия клон"
 
-#: builtin/checkout.c:1124 builtin/merge.c:239
+#: builtin/checkout.c:1131 builtin/merge.c:241
 msgid "update ignored files (default)"
 msgstr "обновяване на игнорираните файлове (стандартно)"
 
-#: builtin/checkout.c:1126 builtin/log.c:1499 parse-options.h:263
+#: builtin/checkout.c:1133 builtin/log.c:1499 parse-options.h:264
 msgid "style"
 msgstr "СТИЛ"
 
-#: builtin/checkout.c:1127
+#: builtin/checkout.c:1134
 msgid "conflict style (merge or diff3)"
 msgstr "действие при конфликт (сливане или тройна разлика)"
 
-#: builtin/checkout.c:1130
+#: builtin/checkout.c:1137
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "без ограничаване на изброените пътища само до частично изтеглените"
 
-#: builtin/checkout.c:1132
+#: builtin/checkout.c:1139
 msgid "second guess 'git checkout <no-such-branch>'"
 msgstr ""
 "опит за отгатване на име на клон след неуспешен опит с „git checkout "
 "НЕСЪЩЕСТВУВАЩ_КЛОН“"
 
-#: builtin/checkout.c:1134
+#: builtin/checkout.c:1141
 msgid "do not check if another worktree is holding the given ref"
 msgstr "без проверка дали друго работно дърво държи указателя"
 
-#: builtin/checkout.c:1138 builtin/clone.c:83 builtin/fetch.c:150
-#: builtin/merge.c:236 builtin/pull.c:123 builtin/push.c:556
-#: builtin/send-pack.c:173
+#: builtin/checkout.c:1145 builtin/clone.c:85 builtin/fetch.c:149
+#: builtin/merge.c:238 builtin/pull.c:128 builtin/push.c:572
+#: builtin/send-pack.c:174
 msgid "force progress reporting"
 msgstr "извеждане на напредъка"
 
-#: builtin/checkout.c:1168
+#: builtin/checkout.c:1175
 msgid "-b, -B and --orphan are mutually exclusive"
 msgstr "Опциите „-b“, „-B“ и „--orphan“ са несъвместими една с друга"
 
-#: builtin/checkout.c:1185
+#: builtin/checkout.c:1192
 msgid "--track needs a branch name"
 msgstr "опцията „--track“ изисква име на клон"
 
-#: builtin/checkout.c:1190
+#: builtin/checkout.c:1197
 msgid "Missing branch name; try -b"
 msgstr "Липсва име на клон, използвайте опцията „-b“"
 
-#: builtin/checkout.c:1226
+#: builtin/checkout.c:1233
 msgid "invalid path specification"
 msgstr "указан е неправилен път"
 
-#: builtin/checkout.c:1233
+#: builtin/checkout.c:1240
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr "„%s“ не е подаване, затова от него не може да се създаде клон „%s“"
 
-#: builtin/checkout.c:1237
+#: builtin/checkout.c:1244
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout: опцията „--detach“ не приема аргумент-път „%s“"
 
-#: builtin/checkout.c:1241
+#: builtin/checkout.c:1248
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -6993,7 +7411,7 @@ msgstr "Хранилището „%s“ ще бъде прескочено\n"
 msgid "failed to remove %s"
 msgstr "файлът „%s“ не може да бъде изтрит"
 
-#: builtin/clean.c:302 git-add--interactive.perl:572
+#: builtin/clean.c:302 git-add--interactive.perl:579
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -7006,7 +7424,7 @@ msgstr ""
 "ПРЕФИКС    — избор на единствен обект по този уникален префикс\n"
 "           — (празно) нищо да не се избира\n"
 
-#: builtin/clean.c:306 git-add--interactive.perl:581
+#: builtin/clean.c:306 git-add--interactive.perl:588
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -7027,8 +7445,8 @@ msgstr ""
 "*          — избиране на всички обекти\n"
 "           — (празно) завършване на избирането\n"
 
-#: builtin/clean.c:522 git-add--interactive.perl:547
-#: git-add--interactive.perl:552
+#: builtin/clean.c:522 git-add--interactive.perl:554
+#: git-add--interactive.perl:559
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "Неправилен избор (%s).\n"
@@ -7054,7 +7472,7 @@ msgid "Remove %s [y/N]? "
 msgstr "Да се изтрие ли „%s“? „y“ —  да, „N“ — НЕ"
 
 #
-#: builtin/clean.c:788 git-add--interactive.perl:1710
+#: builtin/clean.c:788 git-add--interactive.perl:1717
 #, c-format
 msgid "Bye.\n"
 msgstr "Изход.\n"
@@ -7077,11 +7495,11 @@ msgstr ""
 "help                — този край\n"
 "?                   — подсказка за шаблоните"
 
-#: builtin/clean.c:823 git-add--interactive.perl:1786
+#: builtin/clean.c:823 git-add--interactive.perl:1793
 msgid "*** Commands ***"
 msgstr "●●● Команди ●●●"
 
-#: builtin/clean.c:824 git-add--interactive.perl:1783
+#: builtin/clean.c:824 git-add--interactive.perl:1790
 msgid "What now"
 msgstr "Избор на следващо действие"
 
@@ -7151,148 +7569,150 @@ msgstr ""
 "което изисква някоя от опциите „-i“, „-n“ или „-f“.  Няма да се извърши "
 "изчистване"
 
-#: builtin/clone.c:40
+#: builtin/clone.c:42
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr "git clone [ОПЦИЯ…] [--] ХРАНИЛИЩЕ [ДИРЕКТОРИЯ]"
 
-#: builtin/clone.c:85
+#: builtin/clone.c:87
 msgid "don't create a checkout"
 msgstr "без създаване на работно дърво"
 
-#: builtin/clone.c:86 builtin/clone.c:88 builtin/init-db.c:479
+#: builtin/clone.c:88 builtin/clone.c:90 builtin/init-db.c:479
 msgid "create a bare repository"
 msgstr "създаване на голо хранилище"
 
-#: builtin/clone.c:90
+#: builtin/clone.c:92
 msgid "create a mirror repository (implies bare)"
 msgstr ""
 "създаване на хранилище-огледало (включва опцията „--bare“ за голо хранилище)"
 
-#: builtin/clone.c:92
+#: builtin/clone.c:94
 msgid "to clone from a local repository"
 msgstr "клониране от локално хранилище"
 
-#: builtin/clone.c:94
+#: builtin/clone.c:96
 msgid "don't use local hardlinks, always copy"
 msgstr "без твърди връзки, файловете винаги да се копират"
 
-#: builtin/clone.c:96
+#: builtin/clone.c:98
 msgid "setup as shared repository"
 msgstr "настройване за споделено хранилище"
 
-#: builtin/clone.c:98 builtin/clone.c:102
+#: builtin/clone.c:100 builtin/clone.c:104
 msgid "pathspec"
 msgstr "път"
 
-#: builtin/clone.c:98 builtin/clone.c:102
+#: builtin/clone.c:100 builtin/clone.c:104
 msgid "initialize submodules in the clone"
 msgstr "инициализиране на подмодулите при това клониране"
 
-#: builtin/clone.c:105
+#: builtin/clone.c:107
 msgid "number of submodules cloned in parallel"
 msgstr "брой подмодули, клонирани паралелно"
 
-#: builtin/clone.c:106 builtin/init-db.c:476
+#: builtin/clone.c:108 builtin/init-db.c:476
 msgid "template-directory"
 msgstr "директория с шаблони"
 
-#: builtin/clone.c:107 builtin/init-db.c:477
+#: builtin/clone.c:109 builtin/init-db.c:477
 msgid "directory from which templates will be used"
 msgstr "директория, която съдържа шаблоните, които да се ползват"
 
-#: builtin/clone.c:109 builtin/clone.c:111 builtin/submodule--helper.c:1210
-#: builtin/submodule--helper.c:1577
+#: builtin/clone.c:111 builtin/clone.c:113 builtin/submodule--helper.c:1223
+#: builtin/submodule--helper.c:1594
 msgid "reference repository"
 msgstr "еталонно хранилище"
 
-#: builtin/clone.c:113
+#: builtin/clone.c:115 builtin/submodule--helper.c:1225
+#: builtin/submodule--helper.c:1596
 msgid "use --reference only while cloning"
 msgstr "опцията „--reference“ може да се използва само при клониране"
 
-#: builtin/clone.c:114 builtin/column.c:27 builtin/merge-file.c:44
+#: builtin/clone.c:116 builtin/column.c:27 builtin/merge-file.c:44
+#: builtin/pack-objects.c:3166 builtin/repack.c:213
 msgid "name"
 msgstr "ИМЕ"
 
-#: builtin/clone.c:115
+#: builtin/clone.c:117
 msgid "use <name> instead of 'origin' to track upstream"
 msgstr "използване на това ИМЕ вместо „origin“ при проследяване на клони"
 
-#: builtin/clone.c:117
+#: builtin/clone.c:119
 msgid "checkout <branch> instead of the remote's HEAD"
 msgstr "изтегляне на този КЛОН, а не соченият от отдалечения указател „HEAD“"
 
-#: builtin/clone.c:119
+#: builtin/clone.c:121
 msgid "path to git-upload-pack on the remote"
 msgstr "път към командата „git-upload-pack“ на отдалеченото хранилище"
 
-#: builtin/clone.c:120 builtin/fetch.c:151 builtin/grep.c:813
-#: builtin/pull.c:211
+#: builtin/clone.c:122 builtin/fetch.c:150 builtin/grep.c:813
+#: builtin/pull.c:216
 msgid "depth"
 msgstr "ДЪЛБОЧИНА"
 
-#: builtin/clone.c:121
+#: builtin/clone.c:123
 msgid "create a shallow clone of that depth"
 msgstr "плитко клониране до тази ДЪЛБОЧИНА"
 
-#: builtin/clone.c:122 builtin/fetch.c:153 builtin/pack-objects.c:3017
+#: builtin/clone.c:124 builtin/fetch.c:152 builtin/pack-objects.c:3157
 #: parse-options.h:154
 msgid "time"
 msgstr "ВРЕМЕ"
 
-#: builtin/clone.c:123
+#: builtin/clone.c:125
 msgid "create a shallow clone since a specific time"
 msgstr "плитко клониране до момент във времето"
 
-#: builtin/clone.c:124 builtin/fetch.c:155
+#: builtin/clone.c:126 builtin/fetch.c:154
 msgid "revision"
 msgstr "версия"
 
-#: builtin/clone.c:125 builtin/fetch.c:156
+#: builtin/clone.c:127 builtin/fetch.c:155
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "задълбочаване на историята на плитко хранилище до изключващ указател"
 
-#: builtin/clone.c:127
+#: builtin/clone.c:129
 msgid "clone only one branch, HEAD or --branch"
 msgstr ""
 "клониране само на един клон — или сочения от отдалечения „HEAD“, или изрично "
 "зададения с „--branch“"
 
-#: builtin/clone.c:129
+#: builtin/clone.c:131
 msgid "don't clone any tags, and make later fetches not to follow them"
 msgstr ""
 "без клониране на етикети, като последващите доставяния няма да ги следят"
 
-#: builtin/clone.c:131
+#: builtin/clone.c:133
 msgid "any cloned submodules will be shallow"
 msgstr "всички клонирани подмодули ще са плитки"
 
-#: builtin/clone.c:132 builtin/init-db.c:485
+#: builtin/clone.c:134 builtin/init-db.c:485
 msgid "gitdir"
 msgstr "СЛУЖЕБНА_ДИРЕКТОРИЯ"
 
-#: builtin/clone.c:133 builtin/init-db.c:486
+#: builtin/clone.c:135 builtin/init-db.c:486
 msgid "separate git dir from working tree"
 msgstr "отделна СЛУЖЕБНА_ДИРЕКТОРИЯ за git извън работното дърво"
 
-#: builtin/clone.c:134
+#: builtin/clone.c:136
 msgid "key=value"
 msgstr "КЛЮЧ=СТОЙНОСТ"
 
-#: builtin/clone.c:135
+#: builtin/clone.c:137
 msgid "set config inside the new repository"
 msgstr "задаване на настройките на новото хранилище"
 
-#: builtin/clone.c:136 builtin/fetch.c:173 builtin/pull.c:224
-#: builtin/push.c:567
+#: builtin/clone.c:138 builtin/fetch.c:173 builtin/pull.c:229
+#: builtin/push.c:583
 msgid "use IPv4 addresses only"
 msgstr "само адреси IPv4"
 
-#: builtin/clone.c:138 builtin/fetch.c:175 builtin/pull.c:227
-#: builtin/push.c:569
+#: builtin/clone.c:140 builtin/fetch.c:175 builtin/pull.c:232
+#: builtin/push.c:585
 msgid "use IPv6 addresses only"
 msgstr "само адреси IPv6"
 
-#: builtin/clone.c:276
+#: builtin/clone.c:278
 msgid ""
 "No directory name could be guessed.\n"
 "Please specify a directory on the command line"
@@ -7300,43 +7720,43 @@ msgstr ""
 "Името на директорията не може да бъде отгатнато.\n"
 "Задайте директорията изрично на командния ред"
 
-#: builtin/clone.c:329
+#: builtin/clone.c:331
 #, c-format
 msgid "info: Could not add alternate for '%s': %s\n"
 msgstr ""
 "ПРЕДУПРЕЖДЕНИЕ: не може да се добави алтернативен източник на „%s“: %s\n"
 
-#: builtin/clone.c:401
+#: builtin/clone.c:403
 #, c-format
 msgid "failed to open '%s'"
 msgstr "директорията „%s“ не може да бъде отворена"
 
-#: builtin/clone.c:409
+#: builtin/clone.c:411
 #, c-format
 msgid "%s exists and is not a directory"
 msgstr "„%s“ съществува и не е директория"
 
-#: builtin/clone.c:423
+#: builtin/clone.c:425
 #, c-format
 msgid "failed to stat %s\n"
 msgstr "не може да бъде получена информация чрез „stat“ за „%s“\n"
 
-#: builtin/clone.c:445
+#: builtin/clone.c:447
 #, c-format
 msgid "failed to create link '%s'"
 msgstr "връзката „%s“ не може да бъде създадена"
 
-#: builtin/clone.c:449
+#: builtin/clone.c:451
 #, c-format
 msgid "failed to copy file to '%s'"
 msgstr "файлът не може да бъде копиран като „%s“"
 
-#: builtin/clone.c:475
+#: builtin/clone.c:477
 #, c-format
 msgid "done.\n"
 msgstr "действието завърши.\n"
 
-#: builtin/clone.c:489
+#: builtin/clone.c:491
 msgid ""
 "Clone succeeded, but checkout failed.\n"
 "You can inspect what was checked out with 'git status'\n"
@@ -7347,103 +7767,103 @@ msgstr ""
 "клон в момента са изтеглени с командата „git status“.  Можете да\n"
 "завършите изтеглянето на клона с командата „git checkout -f HEAD“.\n"
 
-#: builtin/clone.c:566
+#: builtin/clone.c:568
 #, c-format
 msgid "Could not find remote branch %s to clone."
 msgstr ""
 "Клонът „%s“ от отдалеченото хранилище, което клонирате,\n"
 "и който следва да бъде изтеглен, не съществува."
 
-#: builtin/clone.c:661
+#: builtin/clone.c:663
 msgid "remote did not send all necessary objects"
 msgstr "отдалеченото хранилище не изпрати всички необходими обекти."
 
-#: builtin/clone.c:677
+#: builtin/clone.c:679
 #, c-format
 msgid "unable to update %s"
 msgstr "обектът „%s“ не може да бъде обновен"
 
-#: builtin/clone.c:726
+#: builtin/clone.c:728
 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
 msgstr ""
 "указателят „HEAD“ от отдалеченото хранилище сочи към нещо,\n"
 "което не съществува.  Не може да се изтегли определен клон.\n"
 
-#: builtin/clone.c:756
+#: builtin/clone.c:758
 msgid "unable to checkout working tree"
 msgstr "работното дърво не може да бъде подготвено"
 
-#: builtin/clone.c:801
+#: builtin/clone.c:803
 msgid "unable to write parameters to config file"
 msgstr "настройките не могат да бъдат записани в конфигурационния файл"
 
-#: builtin/clone.c:864
+#: builtin/clone.c:866
 msgid "cannot repack to clean up"
 msgstr "не може да се извърши пакетиране за изчистване на файловете"
 
-#: builtin/clone.c:866
+#: builtin/clone.c:868
 msgid "cannot unlink temporary alternates file"
 msgstr "временният файл за алтернативни обекти не може да бъде изтрит"
 
-#: builtin/clone.c:906 builtin/receive-pack.c:1946
+#: builtin/clone.c:907 builtin/receive-pack.c:1947
 msgid "Too many arguments."
 msgstr "Прекалено много аргументи."
 
-#: builtin/clone.c:910
+#: builtin/clone.c:911
 msgid "You must specify a repository to clone."
 msgstr "Трябва да укажете кое хранилище искате да клонирате."
 
-#: builtin/clone.c:923
+#: builtin/clone.c:924
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr "опциите „--bare“ и „--origin %s“ са несъвместими."
 
-#: builtin/clone.c:926
+#: builtin/clone.c:927
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "опциите „--bare“ и „--separate-git-dir“ са несъвместими."
 
-#: builtin/clone.c:939
+#: builtin/clone.c:940
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "не съществува хранилище „%s“"
 
-#: builtin/clone.c:945 builtin/fetch.c:1455
+#: builtin/clone.c:946 builtin/fetch.c:1460
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "дълбочината трябва да е положително цяло число, а не „%s“"
 
-#: builtin/clone.c:955
+#: builtin/clone.c:956
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr "целевият път „%s“ съществува и не е празна директория."
 
-#: builtin/clone.c:965
+#: builtin/clone.c:966
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "в „%s“ вече съществува работно дърво."
 
-#: builtin/clone.c:980 builtin/clone.c:1001 builtin/difftool.c:270
-#: builtin/worktree.c:255 builtin/worktree.c:285
+#: builtin/clone.c:981 builtin/clone.c:1002 builtin/difftool.c:270
+#: builtin/worktree.c:246 builtin/worktree.c:276
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "родителските директории на „%s“ не могат да бъдат създадени"
 
-#: builtin/clone.c:985
+#: builtin/clone.c:986
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "работното дърво в „%s“ не може да бъде създадено."
 
-#: builtin/clone.c:1005
+#: builtin/clone.c:1006
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "Клониране и създаване на голо хранилище в „%s“…\n"
 
-#: builtin/clone.c:1007
+#: builtin/clone.c:1008
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Клониране и създаване на хранилище в „%s“…\n"
 
-#: builtin/clone.c:1031
+#: builtin/clone.c:1032
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
@@ -7520,7 +7940,7 @@ msgstr "Поле в знаци отдясно"
 msgid "Padding space between columns"
 msgstr "Поле в знаци между колоните"
 
-#: builtin/column.c:52
+#: builtin/column.c:51
 msgid "--command must be the first argument"
 msgstr "опцията „--command“ трябва да е първият аргумент"
 
@@ -7579,61 +7999,61 @@ msgstr ""
 "Чрез командата „git cherry-pick --continue“ ще продължите отбирането на\n"
 "останалите подавания.\n"
 
-#: builtin/commit.c:284
+#: builtin/commit.c:293
 msgid "failed to unpack HEAD tree object"
 msgstr "върховото дърво (HEAD tree object) не може да бъде извадено от пакет"
 
-#: builtin/commit.c:325
+#: builtin/commit.c:334
 msgid "unable to create temporary index"
 msgstr "временният индекс не може да бъде създаден"
 
-#: builtin/commit.c:331
+#: builtin/commit.c:340
 msgid "interactive add failed"
 msgstr "неуспешно интерактивно добавяне"
 
-#: builtin/commit.c:344
+#: builtin/commit.c:353
 msgid "unable to update temporary index"
 msgstr "временният индекс не може да бъде обновен"
 
-#: builtin/commit.c:346
+#: builtin/commit.c:355
 msgid "Failed to update main cache tree"
 msgstr "Дървото на основния кеш не може да бъде обновено"
 
-#: builtin/commit.c:371 builtin/commit.c:395 builtin/commit.c:444
+#: builtin/commit.c:380 builtin/commit.c:403 builtin/commit.c:449
 msgid "unable to write new_index file"
 msgstr "новият индекс не може да бъде записан"
 
-#: builtin/commit.c:427
+#: builtin/commit.c:432
 msgid "cannot do a partial commit during a merge."
 msgstr "по време на сливане не може да се извърши частично подаване."
 
-#: builtin/commit.c:429
+#: builtin/commit.c:434
 msgid "cannot do a partial commit during a cherry-pick."
 msgstr "по време на отбиране не може да се извърши частично подаване."
 
-#: builtin/commit.c:437
+#: builtin/commit.c:442
 msgid "cannot read the index"
 msgstr "индексът не може да бъде прочетен"
 
-#: builtin/commit.c:456
+#: builtin/commit.c:461
 msgid "unable to write temporary index file"
 msgstr "временният индекс не може да бъде записан"
 
-#: builtin/commit.c:553
+#: builtin/commit.c:558
 #, c-format
 msgid "commit '%s' lacks author header"
 msgstr "заглавната част за автор в подаването „%s“ липсва"
 
-#: builtin/commit.c:555
+#: builtin/commit.c:560
 #, c-format
 msgid "commit '%s' has malformed author line"
 msgstr "заглавната част за автор в подаването „%s“ е неправилна"
 
-#: builtin/commit.c:574
+#: builtin/commit.c:579
 msgid "malformed --author parameter"
 msgstr "неправилен параметър към опцията „--author“"
 
-#: builtin/commit.c:626
+#: builtin/commit.c:631
 msgid ""
 "unable to select a comment character that is not used\n"
 "in the current commit message"
@@ -7641,38 +8061,38 @@ msgstr ""
 "не може да се избере знак за коментар — в текущото съобщение за подаване са "
 "използвани всички подобни знаци"
 
-#: builtin/commit.c:663 builtin/commit.c:696 builtin/commit.c:1024
+#: builtin/commit.c:668 builtin/commit.c:701 builtin/commit.c:1029
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "следното подаване не може да бъде открито: %s"
 
-#: builtin/commit.c:675 builtin/shortlog.c:309
+#: builtin/commit.c:680 builtin/shortlog.c:316
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(изчитане на съобщението за подаване от стандартния вход)\n"
 
-#: builtin/commit.c:677
+#: builtin/commit.c:682
 msgid "could not read log from standard input"
 msgstr "съобщението за подаване не бе прочетено стандартния вход"
 
-#: builtin/commit.c:681
+#: builtin/commit.c:686
 #, c-format
 msgid "could not read log file '%s'"
 msgstr "файлът със съобщението за подаване „%s“ не може да бъде прочетен"
 
-#: builtin/commit.c:710 builtin/commit.c:718
+#: builtin/commit.c:715 builtin/commit.c:723
 msgid "could not read SQUASH_MSG"
-msgstr "съобщението за смачкване SQUASH_MSG не може да бъде прочетено"
+msgstr "съобщението за вкарване SQUASH_MSG не може да бъде прочетено"
 
-#: builtin/commit.c:715
+#: builtin/commit.c:720
 msgid "could not read MERGE_MSG"
 msgstr "съобщението за сливане MERGE_MSG не може да бъде прочетено"
 
-#: builtin/commit.c:769
+#: builtin/commit.c:774
 msgid "could not write commit template"
 msgstr "шаблонът за подаване не може да бъде запазен"
 
-#: builtin/commit.c:787
+#: builtin/commit.c:792
 #, c-format
 msgid ""
 "\n"
@@ -7687,7 +8107,7 @@ msgstr ""
 "  %s\n"
 "и опитайте отново.\n"
 
-#: builtin/commit.c:792
+#: builtin/commit.c:797
 #, c-format
 msgid ""
 "\n"
@@ -7703,7 +8123,7 @@ msgstr ""
 "  %s\n"
 "и опитайте отново.\n"
 
-#: builtin/commit.c:805
+#: builtin/commit.c:810
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -7712,7 +8132,7 @@ msgstr ""
 "Въведете съобщението за подаване на промените.  Редовете, които започват\n"
 "с „%c“, ще бъдат пропуснати, а празно съобщение преустановява подаването.\n"
 
-#: builtin/commit.c:813
+#: builtin/commit.c:818
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -7723,154 +8143,154 @@ msgstr ""
 "с „%c“, също ще бъдат включени — може да ги изтриете вие.  Празно \n"
 "съобщение преустановява подаването.\n"
 
-#: builtin/commit.c:830
+#: builtin/commit.c:835
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr "%sАвтор:   %.*s <%.*s>"
 
-#: builtin/commit.c:838
+#: builtin/commit.c:843
 #, c-format
 msgid "%sDate:      %s"
 msgstr "%sДата:    %s"
 
-#: builtin/commit.c:845
+#: builtin/commit.c:850
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr "%sПодаващ: %.*s <%.*s>"
 
-#: builtin/commit.c:862
+#: builtin/commit.c:867
 msgid "Cannot read index"
 msgstr "Индексът не може да бъде прочетен"
 
-#: builtin/commit.c:928
+#: builtin/commit.c:933
 msgid "Error building trees"
 msgstr "Грешка при изграждане на дърветата"
 
-#: builtin/commit.c:942 builtin/tag.c:256
+#: builtin/commit.c:947 builtin/tag.c:257
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "Подайте съобщението с някоя от опциите „-m“ или „-F“.\n"
 
-#: builtin/commit.c:986
+#: builtin/commit.c:991
 #, c-format
 msgid "--author '%s' is not 'Name <email>' and matches no existing author"
 msgstr ""
 "Опцията „--author '%s'“ не отговаря на форма̀та „Име <е-поща>“ и не съвпада с "
 "никой автор"
 
-#: builtin/commit.c:1000
+#: builtin/commit.c:1005
 #, c-format
 msgid "Invalid ignored mode '%s'"
 msgstr "Неправилен режим за игнорираните файлове: „%s“"
 
-#: builtin/commit.c:1014 builtin/commit.c:1264
+#: builtin/commit.c:1019 builtin/commit.c:1269
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "Неправилен режим за неследените файлове: „%s“"
 
-#: builtin/commit.c:1052
+#: builtin/commit.c:1057
 msgid "--long and -z are incompatible"
 msgstr "Опциите „--long“ и „-z“ са несъвместими."
 
-#: builtin/commit.c:1085
+#: builtin/commit.c:1090
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "Опциите „--reset-author“ и „--author“ са несъвместими."
 
-#: builtin/commit.c:1094
+#: builtin/commit.c:1099
 msgid "You have nothing to amend."
 msgstr "Няма какво да бъде поправено."
 
-#: builtin/commit.c:1097
+#: builtin/commit.c:1102
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr "В момента се извършва сливане, не можете да поправяте."
 
-#: builtin/commit.c:1099
+#: builtin/commit.c:1104
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr "В момента се извършва отбиране на подаване, не можете да поправяте."
 
-#: builtin/commit.c:1102
+#: builtin/commit.c:1107
 msgid "Options --squash and --fixup cannot be used together"
 msgstr "Опциите „--squash“ и „--fixup“ са несъвместими."
 
-#: builtin/commit.c:1112
+#: builtin/commit.c:1117
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "Опциите „-c“, „-C“, „-F“ и „--fixup““ са несъвместими."
 
-#: builtin/commit.c:1114
+#: builtin/commit.c:1119
 msgid "Option -m cannot be combined with -c/-C/-F."
 msgstr "Опцията „-m“ е несъвместима с „-c“, „-C“ и „-F“."
 
-#: builtin/commit.c:1122
+#: builtin/commit.c:1127
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr ""
 "Опцията „--reset-author“ може да се използва само заедно с „-C“, „-c“ или\n"
 "„--amend“."
 
-#: builtin/commit.c:1139
+#: builtin/commit.c:1144
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr ""
 "Опциите „--include“, „--only“, „--all“, „--interactive“ и „--patch“ са\n"
 "несъвместими."
 
-#: builtin/commit.c:1141
+#: builtin/commit.c:1146
 msgid "No paths with --include/--only does not make sense."
 msgstr "Опциите „--include“ и „--only“ изискват аргументи."
 
-#: builtin/commit.c:1155 builtin/tag.c:542
+#: builtin/commit.c:1160 builtin/tag.c:543
 #, c-format
 msgid "Invalid cleanup mode %s"
 msgstr "Несъществуващ режим на изчистване „%s“"
 
-#: builtin/commit.c:1160
+#: builtin/commit.c:1165
 msgid "Paths with -a does not make sense."
 msgstr "Опцията „-a“ е несъвместима със задаването на пътища."
 
-#: builtin/commit.c:1278 builtin/commit.c:1443
+#: builtin/commit.c:1303 builtin/commit.c:1480
 msgid "show status concisely"
 msgstr "кратка информация за състоянието"
 
-#: builtin/commit.c:1280 builtin/commit.c:1445
+#: builtin/commit.c:1305 builtin/commit.c:1482
 msgid "show branch information"
 msgstr "информация за клоните"
 
-#: builtin/commit.c:1282
+#: builtin/commit.c:1307
 msgid "show stash information"
 msgstr "информация за скатаното"
 
-#: builtin/commit.c:1284 builtin/commit.c:1447
+#: builtin/commit.c:1309 builtin/commit.c:1484
 msgid "compute full ahead/behind values"
 msgstr "изчисляване на точните стойности напред/назад"
 
-#: builtin/commit.c:1286
+#: builtin/commit.c:1311
 msgid "version"
 msgstr "версия"
 
-#: builtin/commit.c:1286 builtin/commit.c:1449 builtin/push.c:542
-#: builtin/worktree.c:541
+#: builtin/commit.c:1311 builtin/commit.c:1486 builtin/push.c:558
+#: builtin/worktree.c:581
 msgid "machine-readable output"
 msgstr "формат на изхода за четене от програма"
 
-#: builtin/commit.c:1289 builtin/commit.c:1451
+#: builtin/commit.c:1314 builtin/commit.c:1488
 msgid "show status in long format (default)"
 msgstr "подробна информация за състоянието (стандартно)"
 
-#: builtin/commit.c:1292 builtin/commit.c:1454
+#: builtin/commit.c:1317 builtin/commit.c:1491
 msgid "terminate entries with NUL"
 msgstr "разделяне на елементите с нулевия знак „NUL“"
 
-#: builtin/commit.c:1294 builtin/commit.c:1298 builtin/commit.c:1457
-#: builtin/fast-export.c:999 builtin/fast-export.c:1002 builtin/tag.c:396
+#: builtin/commit.c:1319 builtin/commit.c:1323 builtin/commit.c:1494
+#: builtin/fast-export.c:1001 builtin/fast-export.c:1004 builtin/tag.c:397
 msgid "mode"
 msgstr "РЕЖИМ"
 
-#: builtin/commit.c:1295 builtin/commit.c:1457
+#: builtin/commit.c:1320 builtin/commit.c:1494
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr ""
 "извеждане на неследените файлове.  Възможните РЕЖИМи са „all“ (подробна "
 "информация), „normal“ (кратка информация), „no“ (без неследените файлове).  "
 "Стандартният РЕЖИМ е: „all“."
 
-#: builtin/commit.c:1299
+#: builtin/commit.c:1324
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
@@ -7879,11 +8299,11 @@ msgstr ""
 "„traditional“ (традиционен), „matching“ (напасващи), „no“ (без игнорираните "
 "файлове).  Стандартният РЕЖИМ е: „traditional“."
 
-#: builtin/commit.c:1301 parse-options.h:167
+#: builtin/commit.c:1326 parse-options.h:167
 msgid "when"
 msgstr "КОГА"
 
-#: builtin/commit.c:1302
+#: builtin/commit.c:1327
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
@@ -7892,190 +8312,198 @@ msgstr ""
 "една от „all“ (всички), „dirty“ (тези с неподадени промени), "
 "„untracked“ (неследени)"
 
-#: builtin/commit.c:1304
+#: builtin/commit.c:1329
 msgid "list untracked files in columns"
 msgstr "извеждане на неследените файлове в колони"
 
-#: builtin/commit.c:1323
+#: builtin/commit.c:1330
+msgid "do not detect renames"
+msgstr "без засичане на преименуванията"
+
+#: builtin/commit.c:1332
+msgid "detect renames, optionally set similarity index"
+msgstr "засичане на преименуванията, може да се зададе коефициент на прилика"
+
+#: builtin/commit.c:1352
 msgid "Unsupported combination of ignored and untracked-files arguments"
 msgstr "Неподдържана комбинация от аргументи за игнорирани и неследени файлове"
 
-#: builtin/commit.c:1413
+#: builtin/commit.c:1450
 msgid "suppress summary after successful commit"
 msgstr "без информация след успешно подаване"
 
-#: builtin/commit.c:1414
+#: builtin/commit.c:1451
 msgid "show diff in commit message template"
 msgstr "добавяне на разликата към шаблона за съобщението при подаване"
 
-#: builtin/commit.c:1416
+#: builtin/commit.c:1453
 msgid "Commit message options"
 msgstr "Опции за съобщението при подаване"
 
-#: builtin/commit.c:1417 builtin/tag.c:393
+#: builtin/commit.c:1454 builtin/tag.c:394
 msgid "read message from file"
 msgstr "взимане на съобщението от ФАЙЛ"
 
-#: builtin/commit.c:1418
+#: builtin/commit.c:1455
 msgid "author"
 msgstr "АВТОР"
 
-#: builtin/commit.c:1418
+#: builtin/commit.c:1455
 msgid "override author for commit"
 msgstr "задаване на АВТОР за подаването"
 
-#: builtin/commit.c:1419 builtin/gc.c:359
+#: builtin/commit.c:1456 builtin/gc.c:501
 msgid "date"
 msgstr "ДАТА"
 
-#: builtin/commit.c:1419
+#: builtin/commit.c:1456
 msgid "override date for commit"
 msgstr "задаване на ДАТА за подаването"
 
-#: builtin/commit.c:1420 builtin/merge.c:226 builtin/notes.c:402
-#: builtin/notes.c:565 builtin/tag.c:391
+#: builtin/commit.c:1457 builtin/merge.c:228 builtin/notes.c:402
+#: builtin/notes.c:565 builtin/tag.c:392
 msgid "message"
 msgstr "СЪОБЩЕНИЕ"
 
-#: builtin/commit.c:1420
+#: builtin/commit.c:1457
 msgid "commit message"
 msgstr "СЪОБЩЕНИЕ при подаване"
 
-#: builtin/commit.c:1421 builtin/commit.c:1422 builtin/commit.c:1423
-#: builtin/commit.c:1424 parse-options.h:269 ref-filter.h:92
+#: builtin/commit.c:1458 builtin/commit.c:1459 builtin/commit.c:1460
+#: builtin/commit.c:1461 parse-options.h:270 ref-filter.h:92
 msgid "commit"
 msgstr "ПОДАВАНЕ"
 
-#: builtin/commit.c:1421
+#: builtin/commit.c:1458
 msgid "reuse and edit message from specified commit"
 msgstr "преизползване и редактиране на съобщението от указаното ПОДАВАНЕ"
 
-#: builtin/commit.c:1422
+#: builtin/commit.c:1459
 msgid "reuse message from specified commit"
 msgstr "преизползване на съобщението от указаното ПОДАВАНЕ"
 
-#: builtin/commit.c:1423
+#: builtin/commit.c:1460
 msgid "use autosquash formatted message to fixup specified commit"
 msgstr ""
-"използване Ð½Ð° Ð°Ð²Ñ\82омаÑ\82иÑ\87ноÑ\82о Ñ\81Ñ\8aобÑ\89ение Ð¿Ñ\80и Ñ\81маÑ\87кване Ð·Ð° Ð²ÐºÐ°Ñ\80ване Ð½Ð° Ñ\83казаноÑ\82о "
-"Ð\9fÐ\9eÐ\94Ð\90Ð\92Ð\90Ð\9dÐ\95 Ð² Ð¿Ñ\80едното без следа"
+"използване Ð½Ð° Ð°Ð²Ñ\82омаÑ\82иÑ\87ноÑ\82о Ñ\81Ñ\8aобÑ\89ение Ð·Ð° Ð²ÐºÐ°Ñ\80ване Ð½Ð° Ñ\83казаноÑ\82о Ð\9fÐ\9eÐ\94Ð\90Ð\92Ð\90Ð\9dÐ\95 Ð² "
+"пÑ\80едÑ\85одното без следа"
 
-#: builtin/commit.c:1424
+#: builtin/commit.c:1461
 msgid "use autosquash formatted message to squash specified commit"
 msgstr ""
-"използване Ð½Ð° Ð°Ð²Ñ\82омаÑ\82иÑ\87ноÑ\82о Ñ\81Ñ\8aобÑ\89ение Ð¿Ñ\80и Ñ\81маÑ\87кване Ð·Ð° Ñ\81маÑ\87кване Ð½Ð° "
-"указаното ПОДАВАНЕ в предното"
+"използване Ð½Ð° Ð°Ð²Ñ\82омаÑ\82иÑ\87ноÑ\82о Ñ\81Ñ\8aобÑ\89ение Ð·Ð° Ð²ÐºÐ°Ñ\80ване Ð½Ð° Ñ\83казаноÑ\82о Ð\9fÐ\9eÐ\94Ð\90Ð\92Ð\90Ð\9dÐ\95 Ð² "
+"предното"
 
-#: builtin/commit.c:1425
+#: builtin/commit.c:1462
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr ""
 "смяна на автора да съвпада с подаващия (използва се с „-C“/„-c“/„--amend“)"
 
-#: builtin/commit.c:1426 builtin/log.c:1446 builtin/merge.c:240
-#: builtin/pull.c:149 builtin/revert.c:105
+#: builtin/commit.c:1463 builtin/log.c:1446 builtin/merge.c:242
+#: builtin/pull.c:154 builtin/revert.c:105
 msgid "add Signed-off-by:"
 msgstr "добавяне на поле за подпис — „Signed-off-by:“"
 
-#: builtin/commit.c:1427
+#: builtin/commit.c:1464
 msgid "use specified template file"
 msgstr "използване на указания шаблонен ФАЙЛ"
 
-#: builtin/commit.c:1428
+#: builtin/commit.c:1465
 msgid "force edit of commit"
 msgstr "редактиране на подаване"
 
-#: builtin/commit.c:1429
+#: builtin/commit.c:1466
 msgid "default"
 msgstr "стандартно"
 
-#: builtin/commit.c:1429 builtin/tag.c:397
+#: builtin/commit.c:1466 builtin/tag.c:398
 msgid "how to strip spaces and #comments from message"
 msgstr "кои празни знаци и #коментари да се махат от съобщенията"
 
-#: builtin/commit.c:1430
+#: builtin/commit.c:1467
 msgid "include status in commit message template"
 msgstr "вмъкване на състоянието в шаблона за съобщението при подаване"
 
-#: builtin/commit.c:1432 builtin/merge.c:238 builtin/pull.c:179
+#: builtin/commit.c:1469 builtin/merge.c:240 builtin/pull.c:184
 #: builtin/revert.c:113
 msgid "GPG sign commit"
 msgstr "подписване на подаването с GPG"
 
-#: builtin/commit.c:1435
+#: builtin/commit.c:1472
 msgid "Commit contents options"
 msgstr "Опции за избор на файлове при подаване"
 
-#: builtin/commit.c:1436
+#: builtin/commit.c:1473
 msgid "commit all changed files"
 msgstr "подаване на всички променени файлове"
 
-#: builtin/commit.c:1437
+#: builtin/commit.c:1474
 msgid "add specified files to index for commit"
 msgstr "добавяне на указаните файлове към индекса за подаване"
 
-#: builtin/commit.c:1438
+#: builtin/commit.c:1475
 msgid "interactively add files"
 msgstr "интерактивно добавяне на файлове"
 
-#: builtin/commit.c:1439
+#: builtin/commit.c:1476
 msgid "interactively add changes"
 msgstr "интерактивно добавяне на промени"
 
-#: builtin/commit.c:1440
+#: builtin/commit.c:1477
 msgid "commit only specified files"
 msgstr "подаване само на указаните файлове"
 
-#: builtin/commit.c:1441
+#: builtin/commit.c:1478
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr ""
 "без изпълнение на куките преди подаване и при промяна на съобщението за "
 "подаване (pre-commit и commit-msg)"
 
-#: builtin/commit.c:1442
+#: builtin/commit.c:1479
 msgid "show what would be committed"
 msgstr "отпечатване на това, което би било подадено"
 
-#: builtin/commit.c:1455
+#: builtin/commit.c:1492
 msgid "amend previous commit"
 msgstr "поправяне на предишното подаване"
 
-#: builtin/commit.c:1456
+#: builtin/commit.c:1493
 msgid "bypass post-rewrite hook"
 msgstr "без изпълнение на куката след презаписване (post-rewrite)"
 
-#: builtin/commit.c:1461
+#: builtin/commit.c:1498
 msgid "ok to record an empty change"
 msgstr "позволяване на празни подавания"
 
-#: builtin/commit.c:1463
+#: builtin/commit.c:1500
 msgid "ok to record a change with an empty message"
 msgstr "позволяване на подавания с празни съобщения"
 
-#: builtin/commit.c:1536
+#: builtin/commit.c:1573
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "Повреден файл за върха за сливането „MERGE_HEAD“ (%s)"
 
-#: builtin/commit.c:1543
+#: builtin/commit.c:1580
 msgid "could not read MERGE_MODE"
 msgstr "режимът на сливане „MERGE_MODE“ не може да бъде прочетен"
 
-#: builtin/commit.c:1562
+#: builtin/commit.c:1599
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "съобщението за подаване не може да бъде прочетено: %s"
 
-#: builtin/commit.c:1573
+#: builtin/commit.c:1610
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr "Неизвършване на подаване поради празно съобщение.\n"
 
-#: builtin/commit.c:1578
+#: builtin/commit.c:1615
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr "Неизвършване на подаване поради нередактирано съобщение.\n"
 
-#: builtin/commit.c:1613
+#: builtin/commit.c:1650
 msgid ""
 "Repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full and quota is\n"
@@ -8085,154 +8513,220 @@ msgstr ""
 "не е записан.  Проверете дали дискът не е препълнен или не сте\n"
 "превишили дисковата си квота.  След това изпълнете „git reset HEAD“."
 
+#: builtin/commit-graph.c:9
+msgid "git commit-graph [--object-dir <objdir>]"
+msgstr "git commit-graph [--object-dir ДИР_ОБЕКТИ]"
+
+#: builtin/commit-graph.c:10 builtin/commit-graph.c:16
+msgid "git commit-graph read [--object-dir <objdir>]"
+msgstr "git commit-graph read [--object-dir ДИР_ОБЕКТИ]"
+
+#: builtin/commit-graph.c:11 builtin/commit-graph.c:21
+msgid ""
+"git commit-graph write [--object-dir <objdir>] [--append] [--stdin-packs|--"
+"stdin-commits]"
+msgstr ""
+"git commit-graph write [--object-dir ДИР_ОБЕКТИ] [--append] [--stdin-packs|--"
+"stdin-commits]"
+
+#: builtin/commit-graph.c:39 builtin/commit-graph.c:92
+#: builtin/commit-graph.c:147 builtin/fetch.c:161 builtin/log.c:1466
+msgid "dir"
+msgstr "директория"
+
+#: builtin/commit-graph.c:40 builtin/commit-graph.c:93
+#: builtin/commit-graph.c:148
+msgid "The object directory to store the graph"
+msgstr "ДИРекторията_с_ОБЕКТИ за запазване на гра̀фа"
+
+#: builtin/commit-graph.c:95
+msgid "scan pack-indexes listed by stdin for commits"
+msgstr ""
+"проверка на подаванията за индексите на пакетите изброени на командния ред"
+
+#: builtin/commit-graph.c:97
+msgid "start walk at commits listed by stdin"
+msgstr "започване на обхождането при подаванията подадени на стандартния вход"
+
+#: builtin/commit-graph.c:99
+msgid "include all commits already in the commit-graph file"
+msgstr ""
+"включване на всички подавания, които вече са във файла с гра̀фа на подаванията"
+
+#: builtin/commit-graph.c:108
+msgid "cannot use both --stdin-commits and --stdin-packs"
+msgstr "опциите „--stdin-commits“ и „--stdin-packs“ са несъвместими"
+
 #: builtin/config.c:10
 msgid "git config [<options>]"
 msgstr "git config [ОПЦИЯ…]"
 
-#: builtin/config.c:58
+#: builtin/config.c:101
+#, c-format
+msgid "unrecognized --type argument, %s"
+msgstr "непознат аргумент „--type“: %s"
+
+#: builtin/config.c:123
 msgid "Config file location"
 msgstr "Местоположение на конфигурационния файл"
 
-#: builtin/config.c:59
+#: builtin/config.c:124
 msgid "use global config file"
 msgstr "използване на глобалния конфигурационен файл"
 
-#: builtin/config.c:60
+#: builtin/config.c:125
 msgid "use system config file"
 msgstr "използване на системния конфигурационен файл"
 
-#: builtin/config.c:61
+#: builtin/config.c:126
 msgid "use repository config file"
 msgstr "използване на конфигурационния файл на хранилището"
 
-#: builtin/config.c:62
+#: builtin/config.c:127
 msgid "use given config file"
 msgstr "използване на зададения конфигурационен ФАЙЛ"
 
-#: builtin/config.c:63
+#: builtin/config.c:128
 msgid "blob-id"
 msgstr "ИДЕНТИФИКАТОР"
 
-#: builtin/config.c:63
+#: builtin/config.c:128
 msgid "read config from given blob object"
 msgstr ""
 "изчитане на конфигурацията от BLOB с този ИДЕНТИФИКАТОР на съдържанието"
 
-#: builtin/config.c:64
+#: builtin/config.c:129
 msgid "Action"
 msgstr "Действие"
 
-#: builtin/config.c:65
+#: builtin/config.c:130
 msgid "get value: name [value-regex]"
 msgstr "извеждане на стойност: ИМЕ [РЕГУЛЯРЕН_ИЗРАЗ_ЗА_СТОЙНОСТТА]"
 
-#: builtin/config.c:66
+#: builtin/config.c:131
 msgid "get all values: key [value-regex]"
 msgstr "извеждане на всички стойности: ключ [РЕГУЛЯРЕН_ИЗРАЗ_ЗА_СТОЙНОСТТА]"
 
-#: builtin/config.c:67
+#: builtin/config.c:132
 msgid "get values for regexp: name-regex [value-regex]"
 msgstr ""
 "извеждане на стойностите за РЕГУЛЯРНия_ИЗРАЗ: РЕГУЛЯРЕН_ИЗРАЗ_ЗА_ИМЕТО "
 "[РЕГУЛЯРЕН_ИЗРАЗ_ЗА_СТОЙНОСТТА]"
 
-#: builtin/config.c:68
+#: builtin/config.c:133
 msgid "get value specific for the URL: section[.var] URL"
 msgstr "извеждане на стойността за указания адрес: РАЗДЕЛ[.ПРОМЕНЛИВА] АДРЕС"
 
-#: builtin/config.c:69
+#: builtin/config.c:134
 msgid "replace all matching variables: name value [value_regex]"
 msgstr ""
 "замяна на всички съвпадащи променливи: ИМЕ СТОЙНОСТ "
 "[РЕГУЛЯРЕН_ИЗРАЗ_ЗА_СТОЙНОСТТА]"
 
-#: builtin/config.c:70
+#: builtin/config.c:135
 msgid "add a new variable: name value"
 msgstr "добавяне на нова променлива: ИМЕ СТОЙНОСТ"
 
-#: builtin/config.c:71
+#: builtin/config.c:136
 msgid "remove a variable: name [value-regex]"
 msgstr "изтриване на променлива: ИМЕ [РЕГУЛЯРЕН_ИЗРАЗ_ЗА_СТОЙНОСТТА]"
 
-#: builtin/config.c:72
+#: builtin/config.c:137
 msgid "remove all matches: name [value-regex]"
 msgstr "изтриване на всички съвпадащи: ИМЕ [РЕГУЛЯРЕН_ИЗРАЗ_ЗА_СТОЙНОСТТА]"
 
-#: builtin/config.c:73
+#: builtin/config.c:138
 msgid "rename section: old-name new-name"
 msgstr "преименуване на раздел: СТАРО_ИМЕ НОВО_ИМЕ"
 
-#: builtin/config.c:74
+#: builtin/config.c:139
 msgid "remove a section: name"
 msgstr "изтриване на раздел: ИМЕ"
 
-#: builtin/config.c:75
+#: builtin/config.c:140
 msgid "list all"
 msgstr "изброяване на всички"
 
-#: builtin/config.c:76
+#: builtin/config.c:141
 msgid "open an editor"
 msgstr "отваряне на редактор"
 
-#: builtin/config.c:77
+#: builtin/config.c:142
 msgid "find the color configured: slot [default]"
 msgstr "извеждане на зададения цвят: номер [стандартно]"
 
-#: builtin/config.c:78
+#: builtin/config.c:143
 msgid "find the color setting: slot [stdout-is-tty]"
 msgstr "извеждане на зададения цвят: номер (стандартният изход е терминал)"
 
-#: builtin/config.c:79
+#: builtin/config.c:144
 msgid "Type"
 msgstr "Вид"
 
-#: builtin/config.c:80
+#: builtin/config.c:145
+msgid "value is given this type"
+msgstr "стойността е от този вид"
+
+#: builtin/config.c:146
 msgid "value is \"true\" or \"false\""
 msgstr "СТОЙНОСТТА е „true“ (истина) или „false“ (лъжа)"
 
-#: builtin/config.c:81
+#: builtin/config.c:147
 msgid "value is decimal number"
 msgstr "СТОЙНОСТТА е цяло, десетично число"
 
-#: builtin/config.c:82
+#: builtin/config.c:148
 msgid "value is --bool or --int"
 msgstr "СТОЙНОСТТА е „--bool“ (булева) или „--int“ (десетично цяло число)"
 
-#: builtin/config.c:83
+#: builtin/config.c:149
 msgid "value is a path (file or directory name)"
 msgstr "СТОЙНОСТТА е път (до файл или директория)"
 
-#: builtin/config.c:84
+#: builtin/config.c:150
 msgid "value is an expiry date"
 msgstr "стойността е период на валидност/запазване"
 
-#: builtin/config.c:85
+#: builtin/config.c:151
 msgid "Other"
 msgstr "Други"
 
-#: builtin/config.c:86
+#: builtin/config.c:152
 msgid "terminate values with NUL byte"
 msgstr "разделяне на стойностите с нулевия знак „NUL“"
 
-#: builtin/config.c:87
+#: builtin/config.c:153
 msgid "show variable names only"
 msgstr "извеждане на имената на променливите"
 
-#: builtin/config.c:88
+#: builtin/config.c:154
 msgid "respect include directives on lookup"
 msgstr "при търсене да се уважат и директивите за включване"
 
-#: builtin/config.c:89
+#: builtin/config.c:155
 msgid "show origin of config (file, standard input, blob, command line)"
 msgstr ""
 "извеждане на мястото на задаване на настройката (файл, стандартен вход, "
-"обект BLOB, команден ред)"
+"обект-BLOB, команден ред)"
+
+#: builtin/config.c:156
+msgid "value"
+msgstr "СТОЙНОСТ"
 
-#: builtin/config.c:335
+#: builtin/config.c:156
+msgid "with --get, use default value when missing entry"
+msgstr "с „--get“ се използва стандартна СТОЙНОСТ при липсваща"
+
+#: builtin/config.c:332
+#, c-format
+msgid "failed to format default config value: %s"
+msgstr "неуспешно форматиране на стандартната стойност на настройка: %s"
+
+#: builtin/config.c:431
 msgid "unable to parse default color value"
 msgstr "неразпозната стойност на стандартния цвят"
 
-#: builtin/config.c:479
+#: builtin/config.c:575
 #, c-format
 msgid ""
 "# This is Git's per-user configuration file.\n"
@@ -8247,16 +8741,20 @@ msgstr ""
 "#\tname = %s\n"
 "#\temail = %s\n"
 
-#: builtin/config.c:507
+#: builtin/config.c:603
 msgid "--local can only be used inside a git repository"
 msgstr "„--local“ може да се използва само в хранилище"
 
-#: builtin/config.c:632
+#: builtin/config.c:606
+msgid "--blob can only be used inside a git repository"
+msgstr "„--blob“ може да се използва само в хранилище"
+
+#: builtin/config.c:735
 #, c-format
 msgid "cannot create configuration file %s"
 msgstr "конфигурационният файл „%s“ не може да бъде създаден"
 
-#: builtin/config.c:645
+#: builtin/config.c:748
 #, c-format
 msgid ""
 "cannot overwrite multiple values with a single value\n"
@@ -8266,11 +8764,11 @@ msgstr ""
 "За да промените „%s“, ползвайте регулярен израз или опциите „--add“ и „--"
 "replace-all“."
 
-#: builtin/count-objects.c:88
+#: builtin/count-objects.c:90
 msgid "git count-objects [-v] [-H | --human-readable]"
 msgstr "git count-objects [-v] [-H | --human-readable]"
 
-#: builtin/count-objects.c:98
+#: builtin/count-objects.c:100
 msgid "print sizes in human readable format"
 msgstr "извеждане на размерите на обектите във формат лесно четим от хора"
 
@@ -8369,7 +8867,7 @@ msgstr "Неправилно име на обект „%s“"
 #: builtin/describe.c:508
 #, c-format
 msgid "%s is neither a commit nor blob"
-msgstr "„%s“ не е нито подаване, нито обект BLOB"
+msgstr "„%s“ не е нито подаване, нито обект-BLOB"
 
 #: builtin/describe.c:522
 msgid "find the tag that comes after the commit"
@@ -8468,7 +8966,7 @@ msgstr "зададен е неправилен обект „%s“."
 #: builtin/diff.c:408
 #, c-format
 msgid "more than two blobs given: '%s'"
-msgstr "зададени са повече от 2 обекта BLOB: „%s“"
+msgstr "зададени са повече от 2 обекта-BLOB: „%s“"
 
 #: builtin/diff.c:413
 #, c-format
@@ -8537,25 +9035,25 @@ msgstr "разлика по директории"
 msgid "do not prompt before launching a diff tool"
 msgstr "стартиране на ПРОГРАМАта за разлики без предупреждение"
 
-#: builtin/difftool.c:705
+#: builtin/difftool.c:704
 msgid "use symlinks in dir-diff mode"
 msgstr "следване на символните връзки при разлика по директории"
 
-#: builtin/difftool.c:706
+#: builtin/difftool.c:705
 msgid "<tool>"
 msgstr "ПРОГРАМА"
 
-#: builtin/difftool.c:707
+#: builtin/difftool.c:706
 msgid "use the specified diff tool"
 msgstr "използване на указаната ПРОГРАМА"
 
-#: builtin/difftool.c:709
+#: builtin/difftool.c:708
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr ""
 "извеждане на списък с всички ПРОГРАМи, които може да се ползват с опцията „--"
 "tool“"
 
-#: builtin/difftool.c:712
+#: builtin/difftool.c:711
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
@@ -8563,169 +9061,165 @@ msgstr ""
 "„git-difftool“ да спре работа, когато стартираната ПРОГРАМА завърши с "
 "ненулев код"
 
-#: builtin/difftool.c:714
+#: builtin/difftool.c:713
 msgid "<command>"
 msgstr "КОМАНДА"
 
-#: builtin/difftool.c:715
+#: builtin/difftool.c:714
 msgid "specify a custom command for viewing diffs"
 msgstr "команда за разглеждане на разлики"
 
-#: builtin/difftool.c:739
+#: builtin/difftool.c:738
 msgid "no <tool> given for --tool=<tool>"
 msgstr "не е зададена програма за „--tool=ПРОГРАМА“"
 
-#: builtin/difftool.c:746
+#: builtin/difftool.c:745
 msgid "no <cmd> given for --extcmd=<cmd>"
 msgstr "не е зададена команда за „--extcmd=КОМАНДА“"
 
-#: builtin/fast-export.c:26
+#: builtin/fast-export.c:27
 msgid "git fast-export [rev-list-opts]"
 msgstr "git fast-export [ОПЦИИ_ЗА_СПИСЪКА_С_ВЕРСИИ]"
 
-#: builtin/fast-export.c:998
+#: builtin/fast-export.c:1000
 msgid "show progress after <n> objects"
 msgstr "Съобщение за напредъка на всеки такъв БРОЙ обекта"
 
-#: builtin/fast-export.c:1000
+#: builtin/fast-export.c:1002
 msgid "select handling of signed tags"
 msgstr "Как да се обработват подписаните етикети"
 
-#: builtin/fast-export.c:1003
+#: builtin/fast-export.c:1005
 msgid "select handling of tags that tag filtered objects"
 msgstr "Как да се обработват етикетите на филтрираните обекти"
 
-#: builtin/fast-export.c:1006
+#: builtin/fast-export.c:1008
 msgid "Dump marks to this file"
 msgstr "Запазване на маркерите в този ФАЙЛ"
 
-#: builtin/fast-export.c:1008
+#: builtin/fast-export.c:1010
 msgid "Import marks from this file"
 msgstr "Внасяне на маркерите от този ФАЙЛ"
 
-#: builtin/fast-export.c:1010
+#: builtin/fast-export.c:1012
 msgid "Fake a tagger when tags lack one"
 msgstr "Да се използва изкуствено име на човек при липса на задаващ етикета"
 
-#: builtin/fast-export.c:1012
+#: builtin/fast-export.c:1014
 msgid "Output full tree for each commit"
 msgstr "Извеждане на цялото дърво за всяко подаване"
 
-#: builtin/fast-export.c:1014
+#: builtin/fast-export.c:1016
 msgid "Use the done feature to terminate the stream"
 msgstr "Използване на маркер за завършване на потока"
 
-#: builtin/fast-export.c:1015
+#: builtin/fast-export.c:1017
 msgid "Skip output of blob data"
-msgstr "Без извеждане на съдържанието на обектите BLOB"
+msgstr "Без извеждане на съдържанието на обектите-BLOB"
 
-#: builtin/fast-export.c:1016
+#: builtin/fast-export.c:1018
 msgid "refspec"
 msgstr "УКАЗАТЕЛ_НА_ВЕРСИЯ"
 
-#: builtin/fast-export.c:1017
+#: builtin/fast-export.c:1019
 msgid "Apply refspec to exported refs"
 msgstr "Прилагане на УКАЗАТЕЛя_НА_ВЕРСИЯ към изнесените указатели"
 
-#: builtin/fast-export.c:1018
+#: builtin/fast-export.c:1020
 msgid "anonymize output"
 msgstr "анонимизиране на извежданата информация"
 
-#: builtin/fetch.c:25
+#: builtin/fetch.c:26
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
 msgstr "git fetch [ОПЦИЯ…] [ХРАНИЛИЩЕ [УКАЗАТЕЛ…]]"
 
-#: builtin/fetch.c:26
+#: builtin/fetch.c:27
 msgid "git fetch [<options>] <group>"
 msgstr "git fetch [ОПЦИЯ…] ГРУПА"
 
-#: builtin/fetch.c:27
+#: builtin/fetch.c:28
 msgid "git fetch --multiple [<options>] [(<repository> | <group>)...]"
 msgstr "git fetch --multiple [ОПЦИЯ…] [(ХРАНИЛИЩЕ | ГРУПА)…]"
 
-#: builtin/fetch.c:28
+#: builtin/fetch.c:29
 msgid "git fetch --all [<options>]"
 msgstr "git fetch --all [ОПЦИЯ…]"
 
-#: builtin/fetch.c:124 builtin/pull.c:188
+#: builtin/fetch.c:123 builtin/pull.c:193
 msgid "fetch from all remotes"
 msgstr "доставяне от всички отдалечени хранилища"
 
-#: builtin/fetch.c:126 builtin/pull.c:191
+#: builtin/fetch.c:125 builtin/pull.c:196
 msgid "append to .git/FETCH_HEAD instead of overwriting"
 msgstr "добавяне към „.git/FETCH_HEAD“ вместо замяна"
 
-#: builtin/fetch.c:128 builtin/pull.c:194
+#: builtin/fetch.c:127 builtin/pull.c:199
 msgid "path to upload pack on remote end"
 msgstr "отдалечен път, където да се качи пакетът"
 
-#: builtin/fetch.c:129 builtin/pull.c:196
+#: builtin/fetch.c:128 builtin/pull.c:201
 msgid "force overwrite of local branch"
 msgstr "принудително презаписване на локалния клон"
 
-#: builtin/fetch.c:131
+#: builtin/fetch.c:130
 msgid "fetch from multiple remotes"
 msgstr "доставяне от множество отдалечени хранилища"
 
-#: builtin/fetch.c:133 builtin/pull.c:198
+#: builtin/fetch.c:132 builtin/pull.c:203
 msgid "fetch all tags and associated objects"
 msgstr "доставяне на всички етикети и принадлежащи обекти"
 
-#: builtin/fetch.c:135
+#: builtin/fetch.c:134
 msgid "do not fetch all tags (--no-tags)"
 msgstr "без доставянето на всички етикети „--no-tags“"
 
-#: builtin/fetch.c:137
+#: builtin/fetch.c:136
 msgid "number of submodules fetched in parallel"
 msgstr "брой подмодули доставени паралелно"
 
-#: builtin/fetch.c:139 builtin/pull.c:201
+#: builtin/fetch.c:138 builtin/pull.c:206
 msgid "prune remote-tracking branches no longer on remote"
 msgstr "окастряне на клоните следящи вече несъществуващи отдалечени клони"
 
-#: builtin/fetch.c:141
+#: builtin/fetch.c:140
 msgid "prune local tags no longer on remote and clobber changed tags"
 msgstr ""
 "окастряне на локалните етикети, които вече не съществуват в отдалеченото "
 "хранилище и махане на променените"
 
-#: builtin/fetch.c:142 builtin/fetch.c:165 builtin/pull.c:126
+#: builtin/fetch.c:141 builtin/fetch.c:164 builtin/pull.c:131
 msgid "on-demand"
 msgstr "ПРИ НУЖДА"
 
-#: builtin/fetch.c:143
+#: builtin/fetch.c:142
 msgid "control recursive fetching of submodules"
 msgstr "управление на рекурсивното доставяне на подмодулите"
 
-#: builtin/fetch.c:147 builtin/pull.c:209
+#: builtin/fetch.c:146 builtin/pull.c:214
 msgid "keep downloaded pack"
 msgstr "запазване на изтеглените пакети с обекти"
 
-#: builtin/fetch.c:149
+#: builtin/fetch.c:148
 msgid "allow updating of HEAD ref"
 msgstr "позволяване на обновяването на указателя „HEAD“"
 
-#: builtin/fetch.c:152 builtin/fetch.c:158 builtin/pull.c:212
+#: builtin/fetch.c:151 builtin/fetch.c:157 builtin/pull.c:217
 msgid "deepen history of shallow clone"
 msgstr "задълбочаване на историята на плитко хранилище"
 
-#: builtin/fetch.c:154
+#: builtin/fetch.c:153
 msgid "deepen history of shallow repository based on time"
 msgstr "задълбочаване на историята на плитко хранилище до определено време"
 
-#: builtin/fetch.c:160 builtin/pull.c:215
+#: builtin/fetch.c:159 builtin/pull.c:220
 msgid "convert to a complete repository"
 msgstr "превръщане в пълно хранилище"
 
-#: builtin/fetch.c:162 builtin/log.c:1466
-msgid "dir"
-msgstr "директория"
-
-#: builtin/fetch.c:163
+#: builtin/fetch.c:162
 msgid "prepend this to submodule path output"
 msgstr "добавяне на това пред пътя на подмодула"
 
-#: builtin/fetch.c:166
+#: builtin/fetch.c:165
 msgid ""
 "default for recursive fetching of submodules (lower priority than config "
 "files)"
@@ -8733,91 +9227,101 @@ msgstr ""
 "стандартно рекурсивно изтегляне на подмодулите (файловете с настройки са с "
 "приоритет)"
 
-#: builtin/fetch.c:170 builtin/pull.c:218
+#: builtin/fetch.c:169 builtin/pull.c:223
 msgid "accept refs that update .git/shallow"
 msgstr "приемане на указатели, които обновяват „.git/shallow“"
 
-#: builtin/fetch.c:171 builtin/pull.c:220
+#: builtin/fetch.c:170 builtin/pull.c:225
 msgid "refmap"
 msgstr "КАРТА_С_УКАЗАТЕЛИ"
 
-#: builtin/fetch.c:172 builtin/pull.c:221
+#: builtin/fetch.c:171 builtin/pull.c:226
 msgid "specify fetch refmap"
 msgstr "указване на КАРТАта_С_УКАЗАТЕЛИ за доставяне"
 
-#: builtin/fetch.c:431
+#: builtin/fetch.c:172 builtin/ls-remote.c:77 builtin/push.c:582
+#: builtin/send-pack.c:172
+msgid "server-specific"
+msgstr "специфични за сървъра"
+
+#: builtin/fetch.c:172 builtin/ls-remote.c:77 builtin/push.c:582
+#: builtin/send-pack.c:173
+msgid "option to transmit"
+msgstr "опция за пренос"
+
+#: builtin/fetch.c:442
 msgid "Couldn't find remote ref HEAD"
 msgstr "Указателят „HEAD“ в отдалеченото хранилище не може да бъде открит"
 
-#: builtin/fetch.c:549
+#: builtin/fetch.c:560
 #, c-format
 msgid "configuration fetch.output contains invalid value %s"
 msgstr "настройката „fetch.output“ е с неправилна стойност „%s“"
 
-#: builtin/fetch.c:642
+#: builtin/fetch.c:653
 #, c-format
 msgid "object %s not found"
 msgstr "обектът „%s“ липсва"
 
-#: builtin/fetch.c:646
+#: builtin/fetch.c:657
 msgid "[up to date]"
 msgstr "[актуализиран]"
 
-#: builtin/fetch.c:659 builtin/fetch.c:739
+#: builtin/fetch.c:670 builtin/fetch.c:750
 msgid "[rejected]"
 msgstr "[отхвърлен]"
 
-#: builtin/fetch.c:660
+#: builtin/fetch.c:671
 msgid "can't fetch in current branch"
 msgstr "в текущия клон не може да се доставя"
 
-#: builtin/fetch.c:669
+#: builtin/fetch.c:680
 msgid "[tag update]"
 msgstr "[обновяване на етикетите]"
 
-#: builtin/fetch.c:670 builtin/fetch.c:703 builtin/fetch.c:719
-#: builtin/fetch.c:734
+#: builtin/fetch.c:681 builtin/fetch.c:714 builtin/fetch.c:730
+#: builtin/fetch.c:745
 msgid "unable to update local ref"
 msgstr "локален указател не може да бъде обновен"
 
-#: builtin/fetch.c:689
+#: builtin/fetch.c:700
 msgid "[new tag]"
 msgstr "[нов етикет]"
 
-#: builtin/fetch.c:692
+#: builtin/fetch.c:703
 msgid "[new branch]"
 msgstr "[нов клон]"
 
-#: builtin/fetch.c:695
+#: builtin/fetch.c:706
 msgid "[new ref]"
 msgstr "[нов указател]"
 
-#: builtin/fetch.c:734
+#: builtin/fetch.c:745
 msgid "forced update"
 msgstr "принудително обновяване"
 
-#: builtin/fetch.c:739
+#: builtin/fetch.c:750
 msgid "non-fast-forward"
 msgstr "същинско сливане"
 
-#: builtin/fetch.c:784
+#: builtin/fetch.c:795
 #, c-format
 msgid "%s did not send all necessary objects\n"
 msgstr "хранилището „%s“ не изпрати всички необходими обекти\n"
 
-#: builtin/fetch.c:804
+#: builtin/fetch.c:815
 #, c-format
 msgid "reject %s because shallow roots are not allowed to be updated"
 msgstr ""
 "отхвърляне на върха „%s“, защото плитките хранилища не могат да бъдат "
 "обновявани"
 
-#: builtin/fetch.c:892 builtin/fetch.c:988
+#: builtin/fetch.c:903 builtin/fetch.c:999
 #, c-format
 msgid "From %.*s\n"
 msgstr "От %.*s\n"
 
-#: builtin/fetch.c:903
+#: builtin/fetch.c:914
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
@@ -8827,57 +9331,57 @@ msgstr ""
 "„git remote prune %s“, за да премахнете остарелите клони, които\n"
 "предизвикват конфликта"
 
-#: builtin/fetch.c:958
+#: builtin/fetch.c:969
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr "   (обектът „%s“ ще се окаже извън клон)"
 
-#: builtin/fetch.c:959
+#: builtin/fetch.c:970
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr "   (обектът „%s“ вече е извън клон)"
 
-#: builtin/fetch.c:991
+#: builtin/fetch.c:1002
 msgid "[deleted]"
 msgstr "[изтрит]"
 
-#: builtin/fetch.c:992 builtin/remote.c:1024
+#: builtin/fetch.c:1003 builtin/remote.c:1033
 msgid "(none)"
 msgstr "(нищо)"
 
-#: builtin/fetch.c:1015
+#: builtin/fetch.c:1026
 #, c-format
 msgid "Refusing to fetch into current branch %s of non-bare repository"
 msgstr "Не може да доставите в текущия клон „%s“ на хранилище, което не е голо"
 
-#: builtin/fetch.c:1034
+#: builtin/fetch.c:1045
 #, c-format
 msgid "Option \"%s\" value \"%s\" is not valid for %s"
 msgstr "Стойността „%2$s“ за опцията „%1$s“ не е съвместима с „%3$s“"
 
-#: builtin/fetch.c:1037
+#: builtin/fetch.c:1048
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr "Опцията „%s“ се прескача при „%s“\n"
 
-#: builtin/fetch.c:1277
+#: builtin/fetch.c:1287
 #, c-format
 msgid "Fetching %s\n"
 msgstr "Доставяне на „%s“\n"
 
-#: builtin/fetch.c:1279 builtin/remote.c:97
+#: builtin/fetch.c:1289 builtin/remote.c:98
 #, c-format
 msgid "Could not fetch %s"
 msgstr "„%s“ не може да се достави"
 
-#: builtin/fetch.c:1325 builtin/fetch.c:1498
+#: builtin/fetch.c:1335 builtin/fetch.c:1503
 msgid ""
 "--filter can only be used with the remote configured in core.partialClone"
 msgstr ""
 "опцията „--filter“ може да се ползва само с отдалеченото хранилище указано в "
 "настройката „core.partialClone“"
 
-#: builtin/fetch.c:1350
+#: builtin/fetch.c:1358
 msgid ""
 "No remote repository specified.  Please, specify either a URL or a\n"
 "remote name from which new revisions should be fetched."
@@ -8885,41 +9389,41 @@ msgstr ""
 "Не сте указали отдалечено хранилище.  Задайте или адрес, или име\n"
 "на отдалечено хранилище, откъдето да се доставят новите версии."
 
-#: builtin/fetch.c:1394
+#: builtin/fetch.c:1395
 msgid "You need to specify a tag name."
 msgstr "Трябва да укажете име на етикет."
 
-#: builtin/fetch.c:1439
+#: builtin/fetch.c:1444
 msgid "Negative depth in --deepen is not supported"
 msgstr "Отрицателна дълбочина като аргумент на „--deepen“ не се поддържа"
 
-#: builtin/fetch.c:1441
+#: builtin/fetch.c:1446
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "Опциите „--deepen“ и „--depth“ са несъвместими една с друга"
 
-#: builtin/fetch.c:1446
+#: builtin/fetch.c:1451
 msgid "--depth and --unshallow cannot be used together"
 msgstr "опциите „--depth“ и „--unshallow“ са несъвместими"
 
-#: builtin/fetch.c:1448
+#: builtin/fetch.c:1453
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "не можете да използвате опцията „--unshallow“ върху пълно хранилище"
 
-#: builtin/fetch.c:1464
+#: builtin/fetch.c:1469
 msgid "fetch --all does not take a repository argument"
 msgstr "към „git fetch --all“ не можете да добавите аргумент — хранилище"
 
-#: builtin/fetch.c:1466
+#: builtin/fetch.c:1471
 msgid "fetch --all does not make sense with refspecs"
 msgstr ""
 "към „git fetch --all“ не можете да добавите аргумент — указател на версия"
 
-#: builtin/fetch.c:1475
+#: builtin/fetch.c:1480
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "Няма нито отдалечено хранилище, нито група от хранилища на име „%s“"
 
-#: builtin/fetch.c:1482
+#: builtin/fetch.c:1487
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "Указването на група и указването на версия са несъвместими"
 
@@ -8987,7 +9491,7 @@ msgstr "цитиране подходящо за tcl"
 msgid "show only <n> matched refs"
 msgstr "извеждане само на този БРОЙ напаснати указатели"
 
-#: builtin/for-each-ref.c:39 builtin/tag.c:420
+#: builtin/for-each-ref.c:39 builtin/tag.c:421
 msgid "respect format colors"
 msgstr "спазване на цветовете на форма̀та"
 
@@ -9011,82 +9515,82 @@ msgstr "извеждане само на указателите, които съ
 msgid "print only refs which don't contain the commit"
 msgstr "извеждане само на указателите, които не съдържат това ПОДАВАНЕ"
 
-#: builtin/fsck.c:568
+#: builtin/fsck.c:569
 msgid "Checking object directories"
 msgstr "Проверка на директориите с обекти"
 
-#: builtin/fsck.c:660
+#: builtin/fsck.c:661
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [ОПЦИЯ…] [ОБЕКТ…]"
 
-#: builtin/fsck.c:666
+#: builtin/fsck.c:667
 msgid "show unreachable objects"
 msgstr "показване на недостижимите обекти"
 
-#: builtin/fsck.c:667
+#: builtin/fsck.c:668
 msgid "show dangling objects"
 msgstr "показване на обектите извън клоните"
 
-#: builtin/fsck.c:668
+#: builtin/fsck.c:669
 msgid "report tags"
 msgstr "показване на етикетите"
 
-#: builtin/fsck.c:669
+#: builtin/fsck.c:670
 msgid "report root nodes"
 msgstr "показване на кореновите възли"
 
-#: builtin/fsck.c:670
+#: builtin/fsck.c:671
 msgid "make index objects head nodes"
 msgstr "задаване на обекти от индекса да са коренови"
 
 # FIXME bad message
-#: builtin/fsck.c:671
+#: builtin/fsck.c:672
 msgid "make reflogs head nodes (default)"
 msgstr "проследяване на указателите от журнала като глави (стандартно)"
 
-#: builtin/fsck.c:672
+#: builtin/fsck.c:673
 msgid "also consider packs and alternate objects"
 msgstr "допълнително да се проверяват пакетите и алтернативните обекти"
 
-#: builtin/fsck.c:673
+#: builtin/fsck.c:674
 msgid "check only connectivity"
 msgstr "проверка само на връзката"
 
-#: builtin/fsck.c:674
+#: builtin/fsck.c:675
 msgid "enable more strict checking"
 msgstr "по-строги проверки"
 
-#: builtin/fsck.c:676
+#: builtin/fsck.c:677
 msgid "write dangling objects in .git/lost-found"
 msgstr "запазване на обектите извън клоните в директорията „.git/lost-found“"
 
-#: builtin/fsck.c:677 builtin/prune.c:108
+#: builtin/fsck.c:678 builtin/prune.c:109
 msgid "show progress"
 msgstr "показване на напредъка"
 
-#: builtin/fsck.c:678
+#: builtin/fsck.c:679
 msgid "show verbose names for reachable objects"
 msgstr "показване на подробни имена на достижимите обекти"
 
-#: builtin/fsck.c:742
+#: builtin/fsck.c:745
 msgid "Checking objects"
 msgstr "Проверка на обектите"
 
-#: builtin/gc.c:27
+#: builtin/gc.c:33
 msgid "git gc [<options>]"
 msgstr "git gc [ОПЦИЯ…]"
 
-#: builtin/gc.c:80
+#: builtin/gc.c:88
 #, c-format
 msgid "Failed to fstat %s: %s"
 msgstr "Неуспешно изпълнение на „fstat“ върху „%s“: %s"
 
-#: builtin/gc.c:312
+#: builtin/gc.c:452
 #, c-format
 msgid "Can't stat %s"
 msgstr "Неуспешно изпълнение на „stat“ върху „%s“"
 
-#: builtin/gc.c:321
+#: builtin/gc.c:461
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -9103,49 +9607,58 @@ msgstr ""
 "\n"
 "%s"
 
-#: builtin/gc.c:360
+#: builtin/gc.c:502
 msgid "prune unreferenced objects"
 msgstr "окастряне на обектите, към които нищо не сочи"
 
-#: builtin/gc.c:362
+#: builtin/gc.c:504
 msgid "be more thorough (increased runtime)"
 msgstr "изчерпателно търсене на боклука (за сметка на повече време работа)"
 
-#: builtin/gc.c:363
+#: builtin/gc.c:505
 msgid "enable auto-gc mode"
 msgstr "включване на автоматичното събиране на боклука (auto-gc)"
 
-#: builtin/gc.c:366
+#: builtin/gc.c:508
 msgid "force running gc even if there may be another gc running"
 msgstr ""
 "изрично стартиране на събирането на боклука, дори и ако вече работи друго "
 "събиране"
 
-#: builtin/gc.c:384
+#: builtin/gc.c:511
+msgid "repack all other packs except the largest pack"
+msgstr "препакетиране на всичко без най-големия пакет"
+
+#: builtin/gc.c:528
+#, c-format
+msgid "failed to parse gc.logexpiry value %s"
+msgstr "неразпозната стойност на „gc.logexpiry“ %s"
+
+#: builtin/gc.c:539
 #, c-format
-msgid "Failed to parse gc.logexpiry value %s"
-msgstr "Ð\9dеÑ\80азпознаÑ\82а Ñ\81Ñ\82ойноÑ\81Ñ\82 Ð½Ð° â\80\9egc.logexpiryâ\80\9c: %s"
+msgid "failed to parse prune expiry value %s"
+msgstr "неÑ\80азпознаÑ\82а Ñ\81Ñ\82ойноÑ\81Ñ\82 Ð½Ð° Ð¿ÐµÑ\80иода Ð·Ð° Ð¾ÐºÐ°Ñ\81Ñ\82Ñ\80Ñ\8fне: %s"
 
-#: builtin/gc.c:412
+#: builtin/gc.c:559
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
 msgstr ""
 "Автоматично пакетиране на заден фон на хранилището за по-добра "
 "производителност.\n"
 
-#: builtin/gc.c:414
+#: builtin/gc.c:561
 #, c-format
 msgid "Auto packing the repository for optimum performance.\n"
 msgstr "Автоматично пакетиране на хранилището за по-добра производителност.\n"
 
-#: builtin/gc.c:415
+#: builtin/gc.c:562
 #, c-format
 msgid "See \"git help gc\" for manual housekeeping.\n"
 msgstr ""
 "Погледнете ръководството за повече информация как да изпълните „git help "
 "gc“.\n"
 
-#: builtin/gc.c:440
+#: builtin/gc.c:598
 #, c-format
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
@@ -9154,23 +9667,23 @@ msgstr ""
 "процеса: %<PRIuMAX> (ако сте сигурни, че това не е вярно, това използвайте\n"
 "опцията „--force“)"
 
-#: builtin/gc.c:487
+#: builtin/gc.c:645
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove them."
 msgstr ""
 "Има прекалено много недостижими, непакетирани обекти.\n"
 "Използвайте „git prune“, за да ги окастрите."
 
-#: builtin/grep.c:27
+#: builtin/grep.c:28
 msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
 msgstr "git grep [ОПЦИЯ…] [-e] ШАБЛОН [ВЕРСИЯ…] [[--] ПЪТ…]"
 
-#: builtin/grep.c:225
+#: builtin/grep.c:226
 #, c-format
 msgid "grep: failed to create thread: %s"
 msgstr "grep: неуспешно създаване на нишка: %s"
 
-#: builtin/grep.c:283
+#: builtin/grep.c:284
 #, c-format
 msgid "invalid number of threads specified (%d) for %s"
 msgstr "зададен е неправилен брой нишки (%d) за %s"
@@ -9179,17 +9692,17 @@ msgstr "зададен е неправилен брой нишки (%d) за %s"
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:292 builtin/index-pack.c:1523 builtin/index-pack.c:1712
+#: builtin/grep.c:293 builtin/index-pack.c:1535 builtin/index-pack.c:1727
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "липсва поддръжка за нишки.  „%s“ ще се пренебрегне"
 
-#: builtin/grep.c:460 builtin/grep.c:580 builtin/grep.c:622
+#: builtin/grep.c:461 builtin/grep.c:582 builtin/grep.c:623
 #, c-format
 msgid "unable to read tree (%s)"
 msgstr "дървото не може да бъде прочетено (%s)"
 
-#: builtin/grep.c:637
+#: builtin/grep.c:638
 #, c-format
 msgid "unable to grep from object of type %s"
 msgstr "не може да се изпълни „grep“ от обект от вида %s"
@@ -9399,7 +9912,7 @@ msgstr "опциите „--cached“ и „--untracked“ са несъвмес
 msgid "unable to resolve revision: %s"
 msgstr "версията „%s“ не може бъде открита"
 
-#: builtin/grep.c:1036 builtin/index-pack.c:1519
+#: builtin/grep.c:1036 builtin/index-pack.c:1531
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "зададен е неправилен брой нишки: %d"
@@ -9474,58 +9987,62 @@ msgstr ""
 msgid "process file as it were from this path"
 msgstr "обработване на ФАЙЛа все едно е с този път"
 
-#: builtin/help.c:43
+#: builtin/help.c:45
 msgid "print all available commands"
 msgstr "показване на всички налични команди"
 
-#: builtin/help.c:44
+#: builtin/help.c:46
 msgid "exclude guides"
 msgstr "без въведения"
 
-#: builtin/help.c:45
+#: builtin/help.c:47
 msgid "print list of useful guides"
 msgstr "показване на списък с въведения"
 
-#: builtin/help.c:46
+#: builtin/help.c:48
 msgid "show man page"
 msgstr "показване на страница от ръководството"
 
-#: builtin/help.c:47
+#: builtin/help.c:49
 msgid "show manual in web browser"
 msgstr "показване на страница от ръководството в уеб браузър"
 
-#: builtin/help.c:49
+#: builtin/help.c:51
 msgid "show info page"
 msgstr "показване на информационна страница"
 
-#: builtin/help.c:55
+#: builtin/help.c:53
+msgid "print command description"
+msgstr "извеждане на описанието на команда"
+
+#: builtin/help.c:58
 msgid "git help [--all] [--guides] [--man | --web | --info] [<command>]"
 msgstr "git help [--all] [--guides] [--man | --web | --info] [КОМАНДА]"
 
-#: builtin/help.c:67
+#: builtin/help.c:70
 #, c-format
 msgid "unrecognized help format '%s'"
 msgstr "непознат формат на помощта „%s“"
 
-#: builtin/help.c:94
+#: builtin/help.c:97
 msgid "Failed to start emacsclient."
 msgstr "Неуспешно стартиране на „emacsclient“."
 
-#: builtin/help.c:107
+#: builtin/help.c:110
 msgid "Failed to parse emacsclient version."
 msgstr "Версията на „emacsclient“ не може да се анализира."
 
-#: builtin/help.c:115
+#: builtin/help.c:118
 #, c-format
 msgid "emacsclient version '%d' too old (< 22)."
 msgstr "Прекалено стара версия на „emacsclient“ — %d (< 22)."
 
-#: builtin/help.c:133 builtin/help.c:155 builtin/help.c:165 builtin/help.c:173
+#: builtin/help.c:136 builtin/help.c:158 builtin/help.c:168 builtin/help.c:176
 #, c-format
 msgid "failed to exec '%s'"
 msgstr "неуспешно изпълнение на „%s“"
 
-#: builtin/help.c:211
+#: builtin/help.c:214
 #, c-format
 msgid ""
 "'%s': path for unsupported man viewer.\n"
@@ -9534,7 +10051,7 @@ msgstr ""
 "„%s“: път към неподдържана програма за преглед на\n"
 " ръководството.  Вместо нея пробвайте „man.<tool>.cmd“."
 
-#: builtin/help.c:223
+#: builtin/help.c:226
 #, c-format
 msgid ""
 "'%s': cmd for supported man viewer.\n"
@@ -9543,370 +10060,338 @@ msgstr ""
 "„%s“: команда за поддържана програма за преглед на\n"
 " ръководството.  Вместо нея пробвайте „man.<tool>.path“."
 
-#: builtin/help.c:340
+#: builtin/help.c:343
 #, c-format
 msgid "'%s': unknown man viewer."
 msgstr "„%s“: непозната програма за преглед на ръководството."
 
-#: builtin/help.c:357
+#: builtin/help.c:360
 msgid "no man viewer handled the request"
 msgstr "никоя програма за преглед на ръководство не успя да обработи заявката"
 
-#: builtin/help.c:365
+#: builtin/help.c:368
 msgid "no info viewer handled the request"
 msgstr ""
 "никоя програма за преглед на информационните страници не успя да обработи "
 "заявката"
 
-#: builtin/help.c:407
-msgid "Defining attributes per path"
-msgstr "Указване на атрибути към път"
-
-#: builtin/help.c:408
-msgid "Everyday Git With 20 Commands Or So"
-msgstr "Ежедневието в Git в рамките на двайсетина команди"
-
-#: builtin/help.c:409
-msgid "A Git glossary"
-msgstr "Речник с термините на Git"
-
-#: builtin/help.c:410
-msgid "Specifies intentionally untracked files to ignore"
-msgstr "Указване на неследени файлове, които да бъдат нарочно пренебрегвани"
-
-#: builtin/help.c:411
-msgid "Defining submodule properties"
-msgstr "Дефиниране на свойствата на подмодулите"
-
-#: builtin/help.c:412
-msgid "Specifying revisions and ranges for Git"
-msgstr "Указване на версии и диапазони в Git"
-
-#: builtin/help.c:413
-msgid "A tutorial introduction to Git (for version 1.5.1 or newer)"
-msgstr "Въвеждащ урок за Git (версии поне 1.5.1)"
-
-#: builtin/help.c:414
-msgid "An overview of recommended workflows with Git"
-msgstr "Общ преглед на препоръчваните начини за работа с Git"
-
-#: builtin/help.c:426
-msgid "The common Git guides are:\n"
-msgstr "Популярните въведения в Git са:\n"
-
-#: builtin/help.c:444
+#: builtin/help.c:415
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "„%s“ е синоним на „%s“"
 
-#: builtin/help.c:466 builtin/help.c:483
+#: builtin/help.c:442 builtin/help.c:459
 #, c-format
 msgid "usage: %s%s"
 msgstr "употреба: %s%s"
 
-#: builtin/index-pack.c:157
+#: builtin/index-pack.c:158
 #, c-format
 msgid "unable to open %s"
 msgstr "обектът „%s“ не може да бъде отворен"
 
-#: builtin/index-pack.c:207
+#: builtin/index-pack.c:208
 #, c-format
 msgid "object type mismatch at %s"
 msgstr "неправилен вид на обекта „%s“"
 
-#: builtin/index-pack.c:227
+#: builtin/index-pack.c:228
 #, c-format
 msgid "did not receive expected object %s"
 msgstr "очакваният обект „%s“ не бе получен"
 
-#: builtin/index-pack.c:230
+#: builtin/index-pack.c:231
 #, c-format
 msgid "object %s: expected type %s, found %s"
 msgstr "неправилен вид на обекта „%s“: очакваше се „%s“, а бе получен „%s“"
 
-#: builtin/index-pack.c:272
+#: builtin/index-pack.c:273
 #, c-format
 msgid "cannot fill %d byte"
 msgid_plural "cannot fill %d bytes"
 msgstr[0] "не може да се запълни %d байт"
 msgstr[1] "не може да се запълнят %d байта"
 
-#: builtin/index-pack.c:282
+#: builtin/index-pack.c:283
 msgid "early EOF"
 msgstr "неочакван край на файл"
 
-#: builtin/index-pack.c:283
+#: builtin/index-pack.c:284
 msgid "read error on input"
 msgstr "грешка при четене на входните данни"
 
-#: builtin/index-pack.c:295
+#: builtin/index-pack.c:296
 msgid "used more bytes than were available"
 msgstr "използвани са повече от наличните байтове"
 
-#: builtin/index-pack.c:302
+#: builtin/index-pack.c:303
 msgid "pack too large for current definition of off_t"
 msgstr "пакетният файл е прекалено голям за текущата стойност на типа „off_t“"
 
-#: builtin/index-pack.c:305 builtin/unpack-objects.c:93
+#: builtin/index-pack.c:306 builtin/unpack-objects.c:93
 msgid "pack exceeds maximum allowed size"
 msgstr "пакетният файл надвишава максималния възможен размер"
 
-#: builtin/index-pack.c:320
+#: builtin/index-pack.c:321
 #, c-format
 msgid "unable to create '%s'"
 msgstr "пакетният файл „%s“ не може да бъде създаден"
 
-#: builtin/index-pack.c:326
+#: builtin/index-pack.c:327
 #, c-format
 msgid "cannot open packfile '%s'"
 msgstr "пакетният файл „%s“ не може да бъде отворен"
 
-#: builtin/index-pack.c:340
+#: builtin/index-pack.c:341
 msgid "pack signature mismatch"
 msgstr "несъответствие в подписа към пакетния файл"
 
-#: builtin/index-pack.c:342
+#: builtin/index-pack.c:343
 #, c-format
 msgid "pack version %<PRIu32> unsupported"
 msgstr "не се поддържа пакетиране вeрсия „%<PRIu32>“"
 
-#: builtin/index-pack.c:360
+#: builtin/index-pack.c:361
 #, c-format
 msgid "pack has bad object at offset %<PRIuMAX>: %s"
 msgstr "повреден обект в пакетния файл при отместване %<PRIuMAX>: %s"
 
-#: builtin/index-pack.c:481
+#: builtin/index-pack.c:482
 #, c-format
 msgid "inflate returned %d"
 msgstr "декомпресирането с „inflate“ върна %d"
 
-#: builtin/index-pack.c:530
+#: builtin/index-pack.c:531
 msgid "offset value overflow for delta base object"
 msgstr "стойността на отместването за обекта-разлика води до препълване"
 
-#: builtin/index-pack.c:538
+#: builtin/index-pack.c:539
 msgid "delta base offset is out of bound"
 msgstr "стойността на отместването за обекта-разлика е извън диапазона"
 
-#: builtin/index-pack.c:546
+#: builtin/index-pack.c:547
 #, c-format
 msgid "unknown object type %d"
 msgstr "непознат вид обект %d"
 
-#: builtin/index-pack.c:577
+#: builtin/index-pack.c:578
 msgid "cannot pread pack file"
 msgstr "пакетният файл не може да бъде прочетен"
 
-#: builtin/index-pack.c:579
+#: builtin/index-pack.c:580
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
 msgstr[0] "неочакван край на файл, липсва %<PRIuMAX> байт"
 msgstr[1] "неочакван край на файл, липсват %<PRIuMAX> байта"
 
-#: builtin/index-pack.c:605
+#: builtin/index-pack.c:606
 msgid "serious inflate inconsistency"
 msgstr "сериозна грешка при декомпресиране с „inflate“"
 
-#: builtin/index-pack.c:750 builtin/index-pack.c:756 builtin/index-pack.c:779
-#: builtin/index-pack.c:818 builtin/index-pack.c:827
+#: builtin/index-pack.c:751 builtin/index-pack.c:757 builtin/index-pack.c:780
+#: builtin/index-pack.c:819 builtin/index-pack.c:828
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr ""
 "СЪВПАДЕНИЕ НА СТОЙНОСТИТЕ ЗА СУМИТЕ ЗА SHA1: „%s“ НА ДВА РАЗЛИЧНИ ОБЕКТА!"
 
-#: builtin/index-pack.c:753 builtin/pack-objects.c:182
-#: builtin/pack-objects.c:276
+#: builtin/index-pack.c:754 builtin/pack-objects.c:198
+#: builtin/pack-objects.c:292
 #, c-format
 msgid "unable to read %s"
 msgstr "обектът „%s“ не може да бъде прочетен"
 
-#: builtin/index-pack.c:816
+#: builtin/index-pack.c:817
 #, c-format
 msgid "cannot read existing object info %s"
 msgstr "съществуващият обект в „%s“ не може да бъде прочетен"
 
-#: builtin/index-pack.c:824
+#: builtin/index-pack.c:825
 #, c-format
 msgid "cannot read existing object %s"
 msgstr "съществуващият обект „%s“ не може да бъде прочетен"
 
-#: builtin/index-pack.c:838
+#: builtin/index-pack.c:839
 #, c-format
 msgid "invalid blob object %s"
-msgstr "неправилен обект BLOB „%s“"
+msgstr "неправилен обект-BLOB „%s“"
 
-# FIXME perhaps invalid object
-#: builtin/index-pack.c:853
+#: builtin/index-pack.c:842 builtin/index-pack.c:860
+msgid "fsck error in packed object"
+msgstr "грешка при проверката на пакетирани обекти"
+
+# FIXME perhaps invalid object or pack
+#: builtin/index-pack.c:857
 #, c-format
 msgid "invalid %s"
 msgstr "неправилен обект „%s“"
 
-#: builtin/index-pack.c:856
-msgid "Error in object"
-msgstr "Грешка в обекта"
-
-#: builtin/index-pack.c:858
+#: builtin/index-pack.c:862
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr "Някои обекти, наследници на „%s“, не могат да бъдат достигнати"
 
-#: builtin/index-pack.c:930 builtin/index-pack.c:961
+#: builtin/index-pack.c:934 builtin/index-pack.c:965
 msgid "failed to apply delta"
 msgstr "разликата не може да бъде приложена"
 
-#: builtin/index-pack.c:1131
+#: builtin/index-pack.c:1135
 msgid "Receiving objects"
 msgstr "Получаване на обекти"
 
-#: builtin/index-pack.c:1131
+#: builtin/index-pack.c:1135
 msgid "Indexing objects"
 msgstr "Индексиране на обекти"
 
-#: builtin/index-pack.c:1165
+#: builtin/index-pack.c:1169
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr "пакетният файл е повреден (нееднакви суми по SHA1)"
 
-#: builtin/index-pack.c:1170
+#: builtin/index-pack.c:1174
 msgid "cannot fstat packfile"
 msgstr "не може да се получи информация за пакетния файл с „fstat“"
 
-#: builtin/index-pack.c:1173
+#: builtin/index-pack.c:1177
 msgid "pack has junk at the end"
 msgstr "в края на пакетния файл има повредени данни"
 
-#: builtin/index-pack.c:1185
+#: builtin/index-pack.c:1189
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr ""
 "фатална грешка във функцията „parse_pack_objects“.  Това е грешка в Git, "
 "докладвайте я на разработчиците, като пратите е-писмо на адрес: „git@vger."
 "kernel.org“."
 
-#: builtin/index-pack.c:1208
+#: builtin/index-pack.c:1212
 msgid "Resolving deltas"
 msgstr "Откриване на съответните разлики"
 
-#: builtin/index-pack.c:1219
+#: builtin/index-pack.c:1223
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "не може да се създаде нишка: %s"
 
-#: builtin/index-pack.c:1261
+#: builtin/index-pack.c:1265
 msgid "confusion beyond insanity"
 msgstr ""
 "фатална грешка във функцията „conclude_pack“.  Това е грешка в Git, "
 "докладвайте я на разработчиците, като пратите е-писмо на адрес: „git@vger."
 "kernel.org“."
 
-#: builtin/index-pack.c:1267
+#: builtin/index-pack.c:1271
 #, c-format
 msgid "completed with %d local object"
 msgid_plural "completed with %d local objects"
 msgstr[0] "действието завърши с %d локален обект"
 msgstr[1] "действието завърши с %d локални обекта"
 
-#: builtin/index-pack.c:1279
+#: builtin/index-pack.c:1283
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr ""
 "Неочаквана последваща сума за грешки за „%s“ (причината може да е грешка в "
 "диска)"
 
-#: builtin/index-pack.c:1283
+#: builtin/index-pack.c:1287
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
 msgstr[0] "в пакета има %d ненапасваща разлика"
 msgstr[1] "в пакета има %d ненапасващи разлики"
 
-#: builtin/index-pack.c:1307
+#: builtin/index-pack.c:1311
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr "добавеният обект не може да се компресира с „deflate“: %d"
 
-#: builtin/index-pack.c:1383
+#: builtin/index-pack.c:1388
 #, c-format
 msgid "local object %s is corrupt"
 msgstr "локалният обект „%s“ е повреден"
 
-#: builtin/index-pack.c:1397
+#: builtin/index-pack.c:1402
 #, c-format
 msgid "packfile name '%s' does not end with '.pack'"
 msgstr "името на пакетния файл „%s“ не завършва на „.pack“"
 
-#: builtin/index-pack.c:1422
+#: builtin/index-pack.c:1427
 #, c-format
 msgid "cannot write %s file '%s'"
 msgstr "грешка при запис на файла „%s“ „%s“"
 
-#: builtin/index-pack.c:1430
+#: builtin/index-pack.c:1435
 #, c-format
 msgid "cannot close written %s file '%s'"
 msgstr "грешка при затварянето на записания файл „%s“ „%s“"
 
-#: builtin/index-pack.c:1454
+#: builtin/index-pack.c:1459
 msgid "error while closing pack file"
 msgstr "грешка при затварянето на пакетния файл"
 
-#: builtin/index-pack.c:1468
+#: builtin/index-pack.c:1473
 msgid "cannot store pack file"
 msgstr "пакетният файл не може да бъде запазен"
 
-#: builtin/index-pack.c:1476
+#: builtin/index-pack.c:1481
 msgid "cannot store index file"
 msgstr "файлът за индекса не може да бъде съхранен"
 
-#: builtin/index-pack.c:1513
+#: builtin/index-pack.c:1525
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "зададена е неправилна версия пакетиране: „pack.indexversion=%<PRIu32>“"
 
-#: builtin/index-pack.c:1581
+#: builtin/index-pack.c:1594
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Съществуващият пакетен файл „%s“ не може да бъде отворен"
 
-#: builtin/index-pack.c:1583
+#: builtin/index-pack.c:1596
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "Съществуващият индекс за пакетния файл „%s“ не може да бъде отворен"
 
-#: builtin/index-pack.c:1631
+#: builtin/index-pack.c:1644
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] "%d обект не е разлика"
 msgstr[1] "%d обекта не са разлика"
 
-#: builtin/index-pack.c:1638
+#: builtin/index-pack.c:1651
 #, 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:1675
+#: builtin/index-pack.c:1688
 msgid "Cannot come back to cwd"
 msgstr "Процесът не може да се върне към предишната работна директория"
 
-#: builtin/index-pack.c:1724 builtin/index-pack.c:1727
-#: builtin/index-pack.c:1743 builtin/index-pack.c:1747
+#: builtin/index-pack.c:1739 builtin/index-pack.c:1742
+#: builtin/index-pack.c:1758 builtin/index-pack.c:1762
 #, c-format
 msgid "bad %s"
 msgstr "неправилна стойност „%s“"
 
-#: builtin/index-pack.c:1763
+#: builtin/index-pack.c:1778
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "опцията „--fix-thin“ изисква „--stdin“"
 
-#: builtin/index-pack.c:1765
+#: builtin/index-pack.c:1780
 msgid "--stdin requires a git repository"
 msgstr "„--stdin“ изисква хранилище на git"
 
-#: builtin/index-pack.c:1771
+#: builtin/index-pack.c:1786
 msgid "--verify with no packfile name given"
 msgstr "опцията „--verify“ изисква име на пакетен файл"
 
+#: builtin/index-pack.c:1836 builtin/unpack-objects.c:578
+msgid "fsck error in pack objects"
+msgstr "грешка при проверка с „fsck“ на пакетните обекти"
+
 #: builtin/init-db.c:55
 #, c-format
 msgid "cannot stat '%s'"
@@ -9944,8 +10429,8 @@ msgstr "игнориране на шаблона „%s“"
 
 #: builtin/init-db.c:120
 #, c-format
-msgid "templates not found %s"
-msgstr "диÑ\80екÑ\82оÑ\80иÑ\8fÑ\82а Ñ\81 Ñ\88аблониÑ\82е Ð½Ðµ Ðµ Ð¾Ñ\82кÑ\80иÑ\82а: „%s“"
+msgid "templates not found in %s"
+msgstr "нÑ\8fма Ñ\88аблони Ð² „%s“"
 
 #: builtin/init-db.c:135
 #, c-format
@@ -10006,11 +10491,6 @@ msgstr ""
 "указване, че хранилището на Git ще бъде споделено от повече от един "
 "потребител"
 
-#: builtin/init-db.c:516 builtin/init-db.c:521
-#, c-format
-msgid "cannot mkdir %s"
-msgstr "директорията „%s“ не може да бъде създадена"
-
 #: builtin/init-db.c:525
 #, c-format
 msgid "cannot chdir to %s"
@@ -10198,7 +10678,7 @@ msgstr "Можете да укажете максимум една директ
 msgid "Unknown commit %s"
 msgstr "Непознато подаване „%s“"
 
-#: builtin/log.c:1289 builtin/notes.c:887 builtin/tag.c:522
+#: builtin/log.c:1289 builtin/notes.c:887 builtin/tag.c:523
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr "Не може да се открие към какво сочи „%s“."
@@ -10378,7 +10858,7 @@ msgstr "БАЗОВО_ПОДАВАНЕ"
 
 #: builtin/log.c:1505
 msgid "add prerequisite tree info to the patch series"
-msgstr "добавяне на необходимото БАЗово дърво към серията кръпки"
+msgstr "добавяне на необходимото БАЗово дърво към поредицата от кръпки"
 
 #: builtin/log.c:1507
 msgid "add a signature from a file"
@@ -10558,7 +11038,7 @@ msgstr ""
 msgid "show debugging data"
 msgstr "извеждане на информацията за изчистване на грешки"
 
-#: builtin/ls-remote.c:7
+#: builtin/ls-remote.c:9
 msgid ""
 "git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
@@ -10568,39 +11048,39 @@ msgstr ""
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
 "                     [--symref] [ХРАНИЛИЩЕ [УКАЗАТЕЛ…]]"
 
-#: builtin/ls-remote.c:52
+#: builtin/ls-remote.c:59
 msgid "do not print remote URL"
 msgstr "без извеждане на адресите на отдалечените хранилища"
 
-#: builtin/ls-remote.c:53 builtin/ls-remote.c:55
+#: builtin/ls-remote.c:60 builtin/ls-remote.c:62
 msgid "exec"
 msgstr "КОМАНДА"
 
-#: builtin/ls-remote.c:54 builtin/ls-remote.c:56
+#: builtin/ls-remote.c:61 builtin/ls-remote.c:63
 msgid "path of git-upload-pack on the remote host"
 msgstr "път към командата „git-upload-pack“ на отдалечената машина"
 
-#: builtin/ls-remote.c:58
+#: builtin/ls-remote.c:65
 msgid "limit to tags"
 msgstr "само етикетите"
 
-#: builtin/ls-remote.c:59
+#: builtin/ls-remote.c:66
 msgid "limit to heads"
 msgstr "само върховете"
 
-#: builtin/ls-remote.c:60
+#: builtin/ls-remote.c:67
 msgid "do not show peeled tags"
 msgstr "без извеждане на проследените етикети"
 
-#: builtin/ls-remote.c:62
+#: builtin/ls-remote.c:69
 msgid "take url.<base>.insteadOf into account"
 msgstr "взимане предвид на „url.БАЗА.insteadOf“"
 
-#: builtin/ls-remote.c:64
+#: builtin/ls-remote.c:73
 msgid "exit with exit code 2 if no matching refs are found"
 msgstr "изход с код 2, ако не се открият съвпадащи указатели"
 
-#: builtin/ls-remote.c:67
+#: builtin/ls-remote.c:76
 msgid "show underlying ref in addition to the object pointed by it"
 msgstr "извеждане на указателя заедно с обекта сочен от него"
 
@@ -10647,169 +11127,169 @@ msgstr ""
 msgid "empty mbox: '%s'"
 msgstr "празна пощенска кутия mbox: „%s“"
 
-#: builtin/merge.c:49
+#: builtin/merge.c:51
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [ОПЦИЯ…] [ПОДАВАНЕ…]"
 
-#: builtin/merge.c:50
+#: builtin/merge.c:52
 msgid "git merge --abort"
 msgstr "git merge --abort"
 
-#: builtin/merge.c:51
+#: builtin/merge.c:53
 msgid "git merge --continue"
 msgstr "git merge --continue"
 
-#: builtin/merge.c:108
+#: builtin/merge.c:110
 msgid "switch `m' requires a value"
 msgstr "опцията „-m“ изисква стойност"
 
-#: builtin/merge.c:145
+#: builtin/merge.c:147
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
 msgstr "Няма такава стратегия за сливане: „%s“.\n"
 
-#: builtin/merge.c:146
+#: builtin/merge.c:148
 #, c-format
 msgid "Available strategies are:"
 msgstr "Наличните стратегии са:"
 
-#: builtin/merge.c:151
+#: builtin/merge.c:153
 #, c-format
 msgid "Available custom strategies are:"
 msgstr "Допълнителните стратегии са:"
 
-#: builtin/merge.c:201 builtin/pull.c:137
+#: builtin/merge.c:203 builtin/pull.c:142
 msgid "do not show a diffstat at the end of the merge"
 msgstr "без извеждане на статистиката след завършване на сливане"
 
-#: builtin/merge.c:204 builtin/pull.c:140
+#: builtin/merge.c:206 builtin/pull.c:145
 msgid "show a diffstat at the end of the merge"
 msgstr "извеждане на статистиката след завършване на сливане"
 
-#: builtin/merge.c:205 builtin/pull.c:143
+#: builtin/merge.c:207 builtin/pull.c:148
 msgid "(synonym to --stat)"
 msgstr "(синоним на „--stat“)"
 
-#: builtin/merge.c:207 builtin/pull.c:146
+#: builtin/merge.c:209 builtin/pull.c:151
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr ""
 "добавяне (на максимум такъв БРОЙ) записи от съкратения журнал в съобщението "
 "за подаване"
 
-#: builtin/merge.c:210 builtin/pull.c:152
+#: builtin/merge.c:212 builtin/pull.c:157
 msgid "create a single commit instead of doing a merge"
 msgstr "създаване на едно подаване вместо извършване на сливане"
 
-#: builtin/merge.c:212 builtin/pull.c:155
+#: builtin/merge.c:214 builtin/pull.c:160
 msgid "perform a commit if the merge succeeds (default)"
 msgstr "извършване на подаване при успешно сливане (стандартно действие)"
 
-#: builtin/merge.c:214 builtin/pull.c:158
+#: builtin/merge.c:216 builtin/pull.c:163
 msgid "edit message before committing"
 msgstr "редактиране на съобщението преди подаване"
 
-#: builtin/merge.c:215
+#: builtin/merge.c:217
 msgid "allow fast-forward (default)"
 msgstr "позволяване на превъртане (стандартно действие)"
 
-#: builtin/merge.c:217 builtin/pull.c:164
+#: builtin/merge.c:219 builtin/pull.c:169
 msgid "abort if fast-forward is not possible"
 msgstr "преустановяване, ако превъртането е невъзможно"
 
-#: builtin/merge.c:221 builtin/pull.c:167
+#: builtin/merge.c:223 builtin/pull.c:172
 msgid "verify that the named commit has a valid GPG signature"
 msgstr "проверка, че указаното подаване е с правилен подпис на GPG"
 
-#: builtin/merge.c:222 builtin/notes.c:777 builtin/pull.c:171
+#: builtin/merge.c:224 builtin/notes.c:777 builtin/pull.c:176
 #: builtin/revert.c:109
 msgid "strategy"
 msgstr "СТРАТЕГИЯ"
 
-#: builtin/merge.c:223 builtin/pull.c:172
+#: builtin/merge.c:225 builtin/pull.c:177
 msgid "merge strategy to use"
 msgstr "СТРАТЕГИЯ за сливане, която да се ползва"
 
-#: builtin/merge.c:224 builtin/pull.c:175
+#: builtin/merge.c:226 builtin/pull.c:180
 msgid "option=value"
 msgstr "ОПЦИЯ=СТОЙНОСТ"
 
-#: builtin/merge.c:225 builtin/pull.c:176
+#: builtin/merge.c:227 builtin/pull.c:181
 msgid "option for selected merge strategy"
 msgstr "ОПЦИЯ за избраната стратегия за сливане"
 
-#: builtin/merge.c:227
+#: builtin/merge.c:229
 msgid "merge commit message (for a non-fast-forward merge)"
 msgstr "СЪОБЩЕНИЕ при подаването със сливане (при същински сливания)"
 
-#: builtin/merge.c:231
+#: builtin/merge.c:233
 msgid "abort the current in-progress merge"
 msgstr "преустановяване на текущото сливане"
 
-#: builtin/merge.c:233
+#: builtin/merge.c:235
 msgid "continue the current in-progress merge"
 msgstr "продължаване на текущото сливане"
 
-#: builtin/merge.c:235 builtin/pull.c:183
+#: builtin/merge.c:237 builtin/pull.c:188
 msgid "allow merging unrelated histories"
 msgstr "позволяване на сливане на независими истории"
 
-#: builtin/merge.c:241
+#: builtin/merge.c:243
 msgid "verify commit-msg hook"
 msgstr ""
 "проверка на куката при промяна на съобщението при подаване (commit-msg)"
 
-#: builtin/merge.c:266
+#: builtin/merge.c:268
 msgid "could not run stash."
 msgstr "не може да се извърши скатаване"
 
-#: builtin/merge.c:271
+#: builtin/merge.c:273
 msgid "stash failed"
 msgstr "неуспешно скатаване"
 
-#: builtin/merge.c:276
+#: builtin/merge.c:278
 #, c-format
 msgid "not a valid object: %s"
 msgstr "неправилен обект: „%s“"
 
-#: builtin/merge.c:298 builtin/merge.c:315
+#: builtin/merge.c:300 builtin/merge.c:317
 msgid "read-tree failed"
 msgstr "неуспешно прочитане на обект-дърво"
 
-#: builtin/merge.c:345
+#: builtin/merge.c:347
 msgid " (nothing to squash)"
-msgstr " (няма какво да се смачка)"
+msgstr " (няма какво да се вкара)"
 
-#: builtin/merge.c:356
+#: builtin/merge.c:358
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
-msgstr "Ð\9fодаване Ñ\81Ñ\8aÑ\81 Ñ\81маÑ\87кване — указателят „HEAD“ няма да бъде обновен\n"
+msgstr "Ð\92каÑ\80ано Ð¿Ð¾Ð´Ð°ване — указателят „HEAD“ няма да бъде обновен\n"
 
-#: builtin/merge.c:406
+#: builtin/merge.c:408
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
 msgstr ""
 "Липсва съобщение при подаване — указателят „HEAD“ няма да бъде обновен\n"
 
-#: builtin/merge.c:456
+#: builtin/merge.c:458
 #, c-format
 msgid "'%s' does not point to a commit"
 msgstr "„%s“ не сочи към подаване"
 
-#: builtin/merge.c:546
+#: builtin/merge.c:548
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Неправилен низ за настройката „branch.%s.mergeoptions“: „%s“"
 
-#: builtin/merge.c:668
+#: builtin/merge.c:669
 msgid "Not handling anything other than two heads merge."
 msgstr "Поддържа се само сливане на точно две истории."
 
-#: builtin/merge.c:682
+#: builtin/merge.c:683
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Непозната опция за рекурсивното сливане „merge-recursive“: „-X%s“"
 
-#: builtin/merge.c:697
+#: builtin/merge.c:698
 #, c-format
 msgid "unable to write %s"
 msgstr "„%s“ не може да бъде записан"
@@ -10845,68 +11325,68 @@ msgstr ""
 msgid "Empty commit message."
 msgstr "Празно съобщение при подаване."
 
-#: builtin/merge.c:820
+#: builtin/merge.c:819
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Първият етап на сливането завърши.\n"
 
-#: builtin/merge.c:873
+#: builtin/merge.c:872
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr ""
 "Неуспешно автоматично сливане — коригирайте конфликтите и подайте "
 "резултата.\n"
 
-#: builtin/merge.c:912
+#: builtin/merge.c:911
 msgid "No current branch."
 msgstr "Няма текущ клон."
 
-#: builtin/merge.c:914
+#: builtin/merge.c:913
 msgid "No remote for the current branch."
 msgstr "Текущият клон не следи никой."
 
-#: builtin/merge.c:916
+#: builtin/merge.c:915
 msgid "No default upstream defined for the current branch."
 msgstr "Текущият клон не следи никой клон."
 
-#: builtin/merge.c:921
+#: builtin/merge.c:920
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "Никой клон не следи клона „%s“ от хранилището „%s“"
 
-#: builtin/merge.c:974
+#: builtin/merge.c:973
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Неправилна стойност „%s“ в средата „%s“"
 
-#: builtin/merge.c:1076
+#: builtin/merge.c:1075
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "не може да се слее в „%s“: %s"
 
-#: builtin/merge.c:1110
+#: builtin/merge.c:1109
 msgid "not something we can merge"
 msgstr "не може да се слее"
 
-#: builtin/merge.c:1212
+#: builtin/merge.c:1211
 msgid "--abort expects no arguments"
 msgstr "опцията „--abort“ не приема аргументи"
 
-#: builtin/merge.c:1216
+#: builtin/merge.c:1215
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr ""
 "Не може да преустановите сливане, защото в момента не се извършва такова "
 "(липсва указател „MERGE_HEAD“)."
 
-#: builtin/merge.c:1228
+#: builtin/merge.c:1227
 msgid "--continue expects no arguments"
 msgstr "опцията „--continue“ не приема аргументи"
 
-#: builtin/merge.c:1232
+#: builtin/merge.c:1231
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "В момента не се извършва сливане (липсва указател „MERGE_HEAD“)."
 
-#: builtin/merge.c:1248
+#: builtin/merge.c:1247
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -10914,7 +11394,7 @@ msgstr ""
 "Не сте завършили сливане.  (Указателят „MERGE_HEAD“ съществува).\n"
 "Подайте промените си, преди да започнете ново сливане."
 
-#: builtin/merge.c:1255
+#: builtin/merge.c:1254
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -10922,121 +11402,121 @@ msgstr ""
 "Не сте завършили отбиране на подаване (указателят „CHERRY_PICK_HEAD“\n"
 "съществува).  Подайте промените си, преди да започнете ново сливане."
 
-#: builtin/merge.c:1258
+#: builtin/merge.c:1257
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr ""
 "Не сте завършили отбиране на подаване (указателят „CHERRY_PICK_HEAD“\n"
 "съществува)."
 
-#: builtin/merge.c:1267
+#: builtin/merge.c:1266
 msgid "You cannot combine --squash with --no-ff."
 msgstr "Опцията „--squash“ е несъвместима с „--no-ff“."
 
-#: builtin/merge.c:1275
+#: builtin/merge.c:1274
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr ""
 "Не е указано подаване и настройката „merge.defaultToUpstream“ не е зададена."
 
-#: builtin/merge.c:1292
+#: builtin/merge.c:1291
 msgid "Squash commit into empty head not supported yet"
-msgstr "Ð\9fодаване Ñ\81Ñ\8aÑ\81 Ñ\81маÑ\87кване във връх без история все още не се поддържа"
+msgstr "Ð\92каÑ\80ване Ð½Ð° Ð¿Ð¾Ð´Ð°ване във връх без история все още не се поддържа"
 
-#: builtin/merge.c:1294
+#: builtin/merge.c:1293
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr ""
 "Понеже върхът е без история, всички сливания са превъртания, не може да се "
 "извърши същинско сливане изисквано от опцията „--no-ff“"
 
-#: builtin/merge.c:1299
+#: builtin/merge.c:1298
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "„%s“ — не е нещо, което може да се слее"
 
-#: builtin/merge.c:1301
+#: builtin/merge.c:1300
 msgid "Can merge only exactly one commit into empty head"
 msgstr "Можете да слеете точно едно подаване във връх без история"
 
-#: builtin/merge.c:1335
+#: builtin/merge.c:1334
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr ""
 "Подаването „%s“ е с недоверен подпис от GPG, който твърди, че е на „%s“."
 
-#: builtin/merge.c:1338
+#: builtin/merge.c:1337
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr ""
 "Подаването „%s“ е с неправилен подпис от GPG, който твърди, че е на „%s“."
 
-#: builtin/merge.c:1341
+#: builtin/merge.c:1340
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "Подаването „%s“ е без подпис от GPG."
 
-#: builtin/merge.c:1344
+#: builtin/merge.c:1343
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "Подаването „%s“ е с коректен подпис от GPG на „%s“.\n"
 
-#: builtin/merge.c:1403
+#: builtin/merge.c:1402
 msgid "refusing to merge unrelated histories"
 msgstr "независими истории не може да се слеят"
 
-#: builtin/merge.c:1412
+#: builtin/merge.c:1411
 msgid "Already up to date."
 msgstr "Вече е обновено."
 
-#: builtin/merge.c:1422
+#: builtin/merge.c:1421
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Обновяване „%s..%s“\n"
 
-#: builtin/merge.c:1463
+#: builtin/merge.c:1462
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "Проба със сливане в рамките на индекса…\n"
 
-#: builtin/merge.c:1470
+#: builtin/merge.c:1469
 #, c-format
 msgid "Nope.\n"
 msgstr "Неуспешно сливане.\n"
 
-#: builtin/merge.c:1495
+#: builtin/merge.c:1494
 msgid "Already up to date. Yeeah!"
 msgstr "Вече е обновено!"
 
-#: builtin/merge.c:1501
+#: builtin/merge.c:1500
 msgid "Not possible to fast-forward, aborting."
 msgstr "Не може да се извърши превъртане, преустановяване на действието."
 
-#: builtin/merge.c:1524 builtin/merge.c:1603
+#: builtin/merge.c:1523 builtin/merge.c:1602
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "Привеждане на дървото към първоначалното…\n"
 
-#: builtin/merge.c:1528
+#: builtin/merge.c:1527
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "Пробване със стратегията за сливане „%s“…\n"
 
-#: builtin/merge.c:1594
+#: builtin/merge.c:1593
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "Никоя стратегия за сливане не може да извърши сливането.\n"
 
-#: builtin/merge.c:1596
+#: builtin/merge.c:1595
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "Неуспешно сливане със стратегия „%s“.\n"
 
-#: builtin/merge.c:1605
+#: builtin/merge.c:1604
 #, c-format
 msgid "Using the %s to prepare resolving by hand.\n"
 msgstr ""
 "Ползва се стратегията „%s“, която ще подготви дървото за коригиране на "
 "ръка.\n"
 
-#: builtin/merge.c:1617
+#: builtin/merge.c:1616
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
@@ -11175,27 +11655,27 @@ msgstr "разрешаване на създаването на повече о
 msgid "git mv [<options>] <source>... <destination>"
 msgstr "git mv [ОПЦИЯ…] ОБЕКТ… ЦЕЛ"
 
-#: builtin/mv.c:83
+#: builtin/mv.c:82
 #, c-format
 msgid "Directory %s is in index and no submodule?"
 msgstr "Директорията „%s“ е в индекса, но не е подмодул"
 
-#: builtin/mv.c:85 builtin/rm.c:289
+#: builtin/mv.c:84 builtin/rm.c:288
 msgid "Please stage your changes to .gitmodules or stash them to proceed"
 msgstr ""
 "За да продължите, или вкарайте промените по файла „.gitmodules“ в индекса,\n"
 "или ги скатайте"
 
-#: builtin/mv.c:103
+#: builtin/mv.c:102
 #, c-format
 msgid "%.*s is in index"
 msgstr "„%.*s“ вече е в индекса"
 
-#: builtin/mv.c:125
+#: builtin/mv.c:124
 msgid "force move/rename even if target exists"
 msgstr "принудително преместване/преименуване дори целта да съществува"
 
-#: builtin/mv.c:127
+#: builtin/mv.c:126
 msgid "skip move/rename errors"
 msgstr "прескачане на грешките при преместване/преименуване"
 
@@ -11260,7 +11740,7 @@ msgstr "%s, обект: „%s“, цел: „%s“"
 msgid "Renaming %s to %s\n"
 msgstr "Преименуване на „%s“ на „%s“\n"
 
-#: builtin/mv.c:276 builtin/remote.c:712 builtin/repack.c:394
+#: builtin/mv.c:276 builtin/remote.c:715 builtin/repack.c:409
 #, c-format
 msgid "renaming '%s' failed"
 msgstr "неуспешно преименуване на „%s“"
@@ -11454,12 +11934,12 @@ msgstr "обектът-бележка не може да бъде записан
 msgid "the note contents have been left in %s"
 msgstr "съдържанието на бележката е във файла „%s“"
 
-#: builtin/notes.c:234 builtin/tag.c:506
+#: builtin/notes.c:234 builtin/tag.c:507
 #, c-format
 msgid "cannot read '%s'"
 msgstr "файлът „%s“ не може да бъде прочетен"
 
-#: builtin/notes.c:236 builtin/tag.c:509
+#: builtin/notes.c:236 builtin/tag.c:510
 #, c-format
 msgid "could not open or read '%s'"
 msgstr "файлът „%s“ не може да бъде отворен или прочетен"
@@ -11713,7 +12193,7 @@ msgstr "опитът за изтриването на несъществуващ
 msgid "read object names from the standard input"
 msgstr "изчитане на имената на обектите от стандартния вход"
 
-#: builtin/notes.c:943 builtin/prune.c:106 builtin/worktree.c:160
+#: builtin/notes.c:943 builtin/prune.c:107 builtin/worktree.c:151
 msgid "do not remove, show only"
 msgstr "само извеждане без действително окастряне"
 
@@ -11734,229 +12214,259 @@ msgstr "да се използва бележката сочена от този
 msgid "unknown subcommand: %s"
 msgstr "непозната подкоманда: %s"
 
-#: builtin/pack-objects.c:33
+#: builtin/pack-objects.c:48
 msgid ""
 "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects --stdout [ОПЦИЯ…] [< СПИСЪК_С_УКАЗАТЕЛИ | < СПИСЪК_С_ОБЕКТИ]"
 
-#: builtin/pack-objects.c:34
+#: builtin/pack-objects.c:49
 msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects [ОПЦИЯ…] ПРЕФИКС_НА_ИМЕТО [< СПИСЪК_С_УКАЗАТЕЛИ | < "
 "СПИСЪК_С_ОБЕКТИ]"
 
-#: builtin/pack-objects.c:195 builtin/pack-objects.c:198
+#: builtin/pack-objects.c:211 builtin/pack-objects.c:214
 #, c-format
 msgid "deflate error (%d)"
 msgstr "грешка при декомпресиране с „deflate“ (%d)"
 
-#: builtin/pack-objects.c:791
+#: builtin/pack-objects.c:810
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr ""
 "изключване на записването на битовата маска, пакетите са разделени поради "
 "стойността на „pack.packSizeLimit“"
 
-#: builtin/pack-objects.c:804
+#: builtin/pack-objects.c:823
 msgid "Writing objects"
 msgstr "Записване на обектите"
 
-#: builtin/pack-objects.c:1084
+#: builtin/pack-objects.c:1106
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr ""
 "изключване на записването на битовата маска, защото някои обекти няма да се "
 "пакетират"
 
-#: builtin/pack-objects.c:2454
+#: builtin/pack-objects.c:1765
+msgid "Counting objects"
+msgstr "Преброяване на обектите"
+
+#: builtin/pack-objects.c:1895
+#, c-format
+msgid "unable to get size of %s"
+msgstr "размерът на „%s“ не може да бъде получен"
+
+#: builtin/pack-objects.c:1910
+#, c-format
+msgid "unable to parse object header of %s"
+msgstr "заглавната част на „%s“ не може да бъде анализирана"
+
+#: builtin/pack-objects.c:2564
 msgid "Compressing objects"
 msgstr "Компресиране на обектите"
 
-#: builtin/pack-objects.c:2625
+#: builtin/pack-objects.c:2735
 msgid "invalid value for --missing"
 msgstr "неправилна стойност за „--missing“"
 
-#: builtin/pack-objects.c:2928
+#: builtin/pack-objects.c:3067
 #, c-format
 msgid "unsupported index version %s"
 msgstr "неподдържана версия на индекса „%s“"
 
-#: builtin/pack-objects.c:2932
+#: builtin/pack-objects.c:3071
 #, c-format
 msgid "bad index version '%s'"
 msgstr "неправилна версия на индекса „%s“"
 
-#: builtin/pack-objects.c:2962
+#: builtin/pack-objects.c:3102
 msgid "do not show progress meter"
 msgstr "без извеждане на напредъка"
 
-#: builtin/pack-objects.c:2964
+#: builtin/pack-objects.c:3104
 msgid "show progress meter"
 msgstr "извеждане на напредъка"
 
-#: builtin/pack-objects.c:2966
+#: builtin/pack-objects.c:3106
 msgid "show progress meter during object writing phase"
 msgstr "извеждане на напредъка във фазата на запазване на обектите"
 
-#: builtin/pack-objects.c:2969
+#: builtin/pack-objects.c:3109
 msgid "similar to --all-progress when progress meter is shown"
 msgstr ""
 "същото действие като опцията „--all-progress“ при извеждането на напредъка"
 
-#: builtin/pack-objects.c:2970
+#: builtin/pack-objects.c:3110
 msgid "version[,offset]"
 msgstr "ВЕРСИЯ[,ОТМЕСТВАНЕ]"
 
-#: builtin/pack-objects.c:2971
+#: builtin/pack-objects.c:3111
 msgid "write the pack index file in the specified idx format version"
 msgstr ""
 "запазване на индекса на пакетните файлове във форма̀та с указаната версия"
 
-#: builtin/pack-objects.c:2974
+#: builtin/pack-objects.c:3114
 msgid "maximum size of each output pack file"
 msgstr "максимален размер на всеки пакетен файл"
 
-#: builtin/pack-objects.c:2976
+#: builtin/pack-objects.c:3116
 msgid "ignore borrowed objects from alternate object store"
 msgstr "игнориране на обектите заети от други хранилища на обекти"
 
-#: builtin/pack-objects.c:2978
+#: builtin/pack-objects.c:3118
 msgid "ignore packed objects"
 msgstr "игнориране на пакетираните обекти"
 
-#: builtin/pack-objects.c:2980
+#: builtin/pack-objects.c:3120
 msgid "limit pack window by objects"
 msgstr "ограничаване на прозореца за пакетиране по брой обекти"
 
-#: builtin/pack-objects.c:2982
+#: builtin/pack-objects.c:3122
 msgid "limit pack window by memory in addition to object limit"
 msgstr ""
 "ограничаване на прозореца за пакетиране и по памет освен по брой обекти"
 
-#: builtin/pack-objects.c:2984
+#: builtin/pack-objects.c:3124
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr ""
 "максимална дължина на веригата от разлики, която е позволена в пакетния файл"
 
-#: builtin/pack-objects.c:2986
+#: builtin/pack-objects.c:3126
 msgid "reuse existing deltas"
 msgstr "преизползване на съществуващите разлики"
 
-#: builtin/pack-objects.c:2988
+#: builtin/pack-objects.c:3128
 msgid "reuse existing objects"
 msgstr "преизползване на съществуващите обекти"
 
-#: builtin/pack-objects.c:2990
+#: builtin/pack-objects.c:3130
 msgid "use OFS_DELTA objects"
 msgstr "използване на обекти „OFS_DELTA“"
 
-#: builtin/pack-objects.c:2992
+#: builtin/pack-objects.c:3132
 msgid "use threads when searching for best delta matches"
 msgstr ""
 "стартиране на нишки за претърсване на най-добрите съвпадения на разликите"
 
-#: builtin/pack-objects.c:2994
+#: builtin/pack-objects.c:3134
 msgid "do not create an empty pack output"
 msgstr "без създаване на празен пакетен файл"
 
-#: builtin/pack-objects.c:2996
+#: builtin/pack-objects.c:3136
 msgid "read revision arguments from standard input"
 msgstr "изчитане на версиите от стандартния вход"
 
-#: builtin/pack-objects.c:2998
+#: builtin/pack-objects.c:3138
 msgid "limit the objects to those that are not yet packed"
 msgstr "ограничаване до все още непакетираните обекти"
 
-#: builtin/pack-objects.c:3001
+#: builtin/pack-objects.c:3141
 msgid "include objects reachable from any reference"
 msgstr ""
 "включване на всички обекти, които могат да се достигнат от произволен "
 "указател"
 
-#: builtin/pack-objects.c:3004
+#: builtin/pack-objects.c:3144
 msgid "include objects referred by reflog entries"
 msgstr "включване и на обектите сочени от записите в журнала на указателите"
 
-#: builtin/pack-objects.c:3007
+#: builtin/pack-objects.c:3147
 msgid "include objects referred to by the index"
 msgstr "включване и на обектите сочени от индекса"
 
-#: builtin/pack-objects.c:3010
+#: builtin/pack-objects.c:3150
 msgid "output pack to stdout"
 msgstr "извеждане на пакета на стандартния изход"
 
-#: builtin/pack-objects.c:3012
+#: builtin/pack-objects.c:3152
 msgid "include tag objects that refer to objects to be packed"
 msgstr ""
 "включване и на обектите-етикети, които сочат към обектите, които ще бъдат "
 "пакетирани"
 
-#: builtin/pack-objects.c:3014
+#: builtin/pack-objects.c:3154
 msgid "keep unreachable objects"
 msgstr "запазване на недостижимите обекти"
 
-#: builtin/pack-objects.c:3016
+#: builtin/pack-objects.c:3156
 msgid "pack loose unreachable objects"
 msgstr "пакетиране и на недостижимите обекти"
 
-#: builtin/pack-objects.c:3018
+#: builtin/pack-objects.c:3158
 msgid "unpack unreachable objects newer than <time>"
 msgstr "разпакетиране на недостижимите обекти, които са по-нови от това ВРЕМЕ"
 
-#: builtin/pack-objects.c:3021
+#: builtin/pack-objects.c:3161
 msgid "create thin packs"
 msgstr "създаване на съкратени пакети"
 
-#: builtin/pack-objects.c:3023
+#: builtin/pack-objects.c:3163
 msgid "create packs suitable for shallow fetches"
 msgstr "пакетиране подходящо за плитко доставяне"
 
-#: builtin/pack-objects.c:3025
+#: builtin/pack-objects.c:3165
 msgid "ignore packs that have companion .keep file"
 msgstr "игнориране на пакетите, които са придружени от файл „.keep“"
 
-#: builtin/pack-objects.c:3027
+#: builtin/pack-objects.c:3167
+msgid "ignore this pack"
+msgstr "пропускане на този пакет"
+
+#: builtin/pack-objects.c:3169
 msgid "pack compression level"
 msgstr "ниво на компресиране при пакетиране"
 
-#: builtin/pack-objects.c:3029
+#: builtin/pack-objects.c:3171
 msgid "do not hide commits by grafts"
 msgstr ""
 "извеждане на всички родители — дори и тези, които нормално са скрити при "
 "присажданията"
 
-#: builtin/pack-objects.c:3031
+#: builtin/pack-objects.c:3173
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr ""
 "използване на съществуващи индекси на база битови маски за ускоряване на "
 "преброяването на обектите"
 
-#: builtin/pack-objects.c:3033
+#: builtin/pack-objects.c:3175
 msgid "write a bitmap index together with the pack index"
 msgstr ""
 "запазване и на индекс на база побитова маска, заедно с индекса за пакета"
 
-#: builtin/pack-objects.c:3036
+#: builtin/pack-objects.c:3178
 msgid "handling for missing objects"
 msgstr "как да се обработват липсващите обекти"
 
-#: builtin/pack-objects.c:3039
+#: builtin/pack-objects.c:3181
 msgid "do not pack objects in promisor packfiles"
 msgstr "без пакетиране на обекти в гарантиращи пакети"
 
-#: builtin/pack-objects.c:3178
-msgid "Counting objects"
-msgstr "Преброяване на обектите"
+#: builtin/pack-objects.c:3205
+#, c-format
+msgid "delta chain depth %d is too deep, forcing %d"
+msgstr "веригата с разлики е прекалено дълбока — %d, ще се ползва %d"
+
+#: builtin/pack-objects.c:3210
+#, c-format
+msgid "pack.deltaCacheLimit is too high, forcing %d"
+msgstr ""
+"Стойността на настройката „pack.deltaCacheLimit“ е прекалено голяма.  Ще се "
+"ползва %d"
+
+#: builtin/pack-objects.c:3338
+msgid "Enumerating objects"
+msgstr "Изброяване на обектите"
 
-#: builtin/pack-refs.c:6
+#: builtin/pack-refs.c:7
 msgid "git pack-refs [<options>]"
 msgstr "git pack-refs [ОПЦИЯ…]"
 
-#: builtin/pack-refs.c:14
+#: builtin/pack-refs.c:15
 msgid "pack everything"
 msgstr "пакетиране на всичко"
 
-#: builtin/pack-refs.c:15
+#: builtin/pack-refs.c:16
 msgid "prune loose refs (default)"
 msgstr "окастряне на недостижимите указатели (стандартно)"
 
@@ -11972,65 +12482,65 @@ msgstr "Изтриване на повтарящите се обекти"
 msgid "git prune [-n] [-v] [--progress] [--expire <time>] [--] [<head>...]"
 msgstr "git prune [-n] [-v] [--progress] [--expire ВРЕМЕ] [--] [ВРЪХ…]"
 
-#: builtin/prune.c:107
+#: builtin/prune.c:108
 msgid "report pruned objects"
 msgstr "информация за окастрените обекти"
 
-#: builtin/prune.c:110
+#: builtin/prune.c:111
 msgid "expire objects older than <time>"
 msgstr "окастряне на обектите по-стари от това ВРЕМЕ"
 
-#: builtin/prune.c:112
+#: builtin/prune.c:113
 msgid "limit traversal to objects outside promisor packfiles"
 msgstr "ограничаване на обхождането до обекти извън гарантиращи пакети"
 
-#: builtin/prune.c:126
+#: builtin/prune.c:127
 msgid "cannot prune in a precious-objects repo"
 msgstr "хранилище с важни обекти не може да се окастря"
 
-#: builtin/pull.c:54 builtin/pull.c:56
+#: builtin/pull.c:59 builtin/pull.c:61
 #, c-format
 msgid "Invalid value for %s: %s"
 msgstr "Неправилна стойност за „%s“: „%s“"
 
-#: builtin/pull.c:76
+#: builtin/pull.c:81
 msgid "git pull [<options>] [<repository> [<refspec>...]]"
 msgstr "git push [ОПЦИЯ…] [ХРАНИЛИЩЕ [УКАЗАТЕЛ_НА_ВЕРСИЯ…]]"
 
-#: builtin/pull.c:127
+#: builtin/pull.c:132
 msgid "control for recursive fetching of submodules"
 msgstr "управление на рекурсивното доставяне на подмодулите"
 
-#: builtin/pull.c:131
+#: builtin/pull.c:136
 msgid "Options related to merging"
 msgstr "Опции при сливане"
 
-#: builtin/pull.c:134
+#: builtin/pull.c:139
 msgid "incorporate changes by rebasing rather than merging"
 msgstr "внасяне на промените чрез пребазиране, а не чрез сливане"
 
-#: builtin/pull.c:161 builtin/rebase--helper.c:23 builtin/revert.c:121
+#: builtin/pull.c:166 builtin/rebase--helper.c:23 builtin/revert.c:121
 msgid "allow fast-forward"
 msgstr "позволяване на превъртания"
 
-#: builtin/pull.c:170
+#: builtin/pull.c:175
 msgid "automatically stash/stash pop before and after rebase"
 msgstr "автоматично скатаване/прилагане на скатаното преди и след пребазиране"
 
-#: builtin/pull.c:186
+#: builtin/pull.c:191
 msgid "Options related to fetching"
 msgstr "Опции при доставяне"
 
-#: builtin/pull.c:204
+#: builtin/pull.c:209
 msgid "number of submodules pulled in parallel"
 msgstr "брой подмодули издърпани паралелно"
 
-#: builtin/pull.c:299
+#: builtin/pull.c:304
 #, c-format
 msgid "Invalid value for pull.ff: %s"
 msgstr "Неправилна стойност за „pull.ff“: „%s“"
 
-#: builtin/pull.c:415
+#: builtin/pull.c:420
 msgid ""
 "There is no candidate for rebasing against among the refs that you just "
 "fetched."
@@ -12038,14 +12548,14 @@ msgstr ""
 "Между указателите, които току що доставихте, няма подходящ кандидат, върху "
 "който да пребазирате."
 
-#: builtin/pull.c:417
+#: builtin/pull.c:422
 msgid ""
 "There are no candidates for merging among the refs that you just fetched."
 msgstr ""
 "Между указателите, които току що доставихте, няма подходящ кандидат, който "
 "да слеете."
 
-#: builtin/pull.c:418
+#: builtin/pull.c:423
 msgid ""
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
@@ -12053,7 +12563,7 @@ msgstr ""
 "Най вероятно сте подали шаблон за указатели, който не е напаснал с нищо в "
 "отдалеченото хранилище."
 
-#: builtin/pull.c:421
+#: builtin/pull.c:426
 #, c-format
 msgid ""
 "You asked to pull from the remote '%s', but did not specify\n"
@@ -12064,44 +12574,44 @@ msgstr ""
 "Понеже това не е хранилището по подразбиране на текущия клон, трябва\n"
 "да укажете отдалечения клон на командния ред."
 
-#: builtin/pull.c:426 git-parse-remote.sh:73
+#: builtin/pull.c:431 git-parse-remote.sh:73
 msgid "You are not currently on a branch."
 msgstr "Извън всички клони."
 
-#: builtin/pull.c:428 builtin/pull.c:443 git-parse-remote.sh:79
+#: builtin/pull.c:433 builtin/pull.c:448 git-parse-remote.sh:79
 msgid "Please specify which branch you want to rebase against."
 msgstr "Укажете върху кой клон искате да пребазирате."
 
-#: builtin/pull.c:430 builtin/pull.c:445 git-parse-remote.sh:82
+#: builtin/pull.c:435 builtin/pull.c:450 git-parse-remote.sh:82
 msgid "Please specify which branch you want to merge with."
 msgstr "Укажете кой клон искате да слеете."
 
-#: builtin/pull.c:431 builtin/pull.c:446
+#: builtin/pull.c:436 builtin/pull.c:451
 msgid "See git-pull(1) for details."
 msgstr "За повече информация погледнете ръководството „git-pull(1)“"
 
-#: builtin/pull.c:433 builtin/pull.c:439 builtin/pull.c:448
+#: builtin/pull.c:438 builtin/pull.c:444 builtin/pull.c:453
 #: git-parse-remote.sh:64
 msgid "<remote>"
 msgstr "ОТДАЛЕЧЕНО_ХРАНИЛИЩЕ"
 
-#: builtin/pull.c:433 builtin/pull.c:448 builtin/pull.c:453 git-rebase.sh:477
+#: builtin/pull.c:438 builtin/pull.c:453 builtin/pull.c:458 git-rebase.sh:523
 #: git-parse-remote.sh:65
 msgid "<branch>"
 msgstr "КЛОН"
 
-#: builtin/pull.c:441 git-parse-remote.sh:75
+#: builtin/pull.c:446 git-parse-remote.sh:75
 msgid "There is no tracking information for the current branch."
 msgstr "Текущият клон не следи никой."
 
-#: builtin/pull.c:450 git-parse-remote.sh:95
+#: builtin/pull.c:455 git-parse-remote.sh:95
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:"
 msgstr ""
 "Ако искате да зададете информация за следен клон, можете да направите това с "
 "командата:"
 
-#: builtin/pull.c:455
+#: builtin/pull.c:460
 #, c-format
 msgid ""
 "Your configuration specifies to merge with the ref '%s'\n"
@@ -12110,27 +12620,27 @@ msgstr ""
 "За сливане е указан отдалеченият указател „%s“,\n"
 "но такъв не е доставен."
 
-#: builtin/pull.c:819
+#: builtin/pull.c:826
 msgid "ignoring --verify-signatures for rebase"
 msgstr "без „--verify-signatures“ при пребазиране"
 
-#: builtin/pull.c:867
+#: builtin/pull.c:874
 msgid "--[no-]autostash option is only valid with --rebase."
 msgstr "опцията „--[no-]autostash“ изисква „--rebase“"
 
-#: builtin/pull.c:875
+#: builtin/pull.c:882
 msgid "Updating an unborn branch with changes added to the index."
 msgstr "Обновяване на все още несъздаден клон с промените от индекса"
 
-#: builtin/pull.c:878
+#: builtin/pull.c:885
 msgid "pull with rebase"
 msgstr "издърпване с пребазиране"
 
-#: builtin/pull.c:879
+#: builtin/pull.c:886
 msgid "please commit or stash them."
 msgstr "трябва да подадете или скатаете промените."
 
-#: builtin/pull.c:904
+#: builtin/pull.c:911
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -12140,7 +12650,7 @@ msgstr ""
 "доставянето обнови върха на текущия клон.  Работното\n"
 "ви копие бе превъртяно от подаване „%s“."
 
-#: builtin/pull.c:909
+#: builtin/pull.c:916
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -12157,32 +12667,32 @@ msgstr ""
 "  $ git reset --hard\n"
 "за връщане към нормално състояние."
 
-#: builtin/pull.c:924
+#: builtin/pull.c:931
 msgid "Cannot merge multiple branches into empty head."
 msgstr "Не може да сливате множество клони в празен върхов указател."
 
-#: builtin/pull.c:928
+#: builtin/pull.c:935
 msgid "Cannot rebase onto multiple branches."
 msgstr "Не може да пребазирате върху повече от един клон."
 
-#: builtin/pull.c:935
+#: builtin/pull.c:942
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr ""
 "пребазирането е невъзможно заради локално записаните промени по подмодулите"
 
-#: builtin/push.c:17
+#: builtin/push.c:19
 msgid "git push [<options>] [<repository> [<refspec>...]]"
 msgstr "git push [ОПЦИЯ…] [ХРАНИЛИЩЕ [УКАЗАТЕЛ_НА_ВЕРСИЯ…]]"
 
-#: builtin/push.c:92
+#: builtin/push.c:111
 msgid "tag shorthand without <tag>"
 msgstr "съкращение за етикет без ЕТИКЕТ"
 
-#: builtin/push.c:102
+#: builtin/push.c:121
 msgid "--delete only accepts plain target ref names"
 msgstr "опцията „--delete“ приема за цел само прости имена на указатели"
 
-#: builtin/push.c:146
+#: builtin/push.c:165
 msgid ""
 "\n"
 "To choose either option permanently, see push.default in 'git help config'."
@@ -12191,7 +12701,7 @@ msgstr ""
 "За да включите тази опция за постоянно, погледнете документацията за "
 "настройката „push.default“ в „git help config“."
 
-#: builtin/push.c:149
+#: builtin/push.c:168
 #, c-format
 msgid ""
 "The upstream branch of your current branch does not match\n"
@@ -12216,7 +12726,7 @@ msgstr ""
 "    git push %s %s\n"
 "%s"
 
-#: builtin/push.c:164
+#: builtin/push.c:183
 #, c-format
 msgid ""
 "You are not currently on a branch.\n"
@@ -12230,7 +12740,7 @@ msgstr ""
 "\n"
 "    git push %s HEAD:ИМЕ_НА_ОТДАЛЕЧЕНИЯ_КЛОН\n"
 
-#: builtin/push.c:178
+#: builtin/push.c:197
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -12244,14 +12754,14 @@ msgstr ""
 "\n"
 "    git push --set-upstream %s %s\n"
 
-#: builtin/push.c:186
+#: builtin/push.c:205
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
 msgstr ""
 "Текущият клон „%s“ следи няколко отдалечени клона, не можете просто да "
 "изтласкате."
 
-#: builtin/push.c:189
+#: builtin/push.c:208
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -12263,14 +12773,14 @@ msgstr ""
 "Трябва да укажете коя версия да се изтласка, за обновяване на отдалечения "
 "клон."
 
-#: builtin/push.c:248
+#: builtin/push.c:267
 msgid ""
 "You didn't specify any refspecs to push, and push.default is \"nothing\"."
 msgstr ""
 "Не сте указали версия за подаване, а настройката „push.default“ е "
 "„nothing“ (нищо без изрично указана версия да не се изтласква)"
 
-#: builtin/push.c:255
+#: builtin/push.c:274
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
@@ -12284,7 +12794,7 @@ msgstr ""
 "преди отново да изтласкате промените.  За повече информация вижте раздела\n"
 "„Note about fast-forwards“ в страницата от ръководството „git push --help“."
 
-#: builtin/push.c:261
+#: builtin/push.c:280
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. Check out this branch and integrate the remote changes\n"
@@ -12298,7 +12808,7 @@ msgstr ""
 "информация погледнете раздела „Note about fast-forwards“ в страницата от\n"
 "ръководството „git push --help“."
 
-#: builtin/push.c:267
+#: builtin/push.c:286
 msgid ""
 "Updates were rejected because the remote contains work that you do\n"
 "not have locally. This is usually caused by another repository pushing\n"
@@ -12317,14 +12827,14 @@ msgstr ""
 "страницата\n"
 "от ръководството „git push --help“."
 
-#: builtin/push.c:274
+#: builtin/push.c:293
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr ""
 "Изтласкването е отхвърлено, защото в отдалеченото хранилище съществува "
 "етикет,\n"
 "който ще припокриете с етикет от вашето хранилище."
 
-#: builtin/push.c:277
+#: builtin/push.c:296
 msgid ""
 "You cannot update a remote ref that points at a non-commit object,\n"
 "or update a remote ref to make it point at a non-commit object,\n"
@@ -12334,22 +12844,22 @@ msgstr ""
 "указател, който вече сочи към обект, който не е подаване, както и тепърва\n"
 "да го промените да сочи към подобен обект.\n"
 
-#: builtin/push.c:337
+#: builtin/push.c:357
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "Изтласкване към „%s“\n"
 
-#: builtin/push.c:341
+#: builtin/push.c:361
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "част от указателите не бяха изтласкани към „%s“"
 
-#: builtin/push.c:372
+#: builtin/push.c:395
 #, c-format
 msgid "bad repository '%s'"
 msgstr "неправилно указано хранилище „%s“"
 
-#: builtin/push.c:373
+#: builtin/push.c:396
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -12371,115 +12881,107 @@ msgstr ""
 "\n"
 "    git push ИМЕ\n"
 
-#: builtin/push.c:391
-msgid "--all and --tags are incompatible"
-msgstr "опциите „--all“ и „--tags“ са несъвместими"
-
-#: builtin/push.c:392
-msgid "--all can't be combined with refspecs"
-msgstr "опцията „--all“ е несъвместима с указването на версия"
-
-#: builtin/push.c:397
-msgid "--mirror and --tags are incompatible"
-msgstr "опциите „--mirror“ и „--tags“ са несъвместими"
-
-#: builtin/push.c:398
-msgid "--mirror can't be combined with refspecs"
-msgstr "опцията „--mirror“ е несъвместима с указването на версия"
-
-#: builtin/push.c:403
-msgid "--all and --mirror are incompatible"
-msgstr "опциите „--all“ и „--mirror“ са несъвместими"
-
-#: builtin/push.c:535
+#: builtin/push.c:551
 msgid "repository"
 msgstr "хранилище"
 
-#: builtin/push.c:536 builtin/send-pack.c:163
+#: builtin/push.c:552 builtin/send-pack.c:164
 msgid "push all refs"
 msgstr "изтласкване на всички указатели"
 
-#: builtin/push.c:537 builtin/send-pack.c:165
+#: builtin/push.c:553 builtin/send-pack.c:166
 msgid "mirror all refs"
 msgstr "огледално копие на всички указатели"
 
-#: builtin/push.c:539
+#: builtin/push.c:555
 msgid "delete refs"
 msgstr "изтриване на указателите"
 
-#: builtin/push.c:540
+#: builtin/push.c:556
 msgid "push tags (can't be used with --all or --mirror)"
 msgstr "изтласкване на етикетите (несъвместимо с опциите „--all“ и „--mirror“)"
 
-#: builtin/push.c:543 builtin/send-pack.c:166
+#: builtin/push.c:559 builtin/send-pack.c:167
 msgid "force updates"
 msgstr "принудително обновяване"
 
-#: builtin/push.c:545 builtin/send-pack.c:180
+#: builtin/push.c:561 builtin/send-pack.c:181
 msgid "refname>:<expect"
 msgstr "УКАЗАТЕЛ>:<ОЧАКВАНА_СТОЙНОСТ"
 
-#: builtin/push.c:546 builtin/send-pack.c:181
+#: builtin/push.c:562 builtin/send-pack.c:182
 msgid "require old value of ref to be at this value"
 msgstr "УКАЗАТЕЛят трябва първоначално да е с тази ОЧАКВАНА_СТОЙНОСТ"
 
-#: builtin/push.c:549
+#: builtin/push.c:565
 msgid "control recursive pushing of submodules"
 msgstr "управление на рекурсивното изтласкване на подмодулите"
 
-#: builtin/push.c:551 builtin/send-pack.c:174
+#: builtin/push.c:567 builtin/send-pack.c:175
 msgid "use thin pack"
 msgstr "използване на съкратени пакети"
 
-#: builtin/push.c:552 builtin/push.c:553 builtin/send-pack.c:160
-#: builtin/send-pack.c:161
+#: builtin/push.c:568 builtin/push.c:569 builtin/send-pack.c:161
+#: builtin/send-pack.c:162
 msgid "receive pack program"
 msgstr "програма за получаването на пакети"
 
-#: builtin/push.c:554
+#: builtin/push.c:570
 msgid "set upstream for git pull/status"
 msgstr "задаване на отдалеченото хранилище за командите „git pull/status“"
 
-#: builtin/push.c:557
+#: builtin/push.c:573
 msgid "prune locally removed refs"
 msgstr "окастряне на указателите, които са премахнати от локалното хранилище"
 
-#: builtin/push.c:559
+#: builtin/push.c:575
 msgid "bypass pre-push hook"
 msgstr "без изпълнение на куката преди изтласкване (pre-push)"
 
-#: builtin/push.c:560
+#: builtin/push.c:576
 msgid "push missing but relevant tags"
 msgstr ""
 "изтласкване на липсващите в отдалеченото хранилище, но свързани с текущото "
 "изтласкване, етикети"
 
-#: builtin/push.c:563 builtin/send-pack.c:168
+#: builtin/push.c:579 builtin/send-pack.c:169
 msgid "GPG sign the push"
 msgstr "подписване на изтласкването с GPG"
 
-#: builtin/push.c:565 builtin/send-pack.c:175
+#: builtin/push.c:581 builtin/send-pack.c:176
 msgid "request atomic transaction on remote side"
 msgstr "изискване на атомарни операции от отсрещната страна"
 
-#: builtin/push.c:566 builtin/send-pack.c:171
-msgid "server-specific"
-msgstr "специфични за сървъра"
-
-#: builtin/push.c:566 builtin/send-pack.c:172
-msgid "option to transmit"
-msgstr "опция за пренос"
-
-#: builtin/push.c:583
+#: builtin/push.c:599
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr ""
 "опцията „--delete“ е несъвместима с опциите  „--all“, „--mirror“ и „--tags“"
 
-#: builtin/push.c:585
+#: builtin/push.c:601
 msgid "--delete doesn't make sense without any refs"
 msgstr "опцията „--delete“ изисква поне един указател на версия"
 
 #: builtin/push.c:604
+msgid "--all and --tags are incompatible"
+msgstr "опциите „--all“ и „--tags“ са несъвместими"
+
+#: builtin/push.c:606
+msgid "--all can't be combined with refspecs"
+msgstr "опцията „--all“ е несъвместима с указването на версия"
+
+#: builtin/push.c:610
+msgid "--mirror and --tags are incompatible"
+msgstr "опциите „--mirror“ и „--tags“ са несъвместими"
+
+#: builtin/push.c:612
+msgid "--mirror can't be combined with refspecs"
+msgstr "опцията „--mirror“ е несъвместима с указването на версия"
+
+#: builtin/push.c:615
+msgid "--all and --mirror are incompatible"
+msgstr "опциите „--all“ и „--mirror“ са несъвместими"
+
+#: builtin/push.c:634
 msgid "push options must not have new line characters"
 msgstr "опциите за изтласкване не трябва да съдържат знак за нов ред"
 
@@ -12494,67 +12996,67 @@ msgstr ""
 "checkout] [--index-output=ФАЙЛ] (--empty | УКАЗАТЕЛ_КЪМ_ДЪРВО_1 "
 "[УКАЗАТЕЛ_КЪМ_ДЪРВО_2 [УКАЗАТЕЛ_КЪМ_ДЪРВО_3]])"
 
-#: builtin/read-tree.c:121
+#: builtin/read-tree.c:120
 msgid "write resulting index to <file>"
 msgstr "запазване на индекса в този ФАЙЛ"
 
-#: builtin/read-tree.c:124
+#: builtin/read-tree.c:123
 msgid "only empty the index"
 msgstr "само зануляване на индекса"
 
-#: builtin/read-tree.c:126
+#: builtin/read-tree.c:125
 msgid "Merging"
 msgstr "Сливане"
 
-#: builtin/read-tree.c:128
+#: builtin/read-tree.c:127
 msgid "perform a merge in addition to a read"
 msgstr "да се извърши и сливане след освен изчитането"
 
-#: builtin/read-tree.c:130
+#: builtin/read-tree.c:129
 msgid "3-way merge if no file level merging required"
 msgstr "тройно сливане, ако не се налага пофайлово сливане"
 
-#: builtin/read-tree.c:132
+#: builtin/read-tree.c:131
 msgid "3-way merge in presence of adds and removes"
 msgstr "тройно сливане при добавяне на добавяне и изтриване на файлове"
 
-#: builtin/read-tree.c:134
+#: builtin/read-tree.c:133
 msgid "same as -m, but discard unmerged entries"
 msgstr "същото като опцията „-m“, но неслетите обекти се пренебрегват"
 
-#: builtin/read-tree.c:135
+#: builtin/read-tree.c:134
 msgid "<subdirectory>/"
 msgstr "ПОДДИРЕКТОРИЯ/"
 
-#: builtin/read-tree.c:136
+#: builtin/read-tree.c:135
 msgid "read the tree into the index under <subdirectory>/"
 msgstr "изчитане на дървото към индекса като да е в тази ПОДДИРЕКТОРИЯ/"
 
-#: builtin/read-tree.c:139
+#: builtin/read-tree.c:138
 msgid "update working tree with merge result"
 msgstr "обновяване на работното дърво с резултата от сливането"
 
-#: builtin/read-tree.c:141
+#: builtin/read-tree.c:140
 msgid "gitignore"
 msgstr "ФАЙЛ_С_ИЗКЛЮЧЕНИЯ"
 
-#: builtin/read-tree.c:142
+#: builtin/read-tree.c:141
 msgid "allow explicitly ignored files to be overwritten"
 msgstr "позволяване на презаписването на изрично пренебрегваните файлове"
 
-#: builtin/read-tree.c:145
+#: builtin/read-tree.c:144
 msgid "don't check the working tree after merging"
 msgstr "без проверка на работното дърво след сливането"
 
-#: builtin/read-tree.c:146
+#: builtin/read-tree.c:145
 msgid "don't update the index or the work tree"
 msgstr "без обновяване и на индекса, и на работното дърво"
 
-#: builtin/read-tree.c:148
+#: builtin/read-tree.c:147
 msgid "skip applying sparse checkout filter"
 msgstr "без прилагане на филтъра за частично изтегляне"
 
-#: builtin/read-tree.c:150
+#: builtin/read-tree.c:149
 msgid "debug unpack-trees"
 msgstr "изчистване на грешки в командата „unpack-trees“"
 
@@ -12571,48 +13073,61 @@ msgid "allow commits with empty messages"
 msgstr "позволяване на празни съобщения при подаване"
 
 #: builtin/rebase--helper.c:27
+msgid "rebase merge commits"
+msgstr "пребазиране на подаванията със сливания"
+
+#: builtin/rebase--helper.c:29
+msgid "keep original branch points of cousins"
+msgstr ""
+"запазване на първоначалните точки на разклоняване на сестринските клони"
+
+#: builtin/rebase--helper.c:30
 msgid "continue rebase"
 msgstr "продължаване на пребазирането"
 
-#: builtin/rebase--helper.c:29
+#: builtin/rebase--helper.c:32
 msgid "abort rebase"
 msgstr "преустановяване на пребазирането"
 
-#: builtin/rebase--helper.c:32
+#: builtin/rebase--helper.c:35
 msgid "make rebase script"
 msgstr "създаване на скрипт за пребазиране"
 
-#: builtin/rebase--helper.c:34
+#: builtin/rebase--helper.c:37
 msgid "shorten commit ids in the todo list"
 msgstr "съкратени идентификатори в списъка за изпълнение"
 
-#: builtin/rebase--helper.c:36
+#: builtin/rebase--helper.c:39
 msgid "expand commit ids in the todo list"
 msgstr "пълни идентификатори в списъка за изпълнение"
 
-#: builtin/rebase--helper.c:38
+#: builtin/rebase--helper.c:41
 msgid "check the todo list"
 msgstr "проверка на списъка за изпълнение"
 
-#: builtin/rebase--helper.c:40
+#: builtin/rebase--helper.c:43
 msgid "skip unnecessary picks"
 msgstr "прескачане на излишните команди за отбиране"
 
-#: builtin/rebase--helper.c:42
+#: builtin/rebase--helper.c:45
 msgid "rearrange fixup/squash lines"
 msgstr ""
-"преподреждане на редовете за сливане на подаванията със и без смени на "
-"съобщението"
+"преподреждане на редовете за вкарване на подаванията подаванията в "
+"предходните им със и без смени на съобщението"
 
-#: builtin/rebase--helper.c:44
+#: builtin/rebase--helper.c:47
 msgid "insert exec commands in todo list"
 msgstr "вмъкване на командите за изпълнение в списъка за изпълнение"
 
-#: builtin/receive-pack.c:30
+#: builtin/rebase--helper.c:68
+msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
+msgstr "опциите „--[no-]rebase-cousins“ изискват опцията „--rebase-merges“"
+
+#: builtin/receive-pack.c:31
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack ДИРЕКТОРИЯ_НА_GIT"
 
-#: builtin/receive-pack.c:841
+#: builtin/receive-pack.c:842
 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"
@@ -12645,7 +13160,7 @@ msgstr ""
 "За да заглушите това съобщение, като запазите стандартното поведение,\n"
 "задайте настройката „receive.denyCurrentBranch“ да е „refuse“ (отказ)."
 
-#: builtin/receive-pack.c:861
+#: builtin/receive-pack.c:862
 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"
@@ -12666,11 +13181,11 @@ msgstr ""
 "За да заглушите това съобщение, задайте настройката\n"
 "„receive.denyDeleteCurrent“ да е „refuse“ (отказ)."
 
-#: builtin/receive-pack.c:1934
+#: builtin/receive-pack.c:1935
 msgid "quiet"
 msgstr "без извеждане на информация"
 
-#: builtin/receive-pack.c:1948
+#: builtin/receive-pack.c:1949
 msgid "You must specify a directory."
 msgstr "Трябва да укажете директория."
 
@@ -12679,11 +13194,11 @@ msgstr "Трябва да укажете директория."
 msgid "'%s' is not a valid timestamp"
 msgstr "„%s“ не е правилна стойност за време"
 
-#: builtin/remote.c:13
+#: builtin/remote.c:14
 msgid "git remote [-v | --verbose]"
 msgstr "git remote [-v | --verbose]"
 
-#: builtin/remote.c:14
+#: builtin/remote.c:15
 msgid ""
 "git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
 "mirror=<fetch|push>] <name> <url>"
@@ -12691,83 +13206,83 @@ msgstr ""
 "git remote add [-t КЛОН] [-m ОСНОВЕН_КЛОН] [-f] [--tags | --no-tags] [--"
 "mirror=<fetch|push>] ИМЕ АДРЕС"
 
-#: builtin/remote.c:15 builtin/remote.c:35
+#: builtin/remote.c:16 builtin/remote.c:36
 msgid "git remote rename <old> <new>"
 msgstr "git remote rename СТАРО_ИМЕ НОВО_ИМЕ"
 
-#: builtin/remote.c:16 builtin/remote.c:40
+#: builtin/remote.c:17 builtin/remote.c:41
 msgid "git remote remove <name>"
 msgstr "git remote remove ИМЕ"
 
-#: builtin/remote.c:17 builtin/remote.c:45
+#: builtin/remote.c:18 builtin/remote.c:46
 msgid "git remote set-head <name> (-a | --auto | -d | --delete | <branch>)"
 msgstr "git remote set-head ИМЕ (-a | --auto | -d | --delete | КЛОН)"
 
-#: builtin/remote.c:18
+#: builtin/remote.c:19
 msgid "git remote [-v | --verbose] show [-n] <name>"
 msgstr "git remote [-v | --verbose] show [-n] ИМЕ"
 
-#: builtin/remote.c:19
+#: builtin/remote.c:20
 msgid "git remote prune [-n | --dry-run] <name>"
 msgstr "git remote prune [-n | --dry-run] ИМЕ"
 
-#: builtin/remote.c:20
+#: builtin/remote.c:21
 msgid ""
 "git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]"
 msgstr ""
 "git remote [-v | --verbose] update [-p | --prune] [(ГРУПА | "
 "ОТДАЛЕЧЕНО_ХРАНИЛИЩЕ)…]"
 
-#: builtin/remote.c:21
+#: builtin/remote.c:22
 msgid "git remote set-branches [--add] <name> <branch>..."
 msgstr "git remote set-branches [--add] ИМЕ КЛОН…"
 
-#: builtin/remote.c:22 builtin/remote.c:71
+#: builtin/remote.c:23 builtin/remote.c:72
 msgid "git remote get-url [--push] [--all] <name>"
 msgstr "git remote get-url [--push] [--all] ИМЕ"
 
-#: builtin/remote.c:23 builtin/remote.c:76
+#: builtin/remote.c:24 builtin/remote.c:77
 msgid "git remote set-url [--push] <name> <newurl> [<oldurl>]"
 msgstr "git remote set-url [--push] ИМЕ НОВ_АДРЕС [СТАР_АДРЕС]"
 
-#: builtin/remote.c:24 builtin/remote.c:77
+#: builtin/remote.c:25 builtin/remote.c:78
 msgid "git remote set-url --add <name> <newurl>"
 msgstr "git remote set-url --add ИМЕ НОВ_АДРЕС"
 
-#: builtin/remote.c:25 builtin/remote.c:78
+#: builtin/remote.c:26 builtin/remote.c:79
 msgid "git remote set-url --delete <name> <url>"
 msgstr "git remote set-url --delete ИМЕ АДРЕС"
 
-#: builtin/remote.c:30
+#: builtin/remote.c:31
 msgid "git remote add [<options>] <name> <url>"
 msgstr "git remote add [ОПЦИЯ…] ИМЕ АДРЕС"
 
-#: builtin/remote.c:50
+#: builtin/remote.c:51
 msgid "git remote set-branches <name> <branch>..."
 msgstr "git remote set-branches ИМЕ КЛОН…"
 
-#: builtin/remote.c:51
+#: builtin/remote.c:52
 msgid "git remote set-branches --add <name> <branch>..."
 msgstr "git remote set-branches --add ИМЕ КЛОН…"
 
-#: builtin/remote.c:56
+#: builtin/remote.c:57
 msgid "git remote show [<options>] <name>"
 msgstr "git remote show [ОПЦИЯ…] ИМЕ"
 
-#: builtin/remote.c:61
+#: builtin/remote.c:62
 msgid "git remote prune [<options>] <name>"
 msgstr "git remote prune [ОПЦИЯ…] ИМЕ"
 
-#: builtin/remote.c:66
+#: builtin/remote.c:67
 msgid "git remote update [<options>] [<group> | <remote>]..."
 msgstr "git remote update [ОПЦИЯ…] [ГРУПА | ОТДАЛЕЧЕНО_ХРАНИЛИЩЕ…]"
 
-#: builtin/remote.c:95
+#: builtin/remote.c:96
 #, c-format
 msgid "Updating %s"
 msgstr "Обновяване на „%s“"
 
-#: builtin/remote.c:127
+#: builtin/remote.c:128
 msgid ""
 "--mirror is dangerous and deprecated; please\n"
 "\t use --mirror=fetch or --mirror=push instead"
@@ -12775,90 +13290,90 @@ msgstr ""
 "Използването само на „--mirror“ е опасно.  Вместо това\n"
 "ползвайте „--mirror=fetch“ или „--mirror=push“"
 
-#: builtin/remote.c:144
+#: builtin/remote.c:145
 #, c-format
 msgid "unknown mirror argument: %s"
 msgstr "неправилна стойност за „--mirror“: %s"
 
-#: builtin/remote.c:160
+#: builtin/remote.c:161
 msgid "fetch the remote branches"
 msgstr "отдалечените клони не могат да бъдат доставени"
 
-#: builtin/remote.c:162
+#: builtin/remote.c:163
 msgid "import all tags and associated objects when fetching"
 msgstr "внасяне на всички етикети и принадлежащите им обекти при доставяне"
 
-#: builtin/remote.c:165
+#: builtin/remote.c:166
 msgid "or do not fetch any tag at all (--no-tags)"
 msgstr "може и да не се доставят никакви етикети (чрез опцията „--no-tags“)"
 
-#: builtin/remote.c:167
+#: builtin/remote.c:168
 msgid "branch(es) to track"
 msgstr "клон/и за следене"
 
-#: builtin/remote.c:168
+#: builtin/remote.c:169
 msgid "master branch"
 msgstr "основен клон"
 
-#: builtin/remote.c:169
+#: builtin/remote.c:170
 msgid "push|fetch"
 msgstr "издърпване|доставяне"
 
-#: builtin/remote.c:170
+#: builtin/remote.c:171
 msgid "set up remote as a mirror to push to or fetch from"
 msgstr ""
 "настройване на отдалечено хранилище, от което да се издърпва или доставя"
 
-#: builtin/remote.c:182
+#: builtin/remote.c:183
 msgid "specifying a master branch makes no sense with --mirror"
 msgstr ""
 "няма смисъл да се указва основен клон при използване на опцията „--mirror“"
 
-#: builtin/remote.c:184
+#: builtin/remote.c:185
 msgid "specifying branches to track makes sense only with fetch mirrors"
 msgstr ""
 "указването на следени клони е смислено само за отдалечени хранилища, от "
 "които се доставя"
 
-#: builtin/remote.c:191 builtin/remote.c:631
+#: builtin/remote.c:192 builtin/remote.c:634
 #, c-format
 msgid "remote %s already exists."
 msgstr "вече съществува отдалечено хранилище с име „%s“."
 
-#: builtin/remote.c:195 builtin/remote.c:635
+#: builtin/remote.c:196 builtin/remote.c:638
 #, c-format
 msgid "'%s' is not a valid remote name"
 msgstr "„%s“ е неправилно име за отдалечено хранилище"
 
-#: builtin/remote.c:235
+#: builtin/remote.c:236
 #, c-format
 msgid "Could not setup master '%s'"
 msgstr "Основният клон „%s“ не може да бъде настроен"
 
-#: builtin/remote.c:337
+#: builtin/remote.c:342
 #, c-format
 msgid "Could not get fetch map for refspec %s"
 msgstr "Обектите за доставяне за указателя „%s“ не могат да бъдат получени"
 
-#: builtin/remote.c:438 builtin/remote.c:446
+#: builtin/remote.c:441 builtin/remote.c:449
 msgid "(matching)"
 msgstr "(съвпадащи)"
 
-#: builtin/remote.c:450
+#: builtin/remote.c:453
 msgid "(delete)"
 msgstr "(за изтриване)"
 
-#: builtin/remote.c:624 builtin/remote.c:759 builtin/remote.c:858
+#: builtin/remote.c:627 builtin/remote.c:762 builtin/remote.c:861
 #, c-format
 msgid "No such remote: %s"
 msgstr "Такова отдалечено хранилище няма: %s"
 
-#: builtin/remote.c:641
+#: builtin/remote.c:644
 #, c-format
 msgid "Could not rename config section '%s' to '%s'"
 msgstr "Разделът „%s“ в настройките не може да бъде преименуван на „%s“"
 
-#: builtin/remote.c:661
+#: builtin/remote.c:664
 #, c-format
 msgid ""
 "Not updating non-default fetch refspec\n"
@@ -12869,17 +13384,17 @@ msgstr ""
 "    %s\n"
 "  Променете настройките ръчно, ако е необходимо."
 
-#: builtin/remote.c:697
+#: builtin/remote.c:700
 #, c-format
 msgid "deleting '%s' failed"
 msgstr "неуспешно изтриване на „%s“"
 
-#: builtin/remote.c:731
+#: builtin/remote.c:734
 #, c-format
 msgid "creating '%s' failed"
 msgstr "неуспешно създаване на „%s“"
 
-#: builtin/remote.c:796
+#: builtin/remote.c:799
 msgid ""
 "Note: A branch outside the refs/remotes/ hierarchy was not removed;\n"
 "to delete it, use:"
@@ -12893,116 +13408,121 @@ msgstr[1] ""
 "Бележка: Няколко клона извън йерархията „refs/remotes/“ не бяха изтрити.\n"
 "Изтрийте ги чрез командата:"
 
-#: builtin/remote.c:810
+#: builtin/remote.c:813
 #, c-format
 msgid "Could not remove config section '%s'"
 msgstr "Разделът „%s“ в настройките не може да бъде изтрит"
 
-#: builtin/remote.c:911
+#: builtin/remote.c:914
 #, c-format
 msgid " new (next fetch will store in remotes/%s)"
 msgstr " нов (следващото доставяне ще го разположи в „remotes/%s“)"
 
-#: builtin/remote.c:914
+#: builtin/remote.c:917
 msgid " tracked"
 msgstr " следен"
 
-#: builtin/remote.c:916
+#: builtin/remote.c:919
 msgid " stale (use 'git remote prune' to remove)"
 msgstr " стар (изтрийте чрез „git remote prune“)"
 
-#: builtin/remote.c:918
+#: builtin/remote.c:921
 msgid " ???"
 msgstr " неясно състояние"
 
 # CHECK
-#: builtin/remote.c:959
+#: builtin/remote.c:962
 #, c-format
 msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch"
 msgstr ""
 "неправилен клон за сливане „%s“.  Невъзможно е да пребазирате върху повече "
 "от 1 клон"
 
-#: builtin/remote.c:967
+#: builtin/remote.c:971
 #, c-format
 msgid "rebases interactively onto remote %s"
 msgstr "интерактивно пребазиране върху отдалечения клон „%s“"
 
-#: builtin/remote.c:968
+#: builtin/remote.c:973
+#, c-format
+msgid "rebases interactively (with merges) onto remote %s"
+msgstr "интерактивно пребазиране (със сливания) върху отдалечения клон „%s“"
+
+#: builtin/remote.c:976
 #, c-format
 msgid "rebases onto remote %s"
 msgstr "пребазиране върху отдалечения клон „%s“"
 
-#: builtin/remote.c:971
+#: builtin/remote.c:980
 #, c-format
 msgid " merges with remote %s"
 msgstr " сливане с отдалечения клон „%s“"
 
-#: builtin/remote.c:974
+#: builtin/remote.c:983
 #, c-format
 msgid "merges with remote %s"
 msgstr "сливане с отдалечения клон „%s“"
 
-#: builtin/remote.c:977
+#: builtin/remote.c:986
 #, c-format
 msgid "%-*s    and with remote %s\n"
 msgstr "%-*s    и с отдалечения клон „%s“\n"
 
-#: builtin/remote.c:1020
+#: builtin/remote.c:1029
 msgid "create"
 msgstr "създаден"
 
-#: builtin/remote.c:1023
+#: builtin/remote.c:1032
 msgid "delete"
 msgstr "изтрит"
 
-#: builtin/remote.c:1027
+#: builtin/remote.c:1036
 msgid "up to date"
 msgstr "актуален"
 
-#: builtin/remote.c:1030
+#: builtin/remote.c:1039
 msgid "fast-forwardable"
 msgstr "може да се превърти"
 
-#: builtin/remote.c:1033
+#: builtin/remote.c:1042
 msgid "local out of date"
 msgstr "локалният е изостанал"
 
-#: builtin/remote.c:1040
+#: builtin/remote.c:1049
 #, c-format
 msgid "    %-*s forces to %-*s (%s)"
 msgstr "    %-*s принудително изтласква към %-*s (%s)"
 
-#: builtin/remote.c:1043
+#: builtin/remote.c:1052
 #, c-format
 msgid "    %-*s pushes to %-*s (%s)"
 msgstr "    %-*s изтласква към %-*s (%s)"
 
-#: builtin/remote.c:1047
+#: builtin/remote.c:1056
 #, c-format
 msgid "    %-*s forces to %s"
 msgstr "    %-*s принудително изтласква към %s"
 
-#: builtin/remote.c:1050
+#: builtin/remote.c:1059
 #, c-format
 msgid "    %-*s pushes to %s"
 msgstr "    %-*s изтласква към %s"
 
-#: builtin/remote.c:1118
+#: builtin/remote.c:1127
 msgid "do not query remotes"
 msgstr "без заявки към отдалечените хранилища"
 
-#: builtin/remote.c:1145
+#: builtin/remote.c:1154
 #, c-format
 msgid "* remote %s"
 msgstr "● отдалечено хранилище „%s“"
 
-#: builtin/remote.c:1146
+#: builtin/remote.c:1155
 #, c-format
 msgid "  Fetch URL: %s"
 msgstr "  Адрес за доставяне: %s"
 
-#: builtin/remote.c:1147 builtin/remote.c:1163 builtin/remote.c:1302
+#: builtin/remote.c:1156 builtin/remote.c:1172 builtin/remote.c:1311
 msgid "(no URL)"
 msgstr "(без адрес)"
 
@@ -13010,25 +13530,25 @@ msgstr "(без адрес)"
 #. with the one in " Fetch URL: %s"
 #. translation.
 #.
-#: builtin/remote.c:1161 builtin/remote.c:1163
+#: builtin/remote.c:1170 builtin/remote.c:1172
 #, c-format
 msgid "  Push  URL: %s"
 msgstr "  Адрес за изтласкване: %s"
 
-#: builtin/remote.c:1165 builtin/remote.c:1167 builtin/remote.c:1169
+#: builtin/remote.c:1174 builtin/remote.c:1176 builtin/remote.c:1178
 #, c-format
 msgid "  HEAD branch: %s"
 msgstr "  клон сочен от HEAD: %s"
 
-#: builtin/remote.c:1165
+#: builtin/remote.c:1174
 msgid "(not queried)"
 msgstr "(без проверка)"
 
-#: builtin/remote.c:1167
+#: builtin/remote.c:1176
 msgid "(unknown)"
 msgstr "(непознат)"
 
-#: builtin/remote.c:1171
+#: builtin/remote.c:1180
 #, c-format
 msgid ""
 "  HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
@@ -13037,161 +13557,161 @@ msgstr ""
 "хранилище\n"
 "  не е еднозначен и е някой от следните):\n"
 
-#: builtin/remote.c:1183
+#: builtin/remote.c:1192
 #, c-format
 msgid "  Remote branch:%s"
 msgid_plural "  Remote branches:%s"
 msgstr[0] "  Отдалечен клон:%s"
 msgstr[1] "  Отдалечени клони:%s"
 
-#: builtin/remote.c:1186 builtin/remote.c:1212
+#: builtin/remote.c:1195 builtin/remote.c:1221
 msgid " (status not queried)"
 msgstr " (състоянието не бе проверено)"
 
-#: builtin/remote.c:1195
+#: builtin/remote.c:1204
 msgid "  Local branch configured for 'git pull':"
 msgid_plural "  Local branches configured for 'git pull':"
 msgstr[0] "  Локален клон настроен за издърпване чрез „git pull“:"
 msgstr[1] "  Локални клони настроени за издърпване чрез „git pull“:"
 
-#: builtin/remote.c:1203
+#: builtin/remote.c:1212
 msgid "  Local refs will be mirrored by 'git push'"
 msgstr "  Локалните указатели ще бъдат пренесени чрез „ push“"
 
-#: builtin/remote.c:1209
+#: builtin/remote.c:1218
 #, c-format
 msgid "  Local ref configured for 'git push'%s:"
 msgid_plural "  Local refs configured for 'git push'%s:"
 msgstr[0] "  Локалният указател, настроен за „git push“%s:"
 msgstr[1] "  Локалните указатели, настроени за „git push“%s:"
 
-#: builtin/remote.c:1230
+#: builtin/remote.c:1239
 msgid "set refs/remotes/<name>/HEAD according to remote"
 msgstr "задаване на refs/remotes/ИМЕ/HEAD според отдалеченото хранилище"
 
-#: builtin/remote.c:1232
+#: builtin/remote.c:1241
 msgid "delete refs/remotes/<name>/HEAD"
 msgstr "изтриване на refs/remotes/ИМЕ/HEAD"
 
-#: builtin/remote.c:1247
+#: builtin/remote.c:1256
 msgid "Cannot determine remote HEAD"
 msgstr "Не може да се установи отдалеченият връх"
 
-#: builtin/remote.c:1249
+#: builtin/remote.c:1258
 msgid "Multiple remote HEAD branches. Please choose one explicitly with:"
 msgstr ""
 "Множество клони с върхове.  Изберете изрично някой от тях чрез командата:"
 
-#: builtin/remote.c:1259
+#: builtin/remote.c:1268
 #, c-format
 msgid "Could not delete %s"
 msgstr "„%s“ не може да бъде изтрит"
 
-#: builtin/remote.c:1267
+#: builtin/remote.c:1276
 #, c-format
 msgid "Not a valid ref: %s"
 msgstr "Неправилен указател: %s"
 
-#: builtin/remote.c:1269
+#: builtin/remote.c:1278
 #, c-format
 msgid "Could not setup %s"
 msgstr "„%s“ не може да се настрои"
 
-#: builtin/remote.c:1287
+#: builtin/remote.c:1296
 #, c-format
 msgid " %s will become dangling!"
 msgstr "„%s“ ще се превърне в обект извън клоните!"
 
-#: builtin/remote.c:1288
+#: builtin/remote.c:1297
 #, c-format
 msgid " %s has become dangling!"
 msgstr "„%s“ се превърна в обект извън клоните!"
 
-#: builtin/remote.c:1298
+#: builtin/remote.c:1307
 #, c-format
 msgid "Pruning %s"
 msgstr "Окастряне на „%s“"
 
-#: builtin/remote.c:1299
+#: builtin/remote.c:1308
 #, c-format
 msgid "URL: %s"
 msgstr "адрес: %s"
 
-#: builtin/remote.c:1315
+#: builtin/remote.c:1324
 #, c-format
 msgid " * [would prune] %s"
 msgstr " ● [ще бъде окастрено] %s"
 
-#: builtin/remote.c:1318
+#: builtin/remote.c:1327
 #, c-format
 msgid " * [pruned] %s"
 msgstr " ● [окастрено] %s"
 
-#: builtin/remote.c:1363
+#: builtin/remote.c:1372
 msgid "prune remotes after fetching"
 msgstr "окастряне на огледалата на отдалечените хранилища след доставяне"
 
-#: builtin/remote.c:1426 builtin/remote.c:1480 builtin/remote.c:1548
+#: builtin/remote.c:1435 builtin/remote.c:1489 builtin/remote.c:1557
 #, c-format
 msgid "No such remote '%s'"
 msgstr "Няма отдалечено хранилище на име „%s“"
 
-#: builtin/remote.c:1442
+#: builtin/remote.c:1451
 msgid "add branch"
 msgstr "добавяне на клон"
 
-#: builtin/remote.c:1449
+#: builtin/remote.c:1458
 msgid "no remote specified"
 msgstr "не е указано отдалечено хранилище"
 
-#: builtin/remote.c:1466
+#: builtin/remote.c:1475
 msgid "query push URLs rather than fetch URLs"
 msgstr "запитване към адресите за изтласкване, а не за доставяне"
 
-#: builtin/remote.c:1468
+#: builtin/remote.c:1477
 msgid "return all URLs"
 msgstr "извеждане на всички адреси"
 
-#: builtin/remote.c:1496
+#: builtin/remote.c:1505
 #, c-format
 msgid "no URLs configured for remote '%s'"
 msgstr "не е зададен адрес за отдалеченото хранилище „%s“"
 
-#: builtin/remote.c:1522
+#: builtin/remote.c:1531
 msgid "manipulate push URLs"
 msgstr "промяна на адресите за изтласкване"
 
-#: builtin/remote.c:1524
+#: builtin/remote.c:1533
 msgid "add URL"
 msgstr "добавяне на адреси"
 
-#: builtin/remote.c:1526
+#: builtin/remote.c:1535
 msgid "delete URLs"
 msgstr "изтриване на адреси"
 
-#: builtin/remote.c:1533
+#: builtin/remote.c:1542
 msgid "--add --delete doesn't make sense"
 msgstr "опциите „--add“ и „--delete“ са несъвместими"
 
-#: builtin/remote.c:1572
+#: builtin/remote.c:1581
 #, c-format
 msgid "Invalid old URL pattern: %s"
 msgstr "Неправилен (стар) формат за адрес: %s"
 
-#: builtin/remote.c:1580
+#: builtin/remote.c:1589
 #, c-format
 msgid "No such URL found: %s"
 msgstr "Такъв адрес не е открит: %s"
 
-#: builtin/remote.c:1582
+#: builtin/remote.c:1591
 msgid "Will not delete all non-push URLs"
 msgstr "Никой от адресите, които не са за изтласкване, няма да се изтрие"
 
-#: builtin/remote.c:1598
+#: builtin/remote.c:1607
 msgid "be verbose; must be placed before a subcommand"
 msgstr "повече подробности.  Поставя се пред подкоманда"
 
-#: builtin/remote.c:1629
+#: builtin/remote.c:1638
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr "Непозната подкоманда: %s"
@@ -13209,136 +13729,144 @@ msgstr ""
 "Ползвайте опцията --no-write-bitmap-index или изключете настройката\n"
 "„pack.writebitmaps“."
 
-#: builtin/repack.c:170
+#: builtin/repack.c:180
 msgid "pack everything in a single pack"
 msgstr "пакетиране на всичко в пакет"
 
-#: builtin/repack.c:172
+#: builtin/repack.c:182
 msgid "same as -a, and turn unreachable objects loose"
 msgstr ""
 "същото като опцията „-a“.  Допълнително — недостижимите обекти да станат "
 "непакетирани"
 
-#: builtin/repack.c:175
+#: builtin/repack.c:185
 msgid "remove redundant packs, and run git-prune-packed"
 msgstr ""
 "премахване на ненужните пакетирани файлове и изпълнение на командата „git-"
 "prune-packed“"
 
-#: builtin/repack.c:177
+#: builtin/repack.c:187
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr "подаване на опцията „--no-reuse-delta“ на командата „git-pack-objects“"
 
-#: builtin/repack.c:179
+#: builtin/repack.c:189
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr ""
 "подаване на опцията „--no-reuse-object“ на командата „git-pack-objects“"
 
-#: builtin/repack.c:181
+#: builtin/repack.c:191
 msgid "do not run git-update-server-info"
 msgstr "без изпълнение на командата „git-update-server-info“"
 
-#: builtin/repack.c:184
+#: builtin/repack.c:194
 msgid "pass --local to git-pack-objects"
 msgstr "подаване на опцията „--local“ на командата „git-pack-objects“"
 
-#: builtin/repack.c:186
+#: builtin/repack.c:196
 msgid "write bitmap index"
 msgstr "създаване и записване на индекси на база битови маски"
 
-#: builtin/repack.c:187
+#: builtin/repack.c:197
 msgid "approxidate"
 msgstr "евристична дата"
 
-#: builtin/repack.c:188
+#: builtin/repack.c:198
 msgid "with -A, do not loosen objects older than this"
 msgstr ""
 "при комбинирането с опцията „-A“ — без разпакетиране на обектите по стари от "
 "това"
 
-#: builtin/repack.c:190
+#: builtin/repack.c:200
 msgid "with -a, repack unreachable objects"
 msgstr "с „-a“ — препакетиране на недостижимите обекти"
 
-#: builtin/repack.c:192
+#: builtin/repack.c:202
 msgid "size of the window used for delta compression"
 msgstr "размер на прозореца за делта компресията"
 
-#: builtin/repack.c:193 builtin/repack.c:199
+#: builtin/repack.c:203 builtin/repack.c:209
 msgid "bytes"
 msgstr "байтове"
 
-#: builtin/repack.c:194
+#: builtin/repack.c:204
 msgid "same as the above, but limit memory size instead of entries count"
 msgstr ""
 "същото като горната опция, но ограничението да е по размер на паметта, а не "
 "по броя на обектите"
 
-#: builtin/repack.c:196
+#: builtin/repack.c:206
 msgid "limits the maximum delta depth"
 msgstr "ограничаване на максималната дълбочина на делтата"
 
-#: builtin/repack.c:198
+#: builtin/repack.c:208
 msgid "limits the maximum number of threads"
 msgstr "ограничаване на максималния брой нишки"
 
-#: builtin/repack.c:200
+#: builtin/repack.c:210
 msgid "maximum size of each packfile"
 msgstr "максимален размер на всеки пакет"
 
-#: builtin/repack.c:202
+#: builtin/repack.c:212
 msgid "repack objects in packs marked with .keep"
 msgstr "препакетиране на обектите в пакети белязани с „.keep“"
 
-#: builtin/repack.c:212
+#: builtin/repack.c:214
+msgid "do not repack this pack"
+msgstr "без препакетиране на този пакет"
+
+#: builtin/repack.c:224
 msgid "cannot delete packs in a precious-objects repo"
 msgstr "пакетите в хранилище с важни обекти не може да се трият"
 
-#: builtin/repack.c:216
+#: builtin/repack.c:228
 msgid "--keep-unreachable and -A are incompatible"
 msgstr "Опциите „--keep-unreachable“ и „-A“ са несъвместими"
 
-#: builtin/repack.c:410 builtin/worktree.c:148
+#: builtin/repack.c:425 builtin/worktree.c:139
 #, c-format
 msgid "failed to remove '%s'"
 msgstr "директорията „%s“ не може да бъде изтрита"
 
-#: builtin/replace.c:20
+#: builtin/replace.c:22
 msgid "git replace [-f] <object> <replacement>"
 msgstr "git replace [-f] ОБЕКТ ЗАМЯНА"
 
-#: builtin/replace.c:21
+#: builtin/replace.c:23
 msgid "git replace [-f] --edit <object>"
 msgstr "git replace [-f] --edit ОБЕКТ"
 
-#: builtin/replace.c:22
+#: builtin/replace.c:24
 msgid "git replace [-f] --graft <commit> [<parent>...]"
 msgstr "git replace [-f] --graft ПОДАВАНЕ [РОДИТЕЛ…]"
 
-#: builtin/replace.c:23
+#: builtin/replace.c:25
+msgid "git replace [-f] --convert-graft-file"
+msgstr "git replace [-f] --convert-graft-file"
+
+#: builtin/replace.c:26
 msgid "git replace -d <object>..."
 msgstr "git replace -d ОБЕКТ…"
 
-#: builtin/replace.c:24
+#: builtin/replace.c:27
 msgid "git replace [--format=<format>] [-l [<pattern>]]"
 msgstr "git replace [--format=ФОРМАТ] [-l [ШАБЛОН]]"
 
-#: builtin/replace.c:331 builtin/replace.c:369 builtin/replace.c:397
+#: builtin/replace.c:371 builtin/replace.c:415 builtin/replace.c:445
 #, c-format
 msgid "Not a valid object name: '%s'"
 msgstr "Неправилно име на обект: „%s“"
 
-#: builtin/replace.c:361
+#: builtin/replace.c:407
 #, c-format
 msgid "bad mergetag in commit '%s'"
 msgstr "етикетът при сливане в подаването „%s“ e неправилен"
 
-#: builtin/replace.c:363
+#: builtin/replace.c:409
 #, c-format
 msgid "malformed mergetag in commit '%s'"
 msgstr "етикетът при сливане в подаването „%s“ e неправилен"
 
-#: builtin/replace.c:374
+#: builtin/replace.c:421
 #, c-format
 msgid ""
 "original commit '%s' contains mergetag '%s' that is discarded; use --edit "
@@ -13347,45 +13875,58 @@ msgstr ""
 "Първоначалното подаване „%s“ съдържа етикета при сливане „%s“, който е "
 "изхвърлен, затова използвайте опцията „--edit“, а не „--graft“."
 
-#: builtin/replace.c:407
+#: builtin/replace.c:460
 #, c-format
 msgid "the original commit '%s' has a gpg signature."
 msgstr "Първоначалното подаване „%s“ е с подпис на GPG."
 
-#: builtin/replace.c:408
+#: builtin/replace.c:461
 msgid "the signature will be removed in the replacement commit!"
 msgstr "Подписът ще бъде премахнат в заменящото подаване!"
 
-#: builtin/replace.c:414
+#: builtin/replace.c:471
 #, c-format
 msgid "could not write replacement commit for: '%s'"
 msgstr "заменящото подаване за „%s“ не може да бъде записано"
 
-#: builtin/replace.c:438
+#: builtin/replace.c:514
+#, c-format
+msgid ""
+"could not convert the following graft(s):\n"
+"%s"
+msgstr ""
+"следните присадки не могат да се преобразуват:\n"
+"%s"
+
+#: builtin/replace.c:535
 msgid "list replace refs"
 msgstr "извеждане на списъка с указателите за замяна"
 
-#: builtin/replace.c:439
+#: builtin/replace.c:536
 msgid "delete replace refs"
 msgstr "изтриване на указателите за замяна"
 
-#: builtin/replace.c:440
+#: builtin/replace.c:537
 msgid "edit existing object"
 msgstr "редактиране на съществуващ обект"
 
-#: builtin/replace.c:441
+#: builtin/replace.c:538
 msgid "change a commit's parents"
 msgstr "смяна на родителите на подаване"
 
-#: builtin/replace.c:442
+#: builtin/replace.c:539
+msgid "convert existing graft file"
+msgstr "преобразуване на файла за присадките"
+
+#: builtin/replace.c:540
 msgid "replace the ref if it exists"
 msgstr "замяна на указателя, ако съществува"
 
-#: builtin/replace.c:444
+#: builtin/replace.c:542
 msgid "do not pretty-print contents for --edit"
 msgstr "без форматирано извеждане на съдържанието — за опцията „--edit“"
 
-#: builtin/replace.c:445
+#: builtin/replace.c:543
 msgid "use this format"
 msgstr "използване на този ФОРМАТ"
 
@@ -13548,23 +14089,23 @@ msgstr "командата „rev-list“ не поддържа извеждан
 msgid "cannot combine --use-bitmap-index with object filtering"
 msgstr "опцията „--use-bitmap-index“ е несъвместима с филтриране на обектите"
 
-#: builtin/rev-parse.c:402
+#: builtin/rev-parse.c:406
 msgid "git rev-parse --parseopt [<options>] -- [<args>...]"
 msgstr "git rev-parse --parseopt [ОПЦИЯ…] -- [АРГУМЕНТ…]"
 
-#: builtin/rev-parse.c:407
+#: builtin/rev-parse.c:411
 msgid "keep the `--` passed as an arg"
 msgstr "зададеният низ „--“ да се тълкува като аргумент"
 
-#: builtin/rev-parse.c:409
+#: builtin/rev-parse.c:413
 msgid "stop parsing after the first non-option argument"
 msgstr "спиране на анализа след първия аргумент, който не е опция"
 
-#: builtin/rev-parse.c:412
+#: builtin/rev-parse.c:416
 msgid "output in stuck long form"
 msgstr "изход в дългия формат"
 
-#: builtin/rev-parse.c:545
+#: builtin/rev-parse.c:549
 msgid ""
 "git rev-parse --parseopt [<options>] -- [<args>...]\n"
 "   or: git rev-parse --sq-quote [<arg>...]\n"
@@ -13709,44 +14250,44 @@ msgid_plural "the following files have local modifications:"
 msgstr[0] "следният файл е с променено съдържание"
 msgstr[1] "следните файлове са с променено съдържание"
 
-#: builtin/rm.c:243
+#: builtin/rm.c:241
 msgid "do not list removed files"
 msgstr "да не се извеждат изтритите файлове"
 
-#: builtin/rm.c:244
+#: builtin/rm.c:242
 msgid "only remove from the index"
 msgstr "изтриване само от индекса"
 
-#: builtin/rm.c:245
+#: builtin/rm.c:243
 msgid "override the up-to-date check"
 msgstr "въпреки проверката за актуалността на съдържанието"
 
-#: builtin/rm.c:246
+#: builtin/rm.c:244
 msgid "allow recursive removal"
 msgstr "рекурсивно изтриване"
 
-#: builtin/rm.c:248
+#: builtin/rm.c:246
 msgid "exit with a zero status even if nothing matched"
 msgstr ""
 "изходният код да е 0, дори ако никой файл нe e напаснал с шаблона за "
 "изтриване"
 
-#: builtin/rm.c:307
+#: builtin/rm.c:306
 #, c-format
 msgid "not removing '%s' recursively without -r"
 msgstr "без използването на опцията „-r“ „%s“ няма да се изтрие рекурсивно"
 
-#: builtin/rm.c:346
+#: builtin/rm.c:345
 #, c-format
 msgid "git rm: unable to remove %s"
 msgstr "git rm: „%s“ не може да се изтрие"
 
-#: builtin/rm.c:369
+#: builtin/rm.c:368
 #, c-format
 msgid "could not remove '%s'"
 msgstr "„%s“ не може да бъде изтрит"
 
-#: builtin/send-pack.c:19
+#: builtin/send-pack.c:20
 msgid ""
 "git send-pack [--all | --mirror] [--dry-run] [--force] [--receive-pack=<git-"
 "receive-pack>] [--verbose] [--thin] [--atomic] [<host>:]<directory> "
@@ -13757,52 +14298,72 @@ msgstr ""
 "pack=ПАКЕТ] [--verbose] [--thin] [--atomic] [ХОСТ:]ДИРЕКТОРИЯ [УКАЗАТЕЛ…]\n"
 "  опцията „--all“ и изричното посочване на УКАЗАТЕЛ са взаимно несъвместими."
 
-#: builtin/send-pack.c:162
+#: builtin/send-pack.c:163
 msgid "remote name"
 msgstr "име на отдалечено хранилище"
 
-#: builtin/send-pack.c:176
+#: builtin/send-pack.c:177
 msgid "use stateless RPC protocol"
 msgstr "използване на протокол без запазване на състоянието за RPC"
 
-#: builtin/send-pack.c:177
+#: builtin/send-pack.c:178
 msgid "read refs from stdin"
 msgstr "четене на указателите от стандартния вход"
 
-#: builtin/send-pack.c:178
+#: builtin/send-pack.c:179
 msgid "print status from remote helper"
 msgstr "извеждане на състоянието от отдалечената помощна функция"
 
+#: builtin/serve.c:7
+msgid "git serve [<options>]"
+msgstr "git serve [ОПЦИЯ…]"
+
+#: builtin/serve.c:17 builtin/upload-pack.c:23
+msgid "quit after a single request/response exchange"
+msgstr "изход след първоначалната размяна на заявка и отговор"
+
+#: builtin/serve.c:19
+msgid "exit immediately after advertising capabilities"
+msgstr "изход след първоначалната обява на възможностите"
+
 #: builtin/shortlog.c:14
-msgid "git shortlog [<options>] [<revision-range>] [[--] [<path>...]]"
+msgid "git shortlog [<options>] [<revision-range>] [[--] <path>...]"
 msgstr "git shortlog [ОПЦИЯ…] [ДИАПАЗОН_НА_ВЕРСИИТЕ] [[--] [ПЪТ…]]"
 
-#: builtin/shortlog.c:263
+#: builtin/shortlog.c:15
+msgid "git log --pretty=short | git shortlog [<options>]"
+msgstr "git log --pretty=short | git shortlog [ОПЦИЯ…]"
+
+#: builtin/shortlog.c:264
 msgid "Group by committer rather than author"
 msgstr "Групиране по подаващ, а не по автор"
 
-#: builtin/shortlog.c:265
+#: builtin/shortlog.c:266
 msgid "sort output according to the number of commits per author"
 msgstr "подредба на подаванията по броя подавания от автор"
 
-#: builtin/shortlog.c:267
+#: builtin/shortlog.c:268
 msgid "Suppress commit descriptions, only provides commit count"
 msgstr "Без описания на подаванията — да се показва само броя подавания"
 
-#: builtin/shortlog.c:269
+#: builtin/shortlog.c:270
 msgid "Show the email address of each author"
 msgstr "Извеждане на адреса на е-поща за всеки автор"
 
-#: builtin/shortlog.c:270
+#: builtin/shortlog.c:271
 msgid "w[,i1[,i2]]"
 msgstr "ШИРОЧИНА[,ОТСТЪП_1[,ОТСТЪП_2]]"
 
-#: builtin/shortlog.c:271
+#: builtin/shortlog.c:272
 msgid "Linewrap output"
 msgstr ""
 "Пренасяне на редовете до тази обща ШИРОЧИНА (76), с ОТСТЪП_1 (6) за първия "
 "ред и ОТСТЪП_2 (9) за останалите"
 
+#: builtin/shortlog.c:298
+msgid "too many arguments given outside repository"
+msgstr "прекалено много аргументи извън хранилище"
+
 #: builtin/show-branch.c:12
 msgid ""
 "git show-branch [-a | --all] [-r | --remotes] [--topo-order | --date-order]\n"
@@ -14005,40 +14566,40 @@ msgstr "пропускане на всички редове, които запо
 msgid "prepend comment character and space to each line"
 msgstr "добавяне на „# “ в началото на всеки ред"
 
-#: builtin/submodule--helper.c:35 builtin/submodule--helper.c:1669
+#: builtin/submodule--helper.c:37 builtin/submodule--helper.c:1688
 #, c-format
 msgid "No such ref: %s"
 msgstr "Такъв указател няма: %s"
 
-#: builtin/submodule--helper.c:42 builtin/submodule--helper.c:1678
+#: builtin/submodule--helper.c:44 builtin/submodule--helper.c:1697
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr "Очаква се пълно име на указател, а не „%s“"
 
-#: builtin/submodule--helper.c:59
+#: builtin/submodule--helper.c:61
 msgid "submodule--helper print-default-remote takes no arguments"
 msgstr ""
 "командата „print-default-remote“ на „submodule--helper“ не приема аргументи"
 
-#: builtin/submodule--helper.c:96
+#: builtin/submodule--helper.c:98
 #, c-format
 msgid "cannot strip one component off url '%s'"
 msgstr "не може да се махне компонент от адреса „%s“"
 
-#: builtin/submodule--helper.c:404 builtin/submodule--helper.c:1198
+#: builtin/submodule--helper.c:406 builtin/submodule--helper.c:1211
 msgid "alternative anchor for relative paths"
 msgstr "директория за определянето на относителните пътища"
 
-#: builtin/submodule--helper.c:409
+#: builtin/submodule--helper.c:411
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper list [--prefix=ПЪТ] [ПЪТ…]"
 
-#: builtin/submodule--helper.c:460 builtin/submodule--helper.c:483
+#: builtin/submodule--helper.c:462 builtin/submodule--helper.c:485
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr "Във файла „.gitmodules“ не е открит адрес за пътя към подмодул „%s“"
 
-#: builtin/submodule--helper.c:498
+#: builtin/submodule--helper.c:500
 #, c-format
 msgid ""
 "could not lookup configuration '%s'. Assuming this repository is its own "
@@ -14047,55 +14608,55 @@ msgstr ""
 "настройката „%s“ липсва.  Приема се, че това хранилище е правилният източник "
 "за себе си."
 
-#: builtin/submodule--helper.c:509
+#: builtin/submodule--helper.c:511
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr "Неуспешно регистриране на адрес за пътя към подмодул „%s“"
 
-#: builtin/submodule--helper.c:513
+#: builtin/submodule--helper.c:515
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr "Регистриран е подмодул „%s“ (%s) за пътя към подмодул „%s“\n"
 
-#: builtin/submodule--helper.c:523
+#: builtin/submodule--helper.c:525
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
 msgstr "ПРЕДУПРЕЖДЕНИЕ: препоръчва се режим на обновяване за подмодула „%s“\n"
 
-#: builtin/submodule--helper.c:530
+#: builtin/submodule--helper.c:532
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
 msgstr ""
 "Неуспешно регистриране на режима на обновяване за пътя към подмодул „%s“"
 
-#: builtin/submodule--helper.c:552
+#: builtin/submodule--helper.c:554
 msgid "Suppress output for initializing a submodule"
 msgstr "Без извеждане на информация при инициализирането на подмодул"
 
-#: builtin/submodule--helper.c:557
+#: builtin/submodule--helper.c:559
 msgid "git submodule--helper init [<path>]"
 msgstr "git submodule--helper name [ПЪТ]"
 
-#: builtin/submodule--helper.c:625 builtin/submodule--helper.c:747
+#: builtin/submodule--helper.c:631 builtin/submodule--helper.c:757
 #, c-format
 msgid "no submodule mapping found in .gitmodules for path '%s'"
 msgstr "Във файла „.gitmodules“ липсва информация за пътя „%s“"
 
-#: builtin/submodule--helper.c:660
+#: builtin/submodule--helper.c:670
 #, c-format
 msgid "could not resolve HEAD ref inside the submodule '%s'"
 msgstr "указателят сочен от „HEAD“ в подмодула „%s“ не може да бъде открит"
 
-#: builtin/submodule--helper.c:687 builtin/submodule--helper.c:856
+#: builtin/submodule--helper.c:697 builtin/submodule--helper.c:866
 #, c-format
 msgid "failed to recurse into submodule '%s'"
 msgstr "неуспешно рекурсивно обхождане на подмодула „%s“"
 
-#: builtin/submodule--helper.c:711 builtin/submodule--helper.c:1021
+#: builtin/submodule--helper.c:721 builtin/submodule--helper.c:1031
 msgid "Suppress submodule status output"
 msgstr "Заглушаване на изхода за състоянието на подмодула"
 
-#: builtin/submodule--helper.c:712
+#: builtin/submodule--helper.c:722
 msgid ""
 "Use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
@@ -14103,51 +14664,51 @@ msgstr ""
 "Използване на подаването указано в индекса, а не това от указателя „HEAD“ на "
 "подмодула"
 
-#: builtin/submodule--helper.c:713
+#: builtin/submodule--helper.c:723
 msgid "recurse into nested submodules"
 msgstr "рекурсивно обхождане на подмодулите"
 
-#: builtin/submodule--helper.c:718
+#: builtin/submodule--helper.c:728
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quiet] [--cached] [--recursive] [ПЪТ…]"
 
-#: builtin/submodule--helper.c:742
+#: builtin/submodule--helper.c:752
 msgid "git submodule--helper name <path>"
 msgstr "git submodule--helper name ПЪТ"
 
-#: builtin/submodule--helper.c:806
+#: builtin/submodule--helper.c:816
 #, c-format
 msgid "Synchronizing submodule url for '%s'\n"
 msgstr "Синхронизиране на адреса на подмодул за „%s“\n"
 
-#: builtin/submodule--helper.c:812
+#: builtin/submodule--helper.c:822
 #, c-format
 msgid "failed to register url for submodule path '%s'"
 msgstr "неуспешно регистриране на адрес за пътя към подмодул „%s“"
 
-#: builtin/submodule--helper.c:826
+#: builtin/submodule--helper.c:836
 #, c-format
 msgid "failed to get the default remote for submodule '%s'"
 msgstr "отдалеченият адрес на подмодула „%s“ не може да бъде получен"
 
-#: builtin/submodule--helper.c:837
+#: builtin/submodule--helper.c:847
 #, c-format
 msgid "failed to update remote for submodule '%s'"
 msgstr "отдалеченият адрес на подмодула „%s“ не може да бъде променен"
 
-#: builtin/submodule--helper.c:885
+#: builtin/submodule--helper.c:895
 msgid "Suppress output of synchronizing submodule url"
 msgstr "Без извеждане на информация при синхронизирането на подмодул"
 
-#: builtin/submodule--helper.c:887
+#: builtin/submodule--helper.c:897
 msgid "Recurse into nested submodules"
 msgstr "Рекурсивно обхождане на подмодулите"
 
-#: builtin/submodule--helper.c:892
+#: builtin/submodule--helper.c:902
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
 msgstr "git submodule--helper sync [--quiet] [--recursive] [ПЪТ]"
 
-#: builtin/submodule--helper.c:946
+#: builtin/submodule--helper.c:956
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
@@ -14156,7 +14717,7 @@ msgstr ""
 "Работното дърво на подмодул „%s“ съдържа директория „.git“.\n"
 "(ако искате да ги изтриете заедно с цялата им история, използвайте „rm -rf“)"
 
-#: builtin/submodule--helper.c:958
+#: builtin/submodule--helper.c:968
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains local modifications; use '-f' to discard "
@@ -14165,83 +14726,83 @@ msgstr ""
 "Работното дърво на подмодул „%s“ съдържа локални промени.  Можете да ги "
 "отхвърлите с опцията „-f“"
 
-#: builtin/submodule--helper.c:966
+#: builtin/submodule--helper.c:976
 #, c-format
 msgid "Cleared directory '%s'\n"
 msgstr "Директорията „%s“ е изчистена\n"
 
-#: builtin/submodule--helper.c:968
+#: builtin/submodule--helper.c:978
 #, c-format
 msgid "Could not remove submodule work tree '%s'\n"
 msgstr ""
 "Директорията към работното дърво на подмодула „%s“ не може да бъде изтрита\n"
 
-#: builtin/submodule--helper.c:977
+#: builtin/submodule--helper.c:987
 #, c-format
 msgid "could not create empty submodule directory %s"
 msgstr "празната директория за подмодула „%s“ не може да бъде създадена"
 
-#: builtin/submodule--helper.c:993
+#: builtin/submodule--helper.c:1003
 #, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "Регистрацията на подмодула „%s“ (%s) за пътя „%s“ е премахната\n"
 
-#: builtin/submodule--helper.c:1022
+#: builtin/submodule--helper.c:1032
 msgid "Remove submodule working trees even if they contain local changes"
 msgstr ""
 "Изтриване на работните дървета на подмодулите, дори когато те съдържат "
 "локални промени"
 
-#: builtin/submodule--helper.c:1023
+#: builtin/submodule--helper.c:1033
 msgid "Unregister all submodules"
 msgstr "Премахване на регистрациите на всички подмодули"
 
-#: builtin/submodule--helper.c:1028
+#: builtin/submodule--helper.c:1038
 msgid ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
 msgstr "git submodule deinit [--quiet] [-f | --force] [--all | [--] [ПЪТ…]]"
 
-#: builtin/submodule--helper.c:1042
+#: builtin/submodule--helper.c:1052
 msgid "Use '--all' if you really want to deinitialize all submodules"
 msgstr "Използвайте „--all“, за да премахнете всички подмодули"
 
-#: builtin/submodule--helper.c:1133 builtin/submodule--helper.c:1136
+#: builtin/submodule--helper.c:1145 builtin/submodule--helper.c:1148
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
 msgstr "към подмодула „%s“ не може да се добави алтернативен източник: %s"
 
-#: builtin/submodule--helper.c:1172
+#: builtin/submodule--helper.c:1184
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
 msgstr ""
 "Непозната стойност „%s“ за настройката „submodule.alternateErrorStrategy“"
 
-#: builtin/submodule--helper.c:1179
+#: builtin/submodule--helper.c:1191
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
 msgstr "Непозната стойност „%s“ за настройката „submodule.alternateLocation“"
 
-#: builtin/submodule--helper.c:1201
+#: builtin/submodule--helper.c:1214
 msgid "where the new submodule will be cloned to"
 msgstr "къде да се клонира новият подмодул"
 
-#: builtin/submodule--helper.c:1204
+#: builtin/submodule--helper.c:1217
 msgid "name of the new submodule"
 msgstr "име на новия подмодул"
 
-#: builtin/submodule--helper.c:1207
+#: builtin/submodule--helper.c:1220
 msgid "url where to clone the submodule from"
 msgstr "адрес, от който да се клонира новият подмодул"
 
-#: builtin/submodule--helper.c:1213
+#: builtin/submodule--helper.c:1228
 msgid "depth for shallow clones"
 msgstr "дълбочина на плитките хранилища"
 
-#: builtin/submodule--helper.c:1216 builtin/submodule--helper.c:1587
+#: builtin/submodule--helper.c:1231 builtin/submodule--helper.c:1606
 msgid "force cloning progress"
 msgstr "извеждане на напредъка на клонирането"
 
-#: builtin/submodule--helper.c:1221
+#: builtin/submodule--helper.c:1236
 msgid ""
 "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
 "<repository>] [--name <name>] [--depth <depth>] --url <url> --path <path>"
@@ -14249,85 +14810,85 @@ msgstr ""
 "git submodule--helper clone [--prefix=ПЪТ] [--quiet] [--reference ХРАНИЛИЩЕ] "
 "[--name ИМЕ] [--depth ДЪЛБОЧИНА] --url АДРЕС --path ПЪТ…"
 
-#: builtin/submodule--helper.c:1252
+#: builtin/submodule--helper.c:1267
 #, c-format
 msgid "clone of '%s' into submodule path '%s' failed"
 msgstr "Неуспешно клониране на адреса „%s“ в пътя „%s“ като подмодул"
 
-#: builtin/submodule--helper.c:1267
+#: builtin/submodule--helper.c:1281
 #, c-format
 msgid "could not get submodule directory for '%s'"
 msgstr "директорията на подмодула „%s“ не може да бъде получена"
 
-#: builtin/submodule--helper.c:1332
+#: builtin/submodule--helper.c:1347
 #, c-format
 msgid "Submodule path '%s' not initialized"
 msgstr "Пътят на подмодула „%s“ не е инициализиран"
 
-#: builtin/submodule--helper.c:1336
+#: builtin/submodule--helper.c:1351
 msgid "Maybe you want to use 'update --init'?"
 msgstr "Вероятно искахте да използвате „update --init“?"
 
-#: builtin/submodule--helper.c:1365
+#: builtin/submodule--helper.c:1380
 #, c-format
 msgid "Skipping unmerged submodule %s"
 msgstr "Прескачане на неслетия подмодул „%s“"
 
-#: builtin/submodule--helper.c:1394
+#: builtin/submodule--helper.c:1409
 #, c-format
 msgid "Skipping submodule '%s'"
 msgstr "Прескачане на подмодула „%s“"
 
-#: builtin/submodule--helper.c:1527
+#: builtin/submodule--helper.c:1544
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
 msgstr "Неуспешен опит за клониране на „%s“.  Насрочен е втори опит"
 
-#: builtin/submodule--helper.c:1538
+#: builtin/submodule--helper.c:1555
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
 msgstr ""
 "Втори неуспешен опит за клониране на „%s“.  Действието се преустановява"
 
-#: builtin/submodule--helper.c:1568 builtin/submodule--helper.c:1788
+#: builtin/submodule--helper.c:1585 builtin/submodule--helper.c:1808
 msgid "path into the working tree"
 msgstr "път към работното дърво"
 
-#: builtin/submodule--helper.c:1571
+#: builtin/submodule--helper.c:1588
 msgid "path into the working tree, across nested submodule boundaries"
 msgstr "път към работното дърво, през границите на вложените подмодули"
 
-#: builtin/submodule--helper.c:1575
+#: builtin/submodule--helper.c:1592
 msgid "rebase, merge, checkout or none"
 msgstr ""
 "„rebase“ (пребазиране), „merge“ (сливане), „checkout“ (изтегляне) или "
 "„none“ (нищо да не се прави)"
 
-#: builtin/submodule--helper.c:1579
+#: builtin/submodule--helper.c:1598
 msgid "Create a shallow clone truncated to the specified number of revisions"
 msgstr "Плитко клониране, отрязано до указания брой версии"
 
-#: builtin/submodule--helper.c:1582
+#: builtin/submodule--helper.c:1601
 msgid "parallel jobs"
 msgstr "брой паралелни процеси"
 
-#: builtin/submodule--helper.c:1584
+#: builtin/submodule--helper.c:1603
 msgid "whether the initial clone should follow the shallow recommendation"
 msgstr "дали първоначалното клониране да е плитко, както се препоръчва"
 
-#: builtin/submodule--helper.c:1585
+#: builtin/submodule--helper.c:1604
 msgid "don't print cloning progress"
 msgstr "без извеждане на напредъка на клонирането"
 
-#: builtin/submodule--helper.c:1592
+#: builtin/submodule--helper.c:1611
 msgid "git submodule--helper update_clone [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper update_clone [--prefix=ПЪТ] [ПЪТ…]"
 
-#: builtin/submodule--helper.c:1605
+#: builtin/submodule--helper.c:1624
 msgid "bad value for update parameter"
 msgstr "неправилен параметър към опцията „--update“"
 
-#: builtin/submodule--helper.c:1673
+#: builtin/submodule--helper.c:1692
 #, c-format
 msgid ""
 "Submodule (%s) branch configured to inherit branch from superproject, but "
@@ -14336,20 +14897,20 @@ msgstr ""
 "Клонът на подмодула „%s“ е настроен да наследява клона от обхващащия проект, "
 "но той не е на никой клон"
 
-#: builtin/submodule--helper.c:1789
+#: builtin/submodule--helper.c:1809
 msgid "recurse into submodules"
 msgstr "рекурсивно обхождане подмодулите"
 
-#: builtin/submodule--helper.c:1795
+#: builtin/submodule--helper.c:1815
 msgid "git submodule--helper embed-git-dir [<path>...]"
 msgstr "git submodule--helper name embed-git-dir [ПЪТ…]"
 
-#: builtin/submodule--helper.c:1857
+#: builtin/submodule--helper.c:1901
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "„%s“ не поддържа опцията „--super-prefix“"
 
-#: builtin/submodule--helper.c:1863
+#: builtin/submodule--helper.c:1907
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "„%s“ не е подкоманда на „submodule--helper“"
@@ -14417,7 +14978,7 @@ msgstr "етикетът „%s“ не е открит."
 msgid "Deleted tag '%s' (was %s)\n"
 msgstr "Изтрит е етикетът „%s“ (бе „%s“)\n"
 
-#: builtin/tag.c:131
+#: builtin/tag.c:132
 #, c-format
 msgid ""
 "\n"
@@ -14430,7 +14991,7 @@ msgstr ""
 "  %s\n"
 "Редовете, които започват с „%c“, ще бъдат пропуснати.\n"
 
-#: builtin/tag.c:135
+#: builtin/tag.c:136
 #, c-format
 msgid ""
 "\n"
@@ -14445,146 +15006,146 @@ msgstr ""
 "Редовете, които започват с „%c“, също ще бъдат включени — може да ги "
 "изтриете вие.\n"
 
-#: builtin/tag.c:189
+#: builtin/tag.c:190
 msgid "unable to sign the tag"
 msgstr "етикетът не може да бъде подписан"
 
-#: builtin/tag.c:191
+#: builtin/tag.c:192
 msgid "unable to write tag file"
 msgstr "файлът за етикета не може да бъде запазен"
 
-#: builtin/tag.c:216
+#: builtin/tag.c:217
 msgid "bad object type."
 msgstr "неправилен вид обект."
 
-#: builtin/tag.c:265
+#: builtin/tag.c:266
 msgid "no tag message?"
 msgstr "липсва съобщение за етикета"
 
-#: builtin/tag.c:272
+#: builtin/tag.c:273
 #, c-format
 msgid "The tag message has been left in %s\n"
 msgstr "Съобщението за етикета е запазено във файла „%s“\n"
 
-#: builtin/tag.c:381
+#: builtin/tag.c:382
 msgid "list tag names"
 msgstr "извеждане на имената на етикетите"
 
-#: builtin/tag.c:383
+#: builtin/tag.c:384
 msgid "print <n> lines of each tag message"
 msgstr "извеждане на този БРОЙ редове от всяко съобщение за етикет"
 
-#: builtin/tag.c:385
+#: builtin/tag.c:386
 msgid "delete tags"
 msgstr "изтриване на етикети"
 
-#: builtin/tag.c:386
+#: builtin/tag.c:387
 msgid "verify tags"
 msgstr "проверка на етикети"
 
-#: builtin/tag.c:388
+#: builtin/tag.c:389
 msgid "Tag creation options"
 msgstr "Опции при създаването на етикети"
 
-#: builtin/tag.c:390
+#: builtin/tag.c:391
 msgid "annotated tag, needs a message"
 msgstr "анотирането на етикети изисква съобщение"
 
-#: builtin/tag.c:392
+#: builtin/tag.c:393
 msgid "tag message"
 msgstr "СЪОБЩЕНИЕ за етикет"
 
-#: builtin/tag.c:394
+#: builtin/tag.c:395
 msgid "force edit of tag message"
 msgstr "принудително редактиране на съобщение за етикет"
 
-#: builtin/tag.c:395
+#: builtin/tag.c:396
 msgid "annotated and GPG-signed tag"
 msgstr "анотиран етикет с подпис по GPG"
 
-#: builtin/tag.c:399
+#: builtin/tag.c:400
 msgid "use another key to sign the tag"
 msgstr "използване на друг ключ за подписването на етикет"
 
-#: builtin/tag.c:400
+#: builtin/tag.c:401
 msgid "replace the tag if exists"
 msgstr "замяна на етикета, ако съществува"
 
-#: builtin/tag.c:401 builtin/update-ref.c:368
+#: builtin/tag.c:402 builtin/update-ref.c:368
 msgid "create a reflog"
 msgstr "създаване на журнал на указателите"
 
-#: builtin/tag.c:403
+#: builtin/tag.c:404
 msgid "Tag listing options"
 msgstr "Опции за извеждането на етикети"
 
-#: builtin/tag.c:404
+#: builtin/tag.c:405
 msgid "show tag list in columns"
 msgstr "извеждане на списъка на етикетите по колони"
 
-#: builtin/tag.c:405 builtin/tag.c:407
+#: builtin/tag.c:406 builtin/tag.c:408
 msgid "print only tags that contain the commit"
 msgstr "извеждане само на етикетите, които съдържат подаването"
 
-#: builtin/tag.c:406 builtin/tag.c:408
+#: builtin/tag.c:407 builtin/tag.c:409
 msgid "print only tags that don't contain the commit"
 msgstr "извеждане само на етикетите, които не съдържат подаването"
 
-#: builtin/tag.c:409
+#: builtin/tag.c:410
 msgid "print only tags that are merged"
 msgstr "извеждане само на слетите етикети"
 
-#: builtin/tag.c:410
+#: builtin/tag.c:411
 msgid "print only tags that are not merged"
 msgstr "извеждане само на неслетите етикети"
 
-#: builtin/tag.c:415
+#: builtin/tag.c:416
 msgid "print only tags of the object"
 msgstr "извеждане само на етикетите на ОБЕКТА"
 
-#: builtin/tag.c:459
+#: builtin/tag.c:460
 msgid "--column and -n are incompatible"
 msgstr "Опциите „--column“ и „-n“ са несъвместими"
 
-#: builtin/tag.c:481
+#: builtin/tag.c:482
 msgid "-n option is only allowed in list mode"
 msgstr "Опцията „-n“ изисква режим на списък."
 
-#: builtin/tag.c:483
+#: builtin/tag.c:484
 msgid "--contains option is only allowed in list mode"
 msgstr "Опцията „-contains“ изисква режим на списък."
 
-#: builtin/tag.c:485
+#: builtin/tag.c:486
 msgid "--no-contains option is only allowed in list mode"
 msgstr "Опцията „-contains“ изисква  режим на списък."
 
-#: builtin/tag.c:487
+#: builtin/tag.c:488
 msgid "--points-at option is only allowed in list mode"
 msgstr "Опцията „-points-at“ изисква режим на списък."
 
-#: builtin/tag.c:489
+#: builtin/tag.c:490
 msgid "--merged and --no-merged options are only allowed in list mode"
 msgstr "Опциите „--merged“ и „--no-merged“ изискват режим на списък."
 
-#: builtin/tag.c:500
+#: builtin/tag.c:501
 msgid "only one -F or -m option is allowed."
 msgstr "Опциите „-F“ и „-m“ са несъвместими."
 
-#: builtin/tag.c:519
+#: builtin/tag.c:520
 msgid "too many params"
 msgstr "Прекалено много аргументи"
 
-#: builtin/tag.c:525
+#: builtin/tag.c:526
 #, c-format
 msgid "'%s' is not a valid tag name."
 msgstr "„%s“ е неправилно име за етикет."
 
-#: builtin/tag.c:530
+#: builtin/tag.c:531
 #, c-format
 msgid "tag '%s' already exists"
 msgstr "етикетът „%s“ вече съществува"
 
-#: builtin/tag.c:561
+#: builtin/tag.c:562
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
 msgstr "Обновен етикет „%s“ (бе „%s“)\n"
@@ -14663,153 +15224,153 @@ msgstr ""
 msgid " OK"
 msgstr " Добре"
 
-#: builtin/update-index.c:579
+#: builtin/update-index.c:589
 msgid "git update-index [<options>] [--] [<file>...]"
 msgstr "git update-index [ОПЦИЯ…] [--] [ФАЙЛ…]"
 
-#: builtin/update-index.c:936
+#: builtin/update-index.c:946
 msgid "continue refresh even when index needs update"
 msgstr ""
 "продължаване с обновяването, дори когато индексът трябва да бъде обновен"
 
-#: builtin/update-index.c:939
+#: builtin/update-index.c:949
 msgid "refresh: ignore submodules"
 msgstr "подмодулите да се игнорират при обновяването"
 
-#: builtin/update-index.c:942
+#: builtin/update-index.c:952
 msgid "do not ignore new files"
 msgstr "новите файлове да не се игнорират"
 
-#: builtin/update-index.c:944
+#: builtin/update-index.c:954
 msgid "let files replace directories and vice-versa"
 msgstr "файлове да могат да заменят директории и обратно"
 
-#: builtin/update-index.c:946
+#: builtin/update-index.c:956
 msgid "notice files missing from worktree"
 msgstr "предупреждаване при липсващи в работното дърво файлове"
 
-#: builtin/update-index.c:948
+#: builtin/update-index.c:958
 msgid "refresh even if index contains unmerged entries"
 msgstr "обновяване дори и индексът да съдържа неслети обекти"
 
-#: builtin/update-index.c:951
+#: builtin/update-index.c:961
 msgid "refresh stat information"
 msgstr "обновяване на информацията от функцията „stat“"
 
-#: builtin/update-index.c:955
+#: builtin/update-index.c:965
 msgid "like --refresh, but ignore assume-unchanged setting"
 msgstr ""
 "като опцията „--refresh“, но да се проверят и обектите, които са били приети "
 "за непроменени"
 
-#: builtin/update-index.c:959
+#: builtin/update-index.c:969
 msgid "<mode>,<object>,<path>"
 msgstr "РЕЖИМ,ОБЕКТ,ПЪТ"
 
-#: builtin/update-index.c:960
+#: builtin/update-index.c:970
 msgid "add the specified entry to the index"
 msgstr "добавяне на изброените обекти към индекса"
 
-#: builtin/update-index.c:969
+#: builtin/update-index.c:979
 msgid "mark files as \"not changing\""
 msgstr "задаване на флаг, че файлът не се променя"
 
-#: builtin/update-index.c:972
+#: builtin/update-index.c:982
 msgid "clear assumed-unchanged bit"
 msgstr "изчистване на флага, че файлът не се променя"
 
-#: builtin/update-index.c:975
+#: builtin/update-index.c:985
 msgid "mark files as \"index-only\""
 msgstr "задаване на флаг, че файловете са само за индекса"
 
-#: builtin/update-index.c:978
+#: builtin/update-index.c:988
 msgid "clear skip-worktree bit"
 msgstr "изчистване на флага,  че файловете са само за индекса"
 
-#: builtin/update-index.c:981
+#: builtin/update-index.c:991
 msgid "add to index only; do not add content to object database"
 msgstr "добавяне само към индекса без добавяне към базата от данни за обектите"
 
-#: builtin/update-index.c:983
+#: builtin/update-index.c:993
 msgid "remove named paths even if present in worktree"
 msgstr "изтриване на указаните пътища, дори и да съществуват в работното дърво"
 
-#: builtin/update-index.c:985
+#: builtin/update-index.c:995
 msgid "with --stdin: input lines are terminated by null bytes"
 msgstr ""
 "при комбиниране с опцията „--stdin“ — входните редове са разделени с нулевия "
 "байт"
 
-#: builtin/update-index.c:987
+#: builtin/update-index.c:997
 msgid "read list of paths to be updated from standard input"
 msgstr "изчитане на списъка с пътища за обновяване от стандартния вход"
 
-#: builtin/update-index.c:991
+#: builtin/update-index.c:1001
 msgid "add entries from standard input to the index"
 msgstr "добавяне на елементите от стандартния вход към индекса"
 
-#: builtin/update-index.c:995
+#: builtin/update-index.c:1005
 msgid "repopulate stages #2 and #3 for the listed paths"
 msgstr ""
 "възстановяване на състоянието преди сливане или нужда от обновяване за "
 "изброените пътища"
 
-#: builtin/update-index.c:999
+#: builtin/update-index.c:1009
 msgid "only update entries that differ from HEAD"
 msgstr "добавяне само на съдържанието, което се различава от това в „HEAD“"
 
-#: builtin/update-index.c:1003
+#: builtin/update-index.c:1013
 msgid "ignore files missing from worktree"
 msgstr "игнориране на файловете, които липсват в работното дърво"
 
-#: builtin/update-index.c:1006
+#: builtin/update-index.c:1016
 msgid "report actions to standard output"
 msgstr "извеждане на действията на стандартния изход"
 
-#: builtin/update-index.c:1008
+#: builtin/update-index.c:1018
 msgid "(for porcelains) forget saved unresolved conflicts"
 msgstr ""
 "забравяне на записаната информация за неразрешени конфликти — за командите "
 "от потребителско ниво"
 
-#: builtin/update-index.c:1012
+#: builtin/update-index.c:1022
 msgid "write index in this format"
 msgstr "записване на индекса в този формат"
 
-#: builtin/update-index.c:1014
+#: builtin/update-index.c:1024
 msgid "enable or disable split index"
 msgstr "включване или изключване на разделянето на индекса"
 
-#: builtin/update-index.c:1016
+#: builtin/update-index.c:1026
 msgid "enable/disable untracked cache"
 msgstr "включване/изключване на кеша за неследените файлове"
 
-#: builtin/update-index.c:1018
+#: builtin/update-index.c:1028
 msgid "test if the filesystem supports untracked cache"
 msgstr "проверка дали файловата система поддържа кеш за неследени файлове"
 
-#: builtin/update-index.c:1020
+#: builtin/update-index.c:1030
 msgid "enable untracked cache without testing the filesystem"
 msgstr ""
 "включване на кеша за неследените файлове без проверка на файловата система"
 
-#: builtin/update-index.c:1022
+#: builtin/update-index.c:1032
 msgid "write out the index even if is not flagged as changed"
 msgstr "запис на индекса, дори да не е отбелязан като променен"
 
-#: builtin/update-index.c:1024
+#: builtin/update-index.c:1034
 msgid "enable or disable file system monitor"
 msgstr "включване или изключване на наблюдението на файловата система"
 
-#: builtin/update-index.c:1026
+#: builtin/update-index.c:1036
 msgid "mark files as fsmonitor valid"
 msgstr "отбелязване на файловете, че могат да се следят чрез файловата система"
 
-#: builtin/update-index.c:1029
+#: builtin/update-index.c:1039
 msgid "clear fsmonitor valid bit"
 msgstr "изчистване на флага за следенето чрез файловата система"
 
-#: builtin/update-index.c:1127
+#: builtin/update-index.c:1138
 msgid ""
 "core.splitIndex is set to false; remove or change it, if you really want to "
 "enable split index"
@@ -14817,7 +15378,7 @@ msgstr ""
 "Настройката „core.splitIndex“ е зададена на „false“ (лъжа).  Сменете я или я "
 "изтрийте, за да включите разделянето на индекса"
 
-#: builtin/update-index.c:1136
+#: builtin/update-index.c:1147
 msgid ""
 "core.splitIndex is set to true; remove or change it, if you really want to "
 "disable split index"
@@ -14825,7 +15386,7 @@ msgstr ""
 "Настройката „core.splitIndex“ е зададена на „true“ (истина).  Сменете я или "
 "я изтрийте, за да изключите разделянето на индекса."
 
-#: builtin/update-index.c:1147
+#: builtin/update-index.c:1158
 msgid ""
 "core.untrackedCache is set to true; remove or change it, if you really want "
 "to disable the untracked cache"
@@ -14833,11 +15394,11 @@ msgstr ""
 "Настройката „core.untrackedCache“ е зададена на „true“ (истина).  Сменете я "
 "или я изтрийте, за да изключите кеша за неследените файлове"
 
-#: builtin/update-index.c:1151
+#: builtin/update-index.c:1162
 msgid "Untracked cache disabled"
 msgstr "Кешът за неследените файлове е изключен"
 
-#: builtin/update-index.c:1159
+#: builtin/update-index.c:1170
 msgid ""
 "core.untrackedCache is set to false; remove or change it, if you really want "
 "to enable the untracked cache"
@@ -14845,29 +15406,29 @@ msgstr ""
 "Настройката „core.untrackedCache“ е зададена на „false“ (лъжа).  Сменете я "
 "или я изтрийте, за да включите кеша за неследените файлове"
 
-#: builtin/update-index.c:1163
+#: builtin/update-index.c:1174
 #, c-format
 msgid "Untracked cache enabled for '%s'"
 msgstr "Кешът за неследените файлове е включен за „%s“"
 
-#: builtin/update-index.c:1171
+#: builtin/update-index.c:1182
 msgid "core.fsmonitor is unset; set it if you really want to enable fsmonitor"
 msgstr ""
 "Настройката „core.fsmonitor“ не е зададена.  Задайте я, за да включите "
 "следенето чрез файловата система."
 
-#: builtin/update-index.c:1175
+#: builtin/update-index.c:1186
 msgid "fsmonitor enabled"
 msgstr "следенето чрез файловата система е включено"
 
-#: builtin/update-index.c:1178
+#: builtin/update-index.c:1189
 msgid ""
 "core.fsmonitor is set; remove it if you really want to disable fsmonitor"
 msgstr ""
 "Настройката „core.fsmonitor“ е зададена.  Изтрийте я, за да изключите "
 "следенето чрез файловата система."
 
-#: builtin/update-index.c:1182
+#: builtin/update-index.c:1193
 msgid "fsmonitor disabled"
 msgstr "следенето чрез файловата система е изключено"
 
@@ -14909,9 +15470,26 @@ msgstr "git update-server-info [--force]"
 msgid "update the info files from scratch"
 msgstr "обновяване на информационните файлове от нулата"
 
-#: builtin/verify-commit.c:18
-msgid "git verify-commit [-v | --verbose] <commit>..."
-msgstr "git verify-tag [-v | --verbose] ПОДАВАНЕ…"
+#: builtin/upload-pack.c:11
+msgid "git upload-pack [<options>] <dir>"
+msgstr "git upload-repack [ОПЦИЯ…] ДИРЕКТОРИЯ"
+
+#: builtin/upload-pack.c:25
+msgid "exit immediately after initial ref advertisement"
+msgstr "изход след първоначалната обява на указатели"
+
+#: builtin/upload-pack.c:27
+msgid "do not try <directory>/.git/ if <directory> is no Git directory"
+msgstr ""
+"да не се търси „ДИРЕКТОРИЯ/.git/“, ако ДИРЕКТОРИЯта не е под контрола на Git"
+
+#: builtin/upload-pack.c:29
+msgid "interrupt transfer after <n> seconds of inactivity"
+msgstr "трансферът да се преустанови след този БРОЙ секунди"
+
+#: builtin/verify-commit.c:18
+msgid "git verify-commit [-v | --verbose] <commit>..."
+msgstr "git verify-tag [-v | --verbose] ПОДАВАНЕ…"
 
 #: builtin/verify-commit.c:73
 msgid "print commit contents"
@@ -14969,23 +15547,23 @@ msgstr "git worktree remove [ОПЦИЯ…] [ДЪРВО]"
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock [ПЪТ]"
 
-#: builtin/worktree.c:60
+#: builtin/worktree.c:58
 #, c-format
 msgid "Removing worktrees/%s: not a valid directory"
 msgstr "Изтриване на „worktrees/%s“: не е правилна поддиректория"
 
-#: builtin/worktree.c:66
+#: builtin/worktree.c:64
 #, c-format
 msgid "Removing worktrees/%s: gitdir file does not exist"
 msgstr "Изтриване на „worktrees/%s“: файлът „gitdir“ не съществува"
 
-#: builtin/worktree.c:71 builtin/worktree.c:80
+#: builtin/worktree.c:69 builtin/worktree.c:78
 #, c-format
 msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
 msgstr ""
 "Изтриване на „worktrees/%s“: файлът „gitdir“ (%s) не може да бъде прочетен"
 
-#: builtin/worktree.c:90
+#: builtin/worktree.c:88
 #, c-format
 msgid ""
 "Removing worktrees/%s: short read (expected %<PRIuMAX> bytes, read "
@@ -14994,185 +15572,202 @@ msgstr ""
 "Изтриване на „worktrees/%s“: изчитането върна по-малко байтове от очакваното "
 "(очаквани: %<PRIuMAX> байта, получени: %<PRIuMAX>)"
 
-#: builtin/worktree.c:98
+#: builtin/worktree.c:96
 #, c-format
 msgid "Removing worktrees/%s: invalid gitdir file"
 msgstr "Изтриване на „worktrees/%s“: неправилен файл „gitdir“"
 
-#: builtin/worktree.c:114
+#: builtin/worktree.c:105
 #, c-format
 msgid "Removing worktrees/%s: gitdir file points to non-existent location"
 msgstr ""
 "Изтриване на „worktrees/%s“: файлът „gitdir“ сочи несъществуващо "
 "местоположение"
 
-#: builtin/worktree.c:161
+#: builtin/worktree.c:152
 msgid "report pruned working trees"
 msgstr "докладване на окастрените работни дървета"
 
-#: builtin/worktree.c:163
+#: builtin/worktree.c:154
 msgid "expire working trees older than <time>"
 msgstr "обявяване на работните копия по-стари от това ВРЕМЕ за остарели"
 
-#: builtin/worktree.c:238
+#: builtin/worktree.c:229
 #, c-format
 msgid "'%s' already exists"
 msgstr "„%s“ вече съществува"
 
-#: builtin/worktree.c:269
+#: builtin/worktree.c:260
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "директорията „%s“ не може да бъде създадена"
 
-#: builtin/worktree.c:308
+#: builtin/worktree.c:373 builtin/worktree.c:379
+#, c-format
+msgid "Preparing worktree (new branch '%s')"
+msgstr "Приготвяне на работното дърво (нов клон „%s“)"
+
+#: builtin/worktree.c:375
+#, c-format
+msgid "Preparing worktree (resetting branch '%s'; was at %s)"
+msgstr ""
+"Приготвяне на работното дърво (зануляване на клона „%s“, който сочеше към "
+"„%s“)"
+
+#: builtin/worktree.c:384
 #, c-format
-msgid "Preparing %s (identifier %s)"
-msgstr "Подготвяне на %s (идентификатор %s)"
+msgid "Preparing worktree (checking out '%s')"
+msgstr "Приготвяне на работното дърво (изтегляне на „%s“)"
 
-#: builtin/worktree.c:385
+#: builtin/worktree.c:390
+#, c-format
+msgid "Preparing worktree (detached HEAD %s)"
+msgstr "Подготвяне на работно дърво (указателят „HEAD“ не свързан: %s)"
+
+#: builtin/worktree.c:431
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr "Изтегляне КЛОНа, дори и да е изтеглен в друго работно дърво"
 
-#: builtin/worktree.c:388
+#: builtin/worktree.c:434
 msgid "create a new branch"
 msgstr "създаване на нов клон"
 
-#: builtin/worktree.c:390
+#: builtin/worktree.c:436
 msgid "create or reset a branch"
 msgstr "създаване или зануляване на клони"
 
-#: builtin/worktree.c:392
+#: builtin/worktree.c:438
 msgid "populate the new working tree"
 msgstr "подготвяне на новото работно дърво"
 
-#: builtin/worktree.c:393
+#: builtin/worktree.c:439
 msgid "keep the new working tree locked"
 msgstr "новото работно дърво да остане заключено"
 
-#: builtin/worktree.c:395
+#: builtin/worktree.c:441
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "задаване на режима на следене (виж git-branch(1))"
 
-#: builtin/worktree.c:398
+#: builtin/worktree.c:444
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr "опит за напасване на името на новия клон с това на следящ клон"
 
-#: builtin/worktree.c:406
+#: builtin/worktree.c:452
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "Опциите „-b“, „-B“ и „--detach“ са несъвместими една с друга"
 
-#: builtin/worktree.c:471
+#: builtin/worktree.c:511
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr "„--[no-]track“ може да се използва само при създаването на нов клон"
 
-#: builtin/worktree.c:571
+#: builtin/worktree.c:611
 msgid "reason for locking"
 msgstr "причина за заключване"
 
-#: builtin/worktree.c:583 builtin/worktree.c:616 builtin/worktree.c:670
-#: builtin/worktree.c:809
+#: builtin/worktree.c:623 builtin/worktree.c:656 builtin/worktree.c:710
+#: builtin/worktree.c:850
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "„%s“ не е работно дърво"
 
-#: builtin/worktree.c:585 builtin/worktree.c:618
+#: builtin/worktree.c:625 builtin/worktree.c:658
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "Основното дърво не може да се отключи или заключи"
 
-#: builtin/worktree.c:590
+#: builtin/worktree.c:630
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "„%s“ вече е заключено, защото „%s“"
 
-#: builtin/worktree.c:592
+#: builtin/worktree.c:632
 #, c-format
 msgid "'%s' is already locked"
 msgstr "„%s“ вече е заключено"
 
-#: builtin/worktree.c:620
+#: builtin/worktree.c:660
 #, c-format
 msgid "'%s' is not locked"
 msgstr "„%s“ не е заключено"
 
-#: builtin/worktree.c:645
+#: builtin/worktree.c:685
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr ""
 "не може да местите или изтривате работни дървета, в които има подмодули"
 
-#: builtin/worktree.c:672 builtin/worktree.c:811
+#: builtin/worktree.c:712 builtin/worktree.c:852
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "„%s“ е основно работно дърво"
 
-#: builtin/worktree.c:677
+#: builtin/worktree.c:717
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "името на целта не може да се определи от „%s“"
 
-#: builtin/worktree.c:683
+#: builtin/worktree.c:723
 #, c-format
 msgid "target '%s' already exists"
 msgstr "целта „%s“ вече съществува"
 
-#: builtin/worktree.c:690
+#: builtin/worktree.c:730
 #, c-format
 msgid "cannot move a locked working tree, lock reason: %s"
 msgstr ""
 "не може да преместите заключено работно дърво, причина за заключването: %s"
 
-#: builtin/worktree.c:692
+#: builtin/worktree.c:732
 msgid "cannot move a locked working tree"
 msgstr "не може да местите заключено работно дърво"
 
-#: builtin/worktree.c:695
+#: builtin/worktree.c:735
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr ""
 "проверките са неуспешни, работното дърво не може да бъде преместено: %s"
 
-#: builtin/worktree.c:700
+#: builtin/worktree.c:740
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "„%s“ не може да се премести в „%s“"
 
-#: builtin/worktree.c:748
+#: builtin/worktree.c:788
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "не може да изпълни „git status“ върху „%s“"
 
-#: builtin/worktree.c:752
+#: builtin/worktree.c:792
 #, c-format
 msgid "'%s' is dirty, use --force to delete it"
 msgstr ""
 "работното дърво „%s“ не е чисто, за принудително изтриване е необходима "
 "опцията „--force“ "
 
-#: builtin/worktree.c:757
+#: builtin/worktree.c:797
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr ""
 "командата „git status“ не може да се изпълни за „%s“, код за грешка: %d"
 
-#: builtin/worktree.c:768 builtin/worktree.c:782
+#: builtin/worktree.c:808 builtin/worktree.c:822
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "неуспешно изтриване на „%s“"
 
-#: builtin/worktree.c:794
+#: builtin/worktree.c:834
 msgid "force removing even if the worktree is dirty"
 msgstr "принудително изтриване, дори работното дърво да не е чисто"
 
-#: builtin/worktree.c:815
+#: builtin/worktree.c:856
 #, c-format
 msgid "cannot remove a locked working tree, lock reason: %s"
 msgstr ""
 "не може да изтриете заключено работно дърво, причина за заключването: %s"
 
-#: builtin/worktree.c:817
+#: builtin/worktree.c:858
 msgid "cannot remove a locked working tree"
 msgstr "не може да изтриете заключено работно дърво"
 
-#: builtin/worktree.c:820
+#: builtin/worktree.c:861
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "проверките са неуспешни, работното дърво не може да бъде изтрито: %s"
@@ -15193,27 +15788,6 @@ msgstr "запис на обект-дърво за поддиректорият
 msgid "only useful for debugging"
 msgstr "само за изчистване на грешки"
 
-#: upload-pack.c:27
-msgid "git upload-pack [<options>] <dir>"
-msgstr "git upload-repack [ОПЦИЯ…] ДИРЕКТОРИЯ"
-
-#: upload-pack.c:1070
-msgid "quit after a single request/response exchange"
-msgstr "изход след първоначалната размяна на заявка и отговор"
-
-#: upload-pack.c:1072
-msgid "exit immediately after initial ref advertisement"
-msgstr "изход след първоначалната обява на указатели"
-
-#: upload-pack.c:1074
-msgid "do not try <directory>/.git/ if <directory> is no Git directory"
-msgstr ""
-"да не се търси „ДИРЕКТОРИЯ/.git/“, ако ДИРЕКТОРИЯта не е под контрола на Git"
-
-#: upload-pack.c:1076
-msgid "interrupt transfer after <n> seconds of inactivity"
-msgstr "трансферът да се преустанови след този БРОЙ секунди"
-
 #: credential-cache--daemon.c:222
 #, c-format
 msgid ""
@@ -15233,11 +15807,12 @@ msgstr ""
 msgid "print debugging messages to stderr"
 msgstr "извеждане на съобщенията за трасиране на стандартната грешка"
 
-#: git.c:8
+#: git.c:27
 msgid ""
 "git [--version] [--help] [-C <path>] [-c <name>=<value>]\n"
 "           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
-"           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]\n"
+"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
+"bare]\n"
 "           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
 "           <command> [<args>]"
 msgstr ""
@@ -15247,7 +15822,7 @@ msgstr ""
 "           [--git-dir=ПЪТ] [--work-tree=ПЪТ] [--namespace=ИМЕ]\n"
 "           КОМАНДА [АРГ…]"
 
-#: git.c:15
+#: git.c:34
 msgid ""
 "'git help -a' and 'git help -g' list available subcommands and some\n"
 "concept guides. See 'git help <command>' or 'git help <concept>'\n"
@@ -15262,67 +15837,67 @@ msgstr ""
 "Български превод на книгата „Pro Git“ от Чакън и Страуб:\n"
 "http://i-can.eu/progit2-bg/progit.html"
 
-#: git.c:95
+#: git.c:173
 #, c-format
 msgid "no directory given for --git-dir\n"
 msgstr "опцията „--git-dir“ изисква директория\n"
 
-#: git.c:109
+#: git.c:187
 #, c-format
 msgid "no namespace given for --namespace\n"
 msgstr "опцията „--namespace“ изисква име\n"
 
-#: git.c:123
+#: git.c:201
 #, c-format
 msgid "no directory given for --work-tree\n"
 msgstr "опцията „--work-tree“ изисква директория\n"
 
-#: git.c:137
+#: git.c:215
 #, c-format
 msgid "no prefix given for --super-prefix\n"
 msgstr "опцията „--super-prefix“ изисква префикс\n"
 
-#: git.c:159
+#: git.c:237
 #, c-format
 msgid "-c expects a configuration string\n"
 msgstr "опцията „-c“ изисква низ за настройка\n"
 
-#: git.c:197
+#: git.c:275
 #, c-format
 msgid "no directory given for -C\n"
 msgstr "опцията „-C“ изисква директория\n"
 
-#: git.c:212
+#: git.c:300
 #, c-format
 msgid "unknown option: %s\n"
 msgstr "непозната опция: „%s“\n"
 
-#: git.c:687
+#: git.c:765
 #, c-format
 msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
 msgstr ""
 "неуспешно заместване на синонима „%s“ — резултатът „%s“ не е команда на git\n"
 
-#: git.c:699
+#: git.c:777
 #, c-format
 msgid "failed to run command '%s': %s\n"
 msgstr "командата „%s“ не може да се изпълни: %s\n"
 
-#: http.c:342
+#: http.c:348
 #, c-format
 msgid "negative value for http.postbuffer; defaulting to %d"
 msgstr ""
 "отрицателна стойност за „http.postbuffer“.  Ще се ползва стандартната: %d"
 
-#: http.c:363
+#: http.c:369
 msgid "Delegation control is not supported with cURL < 7.22.0"
 msgstr "Управлението на делегирането не се поддържа от cURL < 7.22.0"
 
-#: http.c:372
+#: http.c:378
 msgid "Public key pinning not supported with cURL < 7.44.0"
 msgstr "Задаването на постоянен публичен ключ не се поддържа от cURL < 7.44.0"
 
-#: http.c:1857
+#: http.c:1854
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -15333,7 +15908,7 @@ msgstr ""
 "    ● заявен адрес: %s\n"
 "    ● пренасочване: %s"
 
-#: remote-curl.c:345
+#: remote-curl.c:401
 #, c-format
 msgid "redirecting to %s"
 msgstr "пренасочване към „%s“"
@@ -15346,130 +15921,671 @@ msgstr "АРГУМЕНТИ"
 msgid "object filtering"
 msgstr "филтриране по вид на обекта"
 
-#: common-cmds.h:9
-msgid "start a working area (see also: git help tutorial)"
-msgstr "създаване на работно дърво (погледнете: „git help tutorial“)"
+#: parse-options.h:157
+msgid "expiry-date"
+msgstr "период на валидност/запазване"
 
-#: common-cmds.h:10
-msgid "work on the current change (see also: git help everyday)"
-msgstr "работа по текущата промяна (погледнете: „git help everyday“)"
+#: parse-options.h:172
+msgid "no-op (backward compatibility)"
+msgstr "нулева операция (за съвместимост с предишни версии)"
 
-#: common-cmds.h:11
-msgid "examine the history and state (see also: git help revisions)"
-msgstr "преглед на историята и състоянието (погледнете: „git help revisions“)"
+#: parse-options.h:251
+msgid "be more verbose"
+msgstr "повече подробности"
 
-#: common-cmds.h:12
-msgid "grow, mark and tweak your common history"
-msgstr "увеличаване, отбелязване и промяна на общата история"
+#: parse-options.h:253
+msgid "be more quiet"
+msgstr "по-малко подробности"
 
-#: common-cmds.h:13
-msgid "collaborate (see also: git help workflows)"
-msgstr "съвместна работа (погледнете: „git help workflows“)"
+#: parse-options.h:259
+msgid "use <n> digits to display SHA-1s"
+msgstr "да се показват такъв БРОЙ цифри от сумите по SHA1"
 
-#: common-cmds.h:17
+#: command-list.h:50
 msgid "Add file contents to the index"
 msgstr "Добавяне на съдържанието на файла към индекса"
 
-#: common-cmds.h:18
+#: command-list.h:51
+msgid "Apply a series of patches from a mailbox"
+msgstr "Прилагане на поредица от кръпки от пощенска кутия"
+
+#: command-list.h:52
+msgid "Annotate file lines with commit information"
+msgstr "Анотиране на редовете на файловете с информация за подаванията"
+
+#: command-list.h:53
+msgid "Apply a patch to files and/or to the index"
+msgstr "Прилагане на кръпка към файловете и/или индекса"
+
+#: command-list.h:54
+msgid "Import an Arch repository into Git"
+msgstr "Внасяне на хранилище на Arch в Git"
+
+#: command-list.h:55
+msgid "Create an archive of files from a named tree"
+msgstr "Създаване на архив с файловете от именовано дърво"
+
+#: command-list.h:56
 msgid "Use binary search to find the commit that introduced a bug"
 msgstr "Двоично търсене на промяната, която е причинила грешка"
 
-#: common-cmds.h:19
+#: command-list.h:57
+msgid "Show what revision and author last modified each line of a file"
+msgstr ""
+"Извеждане на версията и автора на последната промяна на всеки от редовете на "
+"файл"
+
+#: command-list.h:58
 msgid "List, create, or delete branches"
 msgstr "Извеждане, създаване, изтриване на клони"
 
-#: common-cmds.h:20
+#: command-list.h:59
+msgid "Move objects and refs by archive"
+msgstr "Местене на обекти и указатели по архиви"
+
+#: command-list.h:60
+msgid "Provide content or type and size information for repository objects"
+msgstr ""
+"Предоставяне на съдържанието или вида и размерите на обекти от хранилище"
+
+#: command-list.h:61
+msgid "Display gitattributes information"
+msgstr "Извеждане на информацията за атрибутите на git (gitattributes)"
+
+#: command-list.h:62
+msgid "Debug gitignore / exclude files"
+msgstr "Изчистване на грешки в игнорираните файлове (gitignore)"
+
+#: command-list.h:63
+msgid "Show canonical names and email addresses of contacts"
+msgstr "Извеждане на каноничните име и адрес на е-поща на контактите"
+
+#: command-list.h:64
 msgid "Switch branches or restore working tree files"
 msgstr ""
 "Преминаване към друг клон или възстановяване на файловете в работното дърво"
 
-#: common-cmds.h:21
+#: command-list.h:65
+msgid "Copy files from the index to the working tree"
+msgstr "Копиране на файлове от индекса към работното дърво"
+
+#: command-list.h:66
+msgid "Ensures that a reference name is well formed"
+msgstr "Проверка дали името на указателя е по правилата"
+
+#: command-list.h:67
+msgid "Find commits yet to be applied to upstream"
+msgstr ""
+"Откриване на подавания, които още не са подадени към отдалеченото хранилище"
+
+#: command-list.h:68
+msgid "Apply the changes introduced by some existing commits"
+msgstr "Прилагане на промените от съществуващи подавания"
+
+#: command-list.h:69
+msgid "Graphical alternative to git-commit"
+msgstr "Графична алтернатива на „git-commit“"
+
+#: command-list.h:70
+msgid "Remove untracked files from the working tree"
+msgstr "Изтриване на неследените файлове от работното дърво"
+
+#: command-list.h:71
 msgid "Clone a repository into a new directory"
 msgstr "Клониране на хранилище в нова директория"
 
-#: common-cmds.h:22
+#: command-list.h:72
+msgid "Display data in columns"
+msgstr "Извеждане по колони"
+
+#: command-list.h:73
 msgid "Record changes to the repository"
 msgstr "Подаване на промени в хранилището"
 
-#: common-cmds.h:23
+#: command-list.h:74
+msgid "Write and verify Git commit graph files"
+msgstr "Запис и проверка на файловете с гра̀фа на подаванията на Git"
+
+#: command-list.h:75
+msgid "Create a new commit object"
+msgstr "Създаване на нов обект-подаване"
+
+#: command-list.h:76
+msgid "Get and set repository or global options"
+msgstr ""
+"Извеждане и задаване на глобални настройки или настройки на определено "
+"хранилище"
+
+#: command-list.h:77
+msgid "Count unpacked number of objects and their disk consumption"
+msgstr ""
+"Преброяване на непакетираните обекти и колко дисково пространство заемат"
+
+#: command-list.h:78
+msgid "Retrieve and store user credentials"
+msgstr "Получаване и запазване на идентификацията на потребител"
+
+#: command-list.h:79
+msgid "Helper to temporarily store passwords in memory"
+msgstr "Помощна програма за временно запазване на пароли в паметта"
+
+#: command-list.h:80
+msgid "Helper to store credentials on disk"
+msgstr ""
+"Помощна програма за запазване на идентификацията на потребител на диска"
+
+#: command-list.h:81
+msgid "Export a single commit to a CVS checkout"
+msgstr "Изнасяне на едно подаване като изтегляне в CVS"
+
+#: command-list.h:82
+msgid "Salvage your data out of another SCM people love to hate"
+msgstr "Изнасяне на данните ви от друга система за контрол на версиите"
+
+#: command-list.h:83
+msgid "A CVS server emulator for Git"
+msgstr "Емулация на сървър за CVS за Git"
+
+#: command-list.h:84
+msgid "A really simple server for Git repositories"
+msgstr "Силно опростен сървър за хранилища на Git"
+
+#: command-list.h:85
+msgid "Give an object a human readable name based on an available ref"
+msgstr ""
+"Задаване на име удобно за потребителите на обект въз основа на наличен "
+"указател"
+
+#: command-list.h:86
 msgid "Show changes between commits, commit and working tree, etc"
 msgstr "Извеждане на разликите между подаванията, версиите, работното дърво"
 
-#: common-cmds.h:24
+#: command-list.h:87
+msgid "Compares files in the working tree and the index"
+msgstr "Сравняване на файлове от работното дърво и индекса"
+
+#: command-list.h:88
+msgid "Compare a tree to the working tree or index"
+msgstr "Сравняване на обекти-дърво с работното дърво и индекса"
+
+#: command-list.h:89
+msgid "Compares the content and mode of blobs found via two tree objects"
+msgstr ""
+"Сравняване на съдържанието и правата за достъп на обектите-BLOB чрез два "
+"обекта-дърво"
+
+#: command-list.h:90
+msgid "Show changes using common diff tools"
+msgstr "Извеждане на промените чрез стандартните инструменти за това"
+
+#: command-list.h:91
+msgid "Git data exporter"
+msgstr "Разглеждане на данните от Git"
+
+#: command-list.h:92
+msgid "Backend for fast Git data importers"
+msgstr "Ядро за бързо внасяне на данни в Git"
+
+#: command-list.h:93
 msgid "Download objects and refs from another repository"
 msgstr "Изтегляне на обекти и указатели от друго хранилище"
 
-#: common-cmds.h:25
+#: command-list.h:94
+msgid "Receive missing objects from another repository"
+msgstr "Получаване на липсващи обекти от друго хранилище"
+
+#: command-list.h:95
+msgid "Rewrite branches"
+msgstr "Презаписване на клони"
+
+#: command-list.h:96
+msgid "Produce a merge commit message"
+msgstr "Създаване на съобщение при подаване със сливане"
+
+#: command-list.h:97
+msgid "Output information on each ref"
+msgstr "Извеждане на информацията за всеки указател"
+
+#: command-list.h:98
+msgid "Prepare patches for e-mail submission"
+msgstr "Подготвяне на кръпки за изпращане по е-поща"
+
+#: command-list.h:99
+msgid "Verifies the connectivity and validity of the objects in the database"
+msgstr "Проверка на обектите и връзките тях в базата от данни за обектите"
+
+#: command-list.h:100
+msgid "Cleanup unnecessary files and optimize the local repository"
+msgstr "Изчистване на ненужните файлове и оптимизиране на локалното хранилище"
+
+#: command-list.h:101
+msgid "Extract commit ID from an archive created using git-archive"
+msgstr "Извеждане на идентификатора на подаване от архив на „git-archive“"
+
+#: command-list.h:102
 msgid "Print lines matching a pattern"
 msgstr "Извеждане на редовете напасващи на шаблон"
 
-#: common-cmds.h:26
+#: command-list.h:103
+msgid "A portable graphical interface to Git"
+msgstr "Графичен интерфейс към Git"
+
+#: command-list.h:104
+msgid "Compute object ID and optionally creates a blob from a file"
+msgstr ""
+"Изчисляване на идентификатор на обект и евентуално създаване на обект-BLOB "
+"от файл"
+
+#: command-list.h:105
+msgid "Display help information about Git"
+msgstr "Извеждане на помощта за Git"
+
+#: command-list.h:106
+msgid "Server side implementation of Git over HTTP"
+msgstr "Сървърна реализация на Git по HTTP"
+
+#: command-list.h:107
+msgid "Download from a remote Git repository via HTTP"
+msgstr "Изтегляне на отдалечено хранилище по HTTP"
+
+#: command-list.h:108
+msgid "Push objects over HTTP/DAV to another repository"
+msgstr "Изтласкване на обекти по HTTP/DAV към друго хранилище"
+
+#: command-list.h:109
+msgid "Send a collection of patches from stdin to an IMAP folder"
+msgstr "Изпращане на поредица от кръпки на стандартния вход към папка по IMAP"
+
+#: command-list.h:110
+msgid "Build pack index file for an existing packed archive"
+msgstr "Създаване на пакетен индекс за съществуващ пакетиран архив"
+
+#: command-list.h:111
 msgid "Create an empty Git repository or reinitialize an existing one"
 msgstr "Създаване на празно хранилище на Git или зануляване на съществуващо"
 
-#: common-cmds.h:27
+#: command-list.h:112
+msgid "Instantly browse your working repository in gitweb"
+msgstr "Незабавно разглеждане на работното ви хранилище чрез „gitweb“"
+
+#: command-list.h:113
+msgid "add or parse structured information in commit messages"
+msgstr ""
+"добавяне или обработка на структурирана информация в съобщенията при подаване"
+
+#: command-list.h:114
+msgid "The Git repository browser"
+msgstr "Разглеждане на хранилище на Git"
+
+#: command-list.h:115
 msgid "Show commit logs"
 msgstr "Извеждане на журнала с подаванията"
 
-#: common-cmds.h:28
+#: command-list.h:116
+msgid "Show information about files in the index and the working tree"
+msgstr "Извеждане на информация за файловете в индекса и работното дърво"
+
+#: command-list.h:117
+msgid "List references in a remote repository"
+msgstr "Извеждане на указателите в отдалечено хранилище"
+
+#: command-list.h:118
+msgid "List the contents of a tree object"
+msgstr "Извеждане на съдържанието на обект-дърво"
+
+#: command-list.h:119
+msgid "Extracts patch and authorship from a single e-mail message"
+msgstr "Изваждане на кръпка и авторството от е-писмо"
+
+#: command-list.h:120
+msgid "Simple UNIX mbox splitter program"
+msgstr "Проста програма за разделяне на файлове във формат UNIX mbox"
+
+#: command-list.h:121
 msgid "Join two or more development histories together"
 msgstr "Сливане на две или повече поредици/истории от промени"
 
-#: common-cmds.h:29
+#: command-list.h:122
+msgid "Find as good common ancestors as possible for a merge"
+msgstr "Откриване на най-подходящите общи предшественици за сливане"
+
+#: command-list.h:123
+msgid "Run a three-way file merge"
+msgstr "Изпълнение на тройно сливане"
+
+#: command-list.h:124
+msgid "Run a merge for files needing merging"
+msgstr "Сливане на файловете, които се нуждаят от това"
+
+#: command-list.h:125
+msgid "The standard helper program to use with git-merge-index"
+msgstr "Стандартната помощна програма за „git-merge-index“"
+
+#: command-list.h:126
+msgid "Run merge conflict resolution tools to resolve merge conflicts"
+msgstr "Изпълнение на програмите за коригиране на конфликтите при сливане"
+
+#: command-list.h:127
+msgid "Show three-way merge without touching index"
+msgstr "Извеждане на тройно сливане без промяна на индекса"
+
+#: command-list.h:128
+msgid "Creates a tag object"
+msgstr "Създаване на обект-етикет"
+
+#: command-list.h:129
+msgid "Build a tree-object from ls-tree formatted text"
+msgstr "Създаване на обект-дърво от текст във формат „ls-tree“"
+
+#: command-list.h:130
 msgid "Move or rename a file, a directory, or a symlink"
 msgstr "Преместване или преименуване на файл, директория или символна връзка"
 
-#: common-cmds.h:30
+#: command-list.h:131
+msgid "Find symbolic names for given revs"
+msgstr "Откриване на имената дадени на версия"
+
+#: command-list.h:132
+msgid "Add or inspect object notes"
+msgstr "Добавяне или преглед на бележки към обект"
+
+#: command-list.h:133
+msgid "Import from and submit to Perforce repositories"
+msgstr "Внасяне и подаване към хранилища на Perforce"
+
+#: command-list.h:134
+msgid "Create a packed archive of objects"
+msgstr "Създаване на пакетиран архив от обекти"
+
+#: command-list.h:135
+msgid "Find redundant pack files"
+msgstr "Намиране на повтарящи се пакетни файлове"
+
+#: command-list.h:136
+msgid "Pack heads and tags for efficient repository access"
+msgstr "Пакетиране на върховете и етикетите за бърз достъп до хранилище"
+
+#: command-list.h:137
+msgid "Routines to help parsing remote repository access parameters"
+msgstr ""
+"Помощни програми за анализа на параметрите за достъп до отдалечено хранилище"
+
+#: command-list.h:138
+msgid "Compute unique ID for a patch"
+msgstr "Генериране на уникален идентификатор на кръпка"
+
+#: command-list.h:139
+msgid "Prune all unreachable objects from the object database"
+msgstr "Окастряне на всички недостижими обекти в базата от данни за обектите"
+
+#: command-list.h:140
+msgid "Remove extra objects that are already in pack files"
+msgstr "Изтриване на допълнителните обекти, които вече са в пакетни файлове"
+
+#: command-list.h:141
 msgid "Fetch from and integrate with another repository or a local branch"
 msgstr "Доставяне и внасяне на промените от друго хранилище или клон"
 
-#: common-cmds.h:31
+#: command-list.h:142
 msgid "Update remote refs along with associated objects"
 msgstr "Обновяване на отдалечените указатели и свързаните с тях обекти"
 
-#: common-cmds.h:32
+#: command-list.h:143
+msgid "Applies a quilt patchset onto the current branch"
+msgstr "Прилагане на поредица от кръпки от quilt към текущия клон"
+
+#: command-list.h:144
+msgid "Reads tree information into the index"
+msgstr "Изчитане на информация за обект-дърво в индекса"
+
+#: command-list.h:145
 msgid "Reapply commits on top of another base tip"
 msgstr "Прилагане на подаванията върху друг връх"
 
-#: common-cmds.h:33
+#: command-list.h:146
+msgid "Receive what is pushed into the repository"
+msgstr "Получаване на изтласканото в хранилището"
+
+#: command-list.h:147
+msgid "Manage reflog information"
+msgstr "Управление на информацията в журнала на указателите"
+
+#: command-list.h:148
+msgid "Manage set of tracked repositories"
+msgstr "Управление на набор от следени хранилища"
+
+#: command-list.h:149
+msgid "Pack unpacked objects in a repository"
+msgstr "Пакетиране на непакетираните обекти в хранилище"
+
+#: command-list.h:150
+msgid "Create, list, delete refs to replace objects"
+msgstr "Създаване, извеждане, изтриване на указатели за замяна на обекти"
+
+#: command-list.h:151
+msgid "Generates a summary of pending changes"
+msgstr "Обобщение на предстоящите промени"
+
+#: command-list.h:152
+msgid "Reuse recorded resolution of conflicted merges"
+msgstr "Преизползване на вече запазено коригиране на конфликт при сливане"
+
+#: command-list.h:153
 msgid "Reset current HEAD to the specified state"
 msgstr "Привеждане на указателя „HEAD“ към зададеното състояние"
 
-#: common-cmds.h:34
+#: command-list.h:154
+msgid "Revert some existing commits"
+msgstr "Отменяне на съществуващи подавания"
+
+#: command-list.h:155
+msgid "Lists commit objects in reverse chronological order"
+msgstr "Извеждане на подаванията в обратна хронологическа подредба"
+
+#: command-list.h:156
+msgid "Pick out and massage parameters"
+msgstr "Избор и промяна на параметри"
+
+#: command-list.h:157
 msgid "Remove files from the working tree and from the index"
 msgstr "Изтриване на файлове от работното дърво и индекса"
 
-#: common-cmds.h:35
+#: command-list.h:158
+msgid "Send a collection of patches as emails"
+msgstr "Изпращане на поредица от кръпки по е-поща"
+
+#: command-list.h:159
+msgid "Push objects over Git protocol to another repository"
+msgstr "Изтласкване на обекти по протокола на Git към друго хранилище"
+
+#: command-list.h:160
+msgid "Restricted login shell for Git-only SSH access"
+msgstr "Ограничена входна обвивка за достъп през SSH само до Git"
+
+#: command-list.h:161
+msgid "Summarize 'git log' output"
+msgstr "Обобщен изход от „git log“"
+
+#: command-list.h:162
 msgid "Show various types of objects"
 msgstr "Извеждане на различните видове обекти в Git"
 
-#: common-cmds.h:36
+#: command-list.h:163
+msgid "Show branches and their commits"
+msgstr "Извеждане на клоните и подаванията в тях"
+
+#: command-list.h:164
+msgid "Show packed archive index"
+msgstr "Извеждане на индекса на пакетирания архив"
+
+#: command-list.h:165
+msgid "List references in a local repository"
+msgstr "Извеждане на указателите в локално хранилище"
+
+#: command-list.h:166
+msgid "Git's i18n setup code for shell scripts"
+msgstr "Настройки на Git за интернационализация на скриптовете на обвивката"
+
+#: command-list.h:167
+msgid "Common Git shell script setup code"
+msgstr "Настройки на Git за скриптовете на обвивката"
+
+#: command-list.h:168
+msgid "Stash the changes in a dirty working directory away"
+msgstr "Скатаване на неподадените промени в работното дърво"
+
+#: command-list.h:169
+msgid "Add file contents to the staging area"
+msgstr "Добавяне на съдържанието на файла към индекса"
+
+#: command-list.h:170
 msgid "Show the working tree status"
 msgstr "Извеждане на състоянието на работното дърво"
 
-#: common-cmds.h:37
+#: command-list.h:171
+msgid "Remove unnecessary whitespace"
+msgstr "Премахване на излишните знаци за интервали"
+
+#: command-list.h:172
+msgid "Initialize, update or inspect submodules"
+msgstr "Инициализиране, обновяване или разглеждане на подмодули"
+
+#: command-list.h:173
+msgid "Bidirectional operation between a Subversion repository and Git"
+msgstr "Двупосочна работа между хранилища под Subversion и Git"
+
+#: command-list.h:174
+msgid "Read, modify and delete symbolic refs"
+msgstr "Извеждане, промяна и изтриване на символни указатели"
+
+#: command-list.h:175
 msgid "Create, list, delete or verify a tag object signed with GPG"
 msgstr "Извеждане, създаване, изтриване, проверка на етикети подписани с GPG"
 
-#: parse-options.h:157
-msgid "expiry-date"
-msgstr "пеÑ\80иод Ð½Ð° Ð²Ð°Ð»Ð¸Ð´Ð½Ð¾Ñ\81Ñ\82/запазване"
+#: command-list.h:176
+msgid "Creates a temporary file with a blob's contents"
+msgstr "СÑ\8aздаване Ð½Ð° Ð²Ñ\80еменен Ñ\84айл Ñ\81Ñ\8aÑ\81 Ñ\81Ñ\8aÑ\89оÑ\82о Ñ\81Ñ\8aдÑ\8aÑ\80жание ÐºÐ°Ñ\82о Ð¾Ð±ÐµÐºÑ\82Ñ\8aÑ\82-BLOB"
 
-#: parse-options.h:172
-msgid "no-op (backward compatibility)"
-msgstr "нÑ\83лева Ð¾Ð¿ÐµÑ\80аÑ\86иÑ\8f (за Ñ\81Ñ\8aвмеÑ\81Ñ\82имоÑ\81Ñ\82 Ñ\81 Ð¿Ñ\80едиÑ\88ни Ð²ÐµÑ\80Ñ\81ии)"
+#: command-list.h:177
+msgid "Unpack objects from a packed archive"
+msgstr "РазпакеÑ\82иÑ\80ане Ð½Ð° Ð¾Ð±ÐµÐºÑ\82и Ð¾Ñ\82 Ð¿Ð°ÐºÐµÑ\82иÑ\80ан Ð°Ñ\80Ñ\85ив"
 
-#: parse-options.h:250
-msgid "be more verbose"
-msgstr "повеÑ\87е Ð¿Ð¾Ð´Ñ\80обноÑ\81Ñ\82и"
+#: command-list.h:178
+msgid "Register file contents in the working tree to the index"
+msgstr "РегиÑ\81Ñ\82Ñ\80иÑ\80ане Ð½Ð° Ñ\81Ñ\8aдÑ\8aÑ\80жаниеÑ\82о Ð½Ð° Ñ\84айловеÑ\82е Ð¾Ñ\82 Ñ\80абоÑ\82ноÑ\82о Ð´Ñ\8aÑ\80во Ð² Ð¸Ð½Ð´ÐµÐºÑ\81а"
 
-#: parse-options.h:252
-msgid "be more quiet"
-msgstr "по-малко Ð¿Ð¾Ð´Ñ\80обноÑ\81Ñ\82и"
+#: command-list.h:179
+msgid "Update the object name stored in a ref safely"
+msgstr "Ð\91езопаÑ\81но Ð¾Ð±Ð½Ð¾Ð²Ñ\8fване Ð½Ð° Ð¸Ð¼ÐµÑ\82о Ð½Ð° Ð¾Ð±ÐµÐºÑ\82 Ð² Ñ\83казаÑ\82ел"
 
-#: parse-options.h:258
-msgid "use <n> digits to display SHA-1s"
-msgstr "да се показват такъв БРОЙ цифри от сумите по SHA1"
+#: command-list.h:180
+msgid "Update auxiliary info file to help dumb servers"
+msgstr ""
+"Обновяване на файла с допълнителна информация в помощ на опростените сървъри"
+
+#: command-list.h:181
+msgid "Send archive back to git-archive"
+msgstr "Изпращане на архива обратно към „git-archive“"
+
+#: command-list.h:182
+msgid "Send objects packed back to git-fetch-pack"
+msgstr "Изпращане на пакетираните обекти обратно към „git-fetch-pack“"
+
+#: command-list.h:183
+msgid "Show a Git logical variable"
+msgstr "Извеждане на логическа променлива на Git"
+
+#: command-list.h:184
+msgid "Check the GPG signature of commits"
+msgstr "Проверка на подписите GPG върху подаванията"
+
+#: command-list.h:185
+msgid "Validate packed Git archive files"
+msgstr "Проверка на пакетираните архивни файлове на Git"
+
+#: command-list.h:186
+msgid "Check the GPG signature of tags"
+msgstr "Проверка на подписите GPG върху етикетите"
+
+#: command-list.h:187
+msgid "Git web interface (web frontend to Git repositories)"
+msgstr "Уеб интерфейс на Git"
+
+#: command-list.h:188
+msgid "Show logs with difference each commit introduces"
+msgstr "Извеждане на журнал с разликите, въведени с всяко подаване"
+
+#: command-list.h:189
+msgid "Manage multiple working trees"
+msgstr "Управление на множество работни дървета"
+
+#: command-list.h:190
+msgid "Create a tree object from the current index"
+msgstr "Създаване на обект-дърво от текущия индекс"
+
+#: command-list.h:191
+msgid "Defining attributes per path"
+msgstr "Указване на атрибути към път"
+
+#: command-list.h:192
+msgid "Git command-line interface and conventions"
+msgstr "Команден ред и конвенции на Git"
+
+#: command-list.h:193
+msgid "A Git core tutorial for developers"
+msgstr "Въвеждащ урок в Git за разработчици"
+
+#: command-list.h:194
+msgid "Git for CVS users"
+msgstr "Git за потребители на CVS"
+
+#: command-list.h:195
+msgid "Tweaking diff output"
+msgstr "Настройване на изгледа на разликите"
+
+#: command-list.h:196
+msgid "A useful minimum set of commands for Everyday Git"
+msgstr "Полезен минимален набор от команди за ежедневната работа с Git"
+
+#: command-list.h:197
+msgid "A Git Glossary"
+msgstr "Речник с термините на Git"
+
+#: command-list.h:198
+msgid "Hooks used by Git"
+msgstr "Куки на Git"
+
+#: command-list.h:199
+msgid "Specifies intentionally untracked files to ignore"
+msgstr "Указване на неследени файлове, които да бъдат нарочно пренебрегвани"
+
+#: command-list.h:200
+msgid "Defining submodule properties"
+msgstr "Дефиниране на свойствата на подмодулите"
+
+#: command-list.h:201
+msgid "Git namespaces"
+msgstr "Пространства от имена на Git"
+
+#: command-list.h:202
+msgid "Git Repository Layout"
+msgstr "Устройство на хранилището на Git"
+
+#: command-list.h:203
+msgid "Specifying revisions and ranges for Git"
+msgstr "Указване на версии и диапазони в Git"
+
+#: command-list.h:204
+msgid "A tutorial introduction to Git: part two"
+msgstr "Въвеждащ урок за Git: втора част"
+
+#: command-list.h:205
+msgid "A tutorial introduction to Git"
+msgstr "Въвеждащ урок за Git"
+
+#: command-list.h:206
+msgid "An overview of recommended workflows with Git"
+msgstr "Общ преглед на препоръчваните начини за работа с Git"
 
 #: rerere.h:40
 msgid "update the index with reused conflict resolution if possible"
@@ -15708,7 +16824,7 @@ msgstr "Опит за просто сливане с „$pretty_name“"
 msgid "Simple merge did not work, trying automatic merge."
 msgstr "Простото сливане не сработи, пробва се автоматично сливане."
 
-#: git-rebase.sh:60
+#: git-rebase.sh:61
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
@@ -15722,44 +16838,44 @@ msgstr ""
 "За да откажете пребазирането и да се върнете към първоначалното състояние,\n"
 "изпълнете „git rebase --abort“."
 
-#: git-rebase.sh:163 git-rebase.sh:409
+#: git-rebase.sh:173 git-rebase.sh:442
 #, sh-format
 msgid "Could not move back to $head_name"
 msgstr "Връщането към „${head_name}“ е невъзможно"
 
-#: git-rebase.sh:174
+#: git-rebase.sh:184
 msgid "Applied autostash."
 msgstr "Автоматично скатаното е приложено."
 
-#: git-rebase.sh:177
+#: git-rebase.sh:187
 #, sh-format
 msgid "Cannot store $stash_sha1"
 msgstr "„${stash_sha1}“ не може да бъде запазен"
 
-#: git-rebase.sh:218
+#: git-rebase.sh:229
 msgid "The pre-rebase hook refused to rebase."
 msgstr "Куката за изпълнение преди пребазиране отхвърли пребазирането."
 
-#: git-rebase.sh:223
+#: git-rebase.sh:234
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr ""
 "Изглежда, че сега се прилагат кръпки чрез командата „git-am“.  Не може да "
 "пребазирате в момента."
 
-#: git-rebase.sh:370
+#: git-rebase.sh:403
 msgid "No rebase in progress?"
 msgstr "Изглежда в момента не тече пребазиране"
 
-#: git-rebase.sh:381
+#: git-rebase.sh:414
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr ""
 "Опцията „--edit-todo“ е достъпна само по време на интерактивно пребазиране."
 
-#: git-rebase.sh:388
+#: git-rebase.sh:421
 msgid "Cannot read HEAD"
 msgstr "Указателят „HEAD“ не може да бъде прочетен"
 
-#: git-rebase.sh:391
+#: git-rebase.sh:424
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
@@ -15767,7 +16883,7 @@ msgstr ""
 "Трябва да редактирате всички конфликти при сливането.  След това\n"
 "отбележете коригирането им чрез командата „git add“"
 
-#: git-rebase.sh:435
+#: git-rebase.sh:468
 #, sh-format
 msgid ""
 "It seems that there is already a $state_dir_base directory, and\n"
@@ -15788,79 +16904,83 @@ msgstr ""
 "за\n"
 "да не загубите случайно промени."
 
-#: git-rebase.sh:491
+#: git-rebase.sh:509
+msgid "error: cannot combine '--signoff' with '--preserve-merges'"
+msgstr "грешка: опциите „--signoff“ и „--preserve-merges“ са несъвместими"
+
+#: git-rebase.sh:537
 #, sh-format
 msgid "invalid upstream '$upstream_name'"
 msgstr "неправилна основа за сравнение „${upstream_name}“"
 
-#: git-rebase.sh:515
+#: git-rebase.sh:561
 #, sh-format
 msgid "$onto_name: there are more than one merge bases"
 msgstr ""
 "указателят „${onto_name}“ може да сочи към повече от една основа за "
 "пребазирането"
 
-#: git-rebase.sh:518 git-rebase.sh:522
+#: git-rebase.sh:564 git-rebase.sh:568
 #, sh-format
 msgid "$onto_name: there is no merge base"
 msgstr "указателят „${onto_name}“ не сочи към никаква основа за пребазирането"
 
-#: git-rebase.sh:527
+#: git-rebase.sh:573
 #, sh-format
 msgid "Does not point to a valid commit: $onto_name"
 msgstr "Указателят „${onto_name}“ не сочи към подаване"
 
-#: git-rebase.sh:553
+#: git-rebase.sh:599
 #, sh-format
 msgid "fatal: no such branch/commit '$branch_name'"
 msgstr "ФАТАЛНА ГРЕШКА: не съществува клон „${branch_name}“"
 
-#: git-rebase.sh:586
+#: git-rebase.sh:632
 msgid "Cannot autostash"
 msgstr "Не може да се скатае автоматично"
 
-#: git-rebase.sh:591
+#: git-rebase.sh:637
 #, sh-format
 msgid "Created autostash: $stash_abbrev"
 msgstr "Автоматично скатано: „${stash_abbrev}“"
 
-#: git-rebase.sh:595
+#: git-rebase.sh:641
 msgid "Please commit or stash them."
 msgstr "Промените трябва или да се подадат, или да се скатаят."
 
-#: git-rebase.sh:618
+#: git-rebase.sh:664
 #, sh-format
 msgid "HEAD is up to date."
 msgstr "Указателят „HEAD“ е напълно актуален"
 
-#: git-rebase.sh:620
+#: git-rebase.sh:666
 #, sh-format
 msgid "Current branch $branch_name is up to date."
 msgstr "Текущият клон „${branch_name}“ е напълно актуален."
 
-#: git-rebase.sh:628
+#: git-rebase.sh:674
 #, sh-format
 msgid "HEAD is up to date, rebase forced."
 msgstr "Указателят „HEAD“ е напълно актуален.  Пребазирането е принудително."
 
-#: git-rebase.sh:630
+#: git-rebase.sh:676
 #, sh-format
 msgid "Current branch $branch_name is up to date, rebase forced."
 msgstr ""
 "Текущият клон „${branch_name}“ е напълно актуален.  Пребазирането е "
 "принудително."
 
-#: git-rebase.sh:642
+#: git-rebase.sh:688
 #, sh-format
 msgid "Changes from $mb to $onto:"
 msgstr "Промените от „${mb}“ към „${onto}“:"
 
-#: git-rebase.sh:651
+#: git-rebase.sh:697
 msgid "First, rewinding head to replay your work on top of it..."
 msgstr ""
 "Първо, указателят „HEAD“ започва да сочи към базата, върху която пребазирате…"
 
-#: git-rebase.sh:661
+#: git-rebase.sh:707
 #, sh-format
 msgid "Fast-forwarded $branch_name to $onto_name."
 msgstr "Превъртане на „${branch_name}“ върху „${onto_name}“."
@@ -15930,115 +17050,115 @@ msgid "Saved working directory and index state $stash_msg"
 msgstr ""
 "Състоянието на работната директория и индекса са запазени: „$stash_msg“"
 
-#: git-stash.sh:340
+#: git-stash.sh:342
 msgid "Cannot remove worktree changes"
 msgstr "Промените в работното дърво не могат да бъдат занулени"
 
-#: git-stash.sh:488
+#: git-stash.sh:490
 #, sh-format
 msgid "unknown option: $opt"
 msgstr "непозната опция: ${opt}"
 
-#: git-stash.sh:501
+#: git-stash.sh:503
 msgid "No stash entries found."
 msgstr "Не е открито нищо скатано."
 
-#: git-stash.sh:508
+#: git-stash.sh:510
 #, sh-format
 msgid "Too many revisions specified: $REV"
 msgstr "Указани са прекалено много версии: „${REV}“"
 
-#: git-stash.sh:523
+#: git-stash.sh:525
 #, sh-format
 msgid "$reference is not a valid reference"
 msgstr "Указателят „${reference}“ е грешен"
 
-#: git-stash.sh:551
+#: git-stash.sh:553
 #, sh-format
 msgid "'$args' is not a stash-like commit"
 msgstr "„${args}“ не е подаване, приличащо на нещо скатано"
 
-#: git-stash.sh:562
+#: git-stash.sh:564
 #, sh-format
 msgid "'$args' is not a stash reference"
 msgstr "„${args}“ не е указател към нещо скатано"
 
-#: git-stash.sh:570
+#: git-stash.sh:572
 msgid "unable to refresh index"
 msgstr "индексът не може да бъде обновен"
 
-#: git-stash.sh:574
+#: git-stash.sh:576
 msgid "Cannot apply a stash in the middle of a merge"
 msgstr "По време на сливане не може да приложите нещо скатано"
 
-#: git-stash.sh:582
+#: git-stash.sh:584
 msgid "Conflicts in index. Try without --index."
 msgstr ""
 "В индекса има конфликти.  Пробвайте да изпълните командата без опцията „--"
 "index“."
 
-#: git-stash.sh:584
+#: git-stash.sh:586
 msgid "Could not save index tree"
 msgstr "Дървото сочено от индекса не може да бъде запазено"
 
-#: git-stash.sh:593
+#: git-stash.sh:595
 msgid "Could not restore untracked files from stash entry"
 msgstr "Неследени файлове не могат да се възстановят от скатаното"
 
-#: git-stash.sh:618
+#: git-stash.sh:620
 msgid "Cannot unstage modified files"
 msgstr "Променените файлове не могат да бъдат извадени от индекса"
 
-#: git-stash.sh:633
+#: git-stash.sh:635
 msgid "Index was not unstashed."
 msgstr "Индексът не е скатан."
 
-#: git-stash.sh:647
+#: git-stash.sh:649
 msgid "The stash entry is kept in case you need it again."
 msgstr "Скатаното е запазено в случай, че ви потрябва отново"
 
-#: git-stash.sh:656
+#: git-stash.sh:658
 #, sh-format
 msgid "Dropped ${REV} ($s)"
 msgstr "Изтрито е скатаното „${REV}“ ($s)"
 
-#: git-stash.sh:657
+#: git-stash.sh:659
 #, sh-format
 msgid "${REV}: Could not drop stash entry"
 msgstr "Скатаното „${REV}“ не може да бъде изтрито"
 
-#: git-stash.sh:665
+#: git-stash.sh:667
 msgid "No branch name specified"
 msgstr "Не е указано име на клон"
 
-#: git-stash.sh:744
+#: git-stash.sh:746
 msgid "(To restore them type \"git stash apply\")"
 msgstr "(За да ги възстановите, изпълнете командата „git stash apply“)"
 
-#: git-submodule.sh:181
+#: git-submodule.sh:188
 msgid "Relative path can only be used from the toplevel of the working tree"
 msgstr ""
 "Относителен път може да се ползва само от основната директория на работното "
 "дърво"
 
-#: git-submodule.sh:191
+#: git-submodule.sh:198
 #, sh-format
 msgid "repo URL: '$repo' must be absolute or begin with ./|../"
 msgstr ""
 "адрес на хранилище: „${repo}“ трябва или да е абсолютен, или да започва с "
 "„./“ или „../“"
 
-#: git-submodule.sh:210
+#: git-submodule.sh:217
 #, sh-format
 msgid "'$sm_path' already exists in the index"
 msgstr "„${sm_path}“ вече съществува в индекса"
 
-#: git-submodule.sh:213
+#: git-submodule.sh:220
 #, sh-format
 msgid "'$sm_path' already exists in the index and is not a submodule"
 msgstr "„${sm_path}“ вече съществува в индекса и не е подмодул"
 
-#: git-submodule.sh:219
+#: git-submodule.sh:226
 #, sh-format
 msgid ""
 "The following path is ignored by one of your .gitignore files:\n"
@@ -16049,24 +17169,24 @@ msgstr ""
 "${sm_path}\n"
 "Използвайте опцията „-f“, ако за да го добавите наистина."
 
-#: git-submodule.sh:237
+#: git-submodule.sh:249
 #, sh-format
 msgid "Adding existing repo at '$sm_path' to the index"
 msgstr "Добавяне на съществуващото хранилище в „${sm_path}“ към индекса"
 
-#: git-submodule.sh:239
+#: git-submodule.sh:251
 #, sh-format
 msgid "'$sm_path' already exists and is not a valid git repo"
 msgstr "„${sm_path}“ съществува, а не е хранилище на Git"
 
-#: git-submodule.sh:247
+#: git-submodule.sh:259
 #, sh-format
 msgid "A git directory for '$sm_name' is found locally with remote(s):"
 msgstr ""
 "Открита е локална директория на Git — „${sm_name}“, която сочи към "
 "отдалечените хранилища:"
 
-#: git-submodule.sh:249
+#: git-submodule.sh:261
 #, sh-format
 msgid ""
 "If you want to reuse this local git directory instead of cloning again from\n"
@@ -16083,48 +17203,48 @@ msgstr ""
 "правилното хранилище или ако не знаете какво означава това, използвайте\n"
 "друго име като аргумент към опцията „--name“."
 
-#: git-submodule.sh:255
+#: git-submodule.sh:267
 #, sh-format
 msgid "Reactivating local git directory for submodule '$sm_name'."
 msgstr "Активиране на локалното хранилище за подмодула „${sm_name}“ наново."
 
-#: git-submodule.sh:267
+#: git-submodule.sh:279
 #, sh-format
 msgid "Unable to checkout submodule '$sm_path'"
 msgstr "Подмодулът „${sm_path}“ не може да бъде изтеглен"
 
-#: git-submodule.sh:272
+#: git-submodule.sh:284
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr "Неуспешно добавяне на подмодула „${sm_path}“"
 
-#: git-submodule.sh:281
+#: git-submodule.sh:293
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
 msgstr "Неуспешно регистриране на подмодула „${sm_path}“"
 
-#: git-submodule.sh:342
+#: git-submodule.sh:354
 #, sh-format
 msgid "Entering '$displaypath'"
 msgstr "Влизане в „${displaypath}“"
 
-#: git-submodule.sh:362
+#: git-submodule.sh:374
 #, sh-format
 msgid "Stopping at '$displaypath'; script returned non-zero status."
 msgstr ""
 "Спиране при „${displaypath}“ — изходният код от скрипта бе различен от 0."
 
-#: git-submodule.sh:584
+#: git-submodule.sh:600
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
 msgstr "Текущата версия за подмодула в „${displaypath}“ липсва"
 
-#: git-submodule.sh:594
+#: git-submodule.sh:610
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr "Неуспешно доставяне в пътя към подмодул „${sm_path}“"
 
-#: git-submodule.sh:599
+#: git-submodule.sh:615
 #, sh-format
 msgid ""
 "Unable to find current ${remote_name}/${branch} revision in submodule path "
@@ -16133,12 +17253,12 @@ msgstr ""
 "Текущата версия „${remote_name}/${branch}“ в пътя към подмодул „${sm_path}“ "
 "липсва"
 
-#: git-submodule.sh:617
+#: git-submodule.sh:633
 #, sh-format
 msgid "Unable to fetch in submodule path '$displaypath'"
 msgstr "Неуспешно доставяне в пътя към подмодул „${displaypath}“"
 
-#: git-submodule.sh:623
+#: git-submodule.sh:639
 #, sh-format
 msgid ""
 "Fetched in submodule path '$displaypath', but it did not contain $sha1. "
@@ -16147,80 +17267,80 @@ msgstr ""
 "Подмодулът в пътя „$displaypath“ е доставен, но не съдържа обекта със сума\n"
 "„$sha1“.  Директното доставяне на това подаване е неуспешно."
 
-#: git-submodule.sh:630
+#: git-submodule.sh:646
 #, sh-format
 msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
 msgstr ""
 "Неуспешно изтегляне на версия „${sha1}“ в пътя към подмодул „${displaypath}“'"
 
-#: git-submodule.sh:631
+#: git-submodule.sh:647
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
 msgstr "Път към подмодул „${displaypath}“: изтеглена е версия „${sha1}“"
 
-#: git-submodule.sh:635
+#: git-submodule.sh:651
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
 msgstr ""
 "Неуспешно пребазиране на версия „${sha1}“ в пътя към подмодул "
 "„${displaypath}“"
 
-#: git-submodule.sh:636
+#: git-submodule.sh:652
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
 msgstr "Път към подмодул „${displaypath}“: пребазиране върху версия „${sha1}“"
 
-#: git-submodule.sh:641
+#: git-submodule.sh:657
 #, sh-format
 msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
 msgstr ""
 "Неуспешно сливане на версия „${sha1}“ в пътя към подмодул „${displaypath}“"
 
-#: git-submodule.sh:642
+#: git-submodule.sh:658
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
 msgstr "Път към подмодул „${displaypath}“: сливане с версия „${sha1}“"
 
-#: git-submodule.sh:647
+#: git-submodule.sh:663
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
 msgstr ""
 "Неуспешно изпълнение на командата „${command} ${sha1}“ в пътя към подмодул "
 "„${displaypath}“"
 
-#: git-submodule.sh:648
+#: git-submodule.sh:664
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr "Път към подмодул „${displaypath}“: „${command} ${sha1}“"
 
-#: git-submodule.sh:679
+#: git-submodule.sh:695
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr ""
 "Неуспешна обработка на поддиректориите в пътя към подмодул „${displaypath}“"
 
-#: git-submodule.sh:775
+#: git-submodule.sh:791
 msgid "The --cached option cannot be used with the --files option"
 msgstr "Опциите „--cached“ и „--files“ са несъвместими"
 
-#: git-submodule.sh:827
+#: git-submodule.sh:843
 #, sh-format
 msgid "unexpected mode $mod_dst"
 msgstr "неочакван режим „${mod_dst}“"
 
-#: git-submodule.sh:847
+#: git-submodule.sh:863
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_src"
 msgstr ""
 "  ПРЕДУПРЕЖДЕНИЕ: „${display_name}“ не съдържа подаването „${sha1_src}“"
 
-#: git-submodule.sh:850
+#: git-submodule.sh:866
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_dst"
 msgstr ""
 "  ПРЕДУПРЕЖДЕНИЕ: „${display_name}“ не съдържа подаването „${sha1_dst}“"
 
-#: git-submodule.sh:853
+#: git-submodule.sh:869
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
 msgstr ""
@@ -16232,22 +17352,28 @@ msgstr ""
 msgid "See git-${cmd}(1) for details."
 msgstr "За повече информация погледнете ръководството на „git-${cmd}(1)“"
 
-#: git-rebase--interactive.sh:140
+#: git-rebase--interactive.sh:142
 #, sh-format
 msgid "Rebasing ($new_count/$total)"
 msgstr "Пребазиране ($new_count/$total)"
 
-#: git-rebase--interactive.sh:156
+#: git-rebase--interactive.sh:158
 msgid ""
 "\n"
 "Commands:\n"
-"p, pick = use commit\n"
-"r, reword = use commit, but edit the commit message\n"
-"e, edit = use commit, but stop for amending\n"
-"s, squash = use commit, but meld into previous commit\n"
-"f, fixup = like \"squash\", but discard this commit's log message\n"
-"x, exec = run command (the rest of the line) using shell\n"
-"d, drop = remove commit\n"
+"p, pick <commit> = use commit\n"
+"r, reword <commit> = use commit, but edit the commit message\n"
+"e, edit <commit> = use commit, but stop for amending\n"
+"s, squash <commit> = use commit, but meld into previous commit\n"
+"f, fixup <commit> = like \"squash\", but discard this commit's log message\n"
+"x, exec <command> = run command (the rest of the line) using shell\n"
+"d, drop <commit> = remove commit\n"
+"l, label <label> = label current HEAD with a name\n"
+"t, reset <label> = reset HEAD to a label\n"
+"m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]\n"
+".       create a merge commit using the original merge commit's\n"
+".       message (or the oneline, if no original merge commit was\n"
+".       specified). Use -c <commit> to reword the commit message.\n"
 "\n"
 "These lines can be re-ordered; they are executed from top to bottom.\n"
 msgstr ""
@@ -16256,16 +17382,22 @@ msgstr ""
 " p, pick — прилагане на подаването\n"
 " r, reword — прилагане на подаването, но смяна на съобщението му\n"
 " e, edit — прилагане на подаването и спиране при него за още промени\n"
-" s, squash — сливане на подаването към предходното му\n"
-" f, fixup —  сливане на подаването към предходното му, без смяна на "
+" s, squash — вкарване на подаването в предходното му\n"
+" f, fixup —  вкарване на подаването в предходното му, без смяна на "
 "съобщението\n"
 " x, exec — изпълнение на команда към обвивката: останалата част на реда\n"
 " d, drop — прескачане на подаването\n"
+" l, label ЕТИКЕТ — задаване на етикет на указаното от HEAD\n"
+" t, reset ЕТИКЕТ — занулявяне на HEAD към ЕТИКЕТа\n"
+" m, merge [-C ПОДАВАНЕ | -c ПОДАВАНЕ] ЕТИКЕТ [# ЕДИН_РЕД]\n"
+"        създаване на подаване със сливане със съобщението от първоначалното\n"
+"        подаване (или съобщението от ЕДИН_РЕД,  ако не е зададено подаване\n"
+"        със сливане.  С опцията „-c ПОДАВАНЕ“, може да смените съобщението.\n"
 "\n"
 "Може да променяте последователността на редовете — те се изпълняват\n"
 "последователно отгоре-надолу.\n"
 
-#: git-rebase--interactive.sh:171
+#: git-rebase--interactive.sh:179
 msgid ""
 "\n"
 "Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
@@ -16274,7 +17406,7 @@ msgstr ""
 "Не изтривайте редове.  Подаванията могат да се прескачат с командата "
 "„drop“.\n"
 
-#: git-rebase--interactive.sh:175
+#: git-rebase--interactive.sh:183
 msgid ""
 "\n"
 "If you remove a line here THAT COMMIT WILL BE LOST.\n"
@@ -16282,7 +17414,7 @@ msgstr ""
 "\n"
 "Ако изтриете ред, съответстващото му подаване ще бъде ИЗТРИТО.\n"
 
-#: git-rebase--interactive.sh:213
+#: git-rebase--interactive.sh:221
 #, sh-format
 msgid ""
 "You can amend the commit now, with\n"
@@ -16301,84 +17433,84 @@ msgstr ""
 "\n"
 "    git rebase --continue"
 
-#: git-rebase--interactive.sh:238
+#: git-rebase--interactive.sh:246
 #, sh-format
 msgid "$sha1: not a commit that can be picked"
 msgstr "$sha1: това не е подаване, което може да бъде отбрано"
 
-#: git-rebase--interactive.sh:277
+#: git-rebase--interactive.sh:285
 #, sh-format
 msgid "Invalid commit name: $sha1"
 msgstr "Неправилно име на подаване: „$sha1“"
 
-#: git-rebase--interactive.sh:319
+#: git-rebase--interactive.sh:325
 msgid "Cannot write current commit's replacement sha1"
 msgstr ""
 "Заместващата сума по SHA1 за текущото подаване не може да бъде запазена"
 
-#: git-rebase--interactive.sh:371
+#: git-rebase--interactive.sh:376
 #, sh-format
 msgid "Fast-forward to $sha1"
 msgstr "Превъртане до „$sha1“"
 
-#: git-rebase--interactive.sh:373
+#: git-rebase--interactive.sh:378
 #, sh-format
 msgid "Cannot fast-forward to $sha1"
 msgstr "Не може да се превърти до „$sha1“"
 
-#: git-rebase--interactive.sh:382
+#: git-rebase--interactive.sh:387
 #, sh-format
 msgid "Cannot move HEAD to $first_parent"
 msgstr "Указателят „HEAD“ не може да се насочи към „$first_parent“"
 
-#: git-rebase--interactive.sh:387
+#: git-rebase--interactive.sh:392
 #, sh-format
 msgid "Refusing to squash a merge: $sha1"
 msgstr "Подаването не може да се смачка: „$sha1“"
 
-#: git-rebase--interactive.sh:405
+#: git-rebase--interactive.sh:410
 #, sh-format
 msgid "Error redoing merge $sha1"
 msgstr "Грешка при повтарянето на сливането на „$sha1“"
 
-#: git-rebase--interactive.sh:414
+#: git-rebase--interactive.sh:419
 #, sh-format
 msgid "Could not pick $sha1"
 msgstr "„$sha1“ не може да се отбере."
 
-#: git-rebase--interactive.sh:423
+#: git-rebase--interactive.sh:428
 #, sh-format
 msgid "This is the commit message #${n}:"
 msgstr "Това е съобщение при подаване №${n}:"
 
-#: git-rebase--interactive.sh:428
+#: git-rebase--interactive.sh:433
 #, sh-format
 msgid "The commit message #${n} will be skipped:"
 msgstr "Съобщение при подаване №${n} ще бъде прескочено."
 
-#: git-rebase--interactive.sh:439
+#: git-rebase--interactive.sh:444
 #, sh-format
 msgid "This is a combination of $count commit."
 msgid_plural "This is a combination of $count commits."
 msgstr[0] "Това е обединение от $count подаване."
 msgstr[1] "Това е обединение от $count подавания."
 
-#: git-rebase--interactive.sh:448
+#: git-rebase--interactive.sh:453
 #, sh-format
 msgid "Cannot write $fixup_msg"
 msgstr "Новото съобщение при подаване „$fixup_msg“ не може да бъде запазено"
 
-#: git-rebase--interactive.sh:451
+#: git-rebase--interactive.sh:456
 msgid "This is a combination of 2 commits."
 msgstr "Това е обединение от 2 подавания"
 
-#: git-rebase--interactive.sh:492 git-rebase--interactive.sh:535
-#: git-rebase--interactive.sh:538
+#: git-rebase--interactive.sh:497 git-rebase--interactive.sh:540
+#: git-rebase--interactive.sh:543
 #, sh-format
 msgid "Could not apply $sha1... $rest"
 msgstr "Не може да се подаде $sha1… $rest"
 
-#: git-rebase--interactive.sh:567
+#: git-rebase--interactive.sh:572
 #, sh-format
 msgid ""
 "Could not amend commit after successfully picking $sha1... $rest\n"
@@ -16394,31 +17526,31 @@ msgstr ""
 "коригирате,\n"
 "преди да можете да промените подаването."
 
-#: git-rebase--interactive.sh:582
+#: git-rebase--interactive.sh:587
 #, sh-format
 msgid "Stopped at $sha1_abbrev... $rest"
 msgstr "Спиране при „$sha1_abbrev…“ $rest"
 
-#: git-rebase--interactive.sh:597
+#: git-rebase--interactive.sh:602
 #, sh-format
 msgid "Cannot '$squash_style' without a previous commit"
-msgstr "Без предишно подаване не може да се изпълни „$squash_style“"
+msgstr "Без предходно подаване не може да се изпълни „$squash_style“"
 
-#: git-rebase--interactive.sh:639
+#: git-rebase--interactive.sh:644
 #, sh-format
 msgid "Executing: $rest"
 msgstr "В момента се изпълнява: $rest"
 
-#: git-rebase--interactive.sh:647
+#: git-rebase--interactive.sh:652
 #, sh-format
 msgid "Execution failed: $rest"
 msgstr "Неуспешно изпълнение: $rest"
 
-#: git-rebase--interactive.sh:649
+#: git-rebase--interactive.sh:654
 msgid "and made changes to the index and/or the working tree"
 msgstr "и промени индекса и/или работното дърво"
 
-#: git-rebase--interactive.sh:651
+#: git-rebase--interactive.sh:656
 msgid ""
 "You can fix the problem, and then run\n"
 "\n"
@@ -16429,7 +17561,7 @@ msgstr ""
 "    git rebase --continue"
 
 #. TRANSLATORS: after these lines is a command to be issued by the user
-#: git-rebase--interactive.sh:664
+#: git-rebase--interactive.sh:669
 #, sh-format
 msgid ""
 "Execution succeeded: $rest\n"
@@ -16444,29 +17576,29 @@ msgstr ""
 "\n"
 "    git rebase --continue"
 
-#: git-rebase--interactive.sh:675
+#: git-rebase--interactive.sh:680
 #, sh-format
 msgid "Unknown command: $command $sha1 $rest"
 msgstr "Непозната команда: $command $sha1 $rest"
 
-#: git-rebase--interactive.sh:676
+#: git-rebase--interactive.sh:681
 msgid "Please fix this using 'git rebase --edit-todo'."
 msgstr "Коригирайте това чрез „git rebase --edit-todo“."
 
-#: git-rebase--interactive.sh:711
+#: git-rebase--interactive.sh:716
 #, sh-format
 msgid "Successfully rebased and updated $head_name."
 msgstr "Успешно пребазиране и обновяване на „$head_name“."
 
-#: git-rebase--interactive.sh:735
+#: git-rebase--interactive.sh:740
 msgid "could not detach HEAD"
 msgstr "указателят „HEAD“ не може да се отдели"
 
-#: git-rebase--interactive.sh:771
+#: git-rebase--interactive.sh:778
 msgid "Could not remove CHERRY_PICK_HEAD"
 msgstr "Указателят „CHERRY_PICK_HEAD“ не може да бъде изтрит"
 
-#: git-rebase--interactive.sh:776
+#: git-rebase--interactive.sh:783
 #, sh-format
 msgid ""
 "You have staged changes in your working tree.\n"
@@ -16483,7 +17615,7 @@ msgid ""
 "\n"
 "  git rebase --continue\n"
 msgstr ""
-"Ð\92 Ð¸Ð½Ð´ÐµÐºÑ\81а Ð¸Ð¼Ð° Ð¿Ñ\80омени.  Ð\90ко Ð¸Ñ\81каÑ\82е Ð´Ð° Ð³Ð¸ Ð¿Ñ\80ибавиÑ\82е ÐºÑ\8aм\n"
+"Ð\92 Ð¸Ð½Ð´ÐµÐºÑ\81а Ð¸Ð¼Ð° Ð¿Ñ\80омени.  Ð\90ко Ð¸Ñ\81каÑ\82е Ð´Ð° Ð³Ð¸ Ð²ÐºÐ°Ñ\80аÑ\82е Ð²\n"
 "предишното подаване, изпълнете:\n"
 "\n"
 "    git commit --amend $gpg_sign_opt_quoted\n"
@@ -16496,11 +17628,11 @@ msgstr ""
 "\n"
 "    git rebase --continue\n"
 
-#: git-rebase--interactive.sh:793
+#: git-rebase--interactive.sh:800
 msgid "Error trying to find the author identity to amend commit"
 msgstr "Не може да бъде открит автор за поправянето на подаването"
 
-#: git-rebase--interactive.sh:798
+#: git-rebase--interactive.sh:805
 msgid ""
 "You have uncommitted changes in your working tree. Please commit them\n"
 "first and then run 'git rebase --continue' again."
@@ -16508,11 +17640,11 @@ msgstr ""
 "В работното дърво има неподадени промени.  Първо ги подайте, а след това\n"
 "отново изпълнете „git rebase --continue“."
 
-#: git-rebase--interactive.sh:803 git-rebase--interactive.sh:807
+#: git-rebase--interactive.sh:810 git-rebase--interactive.sh:814
 msgid "Could not commit staged changes."
 msgstr "Промените в индекса не могат да бъдат подадени."
 
-#: git-rebase--interactive.sh:836
+#: git-rebase--interactive.sh:843
 msgid ""
 "\n"
 "You are editing the todo file of an ongoing interactive rebase.\n"
@@ -16527,37 +17659,29 @@ msgstr ""
 "    git rebase --continue\n"
 "\n"
 
-#: git-rebase--interactive.sh:844 git-rebase--interactive.sh:1008
+#: git-rebase--interactive.sh:851 git-rebase--interactive.sh:937
 msgid "Could not execute editor"
 msgstr "Текстовият редактор не може да бъде стартиран"
 
-#: git-rebase--interactive.sh:860
+#: git-rebase--interactive.sh:872
 #, sh-format
 msgid "Could not checkout $switch_to"
 msgstr "„$switch_to“ не може да се изтегли"
 
-#: git-rebase--interactive.sh:865
+#: git-rebase--interactive.sh:879
 msgid "No HEAD?"
 msgstr "Липсва указател „HEAD“"
 
-#: git-rebase--interactive.sh:866
+#: git-rebase--interactive.sh:880
 #, sh-format
 msgid "Could not create temporary $state_dir"
 msgstr "Временната директория „$state_dir“ не може да бъде създадена"
 
-#: git-rebase--interactive.sh:869
+#: git-rebase--interactive.sh:883
 msgid "Could not mark as interactive"
 msgstr "Пребазирането не е интерактивно"
 
-#: git-rebase--interactive.sh:879 git-rebase--interactive.sh:884
-msgid "Could not init rewritten commits"
-msgstr "Списъкът с презаписаните подавания не може да бъде създаден"
-
-#: git-rebase--interactive.sh:910
-msgid "Could not generate todo list"
-msgstr "Файлът с командите не може да се генерира"
-
-#: git-rebase--interactive.sh:986
+#: git-rebase--interactive.sh:915
 #, sh-format
 msgid "Rebase $shortrevisions onto $shortonto ($todocount command)"
 msgid_plural "Rebase $shortrevisions onto $shortonto ($todocount commands)"
@@ -16566,20 +17690,30 @@ msgstr[0] ""
 msgstr[1] ""
 "Пребазиране на $shortrevisions върху $shortonto ($todocount команди)"
 
-#: git-rebase--interactive.sh:991
+#: git-rebase--interactive.sh:920
 msgid ""
 "\n"
-"However, if you remove everything, the rebase will be aborted.\n"
+"\tHowever, if you remove everything, the rebase will be aborted.\n"
 "\n"
+"\t"
 msgstr ""
 "\n"
-"Ако изтриете всичко, пребазирането ще бъде преустановено.\n"
+"    Ако изтриете всичко, пребазирането ще бъде преустановено.\n"
 "\n"
+"    "
 
-#: git-rebase--interactive.sh:998
+#: git-rebase--interactive.sh:927
 msgid "Note that empty commits are commented out"
 msgstr "Празните подавания са коментирани"
 
+#: git-rebase--interactive.sh:980
+msgid "Could not generate todo list"
+msgstr "Файлът с командите не може да се генерира"
+
+#: git-rebase--interactive.sh:1001 git-rebase--interactive.sh:1006
+msgid "Could not init rewritten commits"
+msgstr "Списъкът с презаписаните подавания не може да бъде създаден"
+
 #: git-sh-setup.sh:89 git-sh-setup.sh:94
 #, sh-format
 msgid "usage: $dashless $USAGE"
@@ -16661,68 +17795,68 @@ msgstr "в индекса"
 msgid "unstaged"
 msgstr "извън индекса"
 
-#: git-add--interactive.perl:246 git-add--interactive.perl:271
+#: git-add--interactive.perl:253 git-add--interactive.perl:278
 msgid "binary"
 msgstr "двоично"
 
-#: git-add--interactive.perl:255 git-add--interactive.perl:309
+#: git-add--interactive.perl:262 git-add--interactive.perl:316
 msgid "nothing"
 msgstr "нищо"
 
-#: git-add--interactive.perl:291 git-add--interactive.perl:306
+#: git-add--interactive.perl:298 git-add--interactive.perl:313
 msgid "unchanged"
 msgstr "няма промени"
 
-#: git-add--interactive.perl:602
+#: git-add--interactive.perl:609
 #, perl-format
 msgid "added %d path\n"
 msgid_plural "added %d paths\n"
 msgstr[0] "%d файл добавен\n"
 msgstr[1] "%d файла добавени\n"
 
-#: git-add--interactive.perl:605
+#: git-add--interactive.perl:612
 #, perl-format
 msgid "updated %d path\n"
 msgid_plural "updated %d paths\n"
 msgstr[0] "%d файл обновен\n"
 msgstr[1] "%d файла обновени\n"
 
-#: git-add--interactive.perl:608
+#: git-add--interactive.perl:615
 #, perl-format
 msgid "reverted %d path\n"
 msgid_plural "reverted %d paths\n"
 msgstr[0] "%d файл с отменени промени\n"
 msgstr[1] "%d файла с отменени промени\n"
 
-#: git-add--interactive.perl:611
+#: git-add--interactive.perl:618
 #, perl-format
 msgid "touched %d path\n"
 msgid_plural "touched %d paths\n"
 msgstr[0] "%d файл засегнат\n"
 msgstr[1] "%d файла засегнати\n"
 
-#: git-add--interactive.perl:620
+#: git-add--interactive.perl:627
 msgid "Update"
 msgstr "Обновяване"
 
-#: git-add--interactive.perl:632
+#: git-add--interactive.perl:639
 msgid "Revert"
 msgstr "Отмяна"
 
-#: git-add--interactive.perl:655
+#: git-add--interactive.perl:662
 #, perl-format
 msgid "note: %s is untracked now.\n"
 msgstr "БЕЛЕЖКА: „%s“ вече не се следи.\n"
 
-#: git-add--interactive.perl:666
+#: git-add--interactive.perl:673
 msgid "Add untracked"
 msgstr "Добавяне на неследени"
 
-#: git-add--interactive.perl:672
+#: git-add--interactive.perl:679
 msgid "No untracked files.\n"
 msgstr "Няма неследени файлове.\n"
 
-#: git-add--interactive.perl:1026
+#: git-add--interactive.perl:1033
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
@@ -16731,7 +17865,7 @@ msgstr ""
 "незабавно\n"
 "добавено към индекса"
 
-#: git-add--interactive.perl:1029
+#: git-add--interactive.perl:1036
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
@@ -16740,7 +17874,7 @@ msgstr ""
 "незабавно\n"
 "скътано"
 
-#: git-add--interactive.perl:1032
+#: git-add--interactive.perl:1039
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
@@ -16749,7 +17883,7 @@ msgstr ""
 "незабавно\n"
 "извадено от индекса."
 
-#: git-add--interactive.perl:1035 git-add--interactive.perl:1044
+#: git-add--interactive.perl:1042 git-add--interactive.perl:1051
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
@@ -16758,7 +17892,7 @@ msgstr ""
 "незабавно\n"
 "набелязано за прилагане."
 
-#: git-add--interactive.perl:1038 git-add--interactive.perl:1041
+#: git-add--interactive.perl:1045 git-add--interactive.perl:1048
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
@@ -16767,16 +17901,16 @@ msgstr ""
 "незабавно\n"
 "набелязано за зануляване."
 
-#: git-add--interactive.perl:1078
+#: git-add--interactive.perl:1085
 #, perl-format
 msgid "failed to open hunk edit file for writing: %s"
 msgstr "файлът за редактиране на парчето код не може да бъде отворен: „%s“"
 
-#: git-add--interactive.perl:1079
+#: git-add--interactive.perl:1086
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr "Ръчно редактиране на парчета код — отдолу има подсказка.\n"
 
-#: git-add--interactive.perl:1085
+#: git-add--interactive.perl:1092
 #, perl-format
 msgid ""
 "---\n"
@@ -16791,7 +17925,7 @@ msgstr ""
 "Редовете, които започват с „%s“ ще бъдат пропуснати.\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: git-add--interactive.perl:1093
+#: git-add--interactive.perl:1100
 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"
@@ -16801,7 +17935,7 @@ msgstr ""
 "изтриете всички редове от парчето код, то ще бъде оставено непроменено, а\n"
 "редактирането — отказано.\n"
 
-#: git-add--interactive.perl:1107
+#: git-add--interactive.perl:1114
 #, perl-format
 msgid "failed to open hunk edit file for reading: %s"
 msgstr ""
@@ -16813,7 +17947,7 @@ msgstr ""
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: git-add--interactive.perl:1206
+#: git-add--interactive.perl:1213
 msgid ""
 "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr ""
@@ -16821,7 +17955,7 @@ msgstr ""
 "редактирането? (текущите редакции ще се отменят при отказ!): „y“ (да)/ "
 "„n“ (не)? "
 
-#: git-add--interactive.perl:1215
+#: git-add--interactive.perl:1222
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -16835,7 +17969,7 @@ msgstr ""
 "a — добавяне на това и всички следващи парчета от файла в индекса\n"
 "d — без добавяне на това и всички следващи парчета от файла в индекса"
 
-#: git-add--interactive.perl:1221
+#: git-add--interactive.perl:1228
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -16849,7 +17983,7 @@ msgstr ""
 "a — скатаване на това и всички следващи парчета от файла\n"
 "d — без скатаване на това и всички следващи парчета от файла"
 
-#: git-add--interactive.perl:1227
+#: git-add--interactive.perl:1234
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -16863,7 +17997,7 @@ msgstr ""
 "a — изваждане на това и всички следващи парчета от файла от индекса\n"
 "d — без изваждане на това и всички следващи парчета от файла от индекса"
 
-#: git-add--interactive.perl:1233
+#: git-add--interactive.perl:1240
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -16877,7 +18011,7 @@ msgstr ""
 "a — прилагане на това и всички следващи парчета от файла към индекса\n"
 "d — без прилагане на това и всички следващи парчета от файла към индекса"
 
-#: git-add--interactive.perl:1239
+#: git-add--interactive.perl:1246
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -16894,7 +18028,7 @@ msgstr ""
 "d — без премахване на това и всички следващи парчета от файла от работното "
 "дърво"
 
-#: git-add--interactive.perl:1245
+#: git-add--interactive.perl:1252
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -16911,7 +18045,7 @@ msgstr ""
 "d — без премахване на това и всички следващи парчета от файла от индекса и "
 "работното дърво"
 
-#: git-add--interactive.perl:1251
+#: git-add--interactive.perl:1258
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -16928,7 +18062,7 @@ msgstr ""
 "d — без прилагане на това и всички следващи парчета от файла от индекса и "
 "работното дърво"
 
-#: git-add--interactive.perl:1266
+#: git-add--interactive.perl:1273
 msgid ""
 "g - select a hunk to go to\n"
 "/ - search for a hunk matching the given regex\n"
@@ -16950,220 +18084,220 @@ msgstr ""
 "e — ръчно редактиране на текущото парче\n"
 "? — извеждане не помощта\n"
 
-#: git-add--interactive.perl:1297
+#: git-add--interactive.perl:1304
 msgid "The selected hunks do not apply to the index!\n"
 msgstr "Избраните парчета не могат да се добавят в индекса!\n"
 
-#: git-add--interactive.perl:1298
+#: git-add--interactive.perl:1305
 msgid "Apply them to the worktree anyway? "
 msgstr "Да се приложат ли към работното дърво? "
 
-#: git-add--interactive.perl:1301
+#: git-add--interactive.perl:1308
 msgid "Nothing was applied.\n"
 msgstr "Нищо не е приложено.\n"
 
-#: git-add--interactive.perl:1312
+#: git-add--interactive.perl:1319
 #, perl-format
 msgid "ignoring unmerged: %s\n"
 msgstr "пренебрегване на неслятото: „%s“\n"
 
-#: git-add--interactive.perl:1321
+#: git-add--interactive.perl:1328
 msgid "Only binary files changed.\n"
 msgstr "Само двоични файлове са променени.\n"
 
-#: git-add--interactive.perl:1323
+#: git-add--interactive.perl:1330
 msgid "No changes.\n"
 msgstr "Няма промени.\n"
 
-#: git-add--interactive.perl:1331
+#: git-add--interactive.perl:1338
 msgid "Patch update"
 msgstr "Обновяване на кръпка"
 
-#: git-add--interactive.perl:1383
+#: git-add--interactive.perl:1390
 #, perl-format
 msgid "Stage mode change [y,n,q,a,d%s,?]? "
 msgstr "Добавяне на промяната на правата за достъп [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1384
+#: git-add--interactive.perl:1391
 #, perl-format
 msgid "Stage deletion [y,n,q,a,d%s,?]? "
 msgstr "Добавяне на изтриването [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1385
+#: git-add--interactive.perl:1392
 #, perl-format
 msgid "Stage this hunk [y,n,q,a,d%s,?]? "
 msgstr "Добавяне на това парче [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1388
+#: git-add--interactive.perl:1395
 #, perl-format
 msgid "Stash mode change [y,n,q,a,d%s,?]? "
 msgstr "Скатаване на промяната на правата за достъп [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1389
+#: git-add--interactive.perl:1396
 #, perl-format
 msgid "Stash deletion [y,n,q,a,d%s,?]? "
 msgstr "Скатаване на изтриването [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1390
+#: git-add--interactive.perl:1397
 #, perl-format
 msgid "Stash this hunk [y,n,q,a,d%s,?]? "
 msgstr "Скатаване на това парче [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1393
+#: git-add--interactive.perl:1400
 #, perl-format
 msgid "Unstage mode change [y,n,q,a,d%s,?]? "
 msgstr "Изваждане на промяната на правата за достъп [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1394
+#: git-add--interactive.perl:1401
 #, perl-format
 msgid "Unstage deletion [y,n,q,a,d%s,?]? "
 msgstr "Изваждане на изтриването [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1395
+#: git-add--interactive.perl:1402
 #, perl-format
 msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
 msgstr "Изваждане на това парче [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1398
+#: git-add--interactive.perl:1405
 #, perl-format
 msgid "Apply mode change to index [y,n,q,a,d%s,?]? "
 msgstr ""
 "Прилагане на промяната на правата за достъп към индекса [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1399
+#: git-add--interactive.perl:1406
 #, perl-format
 msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
 msgstr "Прилагане на изтриването към индекса [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1400
+#: git-add--interactive.perl:1407
 #, perl-format
 msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
 msgstr "Прилагане на това парче към индекса [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1403
+#: git-add--interactive.perl:1410
 #, perl-format
 msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Премахване на промяната в правата за достъп от работното дърво [y,n,q,a,d"
 "%s,?]? "
 
-#: git-add--interactive.perl:1404
+#: git-add--interactive.perl:1411
 #, perl-format
 msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
 msgstr "Премахване на изтриването от работното дърво [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1405
+#: git-add--interactive.perl:1412
 #, perl-format
 msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
 msgstr "Премахване на парчето от работното дърво [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1408
+#: git-add--interactive.perl:1415
 #, perl-format
 msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Премахване на промяната в правата за достъп от индекса и работното дърво [y,"
 "n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1409
+#: git-add--interactive.perl:1416
 #, perl-format
 msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Премахване на изтриването от индекса и работното дърво [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1410
+#: git-add--interactive.perl:1417
 #, perl-format
 msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Премахване на парчето от индекса и работното дърво [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1413
+#: git-add--interactive.perl:1420
 #, perl-format
 msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Прилагане на промяната в правата за достъп от индекса и работното дърво [y,n,"
 "q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1414
+#: git-add--interactive.perl:1421
 #, perl-format
 msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 "Прилагане на изтриването от индекса и работното дърво [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1415
+#: git-add--interactive.perl:1422
 #, perl-format
 msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Прилагане на парчето от индекса и работното дърво [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1515
+#: git-add--interactive.perl:1522
 msgid "No other hunks to goto\n"
 msgstr "Няма други парчета\n"
 
-#: git-add--interactive.perl:1522
+#: git-add--interactive.perl:1529
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "към кое парче да се придвижи (за повече варианти натиснете „enter“)? "
 
-#: git-add--interactive.perl:1524
+#: git-add--interactive.perl:1531
 msgid "go to which hunk? "
 msgstr "към кое парче да се придвижи? "
 
-#: git-add--interactive.perl:1533
+#: git-add--interactive.perl:1540
 #, perl-format
 msgid "Invalid number: '%s'\n"
 msgstr "Неправилен номер: „%s“\n"
 
-#: git-add--interactive.perl:1538
+#: git-add--interactive.perl:1545
 #, 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:1564
+#: git-add--interactive.perl:1571
 msgid "No other hunks to search\n"
 msgstr "Няма други парчета за търсене\n"
 
-#: git-add--interactive.perl:1568
+#: git-add--interactive.perl:1575
 msgid "search for regex? "
 msgstr "да се търси с регулярен израз? "
 
-#: git-add--interactive.perl:1581
+#: git-add--interactive.perl:1588
 #, perl-format
 msgid "Malformed search regexp %s: %s\n"
 msgstr "Сгрешен регулярен израз „%s“: %s\n"
 
-#: git-add--interactive.perl:1591
+#: git-add--interactive.perl:1598
 msgid "No hunk matches the given pattern\n"
 msgstr "Никое парче не напасва на регулярния израз\n"
 
-#: git-add--interactive.perl:1603 git-add--interactive.perl:1625
+#: git-add--interactive.perl:1610 git-add--interactive.perl:1632
 msgid "No previous hunk\n"
 msgstr "Няма друго парче преди това\n"
 
-#: git-add--interactive.perl:1612 git-add--interactive.perl:1631
+#: git-add--interactive.perl:1619 git-add--interactive.perl:1638
 msgid "No next hunk\n"
 msgstr "Няма друго парче след това\n"
 
-#: git-add--interactive.perl:1637
+#: git-add--interactive.perl:1644
 msgid "Sorry, cannot split this hunk\n"
 msgstr "Това парче не може да бъде разделено\n"
 
-#: git-add--interactive.perl:1643
+#: git-add--interactive.perl:1650
 #, 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:1653
+#: git-add--interactive.perl:1660
 msgid "Sorry, cannot edit this hunk\n"
 msgstr "Това парче не може да бъде редактирано\n"
 
-#: git-add--interactive.perl:1699
+#: git-add--interactive.perl:1706
 msgid "Review diff"
 msgstr "Преглед на разликата"
 
 #. TRANSLATORS: please do not translate the command names
 #. 'status', 'update', 'revert', etc.
-#: git-add--interactive.perl:1718
+#: git-add--interactive.perl:1725
 msgid ""
 "status        - show paths with changes\n"
 "update        - add working tree state to the staged set of changes\n"
@@ -17184,18 +18318,18 @@ msgstr ""
 "                и индекса\n"
 "add untracked — добавяне на неследените файлове към промените в индекса\n"
 
-#: git-add--interactive.perl:1735 git-add--interactive.perl:1740
-#: git-add--interactive.perl:1743 git-add--interactive.perl:1750
-#: git-add--interactive.perl:1754 git-add--interactive.perl:1760
+#: git-add--interactive.perl:1742 git-add--interactive.perl:1747
+#: git-add--interactive.perl:1750 git-add--interactive.perl:1757
+#: git-add--interactive.perl:1761 git-add--interactive.perl:1767
 msgid "missing --"
 msgstr "„--“ липсва"
 
-#: git-add--interactive.perl:1756
+#: git-add--interactive.perl:1763
 #, perl-format
 msgid "unknown --patch mode: %s"
 msgstr "неизвестна стратегия за прилагане на кръпка: „%s“"
 
-#: git-add--interactive.perl:1762 git-add--interactive.perl:1768
+#: git-add--interactive.perl:1769 git-add--interactive.perl:1775
 #, perl-format
 msgid "invalid argument %s, expecting --"
 msgstr "указан е неправилен аргумент „%s“, а се очаква „--“."
@@ -17418,7 +18552,7 @@ msgstr ""
 msgid "CA path \"%s\" does not exist"
 msgstr "Пътят към сертификат „%s“ не съществува."
 
-#: git-send-email.perl:1395
+#: git-send-email.perl:1400
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -17443,134 +18577,135 @@ msgstr ""
 "    „git config --global sendemail.confirm auto“.\n"
 "\n"
 
-#. TRANSLATORS: Make sure to include [y] [n] [q] [a] in your
+#. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1410
-msgid "Send this email? ([y]es|[n]o|[q]uit|[a]ll): "
+#: git-send-email.perl:1415
+msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
 msgstr ""
-"Изпращане на е-писмото? „y“ (да), „n“ (не), „q“ (изход), „a“ (всичко): "
+"Изпращане на е-писмото? „y“ (да), „n“ (не), „e“ (редактиране), „q“ (изход), "
+"„a“ (всичко): "
 
-#: git-send-email.perl:1413
+#: git-send-email.perl:1418
 msgid "Send this email reply required"
 msgstr "Изискване на отговор към това е-писмо"
 
-#: git-send-email.perl:1439
+#: git-send-email.perl:1446
 msgid "The required SMTP server is not properly defined."
 msgstr "Сървърът за SMTP не е настроен правилно."
 
-#: git-send-email.perl:1486
+#: git-send-email.perl:1493
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
 msgstr "Сървърът не поддържа „STARTTLS“! %s"
 
-#: git-send-email.perl:1491 git-send-email.perl:1495
+#: git-send-email.perl:1498 git-send-email.perl:1502
 #, perl-format
 msgid "STARTTLS failed! %s"
 msgstr "Неуспешно изпълнение на STARTTLS! %s"
 
-#: git-send-email.perl:1505
+#: git-send-email.perl:1512
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
 msgstr ""
 "Подсистемата за SMTP не може да се инициализира.  Проверете настройките и "
 "използвайте опцията: „--smtp-debug“."
 
-#: git-send-email.perl:1523
+#: git-send-email.perl:1530
 #, perl-format
 msgid "Failed to send %s\n"
 msgstr "„%s“ не може да бъде изпратен\n"
 
-#: git-send-email.perl:1526
+#: git-send-email.perl:1533
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr "Проба за изпращане на „%s“\n"
 
-#: git-send-email.perl:1526
+#: git-send-email.perl:1533
 #, perl-format
 msgid "Sent %s\n"
 msgstr "Изпращане на „%s“\n"
 
-#: git-send-email.perl:1528
+#: git-send-email.perl:1535
 msgid "Dry-OK. Log says:\n"
 msgstr "Успех при пробата.  От журнала:\n"
 
-#: git-send-email.perl:1528
+#: git-send-email.perl:1535
 msgid "OK. Log says:\n"
 msgstr "Успех.  От журнала:\n"
 
-#: git-send-email.perl:1540
+#: git-send-email.perl:1547
 msgid "Result: "
 msgstr "Резултат: "
 
-#: git-send-email.perl:1543
+#: git-send-email.perl:1550
 msgid "Result: OK\n"
 msgstr "Резултат: успех\n"
 
-#: git-send-email.perl:1556
+#: git-send-email.perl:1568
 #, perl-format
 msgid "can't open file %s"
 msgstr "файлът „%s“ не може да бъде отворен"
 
-#: git-send-email.perl:1603 git-send-email.perl:1623
+#: git-send-email.perl:1615 git-send-email.perl:1635
 #, perl-format
 msgid "(mbox) Adding cc: %s from line '%s'\n"
 msgstr "(mbox) Добавяне на „як: %s“ от ред „%s“\n"
 
-#: git-send-email.perl:1609
+#: git-send-email.perl:1621
 #, perl-format
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) Добавяне на „до: %s“ от ред „%s“\n"
 
-#: git-send-email.perl:1657
+#: git-send-email.perl:1674
 #, perl-format
 msgid "(non-mbox) Adding cc: %s from line '%s'\n"
 msgstr "(не-mbox) Добавяне на „як: %s“ от ред „%s“\n"
 
-#: git-send-email.perl:1682
+#: git-send-email.perl:1699
 #, perl-format
 msgid "(body) Adding cc: %s from line '%s'\n"
 msgstr "(тяло) Добавяне на „як: %s“ от ред „%s“\n"
 
-#: git-send-email.perl:1788
+#: git-send-email.perl:1817
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) Не може да бъде се изпълни „%s“"
 
-#: git-send-email.perl:1795
+#: git-send-email.perl:1824
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) Добавяне на „%s: %s“ от: „%s“\n"
 
-#: git-send-email.perl:1799
+#: git-send-email.perl:1828
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) програмният канал не може да се затвори за изпълнението на „%s“"
 
-#: git-send-email.perl:1826
+#: git-send-email.perl:1855
 msgid "cannot send message as 7bit"
 msgstr "съобщението не може да се изпрати чрез 7 битови знаци"
 
-#: git-send-email.perl:1834
+#: git-send-email.perl:1863
 msgid "invalid transfer encoding"
 msgstr "неправилно кодиране за пренос"
 
-#: git-send-email.perl:1872 git-send-email.perl:1923 git-send-email.perl:1933
+#: git-send-email.perl:1901 git-send-email.perl:1952 git-send-email.perl:1962
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "„%s“ не може да се отвори: %s\n"
 
-#: git-send-email.perl:1875
+#: git-send-email.perl:1904
 #, perl-format
 msgid "%s: patch contains a line longer than 998 characters"
 msgstr "„%s“: кръпката съдържа ред с над 988 знака"
 
-#: git-send-email.perl:1891
+#: git-send-email.perl:1920
 #, 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:1895
+#: git-send-email.perl:1924
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "Наистина ли искате да изпратите „%s“? [y|N]: "
index 6bba189a0b8aa27c0af3fde2547a040e2a3a100a..495a6260644c187acf49fa09b3e8ae490243d34c 100644 (file)
--- a/po/ca.po
+++ b/po/ca.po
@@ -48,7 +48,7 @@ msgstr ""
 "Project-Id-Version: Git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
 "POT-Creation-Date: 2018-03-16 07:29+0800\n"
-"PO-Revision-Date: 2018-03-18 15:48+0100\n"
+"PO-Revision-Date: 2018-03-29 15:32+0200\n"
 "Last-Translator: Jordi Mas <jmas@softcatala.org>\n"
 "Language-Team: Catalan\n"
 "Language: ca\n"
@@ -189,17 +189,22 @@ msgstr "no s'ha pogut trobar el nom de fitxer en el pedaç a la línia %d"
 #, c-format
 msgid "git apply: bad git-diff - expected /dev/null, got %s on line %d"
 msgstr ""
-"git apply: git-diff incorrecte - s'esperava /dev/null, s'ha rebut %s en la línia %d"
+"git apply: git-diff incorrecte - s'esperava /dev/null, s'ha rebut %s en la "
+"línia %d"
 
 #: apply.c:948
 #, c-format
 msgid "git apply: bad git-diff - inconsistent new filename on line %d"
-msgstr "git apply: git-diff incorrecte - nom de fitxer nou inconsistent en la línia %d"
+msgstr ""
+"git apply: git-diff incorrecte - nom de fitxer nou inconsistent en la línia "
+"%d"
 
 #: apply.c:949
 #, c-format
 msgid "git apply: bad git-diff - inconsistent old filename on line %d"
-msgstr "git apply: git-diff incorrecte - nom de fitxer antic inconsistent en la línia %d"
+msgstr ""
+"git apply: git-diff incorrecte - nom de fitxer antic inconsistent en la "
+"línia %d"
 
 #: apply.c:954
 #, c-format
@@ -229,22 +234,23 @@ msgstr "fragment de pedaç sense capçalera a la línia %d: %.*s"
 #: apply.c:1562
 #, c-format
 msgid ""
-"git diff header lacks filename information when removing %d leading pathname component "
-"(line %d)"
+"git diff header lacks filename information when removing %d leading pathname "
+"component (line %d)"
 msgid_plural ""
-"git diff header lacks filename information when removing %d leading pathname components "
-"(line %d)"
+"git diff header lacks filename information when removing %d leading pathname "
+"components (line %d)"
 msgstr[0] ""
-"a la capçalera de git diff li manca informació de nom de fitxer en eliminar %d component "
-"de nom de camí inicial (línia %d)"
+"a la capçalera de git diff li manca informació de nom de fitxer en eliminar "
+"%d component de nom de camí inicial (línia %d)"
 msgstr[1] ""
-"a la capçalera de git diff li manca informació de nom de fitxer en eliminar %d "
-"components de nom de camí inicial (línia %d)"
+"a la capçalera de git diff li manca informació de nom de fitxer en eliminar "
+"%d components de nom de camí inicial (línia %d)"
 
 #: apply.c:1575
 #, c-format
 msgid "git diff header lacks filename information (line %d)"
-msgstr "a la capçalera de git diff li manca informació de nom de fitxer (línia %d)"
+msgstr ""
+"a la capçalera de git diff li manca informació de nom de fitxer (línia %d)"
 
 #: apply.c:1763
 msgid "new file depends on old contents"
@@ -338,12 +344,16 @@ msgstr "no es pot aplicar al revés un pedaç binari sense el tros revés a «%s
 #: apply.c:3149
 #, c-format
 msgid "cannot apply binary patch to '%s' without full index line"
-msgstr "no es pot aplicar un pedaç binari a «%s» sense la línia d'índex completa"
+msgstr ""
+"no es pot aplicar un pedaç binari a «%s» sense la línia d'índex completa"
 
 #: apply.c:3159
 #, c-format
-msgid "the patch applies to '%s' (%s), which does not match the current contents."
-msgstr "el pedaç s'aplica a «%s» (%s), el qual no coincideix amb els continguts actuals."
+msgid ""
+"the patch applies to '%s' (%s), which does not match the current contents."
+msgstr ""
+"el pedaç s'aplica a «%s» (%s), el qual no coincideix amb els continguts "
+"actuals."
 
 #: apply.c:3167
 #, c-format
@@ -363,7 +373,9 @@ msgstr "el pedaç binari no s'aplica a «%s»"
 #: apply.c:3204
 #, c-format
 msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)"
-msgstr "el pedaç binari a «%s» crea un resultat incorrecte (s'esperava %s, s'ha rebut %s)"
+msgstr ""
+"el pedaç binari a «%s» crea un resultat incorrecte (s'esperava %s, s'ha "
+"rebut %s)"
 
 #: apply.c:3225
 #, c-format
@@ -402,7 +414,8 @@ msgstr "%s: no coincideix amb l'índex"
 
 #: apply.c:3560
 msgid "repository lacks the necessary blob to fall back on 3-way merge."
-msgstr "al dipòsit li manca el blob necessari per a retrocedir a una fusió de 3 vies."
+msgstr ""
+"al dipòsit li manca el blob necessari per a retrocedir a una fusió de 3 vies."
 
 #: apply.c:3563
 #, c-format
@@ -491,7 +504,7 @@ msgstr "falta la informació sha1 o és inútil per al submòdul %s"
 #: apply.c:4087
 #, c-format
 msgid "mode change for %s, which is not in current HEAD"
-msgstr "canvi de mode per a %s, el qual no està en el HEAD actual"
+msgstr "canvi de mode per a %s, el qual no està en la HEAD actual"
 
 #: apply.c:4090
 #, c-format
@@ -531,7 +544,9 @@ msgstr "no s'ha pogut fer stat al fitxer novament creat «%s»"
 #: apply.c:4296
 #, c-format
 msgid "unable to create backing store for newly created file %s"
-msgstr "no s'ha pogut crear un magatzem de recolzament per al fitxer novament creat %s"
+msgstr ""
+"no s'ha pogut crear un magatzem de recolzament per al fitxer novament creat "
+"%s"
 
 #: apply.c:4302 apply.c:4446
 #, c-format
@@ -625,18 +640,21 @@ msgstr[1] "%d línies afegeixen errors d'espai en blanc."
 #, c-format
 msgid "%d line applied after fixing whitespace errors."
 msgid_plural "%d lines applied after fixing whitespace errors."
-msgstr[0] "S'ha aplicat %d línia després d'arreglar els errors d'espai en blanc."
-msgstr[1] "S'han aplicat %d línies després d'arreglar els errors d'espai en blanc."
+msgstr[0] ""
+"S'ha aplicat %d línia després d'arreglar els errors d'espai en blanc."
+msgstr[1] ""
+"S'han aplicat %d línies després d'arreglar els errors d'espai en blanc."
 
 #: apply.c:4894 builtin/add.c:539 builtin/mv.c:298 builtin/rm.c:390
 msgid "Unable to write new index file"
 msgstr "No s'ha pogut escriure un fitxer d'índex nou"
 
-#: apply.c:4921 apply.c:4924 builtin/am.c:2254 builtin/am.c:2257 builtin/clone.c:118
-#: builtin/fetch.c:127 builtin/pull.c:193 builtin/submodule--helper.c:403
-#: builtin/submodule--helper.c:1197 builtin/submodule--helper.c:1200
-#: builtin/submodule--helper.c:1567 builtin/submodule--helper.c:1570
-#: builtin/submodule--helper.c:1787 git-add--interactive.perl:197
+#: apply.c:4921 apply.c:4924 builtin/am.c:2254 builtin/am.c:2257
+#: builtin/clone.c:118 builtin/fetch.c:127 builtin/pull.c:193
+#: builtin/submodule--helper.c:403 builtin/submodule--helper.c:1197
+#: builtin/submodule--helper.c:1200 builtin/submodule--helper.c:1567
+#: builtin/submodule--helper.c:1570 builtin/submodule--helper.c:1787
+#: git-add--interactive.perl:197
 msgid "path"
 msgstr "camí"
 
@@ -654,7 +672,9 @@ msgstr "número"
 
 #: apply.c:4928
 msgid "remove <num> leading slashes from traditional diff paths"
-msgstr "elimina <nombre> barres obliqües inicials dels camins de diferència tradicionals"
+msgstr ""
+"elimina <nombre> barres obliqües inicials dels camins de diferència "
+"tradicionals"
 
 #: apply.c:4931
 msgid "ignore additions made by the patch"
@@ -662,7 +682,8 @@ msgstr "ignora afegiments fets pel pedaç"
 
 #: apply.c:4933
 msgid "instead of applying the patch, output diffstat for the input"
-msgstr "en lloc d'aplicar el pedaç, emet les estadístiques de diferència de l'entrada"
+msgstr ""
+"en lloc d'aplicar el pedaç, emet les estadístiques de diferència de l'entrada"
 
 #: apply.c:4937
 msgid "show number of added and deleted lines in decimal notation"
@@ -716,7 +737,8 @@ msgstr "acció"
 
 #: apply.c:4961
 msgid "detect new or modified lines that have whitespace errors"
-msgstr "detecta les línies noves o modificades que tinguin errors d'espai en blanc"
+msgstr ""
+"detecta les línies noves o modificades que tinguin errors d'espai en blanc"
 
 #: apply.c:4964 apply.c:4967
 msgid "ignore changes in whitespace when finding context"
@@ -738,9 +760,9 @@ msgstr "deixa els trossos rebutjats en fitxers *.rej corresponents"
 msgid "allow overlapping hunks"
 msgstr "permet trossos encavalcants"
 
-#: apply.c:4977 builtin/add.c:292 builtin/check-ignore.c:21 builtin/commit.c:1276
-#: builtin/count-objects.c:96 builtin/fsck.c:665 builtin/log.c:1901 builtin/mv.c:123
-#: builtin/read-tree.c:125
+#: apply.c:4977 builtin/add.c:292 builtin/check-ignore.c:21
+#: builtin/commit.c:1276 builtin/count-objects.c:96 builtin/fsck.c:665
+#: builtin/log.c:1901 builtin/mv.c:123 builtin/read-tree.c:125
 msgid "be verbose"
 msgstr "sigues detallat"
 
@@ -769,8 +791,11 @@ msgid "git archive --list"
 msgstr "git archive --list"
 
 #: archive.c:15
-msgid "git archive --remote <repo> [--exec <cmd>] [<options>] <tree-ish> [<path>...]"
-msgstr "git archive --remote <dipòsit> [--exec <ordre>] [<opcions>] <arbre> [<camí>...]"
+msgid ""
+"git archive --remote <repo> [--exec <cmd>] [<options>] <tree-ish> [<path>...]"
+msgstr ""
+"git archive --remote <dipòsit> [--exec <ordre>] [<opcions>] <arbre> "
+"[<camí>...]"
 
 #: archive.c:16
 msgid "git archive --remote <repo> [--exec <cmd>] --list"
@@ -800,7 +825,8 @@ msgstr "anteposa el prefix a cada nom de camí en l'arxiu"
 #: archive.c:439 builtin/blame.c:702 builtin/blame.c:703 builtin/config.c:62
 #: builtin/fast-export.c:1005 builtin/fast-export.c:1007 builtin/grep.c:869
 #: builtin/hash-object.c:103 builtin/ls-files.c:551 builtin/ls-files.c:554
-#: builtin/notes.c:405 builtin/notes.c:568 builtin/read-tree.c:120 parse-options.h:165
+#: builtin/notes.c:405 builtin/notes.c:568 builtin/read-tree.c:120
+#: parse-options.h:165
 msgid "file"
 msgstr "fitxer"
 
@@ -945,7 +971,8 @@ msgid ""
 "We continue anyway."
 msgstr ""
 "s'ha d'ometre la base de fusió entre %s i [%s].\n"
-"Llavors, no podem estar segurs que la primera comissió %s sigui entre %s i %s.\n"
+"Llavors, no podem estar segurs que la primera comissió %s sigui entre %s i "
+"%s.\n"
 "Continuem de totes maneres."
 
 #: bisect.c:810
@@ -1013,17 +1040,23 @@ msgstr "no es pot usar --contents amb el nom d'objecte de la comissió final"
 
 #: blame.c:1789
 msgid "--reverse and --first-parent together require specified latest commit"
-msgstr "--reverse i --first-parent-together requereixen una última comissió especificada"
+msgstr ""
+"--reverse i --first-parent-together requereixen una última comissió "
+"especificada"
 
-#: blame.c:1798 bundle.c:160 ref-filter.c:1978 sequencer.c:1699 sequencer.c:2901
-#: builtin/commit.c:976 builtin/log.c:366 builtin/log.c:920 builtin/log.c:1371
-#: builtin/log.c:1702 builtin/log.c:1950 builtin/merge.c:370 builtin/shortlog.c:191
+#: blame.c:1798 bundle.c:160 ref-filter.c:1978 sequencer.c:1699
+#: sequencer.c:2901 builtin/commit.c:976 builtin/log.c:366 builtin/log.c:920
+#: builtin/log.c:1371 builtin/log.c:1702 builtin/log.c:1950 builtin/merge.c:370
+#: builtin/shortlog.c:191
 msgid "revision walk setup failed"
 msgstr "la configuració del passeig per revisions ha fallat"
 
 #: blame.c:1816
-msgid "--reverse --first-parent together require range along first-parent chain"
-msgstr "--reverse --first-parent junts requereixen un rang de la cadena de mares primeres"
+msgid ""
+"--reverse --first-parent together require range along first-parent chain"
+msgstr ""
+"--reverse --first-parent junts requereixen un rang de la cadena de mares "
+"primeres"
 
 #: blame.c:1827
 #, c-format
@@ -1057,17 +1090,21 @@ msgstr "No s'està establint la branca %s com a la seva pròpia font."
 #, c-format
 msgid "Branch '%s' set up to track remote branch '%s' from '%s' by rebasing."
 msgstr ""
-"La branca «%s» està configurada per a seguir la branca remota «%s» de «%s» fent «rebase»."
+"La branca «%s» està configurada per a seguir la branca remota «%s» de «%s» "
+"fent «rebase»."
 
 #: branch.c:94
 #, c-format
 msgid "Branch '%s' set up to track remote branch '%s' from '%s'."
-msgstr "La branca «%s» està configurada per a seguir la branca remota «%s» de «%s»."
+msgstr ""
+"La branca «%s» està configurada per a seguir la branca remota «%s» de «%s»."
 
 #: branch.c:98
 #, c-format
 msgid "Branch '%s' set up to track local branch '%s' by rebasing."
-msgstr "La branca «%s» està configurada per a seguir la branca local «%s» fent «rebase»."
+msgstr ""
+"La branca «%s» està configurada per a seguir la branca local «%s» fent "
+"«rebase»."
 
 #: branch.c:99
 #, c-format
@@ -1078,18 +1115,21 @@ msgstr "La branca «%s» està configurada per a seguir la branca local «%s»."
 #, c-format
 msgid "Branch '%s' set up to track remote ref '%s' by rebasing."
 msgstr ""
-"La branca «%s» està configurada per a seguir la referència remota «%s» fent «rebase»."
+"La branca «%s» està configurada per a seguir la referència remota «%s» fent "
+"«rebase»."
 
 #: branch.c:105
 #, c-format
 msgid "Branch '%s' set up to track remote ref '%s'."
-msgstr "La branca «%s» està configurada per a seguir la referència remota «%s»."
+msgstr ""
+"La branca «%s» està configurada per a seguir la referència remota «%s»."
 
 #: branch.c:109
 #, c-format
 msgid "Branch '%s' set up to track local ref '%s' by rebasing."
 msgstr ""
-"La branca «%s» està configurada per a seguir la referència local «%s» fent «rebase»."
+"La branca «%s» està configurada per a seguir la referència local «%s» fent "
+"«rebase»."
 
 #: branch.c:110
 #, c-format
@@ -1123,7 +1163,8 @@ msgstr "No es pot actualitzar la branca actual a la força."
 #, c-format
 msgid "Cannot setup tracking information; starting point '%s' is not a branch."
 msgstr ""
-"No es pot configurar la informació de seguiment; el punt inicial «%s» no és una branca."
+"No es pot configurar la informació de seguiment; el punt inicial «%s» no és "
+"una branca."
 
 #: branch.c:235
 #, c-format
@@ -1253,8 +1294,8 @@ msgstr "L'index-pack s'ha mort"
 msgid "invalid color value: %.*s"
 msgstr "valor de color no vàlid: %.*s"
 
-#: commit.c:41 sequencer.c:2141 builtin/am.c:421 builtin/am.c:465 builtin/am.c:1436
-#: builtin/am.c:2072
+#: commit.c:41 sequencer.c:2141 builtin/am.c:421 builtin/am.c:465
+#: builtin/am.c:1436 builtin/am.c:2072
 #, c-format
 msgid "could not parse %s"
 msgstr "no s'ha pogut analitzar %s"
@@ -1281,7 +1322,8 @@ msgstr "memòria esgotada"
 
 #: config.c:186
 msgid "relative config include conditionals must come from files"
-msgstr "els condicionals d'inclusió de configuració relatius han de venir de fitxers"
+msgstr ""
+"els condicionals d'inclusió de configuració relatius han de venir de fitxers"
 
 #: config.c:720
 #, c-format
@@ -1339,17 +1381,22 @@ msgstr "valor de configuració numèric «%s» erroni per «%s» en el fitxer %s
 #: config.c:885
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
-msgstr "valor de configuració numèric «%s» erroni per «%s» en l'entrada estàndard: %s"
+msgstr ""
+"valor de configuració numèric «%s» erroni per «%s» en l'entrada estàndard: %s"
 
 #: config.c:888
 #, 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 %s: %s"
+msgstr ""
+"valor de configuració numèric «%s» erroni' per «%s» en el blob de submòdul "
+"%s: %s"
 
 #: config.c:891
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
-msgstr "valor de configuració numèric «%s» erroni per «%s» en la línia d'ordres %s: %s"
+msgstr ""
+"valor de configuració numèric «%s» erroni per «%s» en la línia d'ordres %s: "
+"%s"
 
 #: config.c:894
 #, c-format
@@ -1398,7 +1445,8 @@ msgstr "%s no vàlid: «%s»"
 #, c-format
 msgid "unknown core.untrackedCache value '%s'; using 'keep' default value"
 msgstr ""
-"valor «%s» a core.untrackedCache desconegut; utilitzant el valor per defecte «keep»"
+"valor «%s» a core.untrackedCache desconegut; utilitzant el valor per defecte "
+"«keep»"
 
 #: config.c:2170
 #, c-format
@@ -1479,8 +1527,8 @@ msgid ""
 "The file will have its original line endings in your working directory."
 msgstr ""
 "LF reemplaçarà CRLF en %s.\n"
-"El fitxer tindrà els seus terminadors de línia originals en el vostre directori de "
-"treball."
+"El fitxer tindrà els seus terminadors de línia originals en el vostre "
+"directori de treball."
 
 #: convert.c:215
 #, c-format
@@ -1494,8 +1542,8 @@ msgid ""
 "The file will have its original line endings in your working directory."
 msgstr ""
 "CRLF reemplaçarà LF en %s.\n"
-"El fitxer tindrà els seus terminadors de línia originals en el vostre directori de "
-"treball."
+"El fitxer tindrà els seus terminadors de línia originals en el vostre "
+"directori de treball."
 
 #: date.c:116
 msgid "in the future"
@@ -1582,7 +1630,9 @@ msgstr "l'opció «%s» requereix un valor"
 #: diff.c:152
 #, c-format
 msgid "  Failed to parse dirstat cut-off percentage '%s'\n"
-msgstr "  S'ha produït un error en analitzar el percentatge limitant de dirstat «%s»\n"
+msgstr ""
+"  S'ha produït un error en analitzar el percentatge limitant de dirstat "
+"«%s»\n"
 
 #: diff.c:157
 #, c-format
@@ -1591,15 +1641,17 @@ msgstr "  Paràmetre de dirstat desconegut «%s»\n"
 
 #: diff.c:281
 msgid ""
-"color moved setting must be one of 'no', 'default', 'zebra', 'dimmed_zebra', 'plain'"
+"color moved setting must be one of 'no', 'default', 'zebra', 'dimmed_zebra', "
+"'plain'"
 msgstr ""
-"el paràmetre de color en moviment ha de ser «no», «default», «zebra», «dimmed_zebra» o "
-"«plain»"
+"el paràmetre de color en moviment ha de ser «no», «default», «zebra», "
+"«dimmed_zebra» o «plain»"
 
 #: diff.c:341
 #, c-format
 msgid "Unknown value for 'diff.submodule' config variable: '%s'"
-msgstr "Valor desconegut de la variable de configuració de 'diff.submodule': «%s»"
+msgstr ""
+"Valor desconegut de la variable de configuració de 'diff.submodule': «%s»"
 
 #: diff.c:401
 #, c-format
@@ -1639,7 +1691,8 @@ msgstr ""
 #: diff.c:4417
 #, c-format
 msgid "Failed to parse --submodule option parameter: '%s'"
-msgstr "S'ha produït un error en analitzar el paràmetre d'opció de --submodule: «%s»"
+msgstr ""
+"S'ha produït un error en analitzar el paràmetre d'opció de --submodule: «%s»"
 
 #: diff.c:5493
 msgid "inexact rename detection was skipped due to too many files."
@@ -1647,13 +1700,16 @@ msgstr "s'ha omès la detecció de canvi de nom a causa de massa fitxers."
 
 #: diff.c:5496
 msgid "only found copies from modified paths due to too many files."
-msgstr "només s'han trobat còpies des de camins modificats a causa de massa fitxers."
+msgstr ""
+"només s'han trobat còpies des de camins modificats a causa de massa fitxers."
 
 #: diff.c:5499
 #, c-format
-msgid "you may want to set your %s variable to at least %d and retry the command."
+msgid ""
+"you may want to set your %s variable to at least %d and retry the command."
 msgstr ""
-"potser voleu establir la vostra variable %s a almenys %d i tornar a intentar l'ordre."
+"potser voleu establir la vostra variable %s a almenys %d i tornar a intentar "
+"l'ordre."
 
 #: dir.c:1866
 #, c-format
@@ -1666,7 +1722,8 @@ msgstr "s'ha produït un error en obtenir el nombre i la informació del nucli"
 
 #: dir.c:2232
 msgid "Untracked cache is disabled on this system or location."
-msgstr "La memòria cau no seguida està inhabilitada en aquest sistema o ubicació."
+msgstr ""
+"La memòria cau no seguida està inhabilitada en aquest sistema o ubicació."
 
 #: dir.c:3024 dir.c:3029
 #, c-format
@@ -1905,7 +1962,8 @@ msgstr "ignora el color no vàlid «%.*s» en log.graphColors"
 msgid "'%s': unable to read %s"
 msgstr "«%s»: no s'ha pogut llegir %s"
 
-#: grep.c:2039 setup.c:163 builtin/clone.c:407 builtin/diff.c:81 builtin/rm.c:134
+#: grep.c:2039 setup.c:163 builtin/clone.c:407 builtin/diff.c:81
+#: builtin/rm.c:134
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "s'ha produït un error en fer stat a «%s»"
@@ -1926,7 +1984,8 @@ msgstr "ordres de git disponibles d'altres llocs en el vostre $PATH"
 
 #: help.c:217
 msgid "These are common Git commands used in various situations:"
-msgstr "Aquestes són ordres del Git habitualment usades en diverses situacions:"
+msgstr ""
+"Aquestes són ordres del Git habitualment usades en diverses situacions:"
 
 #: help.c:281
 #, c-format
@@ -1944,7 +2003,8 @@ msgstr "Ai. El vostre sistema no informa de cap ordre de Git."
 #: help.c:358
 #, c-format
 msgid "WARNING: You called a Git command named '%s', which does not exist."
-msgstr "ADVERTÈNCIA: Heu invocat una ordre de Git amb nom «%s», la qual no existeix."
+msgstr ""
+"ADVERTÈNCIA: Heu invocat una ordre de Git amb nom «%s», la qual no existeix."
 
 #: help.c:363
 #, c-format
@@ -1954,7 +2014,8 @@ msgstr "El procés continuarà, pressuposant que volíeu dir «%s»."
 #: help.c:368
 #, c-format
 msgid "Continuing in %0.1f seconds, assuming that you meant '%s'."
-msgstr "El procés continuarà en %0.1f segons, pressuposant que volíeu dir «%s»."
+msgstr ""
+"El procés continuarà en %0.1f segons, pressuposant que volíeu dir «%s»."
 
 #: help.c:376
 #, c-format
@@ -2026,17 +2087,20 @@ msgstr ""
 #: ident.c:366
 msgid "no email was given and auto-detection is disabled"
 msgstr ""
-"no s'ha proporcionat cap adreça electrònica i la detecció automàtica està inhabilitada"
+"no s'ha proporcionat cap adreça electrònica i la detecció automàtica està "
+"inhabilitada"
 
 #: ident.c:371
 #, c-format
 msgid "unable to auto-detect email address (got '%s')"
 msgstr ""
-"no s'ha pogut detectar automàticament una adreça electrònica vàlida (s'ha rebut «%s»)"
+"no s'ha pogut detectar automàticament una adreça electrònica vàlida (s'ha "
+"rebut «%s»)"
 
 #: ident.c:381
 msgid "no name was given and auto-detection is disabled"
-msgstr "no s'ha proporcionat cap nom i la detecció automàtica està inhabilitada"
+msgstr ""
+"no s'ha proporcionat cap nom i la detecció automàtica està inhabilitada"
 
 #: ident.c:387
 #, c-format
@@ -2168,35 +2232,39 @@ msgstr "No s'ha pogut afegir %s a la base de dades"
 
 #: merge-recursive.c:1146
 #, c-format
-msgid "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left in tree."
+msgid ""
+"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
+"in tree."
 msgstr ""
-"CONFLICTE: (%s/supressió): %s suprimit en %s i %s en %s. La versió %s de %s s'ha deixat "
-"en l'arbre."
+"CONFLICTE: (%s/supressió): %s suprimit en %s i %s en %s. La versió %s de %s "
+"s'ha deixat en l'arbre."
 
 #: merge-recursive.c:1151
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s left in tree."
+"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
+"left in tree."
 msgstr ""
-"CONFLICTE: (%s/supressió): %s suprimit en %s i %s a %s en %s. La versió %s de %s s'ha "
-"deixat en l'arbre."
+"CONFLICTE: (%s/supressió): %s suprimit en %s i %s a %s en %s. La versió %s "
+"de %s s'ha deixat en l'arbre."
 
 #: merge-recursive.c:1158
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left in tree at %s."
+"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
+"in tree at %s."
 msgstr ""
-"CONFLICTE: (%s/supressió): %s suprimit en %s i %s en %s. La versió %s de %s s'ha deixat "
-"en l'arbre a %s."
+"CONFLICTE: (%s/supressió): %s suprimit en %s i %s en %s. La versió %s de %s "
+"s'ha deixat en l'arbre a %s."
 
 #: merge-recursive.c:1163
 #, c-format
 msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s left in tree "
-"at %s."
+"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
+"left in tree at %s."
 msgstr ""
-"CONFLICTE: (%s/supressió): %s suprimit en %s i %s a %s en %s. La versió %s de %s s'ha "
-"deixat en l'arbre a %s."
+"CONFLICTE: (%s/supressió): %s suprimit en %s i %s a %s en %s. La versió %s "
+"de %s s'ha deixat en l'arbre a %s."
 
 #: merge-recursive.c:1197
 msgid "rename"
@@ -2214,11 +2282,11 @@ msgstr "%s és un directori en %s; s'està afegint com a %s en lloc d'això"
 #: merge-recursive.c:1279
 #, c-format
 msgid ""
-"CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s\"->\"%s\" "
-"in \"%s\"%s"
+"CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
+"\"->\"%s\" in \"%s\"%s"
 msgstr ""
-"CONFLICTE (canvi de nom/canvi de nom): Canvi de nom \"%s\"->\"%s\" en la branca \"%s\" "
-"canvi de nom \"%s\"->\"%s\" en \"%s\"%s"
+"CONFLICTE (canvi de nom/canvi de nom): Canvi de nom \"%s\"->\"%s\" en la "
+"branca \"%s\" canvi de nom \"%s\"->\"%s\" en \"%s\"%s"
 
 #: merge-recursive.c:1284
 msgid " (left unresolved)"
@@ -2228,8 +2296,8 @@ msgstr " (deixat sense resolució)"
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
 msgstr ""
-"CONFLICTE (canvi de nom/canvi de nom): Canvi de nom %s->%s en %s. Canvi de nom %s->%s en "
-"%s"
+"CONFLICTE (canvi de nom/canvi de nom): Canvi de nom %s->%s en %s. Canvi de "
+"nom %s->%s en %s"
 
 #: merge-recursive.c:1379
 #, c-format
@@ -2239,7 +2307,9 @@ msgstr "S'està canviant el nom de %s a %s i %s a %s en lloc d'això"
 #: merge-recursive.c:1582
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s. %s added in %s"
-msgstr "CONFLICTE (canvi de nom/afegiment): Canvi de nom %s->%s en %s. %s afegit en %s"
+msgstr ""
+"CONFLICTE (canvi de nom/afegiment): Canvi de nom %s->%s en %s. %s afegit en "
+"%s"
 
 #: merge-recursive.c:1597
 #, c-format
@@ -2312,7 +2382,9 @@ msgstr "directori/fitxer"
 #: merge-recursive.c:1938
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
-msgstr "CONFLICTE (%s): Hi ha un directori amb nom %s en %s. S'està afegint %s com a %s"
+msgstr ""
+"CONFLICTE (%s): Hi ha un directori amb nom %s en %s. S'està afegint %s com a "
+"%s"
 
 #: merge-recursive.c:1947
 #, c-format
@@ -2361,12 +2433,12 @@ msgstr "No s'ha pogut escriure l'índex."
 #, c-format
 msgid ""
 "You have not concluded your previous notes merge (%s exists).\n"
-"Please, use 'git notes merge --commit' or 'git notes merge --abort' to commit/abort the "
-"previous merge before you start a new notes merge."
+"Please, use 'git notes merge --commit' or 'git notes merge --abort' to "
+"commit/abort the previous merge before you start a new notes merge."
 msgstr ""
 "No heu acabat la vostra fusió de notes prèvia (%s existeix).\n"
-"Useu «git notes merge --commit» o «git notes merge --abort» per a cometre/avortar la "
-"fusió prèvia abans de començar una fusió de notes nova."
+"Useu «git notes merge --commit» o «git notes merge --abort» per a cometre/"
+"avortar la fusió prèvia abans de començar una fusió de notes nova."
 
 #: notes-merge.c:279
 #, c-format
@@ -2408,12 +2480,14 @@ msgstr "desplaçament abans de la fi del fitxer de paquet (.idx trencat?)"
 #: packfile.c:1694
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
-msgstr "desplaçament abans d'inici d'índex de paquet per a %s (índex corromput?)"
+msgstr ""
+"desplaçament abans d'inici d'índex de paquet per a %s (índex corromput?)"
 
 #: packfile.c:1698
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
-msgstr "desplaçament més enllà de la fi d'índex de paquet per a %s (índex truncat?)"
+msgstr ""
+"desplaçament més enllà de la fi d'índex de paquet per a %s (índex truncat?)"
 
 #: parse-options.c:619
 msgid "..."
@@ -2454,8 +2528,8 @@ msgstr "No s'ha pogut fer %s escrivible pel grup"
 #: pathspec.c:129
 msgid "Escape character '\\' not allowed as last character in attr value"
 msgstr ""
-"El caràcter d'escapament '\\' no està permès com a últim caràcter en un valor d'un "
-"atribut"
+"El caràcter d'escapament '\\' no està permès com a últim caràcter en un "
+"valor d'un atribut"
 
 #: pathspec.c:147
 msgid "Only one 'attr:' specification is allowed."
@@ -2472,14 +2546,17 @@ msgstr "nom d'atribut no vàlid %s"
 
 #: pathspec.c:258
 msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
-msgstr "els paràmetres d'especificació de camí 'glob' i 'noglob' globals són incompatibles"
+msgstr ""
+"els paràmetres d'especificació de camí 'glob' i 'noglob' globals són "
+"incompatibles"
 
 #: pathspec.c:265
 msgid ""
-"global 'literal' pathspec setting is incompatible with all other global pathspec settings"
+"global 'literal' pathspec setting is incompatible with all other global "
+"pathspec settings"
 msgstr ""
-"el paràmetre d'especificació de camí 'literal' global és incompatible amb tots els "
-"altres paràmetres d'especificació de camí globals"
+"el paràmetre d'especificació de camí 'literal' global és incompatible amb "
+"tots els altres paràmetres d'especificació de camí globals"
 
 #: pathspec.c:305
 msgid "invalid parameter for pathspec magic 'prefix'"
@@ -2518,7 +2595,8 @@ msgstr "«%s» (mnemònic: '%c')"
 #: pathspec.c:525
 #, c-format
 msgid "%s: pathspec magic not supported by this command: %s"
-msgstr "%s: aquesta ordre no està admesa amb la màgia d'especificació de camí: %s"
+msgstr ""
+"%s: aquesta ordre no està admesa amb la màgia d'especificació de camí: %s"
 
 #: pathspec.c:592
 #, c-format
@@ -2581,7 +2659,8 @@ msgstr "no està permès actualitzar les referències en un entorn de quarantena
 msgid "could not remove reference %s"
 msgstr "no s'ha pogut eliminar la referència %s"
 
-#: refs/files-backend.c:1203 refs/packed-backend.c:1528 refs/packed-backend.c:1538
+#: refs/files-backend.c:1203 refs/packed-backend.c:1528
+#: refs/packed-backend.c:1538
 #, c-format
 msgid "could not delete reference %s: %s"
 msgstr "no s'ha pogut suprimir la referència %s: %s"
@@ -2861,7 +2940,8 @@ msgstr "la branca font «%s» no s'emmagatzema com a branca amb seguiment remot"
 #: remote.c:1759
 #, c-format
 msgid "push destination '%s' on remote '%s' has no local tracking branch"
-msgstr "el destí de pujada «%s» en el remot «%s» no té cap branca amb seguiment remot"
+msgstr ""
+"el destí de pujada «%s» en el remot «%s» no té cap branca amb seguiment remot"
 
 #: remote.c:1771
 #, c-format
@@ -2919,11 +2999,14 @@ msgstr "  (useu \"git push\" per a publicar les vostres comissions locals)\n"
 #: remote.c:2159
 #, c-format
 msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
-msgid_plural "Your branch is behind '%s' by %d commits, and can be fast-forwarded.\n"
+msgid_plural ""
+"Your branch is behind '%s' by %d commits, and can be fast-forwarded.\n"
 msgstr[0] ""
-"La vostra branca està darrere de «%s» per %d comissió, i pot avançar-se ràpidament.\n"
+"La vostra branca està darrere de «%s» per %d comissió, i pot avançar-se "
+"ràpidament.\n"
 msgstr[1] ""
-"La vostra branca està darrere de «%s» per %d comissions, i pot avançar-se ràpidament.\n"
+"La vostra branca està darrere de «%s» per %d comissions, i pot avançar-se "
+"ràpidament.\n"
 
 #: remote.c:2167
 msgid "  (use \"git pull\" to update your local branch)\n"
@@ -2974,7 +3057,9 @@ msgstr ""
 
 #: send-pack.c:141
 msgid "unexpected flush packet while reading remote unpack status"
-msgstr "paquet de neteja no esperat quan estava llegint l'estat del desempaquetament remot"
+msgstr ""
+"paquet de neteja no esperat quan estava llegint l'estat del desempaquetament "
+"remot"
 
 #: send-pack.c:143
 #, c-format
@@ -2996,10 +3081,11 @@ msgstr "el destí receptor no admet pujar --signed"
 
 #: send-pack.c:423
 msgid ""
-"not sending a push certificate since the receiving end does not support --signed push"
+"not sending a push certificate since the receiving end does not support --"
+"signed push"
 msgstr ""
-"no s'està enviant una certificació de pujada perquè el destí receptor no admet pujar --"
-"signed"
+"no s'està enviant una certificació de pujada perquè el destí receptor no "
+"admet pujar --signed"
 
 #: send-pack.c:435
 msgid "the receiving end does not support --atomic push"
@@ -3054,8 +3140,8 @@ msgstr ""
 msgid "could not lock '%s'"
 msgstr "no s'ha pogut bloquejar «%s»"
 
-#: sequencer.c:349 sequencer.c:2124 sequencer.c:2250 sequencer.c:2264 sequencer.c:3246
-#: sequencer.c:3310 wrapper.c:656
+#: sequencer.c:349 sequencer.c:2124 sequencer.c:2250 sequencer.c:2264
+#: sequencer.c:3246 sequencer.c:3310 wrapper.c:656
 #, c-format
 msgid "could not write to '%s'"
 msgstr "no s'ha pogut escriure a «%s»"
@@ -3070,8 +3156,8 @@ msgstr "no s'ha pogut escriure el terminador de línia a «%s»"
 msgid "failed to finalize '%s'"
 msgstr "s'ha produït un error en finalitzar «%s»"
 
-#: sequencer.c:379 sequencer.c:1340 sequencer.c:2148 builtin/am.c:259 builtin/commit.c:722
-#: builtin/merge.c:1047
+#: sequencer.c:379 sequencer.c:1340 sequencer.c:2148 builtin/am.c:259
+#: builtin/commit.c:722 builtin/merge.c:1047
 #, c-format
 msgid "could not read '%s'"
 msgstr "no s'ha pogut llegir «%s»"
@@ -3123,7 +3209,8 @@ msgid ""
 "  git rebase --continue\n"
 msgstr ""
 "teniu canvis «staged» en el vostre arbre de treball\n"
-"Si aquests canvis estan pensats per fer «squash» a la comissió prèvia, executeu:\n"
+"Si aquests canvis estan pensats per fer «squash» a la comissió prèvia, "
+"executeu:\n"
 "\n"
 "  git commit --amend %s\n"
 "\n"
@@ -3338,7 +3425,8 @@ msgstr "la comissió %s no té pare %d"
 #: sequencer.c:1510
 #, c-format
 msgid "mainline was specified but commit %s is not a merge."
-msgstr "s'ha especificat la línia principal però la comissió %s no és una fusió."
+msgstr ""
+"s'ha especificat la línia principal però la comissió %s no és una fusió."
 
 #: sequencer.c:1516
 #, c-format
@@ -3656,8 +3744,11 @@ msgstr "llista per a fer inestable: «%s»"
 
 #: sequencer.c:3146
 #, c-format
-msgid "unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
-msgstr "No s'ha reconegut el paràmetre %s per rebase.missingCommitsCheck. S'està ignorant."
+msgid ""
+"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
+msgstr ""
+"No s'ha reconegut el paràmetre %s per rebase.missingCommitsCheck. S'està "
+"ignorant."
 
 #: sequencer.c:3212
 #, c-format
@@ -3665,7 +3756,8 @@ msgid ""
 "Warning: some commits may have been dropped accidentally.\n"
 "Dropped commits (newer to older):\n"
 msgstr ""
-"Advertència: pot ser que algunes comissions s'hagin descartat accidentalment.\n"
+"Advertència: pot ser que algunes comissions s'hagin descartat "
+"accidentalment.\n"
 "Les comissions descartades (més nova a més vella):\n"
 
 #: sequencer.c:3219
@@ -3673,24 +3765,30 @@ msgstr ""
 msgid ""
 "To avoid this message, use \"drop\" to explicitly remove a commit.\n"
 "\n"
-"Use 'git config rebase.missingCommitsCheck' to change the level of warnings.\n"
+"Use 'git config rebase.missingCommitsCheck' to change the level of "
+"warnings.\n"
 "The possible behaviours are: ignore, warn, error.\n"
 "\n"
 msgstr ""
-"Per a evitar aquest missatge, useu \"drop\" per a eliminar explícitament una comissió.\n"
+"Per a evitar aquest missatge, useu \"drop\" per a eliminar explícitament una "
+"comissió.\n"
 "\n"
-"Useu 'git config rebase.missingCommitsCheck' per a canviar el nivell d'advertències.\n"
+"Useu 'git config rebase.missingCommitsCheck' per a canviar el nivell "
+"d'advertències.\n"
 "Els comportaments possibles són: ignore, warn, error.\n"
 
 #: sequencer.c:3231
 #, c-format
 msgid ""
-"You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'.\n"
+"You can fix this with 'git rebase --edit-todo' and then run 'git rebase --"
+"continue'.\n"
 "Or you can abort the rebase with 'git rebase --abort'.\n"
 msgstr ""
-"Podeu arreglar això amb 'git rebase --edit-todo' i després 'git rebase --continue'.\n"
+"Podeu arreglar això amb 'git rebase --edit-todo' i després 'git rebase --"
+"continue'.\n"
 
-#: sequencer.c:3244 sequencer.c:3304 wrapper.c:225 wrapper.c:395 builtin/am.c:779
+#: sequencer.c:3244 sequencer.c:3304 wrapper.c:225 wrapper.c:395
+#: builtin/am.c:779
 #, c-format
 msgid "could not open '%s' for writing"
 msgstr "no s'ha pogut obrir «%s» per a escriptura"
@@ -3716,7 +3814,8 @@ msgid ""
 "Use 'git <command> -- <path>...' to specify paths that do not exist locally."
 msgstr ""
 "%s: no hi ha tal camí en l'arbre de treball.\n"
-"Useu 'git <ordre> -- <camí>...' per a especificar camins que no existeixin localment."
+"Useu 'git <ordre> -- <camí>...' per a especificar camins que no existeixin "
+"localment."
 
 #: setup.c:184
 #, c-format
@@ -3747,7 +3846,8 @@ msgstr ""
 
 #: setup.c:388
 msgid "unable to set up work tree using invalid config"
-msgstr "no s'ha configurar un arbre de treball utilitzant una configuració no vàlida"
+msgstr ""
+"no s'ha configurar un arbre de treball utilitzant una configuració no vàlida"
 
 #: setup.c:395
 msgid "this operation must be run in a work tree"
@@ -3837,8 +3937,8 @@ msgid ""
 "Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
 msgstr ""
 "no un dipòsit de git (ni cap pare fins al punt de muntatge %s)\n"
-"S'atura a la frontera de sistema de fitxers (GIT_DISCOVERY_ACROSS_FILESYSTEM no està "
-"establert)."
+"S'atura a la frontera de sistema de fitxers (GIT_DISCOVERY_ACROSS_FILESYSTEM "
+"no està establert)."
 
 #: setup.c:1172
 #, c-format
@@ -3846,8 +3946,10 @@ msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
 "The owner of files must always have read and write permissions."
 msgstr ""
-"hi ha un problema amb el valor de mode de fitxer core.sharedRepository (0%.3o).\n"
-"El propietari dels fitxers sempre ha de tenir permisos de lectura i escriptura."
+"hi ha un problema amb el valor de mode de fitxer core.sharedRepository "
+"(0%.3o).\n"
+"El propietari dels fitxers sempre ha de tenir permisos de lectura i "
+"escriptura."
 
 #: setup.c:1215
 msgid "open /dev/null or dup failed"
@@ -3869,7 +3971,8 @@ msgstr "el camí «%s» no existeix"
 #: sha1_file.c:618
 #, 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."
+msgstr ""
+"Encara no se suporta el dipòsit de referència «%s» com a agafament enllaçat."
 
 #: sha1_file.c:624
 #, c-format
@@ -3922,7 +4025,8 @@ msgstr ""
 #: submodule.c:96 submodule.c:130
 msgid "Cannot change unmerged .gitmodules, resolve merge conflicts first"
 msgstr ""
-"No es pot canviar un .gitmodules no fusionat, primer resoleu els conflictes de fusió"
+"No es pot canviar un .gitmodules no fusionat, primer resoleu els conflictes "
+"de fusió"
 
 #: submodule.c:100 submodule.c:134
 #, c-format
@@ -3984,15 +4088,19 @@ msgstr "el submòdul «%s» té l'índex brut"
 
 #: submodule.c:1878
 #, c-format
-msgid "relocate_gitdir for submodule '%s' with more than one worktree not supported"
-msgstr "no està admès relocate_gitdir per al submòdul «%s» amb més d'un arbre de treball"
+msgid ""
+"relocate_gitdir for submodule '%s' with more than one worktree not supported"
+msgstr ""
+"no està admès relocate_gitdir per al submòdul «%s» amb més d'un arbre de "
+"treball"
 
 #: submodule.c:1890 submodule.c:1946
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "no s'ha trobat el nom pel submòdul «%s»"
 
-#: submodule.c:1894 builtin/submodule--helper.c:1246 builtin/submodule--helper.c:1256
+#: submodule.c:1894 builtin/submodule--helper.c:1246
+#: builtin/submodule--helper.c:1256
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "no s'ha pogut crear el directori «%s»"
@@ -4040,7 +4148,8 @@ msgstr "valor no vàlid per a %s"
 msgid "running trailer command '%s' failed"
 msgstr "l'execució de l'ordre de remolc «%s» ha fallat"
 
-#: trailer.c:485 trailer.c:490 trailer.c:495 trailer.c:549 trailer.c:553 trailer.c:557
+#: trailer.c:485 trailer.c:490 trailer.c:495 trailer.c:549 trailer.c:553
+#: trailer.c:557
 #, c-format
 msgid "unknown value '%s' for key '%s'"
 msgstr "valor desconegut «%s» per a la clau «%s»"
@@ -4164,7 +4273,8 @@ msgid ""
 "Your local changes to the following files would be overwritten by checkout:\n"
 "%%sPlease commit your changes or stash them before you switch branches."
 msgstr ""
-"Els vostres canvis locals als fitxers següents se sobreescriurien per agafar:\n"
+"Els vostres canvis locals als fitxers següents se sobreescriurien per "
+"agafar:\n"
 "%%sCometeu els vostres canvis o feu «stash» abans de canviar de branca."
 
 #: unpack-trees.c:110
@@ -4173,7 +4283,8 @@ msgid ""
 "Your local changes to the following files would be overwritten by checkout:\n"
 "%%s"
 msgstr ""
-"Els vostres canvis locals als fitxers següents se sobreescriurien per agafar:\n"
+"Els vostres canvis locals als fitxers següents se sobreescriurien per "
+"agafar:\n"
 "%%s"
 
 #: unpack-trees.c:113
@@ -4182,7 +4293,8 @@ msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
 "%%sPlease commit your changes or stash them before you merge."
 msgstr ""
-"Els vostres canvis locals als fitxers següents se sobreescriurien per fusionar:\n"
+"Els vostres canvis locals als fitxers següents se sobreescriurien per "
+"fusionar:\n"
 "%%sCometeu els vostres canvis o feu «stash» abans de fusionar."
 
 #: unpack-trees.c:115
@@ -4191,7 +4303,8 @@ msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
 "%%s"
 msgstr ""
-"Els vostres canvis locals als fitxers següents se sobreescriurien per fusionar:\n"
+"Els vostres canvis locals als fitxers següents se sobreescriurien per "
+"fusionar:\n"
 "%%s"
 
 #: unpack-trees.c:118
@@ -4227,7 +4340,8 @@ msgid ""
 "The following untracked working tree files would be removed by checkout:\n"
 "%%sPlease move or remove them before you switch branches."
 msgstr ""
-"Els següents fitxers no seguits en l'arbre de treball s'eliminarien per agafar:\n"
+"Els següents fitxers no seguits en l'arbre de treball s'eliminarien per "
+"agafar:\n"
 "%%sMoveu-los o elimineu-los abans de canviar de branca."
 
 #: unpack-trees.c:131
@@ -4236,7 +4350,8 @@ msgid ""
 "The following untracked working tree files would be removed by checkout:\n"
 "%%s"
 msgstr ""
-"Els següents fitxers no seguits en l'arbre de treball s'eliminarien per agafar:\n"
+"Els següents fitxers no seguits en l'arbre de treball s'eliminarien per "
+"agafar:\n"
 "%%s"
 
 #: unpack-trees.c:134
@@ -4245,7 +4360,8 @@ msgid ""
 "The following untracked working tree files would be removed by merge:\n"
 "%%sPlease move or remove them before you merge."
 msgstr ""
-"Els següents fitxers no seguits en l'arbre de treball s'eliminarien per fusionar:\n"
+"Els següents fitxers no seguits en l'arbre de treball s'eliminarien per "
+"fusionar:\n"
 "%%sMoveu-los o elimineu-los abans de fusionar."
 
 #: unpack-trees.c:136
@@ -4254,7 +4370,8 @@ msgid ""
 "The following untracked working tree files would be removed by merge:\n"
 "%%s"
 msgstr ""
-"Els següents fitxers no seguits en l'arbre de treball s'eliminarien per fusionar:\n"
+"Els següents fitxers no seguits en l'arbre de treball s'eliminarien per "
+"fusionar:\n"
 "%%s"
 
 #: unpack-trees.c:139
@@ -4278,19 +4395,23 @@ msgstr ""
 #: unpack-trees.c:146
 #, c-format
 msgid ""
-"The following untracked working tree files would be overwritten by checkout:\n"
+"The following untracked working tree files would be overwritten by "
+"checkout:\n"
 "%%sPlease move or remove them before you switch branches."
 msgstr ""
-"Els següents fitxers no seguits en l'arbre de treball se sobreescriurien per agafar:\n"
+"Els següents fitxers no seguits en l'arbre de treball se sobreescriurien per "
+"agafar:\n"
 "%%sMoveu-los o elimineu-los abans de canviar de branca."
 
 #: unpack-trees.c:148
 #, c-format
 msgid ""
-"The following untracked working tree files would be overwritten by checkout:\n"
+"The following untracked working tree files would be overwritten by "
+"checkout:\n"
 "%%s"
 msgstr ""
-"Els següents fitxers no seguits en l'arbre de treball se sobreescriurien per agafar:\n"
+"Els següents fitxers no seguits en l'arbre de treball se sobreescriurien per "
+"agafar:\n"
 "%%s"
 
 #: unpack-trees.c:151
@@ -4299,7 +4420,8 @@ msgid ""
 "The following untracked working tree files would be overwritten by merge:\n"
 "%%sPlease move or remove them before you merge."
 msgstr ""
-"Els següents fitxers no seguits en l'arbre de treball se sobreescriurien per fusionar:\n"
+"Els següents fitxers no seguits en l'arbre de treball se sobreescriurien per "
+"fusionar:\n"
 "%%sMoveu-los o elimineu-los abans de fusionar."
 
 #: unpack-trees.c:153
@@ -4308,7 +4430,8 @@ msgid ""
 "The following untracked working tree files would be overwritten by merge:\n"
 "%%s"
 msgstr ""
-"Els següents fitxers no seguits en l'arbre de treball se sobreescriurien per fusionar:\n"
+"Els següents fitxers no seguits en l'arbre de treball se sobreescriurien per "
+"fusionar:\n"
 "%%s"
 
 #: unpack-trees.c:156
@@ -4317,7 +4440,8 @@ msgid ""
 "The following untracked working tree files would be overwritten by %s:\n"
 "%%sPlease move or remove them before you %s."
 msgstr ""
-"Els següents fitxers no seguits en l'arbre de treball se sobreescriurien per %s:\n"
+"Els següents fitxers no seguits en l'arbre de treball se sobreescriurien per "
+"%s:\n"
 "%%sMoveu-los o elimineu-los abans de %s."
 
 #: unpack-trees.c:158
@@ -4326,7 +4450,8 @@ msgid ""
 "The following untracked working tree files would be overwritten by %s:\n"
 "%%s"
 msgstr ""
-"Els següents fitxers no seguits en l'arbre de treball se sobreescriurien per %s:\n"
+"Els següents fitxers no seguits en l'arbre de treball se sobreescriurien per "
+"%s:\n"
 "%%s"
 
 #: unpack-trees.c:165
@@ -4340,27 +4465,30 @@ msgid ""
 "Cannot update sparse checkout: the following entries are not up to date:\n"
 "%s"
 msgstr ""
-"No es pot actualitzar l'agafament parcial: les entrades següents no estan al dia:\n"
+"No es pot actualitzar l'agafament parcial: les entrades següents no estan al "
+"dia:\n"
 "%s"
 
 #: unpack-trees.c:170
 #, c-format
 msgid ""
-"The following working tree files would be overwritten by sparse checkout update:\n"
+"The following working tree files would be overwritten by sparse checkout "
+"update:\n"
 "%s"
 msgstr ""
-"Els fitxers següents en l'arbre de treball se sobreescriurien per actualitzar "
-"l'agafament parcial:\n"
+"Els fitxers següents en l'arbre de treball se sobreescriurien per "
+"actualitzar l'agafament parcial:\n"
 "%s"
 
 #: unpack-trees.c:172
 #, c-format
 msgid ""
-"The following working tree files would be removed by sparse checkout update:\n"
+"The following working tree files would be removed by sparse checkout "
+"update:\n"
 "%s"
 msgstr ""
-"Els fitxers següents en l'arbre de treball s'eliminarien per actualitzar l'agafament "
-"parcial:\n"
+"Els fitxers següents en l'arbre de treball s'eliminarien per actualitzar "
+"l'agafament parcial:\n"
 "%s"
 
 #: unpack-trees.c:174
@@ -4445,8 +4573,8 @@ msgstr "«%s» no assenyala de tornada a «%s»"
 msgid "could not open '%s' for reading and writing"
 msgstr "no s'ha pogut obrir «%s» per a lectura i escriptura"
 
-#: wrapper.c:227 wrapper.c:397 builtin/am.c:320 builtin/am.c:770 builtin/am.c:862
-#: builtin/merge.c:1044
+#: wrapper.c:227 wrapper.c:397 builtin/am.c:320 builtin/am.c:770
+#: builtin/am.c:862 builtin/merge.c:1044
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "no s'ha pogut obrir «%s» per a lectura"
@@ -4479,7 +4607,9 @@ msgstr "  (useu \"git add <fitxer>...\" per a senyalar resolució)"
 
 #: wt-status.c:186 wt-status.c:190
 msgid "  (use \"git add/rm <file>...\" as appropriate to mark resolution)"
-msgstr "  (useu \"git add/rm <fitxer>...\" segons sigui apropiat per a senyalar resolució)"
+msgstr ""
+"  (useu \"git add/rm <fitxer>...\" segons sigui apropiat per a senyalar "
+"resolució)"
 
 #: wt-status.c:188
 msgid "  (use \"git rm <file>...\" to mark resolution)"
@@ -4502,19 +4632,22 @@ msgid "  (use \"git add/rm <file>...\" to update what will be committed)"
 msgstr "  (useu \"git add/rm <fitxer>...\" per a actualitzar què es cometrà)"
 
 #: wt-status.c:224
-msgid "  (use \"git checkout -- <file>...\" to discard changes in working directory)"
+msgid ""
+"  (use \"git checkout -- <file>...\" to discard changes in working directory)"
 msgstr ""
-"  (useu \"git checkout -- <fitxer>...\" per a descartar els canvis en el directori de "
-"treball)"
+"  (useu \"git checkout -- <fitxer>...\" per a descartar els canvis en el "
+"directori de treball)"
 
 #: wt-status.c:226
 msgid "  (commit or discard the untracked or modified content in submodules)"
-msgstr "  (cometeu o descarteu el contingut modificat o no seguit en els submòduls)"
+msgstr ""
+"  (cometeu o descarteu el contingut modificat o no seguit en els submòduls)"
 
 #: wt-status.c:238
 #, 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 qual es cometrà)"
+msgstr ""
+"  (useu \"git %s <fitxer>...\" per a incloure-ho en el qual es cometrà)"
 
 #: wt-status.c:253
 msgid "both deleted:"
@@ -4697,7 +4830,8 @@ msgstr "Actualment esteu fent «rebase»."
 
 #: wt-status.c:1306
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
-msgstr "  (arregleu els conflictes i després executeu \"git rebase --continue\")"
+msgstr ""
+"  (arregleu els conflictes i després executeu \"git rebase --continue\")"
 
 #: wt-status.c:1308
 msgid "  (use \"git rebase --skip\" to skip this patch)"
@@ -4709,13 +4843,16 @@ msgstr "  (useu \"git rebase --abort\" per a agafar la branca original)"
 
 #: wt-status.c:1316
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
-msgstr "  (tots els conflictes estan arreglats: executeu \"git rebase --continue\")"
+msgstr ""
+"  (tots els conflictes estan arreglats: executeu \"git rebase --continue\")"
 
 #: wt-status.c:1320
 #, c-format
-msgid "You are currently splitting a commit while rebasing branch '%s' on '%s'."
+msgid ""
+"You are currently splitting a commit while rebasing branch '%s' on '%s'."
 msgstr ""
-"Actualment esteu dividint una comissió mentre es fa «rebase» de la branca «%s» en «%s»."
+"Actualment esteu dividint una comissió mentre es fa «rebase» de la branca "
+"«%s» en «%s»."
 
 #: wt-status.c:1325
 msgid "You are currently splitting a commit during a rebase."
@@ -4724,14 +4861,15 @@ msgstr "Actualment esteu dividint una comissió durant un «rebase»."
 #: wt-status.c:1328
 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:1332
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr ""
-"Actualment esteu editant una comissió mentre es fa «rebase» de la branca «%s» en «%s»."
+"Actualment esteu editant una comissió mentre es fa «rebase» de la branca "
+"«%s» en «%s»."
 
 #: wt-status.c:1337
 msgid "You are currently editing a commit during a rebase."
@@ -4742,10 +4880,11 @@ msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr "  (useu \"git commit --amend\" per a esmenar la comissió actual)"
 
 #: wt-status.c:1342
-msgid "  (use \"git rebase --continue\" once you are satisfied with your changes)"
+msgid ""
+"  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr ""
-"  (useu \"git rebase --continue\" una vegada que estigueu satisfet amb els vostres "
-"canvis)"
+"  (useu \"git rebase --continue\" una vegada que estigueu satisfet amb els "
+"vostres canvis)"
 
 #: wt-status.c:1352
 #, c-format
@@ -4758,11 +4897,15 @@ msgstr "  (arregleu els conflictes i executeu \"git cherry-pick --continue\")"
 
 #: wt-status.c:1360
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
-msgstr "  (tots els conflictes estan arreglats: executeu \"git cherry-pick --continue\")"
+msgstr ""
+"  (tots els conflictes estan arreglats: executeu \"git cherry-pick --continue"
+"\")"
 
 #: wt-status.c:1362
 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 pick»)"
+msgstr ""
+"  (useu \"git cherry-pick --abort\" per a cancel·lar l'operació de «cherry "
+"pick»)"
 
 #: wt-status.c:1371
 #, c-format
@@ -4775,11 +4918,13 @@ msgstr "  (arregleu els conflictes i executeu \"git revert --continue\")"
 
 #: wt-status.c:1379
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
-msgstr "  (tots els conflictes estan arreglats: executeu \"git revert --continue\")"
+msgstr ""
+"  (tots els conflictes estan arreglats: executeu \"git revert --continue\")"
 
 #: wt-status.c:1381
 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:1392
 #, c-format
@@ -4862,7 +5007,8 @@ msgstr "Sense canvis"
 #: wt-status.c:1674
 #, 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:1677
 #, c-format
@@ -4871,10 +5017,12 @@ msgstr "no hi ha canvis afegits a cometre\n"
 
 #: wt-status.c:1680
 #, c-format
-msgid "nothing added to commit but untracked files present (use \"git add\" to track)\n"
+msgid ""
+"nothing added to commit but untracked files present (use \"git add\" to "
+"track)\n"
 msgstr ""
-"no hi ha res afegit a cometre però hi ha fitxers no seguits (useu \"git add\" per a "
-"seguir-los)\n"
+"no hi ha res afegit a cometre però hi ha fitxers no seguits (useu \"git add"
+"\" per a seguir-los)\n"
 
 #: wt-status.c:1683
 #, c-format
@@ -4885,7 +5033,8 @@ msgstr "no hi ha res afegit a cometre però hi ha fitxers no seguits\n"
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr ""
-"no hi ha res a cometre (creeu/copieu fitxers i useu \"git add\" per a seguir-los)\n"
+"no hi ha res a cometre (creeu/copieu fitxers i useu \"git add\" per a seguir-"
+"los)\n"
 
 #: wt-status.c:1689 wt-status.c:1694
 #, c-format
@@ -4895,7 +5044,8 @@ msgstr "no hi ha res a cometre\n"
 #: wt-status.c:1692
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
-msgstr "no hi ha res a cometre (useu -u per a mostrar els fitxers no seguits)\n"
+msgstr ""
+"no hi ha res a cometre (useu -u per a mostrar els fitxers no seguits)\n"
 
 #: wt-status.c:1696
 #, c-format
@@ -4997,11 +5147,12 @@ msgstr "No s'ha pogut aplicar «%s»"
 
 #: builtin/add.c:271
 msgid "The following paths are ignored by one of your .gitignore files:\n"
-msgstr "Els camins següents s'ignoren per un dels vostres fitxers .gitignore:\n"
+msgstr ""
+"Els camins següents s'ignoren per un dels vostres fitxers .gitignore:\n"
 
 #: builtin/add.c:291 builtin/clean.c:911 builtin/fetch.c:146 builtin/mv.c:124
-#: builtin/prune-packed.c:55 builtin/pull.c:207 builtin/push.c:541 builtin/remote.c:1333
-#: builtin/rm.c:242 builtin/send-pack.c:164
+#: builtin/prune-packed.c:55 builtin/pull.c:207 builtin/push.c:541
+#: builtin/remote.c:1333 builtin/rm.c:242 builtin/send-pack.c:164
 msgid "dry run"
 msgstr "marxa en sec"
 
@@ -5039,7 +5190,8 @@ msgstr "afegeix els canvis de tots els fitxers seguits i no seguits"
 
 #: builtin/add.c:304
 msgid "ignore paths removed in the working tree (same as --no-all)"
-msgstr "ignora els camins eliminats en l'arbre de treball (el mateix que --no-all)"
+msgstr ""
+"ignora els camins eliminats en l'arbre de treball (el mateix que --no-all)"
 
 #: builtin/add.c:306
 msgid "don't add, only refresh the index"
@@ -5051,7 +5203,8 @@ msgstr "només omet els fitxers que no es poden afegir a causa d'errors"
 
 #: builtin/add.c:308
 msgid "check if - even missing - files are ignored in dry run"
-msgstr "comproveu si els fitxers - fins i tot els absents - s'ignoren en marxa en sec"
+msgstr ""
+"comproveu si els fitxers - fins i tot els absents - s'ignoren en marxa en sec"
 
 #: builtin/add.c:309 builtin/update-index.c:964
 msgid "(+/-)x"
@@ -5134,8 +5287,9 @@ msgid "Maybe you wanted to say 'git add .'?\n"
 msgstr "Potser volíeu dir «git add .»?\n"
 
 #: builtin/add.c:449 builtin/check-ignore.c:177 builtin/checkout.c:280
-#: builtin/checkout.c:483 builtin/clean.c:958 builtin/commit.c:316 builtin/diff-tree.c:114
-#: builtin/mv.c:144 builtin/reset.c:241 builtin/rm.c:271 builtin/submodule--helper.c:326
+#: builtin/checkout.c:483 builtin/clean.c:958 builtin/commit.c:316
+#: builtin/diff-tree.c:114 builtin/mv.c:144 builtin/reset.c:241
+#: builtin/rm.c:271 builtin/submodule--helper.c:326
 msgid "index file corrupt"
 msgstr "fitxer d'índex malmès"
 
@@ -5208,12 +5362,15 @@ msgstr "Quan hàgiu resolt aquest problema, executeu \"%s --continue\"."
 #: builtin/am.c:1163
 #, 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:1164
 #, 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\"."
+msgstr ""
+"Per a restaurar la branca original i deixar d'apedaçar, executeu \"%s --abort"
+"\"."
 
 #: builtin/am.c:1271
 msgid "Patch is empty."
@@ -5231,7 +5388,9 @@ msgstr "no s'ha pogut analitzar la comissió %s"
 
 #: builtin/am.c:1554
 msgid "Repository lacks necessary blobs to fall back on 3-way merge."
-msgstr "Al dipòsit li manquen els blobs necessaris per a retrocedir a una fusió de 3 vies."
+msgstr ""
+"Al dipòsit li manquen els blobs necessaris per a retrocedir a una fusió de 3 "
+"vies."
 
 #: builtin/am.c:1556
 msgid "Using index info to reconstruct a base tree..."
@@ -5264,7 +5423,8 @@ msgstr "no es pot reprendre: %s no existeix."
 
 #: builtin/am.c:1703
 msgid "cannot be interactive without stdin connected to a terminal."
-msgstr "no es pot ser interactiu sense que stdin estigui connectada a un terminal."
+msgstr ""
+"no es pot ser interactiu sense que stdin estigui connectada a un terminal."
 
 #: builtin/am.c:1708
 msgid "Commit Body is:"
@@ -5276,7 +5436,9 @@ msgstr "El cos de la comissió és:"
 #.
 #: builtin/am.c:1718
 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
-msgstr "Voleu aplicar-lo? [y]es/[n]o/[e]dita/[v]isualitza el pedaç/[a]ccepta'ls tots: "
+msgstr ""
+"Voleu aplicar-lo? [y]es/[n]o/[e]dita/[v]isualitza el pedaç/[a]ccepta'ls "
+"tots: "
 
 #: builtin/am.c:1768
 #, c-format
@@ -5314,12 +5476,15 @@ msgstr ""
 #: builtin/am.c:1889
 msgid ""
 "You still have unmerged paths in your index.\n"
-"You should 'git add' each file with resolved conflicts to mark them as such.\n"
+"You should 'git add' each file with resolved conflicts to mark them as "
+"such.\n"
 "You might run `git rm` on a file to accept \"deleted by them\" for it."
 msgstr ""
 "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 fitxer."
+"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 "
+"fitxer."
 
 #: builtin/am.c:1996 builtin/am.c:2000 builtin/am.c:2012 builtin/reset.c:324
 #: builtin/reset.c:332
@@ -5364,7 +5529,8 @@ msgstr "opció històrica -- no-op"
 msgid "allow fall back on 3way merging if needed"
 msgstr "permet retrocedir a una fusió de 3 vies si és necessari"
 
-#: builtin/am.c:2222 builtin/init-db.c:484 builtin/prune-packed.c:57 builtin/repack.c:182
+#: builtin/am.c:2222 builtin/init-db.c:484 builtin/prune-packed.c:57
+#: builtin/repack.c:182
 msgid "be quiet"
 msgstr "silenciós"
 
@@ -5394,7 +5560,8 @@ msgstr "passa l'indicador --keep-cr a git-mailsplit per al format mbox"
 
 #: builtin/am.c:2238
 msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr"
-msgstr "no passis l'indicador --keep-cr a git-mailsplit independent d'am.keepcr"
+msgstr ""
+"no passis l'indicador --keep-cr a git-mailsplit independent d'am.keepcr"
 
 #: builtin/am.c:2241
 msgid "strip everything before a scissors line"
@@ -5408,14 +5575,14 @@ msgstr "passa-ho a través de git-apply"
 
 #: builtin/am.c:2260 builtin/fmt-merge-msg.c:665 builtin/fmt-merge-msg.c:668
 #: builtin/grep.c:853 builtin/merge.c:206 builtin/pull.c:145 builtin/pull.c:203
-#: builtin/repack.c:191 builtin/repack.c:195 builtin/repack.c:197 builtin/show-branch.c:631
-#: builtin/show-ref.c:169 builtin/tag.c:382 parse-options.h:144 parse-options.h:146
-#: parse-options.h:257
+#: builtin/repack.c:191 builtin/repack.c:195 builtin/repack.c:197
+#: builtin/show-branch.c:631 builtin/show-ref.c:169 builtin/tag.c:382
+#: parse-options.h:144 parse-options.h:146 parse-options.h:257
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2266 builtin/branch.c:629 builtin/for-each-ref.c:38 builtin/replace.c:445
-#: builtin/tag.c:418 builtin/verify-tag.c:39
+#: builtin/am.c:2266 builtin/branch.c:629 builtin/for-each-ref.c:38
+#: builtin/replace.c:445 builtin/tag.c:418 builtin/verify-tag.c:39
 msgid "format"
 msgstr "format"
 
@@ -5459,8 +5626,8 @@ msgstr "menteix sobre la data del comitent"
 msgid "use current timestamp for author date"
 msgstr "usa el marc de temps actual per la data d'autor"
 
-#: builtin/am.c:2298 builtin/commit.c:1431 builtin/merge.c:237 builtin/pull.c:178
-#: builtin/revert.c:112 builtin/tag.c:398
+#: builtin/am.c:2298 builtin/commit.c:1431 builtin/merge.c:237
+#: builtin/pull.c:178 builtin/revert.c:112 builtin/tag.c:398
 msgid "key-id"
 msgstr "ID de clau"
 
@@ -5487,7 +5654,9 @@ msgstr "S'ha produït un error en llegir l'índex"
 #: builtin/am.c:2342
 #, c-format
 msgid "previous rebase directory %s still exists but mbox given."
-msgstr "un directori de «rebase» anterior %s encara existeix però s'ha donat una bústia."
+msgstr ""
+"un directori de «rebase» anterior %s encara existeix però s'ha donat una "
+"bústia."
 
 #: builtin/am.c:2366
 #, c-format
@@ -5613,11 +5782,14 @@ msgstr "Mostra les entrades «blame» mentre les trobem, incrementalment"
 
 #: builtin/blame.c:678
 msgid "Show blank SHA-1 for boundary commits (Default: off)"
-msgstr "Mostra un SHA-1 en blanc per les comissions de frontera (Per defecte: desactivat)"
+msgstr ""
+"Mostra un SHA-1 en blanc per les comissions de frontera (Per defecte: "
+"desactivat)"
 
 #: builtin/blame.c:679
 msgid "Do not treat root commits as boundaries (Default: off)"
-msgstr "No tractis les comissions d'arrel com a límits (Per defecte: desactivat)"
+msgstr ""
+"No tractis les comissions d'arrel com a límits (Per defecte: desactivat)"
 
 #: builtin/blame.c:680
 msgid "Show work cost statistics"
@@ -5649,7 +5821,8 @@ msgstr "Mostra el format de porcellana amb informació de comissió per línia"
 
 #: builtin/blame.c:687
 msgid "Use the same output mode as git-annotate (Default: off)"
-msgstr "Usa el mateix mode de sortida que git-annotate (Per defecte: desactivat)"
+msgstr ""
+"Usa el mateix mode de sortida que git-annotate (Per defecte: desactivat)"
 
 #: builtin/blame.c:688
 msgid "Show raw timestamp (Default: off)"
@@ -5665,7 +5838,9 @@ msgstr "Omet el nom d'autor i la marca de temps (Per defecte: desactivat)"
 
 #: builtin/blame.c:691
 msgid "Show author email instead of name (Default: off)"
-msgstr "Mostra l'adreça electrònica de l'autor en lloc del nom (Per defecte: desactivat)"
+msgstr ""
+"Mostra l'adreça electrònica de l'autor en lloc del nom (Per defecte: "
+"desactivat)"
 
 #: builtin/blame.c:692
 msgid "Ignore whitespace differences"
@@ -5709,7 +5884,8 @@ msgstr "Processa només el rang de línies n,m, comptant des d'1"
 
 #: builtin/blame.c:753
 msgid "--progress can't be used with --incremental or porcelain formats"
-msgstr "no es pot usar --progress amb els formats --incremental o de porcellana"
+msgstr ""
+"no es pot usar --progress amb els formats --incremental o de porcellana"
 
 #. TRANSLATORS: This string is used to tell us the
 #. maximum display width for a relative timestamp in
@@ -5880,7 +6056,7 @@ msgstr "La còpia de la branca ha fallat"
 
 #: builtin/branch.c:517
 #, c-format
-msgid "created a copy of a misnamed branch '%s'"
+msgid "Created a copy of a misnamed branch '%s'"
 msgstr "S'ha creat una còpia d'una branca mal anomenada «%s»"
 
 #: builtin/branch.c:520
@@ -5896,11 +6072,14 @@ msgstr "S'ha canviat el nom de la branca a %s, però HEAD no està actualitzat!"
 #: builtin/branch.c:535
 msgid "Branch is renamed, but update of config-file failed"
 msgstr ""
-"La branca està canviada de nom, però l'actualització del fitxer de configuració ha fallat"
+"La branca està canviada de nom, però l'actualització del fitxer de "
+"configuració ha fallat"
 
 #: builtin/branch.c:537
 msgid "Branch is copied, but update of config-file failed"
-msgstr "La branca està copiada, però l'actualització del fitxer de configuració ha fallat"
+msgstr ""
+"La branca està copiada, però l'actualització del fitxer de configuració ha "
+"fallat"
 
 #: builtin/branch.c:553
 #, c-format
@@ -6029,8 +6208,9 @@ msgstr "clau"
 msgid "field name to sort on"
 msgstr "nom del camp en el qual ordenar"
 
-#: builtin/branch.c:625 builtin/for-each-ref.c:43 builtin/notes.c:408 builtin/notes.c:411
-#: builtin/notes.c:571 builtin/notes.c:574 builtin/tag.c:414
+#: builtin/branch.c:625 builtin/for-each-ref.c:43 builtin/notes.c:408
+#: builtin/notes.c:411 builtin/notes.c:571 builtin/notes.c:574
+#: builtin/tag.c:414
 msgid "object"
 msgstr "objecte"
 
@@ -6042,7 +6222,8 @@ msgstr "imprimeix només les branques de l'objecte"
 msgid "sorting and filtering are case insensitive"
 msgstr "l'ordenació i el filtratge distingeixen entre majúscules i minúscules"
 
-#: builtin/branch.c:629 builtin/for-each-ref.c:38 builtin/tag.c:419 builtin/verify-tag.c:39
+#: builtin/branch.c:629 builtin/for-each-ref.c:38 builtin/tag.c:419
+#: builtin/verify-tag.c:39
 msgid "format to use for the output"
 msgstr "format a usar en la sortida"
 
@@ -6090,8 +6271,10 @@ msgstr "hi ha massa arguments per a establir una nova font"
 
 #: builtin/branch.c:766
 #, c-format
-msgid "could not set upstream of HEAD to %s when it does not point to any branch."
-msgstr "no s'ha pogut establir la font de HEAD com a %s quan no assenyala cap branca."
+msgid ""
+"could not set upstream of HEAD to %s when it does not point to any branch."
+msgstr ""
+"no s'ha pogut establir la font de HEAD com a %s quan no assenyala cap branca."
 
 #: builtin/branch.c:769 builtin/branch.c:791 builtin/branch.c:807
 #, c-format
@@ -6109,7 +6292,8 @@ msgstr "hi ha massa arguments per a desassignar la font"
 
 #: builtin/branch.c:789
 msgid "could not unset upstream of HEAD when it does not point to any branch."
-msgstr "no s'ha pogut desassignar la font de HEAD perquè no assenyala cap branca."
+msgstr ""
+"no s'ha pogut desassignar la font de HEAD perquè no assenyala cap branca."
 
 #: builtin/branch.c:795
 #, c-format
@@ -6118,14 +6302,16 @@ msgstr "La branca «%s» no té informació de font"
 
 #: builtin/branch.c:810
 msgid "-a and -r options to 'git branch' do not make sense with a branch name"
-msgstr "les opcions -a i -r a 'git branch' no tenen sentit amb un nom de branca"
+msgstr ""
+"les opcions -a i -r a 'git branch' no tenen sentit amb un nom de branca"
 
 #: builtin/branch.c:813
 msgid ""
-"the '--set-upstream' option is no longer supported. Please use '--track' or '--set-"
-"upstream-to' instead."
+"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 està suportada. Useu en comptes --track o --set-"
+"upstream-to."
 
 #: builtin/bundle.c:45
 #, c-format
@@ -6142,16 +6328,19 @@ msgstr "Cal un dipòsit per a desfer un farcell."
 
 #: builtin/cat-file.c:523
 msgid ""
-"git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -p | <type> | "
-"--textconv | --filters) [--path=<path>] <object>"
+"git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
+"p | <type> | --textconv | --filters) [--path=<path>] <object>"
 msgstr ""
-"git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -p | <tipus> "
-"| --textconv | --filters [--path=<camí>]) <objecte>"
+"git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
+"p | <tipus> | --textconv | --filters [--path=<camí>]) <objecte>"
 
 #: builtin/cat-file.c:524
-msgid "git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --filters]"
+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 | --batch-check) [--follow-symlinks] [--textconv | --"
+"filters]"
 
 #: builtin/cat-file.c:561
 msgid "<type> can be one of: blob, tree, commit, tag"
@@ -6179,7 +6368,8 @@ msgstr "en els objectes de blob, executa textconv en el contingut de l'objecte"
 
 #: builtin/cat-file.c:570
 msgid "for blob objects, run filters on object's content"
-msgstr "en els objectes de blob, executa els filtres en el contingut de l'objecte"
+msgstr ""
+"en els objectes de blob, executa els filtres en el contingut de l'objecte"
 
 #: builtin/cat-file.c:571 git-submodule.sh:878
 msgid "blob"
@@ -6199,7 +6389,8 @@ msgstr "posa la sortida de --batch en memòria intermèdia"
 
 #: builtin/cat-file.c:577
 msgid "show info and content of objects fed from the standard input"
-msgstr "mostra la informació i contingut dels objectes rebuts de l'entrada estàndard"
+msgstr ""
+"mostra la informació i contingut dels objectes rebuts de l'entrada estàndard"
 
 #: builtin/cat-file.c:580
 msgid "show info about objects fed from the standard input"
@@ -6207,7 +6398,8 @@ msgstr "mostra informació sobre els objectes rebuts de l'entrada estàndard"
 
 #: builtin/cat-file.c:583
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
-msgstr "segueix els enllaços simbòlics en l'arbre (s'usa amb --batch o --batch-check)"
+msgstr ""
+"segueix els enllaços simbòlics en l'arbre (s'usa amb --batch o --batch-check)"
 
 #: builtin/cat-file.c:585
 msgid "show all objects with --batch or --batch-check"
@@ -6308,7 +6500,8 @@ msgstr "força la sobreescriptura de fitxers existents"
 
 #: builtin/checkout-index.c:162
 msgid "no warning for existing files and files not in index"
-msgstr "cap advertència per a fitxers existents i fitxers que no siguin a l'índex"
+msgstr ""
+"cap advertència per a fitxers existents i fitxers que no siguin a l'índex"
 
 #: builtin/checkout-index.c:164
 msgid "don't checkout new files"
@@ -6326,9 +6519,10 @@ msgstr "llegeix la llista de camins des de l'entrada estàndard"
 msgid "write the content to temporary files"
 msgstr "escriu el contingut a fitxers temporals"
 
-#: builtin/checkout-index.c:173 builtin/column.c:31 builtin/submodule--helper.c:1203
-#: builtin/submodule--helper.c:1206 builtin/submodule--helper.c:1212
-#: builtin/submodule--helper.c:1574 builtin/worktree.c:570
+#: builtin/checkout-index.c:173 builtin/column.c:31
+#: builtin/submodule--helper.c:1203 builtin/submodule--helper.c:1206
+#: builtin/submodule--helper.c:1212 builtin/submodule--helper.c:1574
+#: builtin/worktree.c:570
 msgid "string"
 msgstr "cadena"
 
@@ -6392,7 +6586,8 @@ msgstr "«%s» no es pot usar amb %s"
 #: builtin/checkout.c:271
 #, c-format
 msgid "Cannot update paths and switch to branch '%s' at the same time."
-msgstr "No es poden actualitzar els camins i canviar a la branca «%s» a la vegada."
+msgstr ""
+"No es poden actualitzar els camins i canviar a la branca «%s» a la vegada."
 
 #: builtin/checkout.c:340 builtin/checkout.c:347
 #, c-format
@@ -6543,8 +6738,9 @@ msgstr "«%s» no es pot usar amb «%s»"
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "No es pot canviar la branca a la no comissió «%s»"
 
-#: builtin/checkout.c:1107 builtin/checkout.c:1109 builtin/clone.c:116 builtin/remote.c:166
-#: builtin/remote.c:168 builtin/worktree.c:387 builtin/worktree.c:389
+#: builtin/checkout.c:1107 builtin/checkout.c:1109 builtin/clone.c:116
+#: builtin/remote.c:166 builtin/remote.c:168 builtin/worktree.c:387
+#: builtin/worktree.c:389
 msgid "branch"
 msgstr "branca"
 
@@ -6616,8 +6812,9 @@ msgstr "dubta 'git checkout <cap-branca-així>'"
 msgid "do not check if another worktree is holding the given ref"
 msgstr "no comprovis si altre arbre de treball té la referència donada"
 
-#: builtin/checkout.c:1138 builtin/clone.c:83 builtin/fetch.c:150 builtin/merge.c:236
-#: builtin/pull.c:123 builtin/push.c:556 builtin/send-pack.c:173
+#: builtin/checkout.c:1138 builtin/clone.c:83 builtin/fetch.c:150
+#: builtin/merge.c:236 builtin/pull.c:123 builtin/push.c:556
+#: builtin/send-pack.c:173
 msgid "force progress reporting"
 msgstr "força l'informe de progrés"
 
@@ -6641,7 +6838,8 @@ msgstr "especificació de camí no vàlida"
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr ""
-"«%s» no és una comissió i la branca «%s» no es pot crear a partir d'aquesta comissió"
+"«%s» no és una comissió i la branca «%s» no es pot crear a partir d'aquesta "
+"comissió"
 
 #: builtin/checkout.c:1237
 #, c-format
@@ -6657,8 +6855,10 @@ msgstr ""
 "agafar de l'índex."
 
 #: builtin/clean.c:26
-msgid "git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <paths>..."
-msgstr "git clean [-d] [-f] [-i] [-n] [-q] [-e <patró>] [-x | -X] [--] <camins>..."
+msgid ""
+"git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <paths>..."
+msgstr ""
+"git clean [-d] [-f] [-i] [-n] [-q] [-e <patró>] [-x | -X] [--] <camins>..."
 
 #: builtin/clean.c:30
 #, c-format
@@ -6719,7 +6919,8 @@ msgstr ""
 "*          - tria tots els ítems\n"
 "           - (buit) finalitza la selecció\n"
 
-#: builtin/clean.c:522 git-add--interactive.perl:547 git-add--interactive.perl:552
+#: builtin/clean.c:522 git-add--interactive.perl:547
+#: git-add--interactive.perl:552
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "Perdó (%s)?\n"
@@ -6801,9 +7002,10 @@ msgstr "neteja interactiva"
 msgid "remove whole directories"
 msgstr "elimina directoris sencers"
 
-#: builtin/clean.c:916 builtin/describe.c:533 builtin/describe.c:535 builtin/grep.c:871
-#: builtin/log.c:157 builtin/log.c:159 builtin/ls-files.c:548 builtin/name-rev.c:397
-#: builtin/name-rev.c:399 builtin/show-ref.c:176
+#: builtin/clean.c:916 builtin/describe.c:533 builtin/describe.c:535
+#: builtin/grep.c:871 builtin/log.c:157 builtin/log.c:159
+#: builtin/ls-files.c:548 builtin/name-rev.c:397 builtin/name-rev.c:399
+#: builtin/show-ref.c:176
 msgid "pattern"
 msgstr "patró"
 
@@ -6824,16 +7026,20 @@ msgid "-x and -X cannot be used together"
 msgstr "-x i -X no es poden usar junts"
 
 #: builtin/clean.c:942
-msgid "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to clean"
+msgid ""
+"clean.requireForce set to true and neither -i, -n, nor -f given; refusing to "
+"clean"
 msgstr ""
-"clean.requireForce està establerta en cert i ni -i, -n ni -f s'han indicat; refusant "
-"netejar"
+"clean.requireForce està establerta en cert i ni -i, -n ni -f s'han indicat; "
+"refusant netejar"
 
 #: builtin/clean.c:945
 msgid ""
-"clean.requireForce defaults to true and neither -i, -n, nor -f given; refusing to clean"
+"clean.requireForce defaults to true and neither -i, -n, nor -f given; "
+"refusing to clean"
 msgstr ""
-"clean.requireForce és per defecte cert i ni -i, -n ni -f s'han indicat; refusant netejar"
+"clean.requireForce és per defecte cert i ni -i, -n ni -f s'han indicat; "
+"refusant netejar"
 
 #: builtin/clone.c:40
 msgid "git clone [<options>] [--] <repo> [<dir>]"
@@ -6902,13 +7108,14 @@ msgstr "usa <nom> en lloc de 'origin' per a seguir la font"
 
 #: builtin/clone.c:117
 msgid "checkout <branch> instead of the remote's HEAD"
-msgstr "agafa <branca> en lloc del HEAD del remot"
+msgstr "agafa <branca> en lloc de la HEAD del remot"
 
 #: builtin/clone.c:119
 msgid "path to git-upload-pack on the remote"
 msgstr "camí a git-upload-pack en el remot"
 
-#: builtin/clone.c:120 builtin/fetch.c:151 builtin/grep.c:813 builtin/pull.c:211
+#: builtin/clone.c:120 builtin/fetch.c:151 builtin/grep.c:813
+#: builtin/pull.c:211
 msgid "depth"
 msgstr "profunditat"
 
@@ -6916,7 +7123,8 @@ msgstr "profunditat"
 msgid "create a shallow clone of that depth"
 msgstr "crea un clon superficial de tal profunditat"
 
-#: builtin/clone.c:122 builtin/fetch.c:153 builtin/pack-objects.c:3017 parse-options.h:154
+#: builtin/clone.c:122 builtin/fetch.c:153 builtin/pack-objects.c:3017
+#: parse-options.h:154
 msgid "time"
 msgstr "hora"
 
@@ -6938,7 +7146,8 @@ msgstr "clona només una branca, HEAD o --branch"
 
 #: builtin/clone.c:129
 msgid "don't clone any tags, and make later fetches not to follow them"
-msgstr "no cloneu cap etiqueta, i feu que els «fetch» següents no els segueixen"
+msgstr ""
+"no cloneu cap etiqueta, i feu que els «fetch» següents no els segueixen"
 
 #: builtin/clone.c:131
 msgid "any cloned submodules will be shallow"
@@ -6960,11 +7169,13 @@ msgstr "clau=valor"
 msgid "set config inside the new repository"
 msgstr "estableix la configuració dins del dipòsit nou"
 
-#: builtin/clone.c:136 builtin/fetch.c:173 builtin/pull.c:224 builtin/push.c:567
+#: builtin/clone.c:136 builtin/fetch.c:173 builtin/pull.c:224
+#: builtin/push.c:567
 msgid "use IPv4 addresses only"
 msgstr "usa només adreces IPv4"
 
-#: builtin/clone.c:138 builtin/fetch.c:175 builtin/pull.c:227 builtin/push.c:569
+#: builtin/clone.c:138 builtin/fetch.c:175 builtin/pull.c:227
+#: builtin/push.c:569
 msgid "use IPv6 addresses only"
 msgstr "usa només adreces IPv6"
 
@@ -7039,7 +7250,8 @@ msgstr "no s'ha pogut actualitzar %s"
 #: builtin/clone.c:726
 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
 msgstr ""
-"el HEAD remot es refereix a una referència que no existeix; no s'ha pogut agafar.\n"
+"la HEAD remot es refereix a una referència que no existeix; no s'ha pogut "
+"agafar.\n"
 
 #: builtin/clone.c:756
 msgid "unable to checkout working tree"
@@ -7094,8 +7306,8 @@ msgstr "el camí destí «%s» ja existeix i no és un directori buit."
 msgid "working tree '%s' already exists."
 msgstr "l'arbre de treball «%s» ja existeix."
 
-#: builtin/clone.c:980 builtin/clone.c:1001 builtin/difftool.c:270 builtin/worktree.c:255
-#: builtin/worktree.c:285
+#: builtin/clone.c:980 builtin/clone.c:1001 builtin/difftool.c:270
+#: builtin/worktree.c:255 builtin/worktree.c:285
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "no s'han pogut crear els directoris inicials de «%s»"
@@ -7116,8 +7328,12 @@ msgid "Cloning into '%s'...\n"
 msgstr "S'està clonant a «%s»...\n"
 
 #: builtin/clone.c:1031
-msgid "clone --recursive is not compatible with both --reference and --reference-if-able"
-msgstr "clone --recursive no és compatible amb ambdós --reference i --reference-if-able"
+msgid ""
+"clone --recursive is not compatible with both --reference and --reference-if-"
+"able"
+msgstr ""
+"clone --recursive no és compatible amb ambdós --reference i --reference-if-"
+"able"
 
 #: builtin/clone.c:1093
 msgid "--depth is ignored in local clones; use file:// instead."
@@ -7125,11 +7341,13 @@ msgstr "--depth s'ignora en els clons locals; useu file:// en lloc d'això."
 
 #: builtin/clone.c:1095
 msgid "--shallow-since is ignored in local clones; use file:// instead."
-msgstr "--shallow-since s'ignora en els clons locals; useu file:// en lloc d'això."
+msgstr ""
+"--shallow-since s'ignora en els clons locals; useu file:// en lloc d'això."
 
 #: builtin/clone.c:1097
 msgid "--shallow-exclude is ignored in local clones; use file:// instead."
-msgstr "--shallow-exclude s'ignora en els clons locals; useu file:// en lloc d'això."
+msgstr ""
+"--shallow-exclude s'ignora en els clons locals; useu file:// en lloc d'això."
 
 #: builtin/clone.c:1099
 msgid "--filter is ignored in local clones; use file:// instead."
@@ -7210,7 +7428,8 @@ msgid ""
 "    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 ja està buit, possiblement a causa de resolució de "
+"conflicte.\n"
 "Si el voleu cometre de totes maneres, useu:\n"
 "\n"
 "    git commit --allow-empty\n"
@@ -7377,7 +7596,8 @@ msgid ""
 "An empty message aborts the commit.\n"
 msgstr ""
 "Introduïu el missatge de comissió dels vostres canvis.\n"
-"Es mantindran les línies que comencin amb '%c'; podeu eliminar-les vosaltres\n"
+"Es mantindran les línies que comencin amb '%c'; podeu eliminar-les "
+"vosaltres\n"
 "mateixos si voleu. Un missatge buit avorta la comissió.\n"
 
 #: builtin/commit.c:830
@@ -7498,7 +7718,8 @@ msgstr ""
 msgid "version"
 msgstr "versió"
 
-#: builtin/commit.c:1286 builtin/commit.c:1449 builtin/push.c:542 builtin/worktree.c:541
+#: builtin/commit.c:1286 builtin/commit.c:1449 builtin/push.c:542
+#: builtin/worktree.c:541
 msgid "machine-readable output"
 msgstr "sortida llegible per màquina"
 
@@ -7518,23 +7739,28 @@ msgstr "mode"
 #: builtin/commit.c:1295 builtin/commit.c:1457
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr ""
-"mostra els fitxers no seguits, modes opcionals: all, normal, no. (Per defecte: all)"
+"mostra els fitxers no seguits, modes opcionals: all, normal, no. (Per "
+"defecte: all)"
 
 #: builtin/commit.c:1299
 msgid ""
-"show ignored files, optional modes: traditional, matching, no. (Default: traditional)"
+"show ignored files, optional modes: traditional, matching, no. (Default: "
+"traditional)"
 msgstr ""
-"mostra els fitxers ignorats, modes opcionals: traditional, matching, no. (Per defecte: "
-"traditional, matching, no.)"
+"mostra els fitxers ignorats, modes opcionals: traditional, matching, no. "
+"(Per defecte: traditional, matching, no.)"
 
 #: builtin/commit.c:1301 parse-options.h:167
 msgid "when"
 msgstr "quan"
 
 #: builtin/commit.c:1302
-msgid "ignore changes to submodules, optional when: all, dirty, untracked. (Default: all)"
+msgid ""
+"ignore changes to submodules, optional when: all, dirty, untracked. "
+"(Default: all)"
 msgstr ""
-"ignora els canvis als submòduls, opcional quan: all, dirty, untracked. (Per defecte: all)"
+"ignora els canvis als submòduls, opcional quan: all, dirty, untracked. (Per "
+"defecte: all)"
 
 #: builtin/commit.c:1304
 msgid "list untracked files in columns"
@@ -7576,8 +7802,8 @@ msgstr "data"
 msgid "override date for commit"
 msgstr "data corregida de la comissió"
 
-#: builtin/commit.c:1420 builtin/merge.c:226 builtin/notes.c:402 builtin/notes.c:565
-#: builtin/tag.c:391
+#: builtin/commit.c:1420 builtin/merge.c:226 builtin/notes.c:402
+#: builtin/notes.c:565 builtin/tag.c:391
 msgid "message"
 msgstr "missatge"
 
@@ -7585,8 +7811,8 @@ msgstr "missatge"
 msgid "commit message"
 msgstr "missatge de comissió"
 
-#: builtin/commit.c:1421 builtin/commit.c:1422 builtin/commit.c:1423 builtin/commit.c:1424
-#: parse-options.h:269 ref-filter.h:92
+#: builtin/commit.c:1421 builtin/commit.c:1422 builtin/commit.c:1423
+#: builtin/commit.c:1424 parse-options.h:269 ref-filter.h:92
 msgid "commit"
 msgstr "comissió"
 
@@ -7601,19 +7827,21 @@ msgstr "reusa el missatge de la comissió especificada"
 #: builtin/commit.c:1423
 msgid "use autosquash formatted message to fixup specified commit"
 msgstr ""
-"usa el missatge formatat de «squash» automàtic per a corregir la comissió especificada"
+"usa el missatge formatat de «squash» automàtic per a corregir la comissió "
+"especificada"
 
 #: builtin/commit.c:1424
 msgid "use autosquash formatted message to squash specified commit"
 msgstr ""
-"usa el missatge formatat de «squash» automàtic per a «squash» a la comissió especificada"
+"usa el missatge formatat de «squash» automàtic per a «squash» a la comissió "
+"especificada"
 
 #: builtin/commit.c:1425
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr "l'autor de la comissió ja soc jo (s'usa amb -C/-c/--amend)"
 
-#: builtin/commit.c:1426 builtin/log.c:1446 builtin/merge.c:240 builtin/pull.c:149
-#: builtin/revert.c:105
+#: builtin/commit.c:1426 builtin/log.c:1446 builtin/merge.c:240
+#: builtin/pull.c:149 builtin/revert.c:105
 msgid "add Signed-off-by:"
 msgstr "afegeix Signed-off-by:"
 
@@ -7637,7 +7865,8 @@ msgstr "com suprimir els espais i #comentaris del missatge"
 msgid "include status in commit message template"
 msgstr "inclou l'estat en la plantilla de missatge de comissió"
 
-#: builtin/commit.c:1432 builtin/merge.c:238 builtin/pull.c:179 builtin/revert.c:113
+#: builtin/commit.c:1432 builtin/merge.c:238 builtin/pull.c:179
+#: builtin/revert.c:113
 msgid "GPG sign commit"
 msgstr "signa la comissió amb GPG"
 
@@ -7778,7 +8007,8 @@ msgstr "obtén el valor específic per a l'URL: secció[.variable] URL"
 
 #: builtin/config.c:69
 msgid "replace all matching variables: name value [value_regex]"
-msgstr "reemplaça totes les variables que coincideixen: nom valor [regex_de_valors]"
+msgstr ""
+"reemplaça totes les variables que coincideixen: nom valor [regex_de_valors]"
 
 #: builtin/config.c:70
 msgid "add a new variable: name value"
@@ -7859,7 +8089,8 @@ msgstr "respecta les directives d'inclusió en cercar"
 #: builtin/config.c:89
 msgid "show origin of config (file, standard input, blob, command line)"
 msgstr ""
-"mostra l'origen de la configuració (fitxer, entrada estàndard, blob, línia d'ordres)"
+"mostra l'origen de la configuració (fitxer, entrada estàndard, blob, línia "
+"d'ordres)"
 
 #: builtin/config.c:335
 msgid "unable to parse default color value"
@@ -8180,13 +8411,16 @@ msgstr "utilitza l'eina de diff especificada"
 
 #: builtin/difftool.c:709
 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`"
+msgstr ""
+"imprimeix una llista de totes les eines diff que podeu usar amb `--tool`"
 
 #: builtin/difftool.c:712
-msgid "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit code"
+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 sortida "
-"diferent de zero"
+"fes que 'git-difftool' surti quan l'eina de diff invocada torna un codi de "
+"sortida diferent de zero"
 
 #: builtin/difftool.c:714
 msgid "<command>"
@@ -8349,10 +8583,12 @@ msgid "prepend this to submodule path output"
 msgstr "anteposa això a la sortida de camí del submòdul"
 
 #: builtin/fetch.c:166
-msgid "default for recursive fetching of submodules (lower priority than config files)"
+msgid ""
+"default for recursive fetching of submodules (lower priority than config "
+"files)"
 msgstr ""
-"per defecte per a l'obtenció recursiva de submòduls (prioritat més baixa que els fitxers "
-"de configuració)"
+"per defecte per a l'obtenció recursiva de submòduls (prioritat més baixa que "
+"els fitxers de configuració)"
 
 #: builtin/fetch.c:170 builtin/pull.c:218
 msgid "accept refs that update .git/shallow"
@@ -8396,7 +8632,8 @@ msgstr "no es pot obtenir en la branca actual"
 msgid "[tag update]"
 msgstr "[actualització d'etiqueta]"
 
-#: builtin/fetch.c:670 builtin/fetch.c:703 builtin/fetch.c:719 builtin/fetch.c:734
+#: builtin/fetch.c:670 builtin/fetch.c:703 builtin/fetch.c:719
+#: builtin/fetch.c:734
 msgid "unable to update local ref"
 msgstr "no s'ha pogut actualitzar la referència local"
 
@@ -8428,7 +8665,8 @@ msgstr "%s no ha enviat tots els objectes necessaris\n"
 #: builtin/fetch.c:804
 #, c-format
 msgid "reject %s because shallow roots are not allowed to be updated"
-msgstr "rebutja %s perquè no es permet que les arrels superficials s'actualitzin"
+msgstr ""
+"rebutja %s perquè no es permet que les arrels superficials s'actualitzin"
 
 #: builtin/fetch.c:892 builtin/fetch.c:988
 #, c-format
@@ -8489,7 +8727,8 @@ msgid "Could not fetch %s"
 msgstr "No s'ha pogut obtenir %s"
 
 #: builtin/fetch.c:1325 builtin/fetch.c:1498
-msgid "--filter can only be used with the remote configured in core.partialClone"
+msgid ""
+"--filter can only be used with the remote configured in core.partialClone"
 msgstr ""
 
 #: builtin/fetch.c:1350
@@ -8538,8 +8777,10 @@ msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "Obtenir un grup i especificar referències no té sentit"
 
 #: builtin/fmt-merge-msg.c:15
-msgid "git fmt-merge-msg [-m <message>] [--log[=<n>] | --no-log] [--file <file>]"
-msgstr "git fmt-merge-msg [-m <missatge>] [--log[=<n>] | --no-log] [--file <fitxer>]"
+msgid ""
+"git fmt-merge-msg [-m <message>] [--log[=<n>] | --no-log] [--file <file>]"
+msgstr ""
+"git fmt-merge-msg [-m <missatge>] [--log[=<n>] | --no-log] [--file <fitxer>]"
 
 #: builtin/fmt-merge-msg.c:666
 msgid "populate log with at most <n> entries from shortlog"
@@ -8575,11 +8816,13 @@ msgstr "git for-each-ref [(--merged | --no-merged) [<comissió>]]"
 
 #: builtin/for-each-ref.c:13
 msgid "git for-each-ref [--contains [<commit>]] [--no-contains [<commit>]]"
-msgstr "git for-each-ref [--contains [<comissió>]] [--no-contains [<comissió>]]"
+msgstr ""
+"git for-each-ref [--contains [<comissió>]] [--no-contains [<comissió>]]"
 
 #: builtin/for-each-ref.c:28
 msgid "quote placeholders suitably for shells"
-msgstr "posa els marcadors de posició de forma adequada per a intèrprets d'ordres"
+msgstr ""
+"posa els marcadors de posició de forma adequada per a intèrprets d'ordres"
 
 #: builtin/for-each-ref.c:30
 msgid "quote placeholders suitably for perl"
@@ -8734,7 +8977,9 @@ msgstr "No s'ha pogut analitzar el valor gc.logexpiry %s"
 #: builtin/gc.c:412
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
-msgstr "S'està empaquetant el dipòsit automàticament en el fons per rendiment òptim.\n"
+msgstr ""
+"S'està empaquetant el dipòsit automàticament en el fons per rendiment "
+"òptim.\n"
 
 #: builtin/gc.c:414
 #, c-format
@@ -8748,12 +8993,17 @@ msgstr "Vegeu \"git help gc\" per neteja manual.\n"
 
 #: builtin/gc.c:440
 #, c-format
-msgid "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
-msgstr "gc ja s'està executant en la màquina «%s» pid %<PRIuMAX> (useu --force si no)"
+msgid ""
+"gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
+msgstr ""
+"gc ja s'està executant en la màquina «%s» pid %<PRIuMAX> (useu --force si no)"
 
 #: builtin/gc.c:487
-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-los."
+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-"
+"los."
 
 #: builtin/grep.c:27
 msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
@@ -8904,7 +9154,8 @@ msgstr "imprimeix una línia buida entre coincidències de fitxers distints"
 #: builtin/grep.c:851
 msgid "show filename only once above matches from same file"
 msgstr ""
-"mostra el nom de fitxer només una vegada a dalt de les coincidències del mateix fitxer"
+"mostra el nom de fitxer només una vegada a dalt de les coincidències del "
+"mateix fitxer"
 
 #: builtin/grep.c:854
 msgid "show <n> context lines before and after matches"
@@ -8952,7 +9203,9 @@ msgstr "indica coincidència amb estat de sortida sense sortida textual"
 
 #: builtin/grep.c:888
 msgid "show only matches from files that match all patterns"
-msgstr "mostra només les coincidències dels fitxers que coincideixin amb tots els patrons"
+msgstr ""
+"mostra només les coincidències dels fitxers que coincideixin amb tots els "
+"patrons"
 
 #: builtin/grep.c:890
 msgid "show parse tree for grep expression"
@@ -9014,10 +9267,11 @@ msgstr "s'han donat ambdós --caches i arbres."
 
 #: builtin/hash-object.c:83
 msgid ""
-"git hash-object [-t <type>] [-w] [--path=<file> | --no-filters] [--stdin] [--] <file>..."
+"git hash-object [-t <type>] [-w] [--path=<file> | --no-filters] [--stdin] "
+"[--] <file>..."
 msgstr ""
-"git hash-object [-t <tipus>] [-w] [--path=<fitxer> | --no-filters] [--stdin] [--] "
-"<fitxer>..."
+"git hash-object [-t <tipus>] [-w] [--path=<fitxer> | --no-filters] [--stdin] "
+"[--] <fitxer>..."
 
 #: builtin/hash-object.c:84
 msgid "git hash-object  --stdin-paths"
@@ -9044,9 +9298,11 @@ msgid "store file as is without filters"
 msgstr "emmagatzema el fitxer tal com és sense filtres"
 
 #: builtin/hash-object.c:102
-msgid "just hash any random garbage to create corrupt objects for debugging Git"
+msgid ""
+"just hash any random garbage to create corrupt objects for debugging Git"
 msgstr ""
-"només suma qualsevol brossa aleatòria per a crear objectes malmesos per a depurar al Git"
+"només suma qualsevol brossa aleatòria per a crear objectes malmesos per a "
+"depurar al Git"
 
 #: builtin/hash-object.c:103
 msgid "process file as it were from this path"
@@ -9258,7 +9514,8 @@ msgstr "la inflació ha retornat %d"
 
 #: builtin/index-pack.c:530
 msgid "offset value overflow for delta base object"
-msgstr "desbordament de valor de desplaçament per a l'objecte base de diferències"
+msgstr ""
+"desbordament de valor de desplaçament per a l'objecte base de diferències"
 
 #: builtin/index-pack.c:538
 msgid "delta base offset is out of bound"
@@ -9278,7 +9535,8 @@ msgstr "no es pot fer pread en el fitxer de paquet"
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
 msgstr[0] "el final del fitxer de paquet és prematur, manca %<PRIuMAX> octet"
-msgstr[1] "el final del fitxer de paquet és prematur, manquen %<PRIuMAX> octets"
+msgstr[1] ""
+"el final del fitxer de paquet és prematur, manquen %<PRIuMAX> octets"
 
 #: builtin/index-pack.c:605
 msgid "serious inflate inconsistency"
@@ -9290,7 +9548,8 @@ msgstr "hi ha una inconsistència seriosa d'inflació"
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "S'HA TROBAT UNA COL·LISIÓ SHA1 AMB %s !"
 
-#: builtin/index-pack.c:753 builtin/pack-objects.c:182 builtin/pack-objects.c:276
+#: builtin/index-pack.c:753 builtin/pack-objects.c:182
+#: builtin/pack-objects.c:276
 #, c-format
 msgid "unable to read %s"
 msgstr "no s'ha pogut llegir %s"
@@ -9454,8 +9713,8 @@ msgstr[1] "longitud de cadena = %d: %lu objectes"
 msgid "Cannot come back to cwd"
 msgstr "No es pot tornar al directori de treball actual"
 
-#: builtin/index-pack.c:1724 builtin/index-pack.c:1727 builtin/index-pack.c:1743
-#: builtin/index-pack.c:1747
+#: builtin/index-pack.c:1724 builtin/index-pack.c:1727
+#: builtin/index-pack.c:1743 builtin/index-pack.c:1747
 #, c-format
 msgid "bad %s"
 msgstr "%s incorrecte"
@@ -9771,7 +10030,8 @@ msgid ""
 "please use git branch --set-upstream-to to track a remote branch.\n"
 "Or you could specify base commit by --base=<base-commit-id> manually."
 msgstr ""
-"S'ha produït un error en obtenir la font. Si voleu registrar la comissió base\n"
+"S'ha produït un error en obtenir la font. Si voleu registrar la comissió "
+"base\n"
 "automàticament, useu git branch --set-upstream-to per a\n"
 "seguir una branca remota. O podeu especificar la comissió base manualment\n"
 "amb --base=<id-de-comissió-base>."
@@ -9858,7 +10118,8 @@ msgstr "no incloguis pedaços que coincideixin amb comissions a la font"
 
 #: builtin/log.c:1478
 msgid "show patch format instead of default (patch + stat)"
-msgstr "mostra el format de pedaç en lloc del per defecte (pedaç + estadístiques)"
+msgstr ""
+"mostra el format de pedaç en lloc del per defecte (pedaç + estadístiques)"
 
 #: builtin/log.c:1480
 msgid "Messaging"
@@ -9890,7 +10151,8 @@ msgstr "identitat"
 
 #: builtin/log.c:1488
 msgid "set From address to <ident> (or committer ident if absent)"
-msgstr "estableix l'adreça From a <identitat> (o la identitat del comitent si manca)"
+msgstr ""
+"estableix l'adreça From a <identitat> (o la identitat del comitent si manca)"
 
 #: builtin/log.c:1490
 msgid "message-id"
@@ -9997,8 +10259,11 @@ msgstr "git cherry [-v] [<font> [<cap> [<límit>]]]"
 
 #: builtin/log.c:1921
 #, c-format
-msgid "Could not find a tracked remote branch, please specify <upstream> manually.\n"
-msgstr "No s'ha pogut trobar una branca remota seguida. Especifiqueu <font> manualment.\n"
+msgid ""
+"Could not find a tracked remote branch, please specify <upstream> manually.\n"
+msgstr ""
+"No s'ha pogut trobar una branca remota seguida. Especifiqueu <font> "
+"manualment.\n"
 
 #: builtin/ls-files.c:468
 msgid "git ls-files [<options>] [<file>...]"
@@ -10018,7 +10283,8 @@ msgstr "usa lletres minúscules per als fitxers 'fsmonitor clean'"
 
 #: builtin/ls-files.c:523
 msgid "show cached files in the output (default)"
-msgstr "mostra en la sortida els fitxers desats en la memòria cau (per defecte)"
+msgstr ""
+"mostra en la sortida els fitxers desats en la memòria cau (per defecte)"
 
 #: builtin/ls-files.c:525
 msgid "show deleted files in the output"
@@ -10098,7 +10364,8 @@ msgstr "arbre"
 
 #: builtin/ls-files.c:567
 msgid "pretend that paths removed since <tree-ish> are still present"
-msgstr "pretén que els camins eliminats després de <arbre> encara siguin presents"
+msgstr ""
+"pretén que els camins eliminats després de <arbre> encara siguin presents"
 
 #: builtin/ls-files.c:569
 msgid "show debugging data"
@@ -10185,7 +10452,8 @@ msgstr "usa els noms de camí complets"
 
 #: builtin/ls-tree.c:144
 msgid "list entire tree; not just current directory (implies --full-name)"
-msgstr "llista l'arbre sencer; no només el directori actual (implica --full-name)"
+msgstr ""
+"llista l'arbre sencer; no només el directori actual (implica --full-name)"
 
 #: builtin/mailsplit.c:241
 #, c-format
@@ -10238,7 +10506,8 @@ msgstr "(sinònim de --stat)"
 #: builtin/merge.c:207 builtin/pull.c:146
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr ""
-"afegeix (com a màxim <n>) entrades del registre curt al missatge de comissió de fusió"
+"afegeix (com a màxim <n>) entrades del registre curt al missatge de comissió "
+"de fusió"
 
 #: builtin/merge.c:210 builtin/pull.c:152
 msgid "create a single commit instead of doing a merge"
@@ -10264,7 +10533,8 @@ msgstr "avorta si l'avanç ràpid no és possible"
 msgid "verify that the named commit has a valid GPG signature"
 msgstr "verifica que la comissió anomenada tingui una signatura GPG vàlida"
 
-#: builtin/merge.c:222 builtin/notes.c:777 builtin/pull.c:171 builtin/revert.c:109
+#: builtin/merge.c:222 builtin/notes.c:777 builtin/pull.c:171
+#: builtin/revert.c:109
 msgid "strategy"
 msgstr "estratègia"
 
@@ -10363,7 +10633,8 @@ msgstr "No s'ha pogut llegir de «%s»"
 #: builtin/merge.c:758
 #, 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"
+msgstr ""
+"No s'està cometent la fusió; useu 'git commit' per a completar la fusió.\n"
 
 #: builtin/merge.c:764
 #, c-format
@@ -10394,7 +10665,8 @@ msgstr "Meravellós.\n"
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr ""
-"La fusió automàtica ha fallat; arregleu els conflictes i després cometeu el resultat.\n"
+"La fusió automàtica ha fallat; arregleu els conflictes i després cometeu el "
+"resultat.\n"
 
 #: builtin/merge.c:912
 msgid "No current branch."
@@ -10469,7 +10741,9 @@ msgstr "No podeu combinar --squash amb --no-ff."
 
 #: builtin/merge.c:1275
 msgid "No commit specified and merge.defaultToUpstream not set."
-msgstr "No hi ha una comissió especificada i merge.defaultToUpstream no està establert."
+msgstr ""
+"No hi ha una comissió especificada i merge.defaultToUpstream no està "
+"establert."
 
 #: builtin/merge.c:1292
 msgid "Squash commit into empty head not supported yet"
@@ -10568,7 +10842,8 @@ msgstr "S'està usant el %s per a preparar la resolució a mà.\n"
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
-"La fusió automàtica ha sortit bé; s'ha aturat abans de cometre com s'havia demanat\n"
+"La fusió automàtica ha sortit bé; s'ha aturat abans de cometre com s'havia "
+"demanat\n"
 
 #: builtin/merge-base.c:30
 msgid "git merge-base [-a | --all] <commit> <commit>..."
@@ -10608,15 +10883,16 @@ msgstr "és la primera un avantpassat de l'altre?"
 
 #: builtin/merge-base.c:228
 msgid "find where <commit> forked from reflog of <ref>"
-msgstr "troba on <comissió> s'ha bifurcat del registre de referències de <referència>"
+msgstr ""
+"troba on <comissió> s'ha bifurcat del registre de referències de <referència>"
 
 #: builtin/merge-file.c:9
 msgid ""
-"git merge-file [<options>] [-L <name1> [-L <orig> [-L <name2>]]] <file1> <orig-file> "
-"<file2>"
+"git merge-file [<options>] [-L <name1> [-L <orig> [-L <name2>]]] <file1> "
+"<orig-file> <file2>"
 msgstr ""
-"git merge-file [<opcions>] [-L <nom1> [-L <original> [-L <nom2>]]] <fitxer1> <fitxer-"
-"original> <fitxer2>"
+"git merge-file [<opcions>] [-L <nom1> [-L <original> [-L <nom2>]]] <fitxer1> "
+"<fitxer-original> <fitxer2>"
 
 #: builtin/merge-file.c:33
 msgid "send results to standard output"
@@ -10709,7 +10985,8 @@ msgstr "El directori %s és en l'índex i no hi ha cap submòdul?"
 #: builtin/mv.c:85 builtin/rm.c:289
 msgid "Please stage your changes to .gitmodules or stash them to proceed"
 msgstr ""
-"Feu «stage» dels vostres canvis a .gitmodules o feu «stash» dels mateixos per a procedir"
+"Feu «stage» dels vostres canvis a .gitmodules o feu «stash» dels mateixos "
+"per a procedir"
 
 #: builtin/mv.c:103
 #, c-format
@@ -10840,37 +11117,40 @@ msgstr "git notes [--ref <referència-de-notes>] [llista [<objecte>]]"
 
 #: builtin/notes.c:27
 msgid ""
-"git notes [--ref <notes-ref>] add [-f] [--allow-empty] [-m <msg> | -F <file> | (-c | -C) "
-"<object>] [<object>]"
+"git notes [--ref <notes-ref>] add [-f] [--allow-empty] [-m <msg> | -F <file> "
+"| (-c | -C) <object>] [<object>]"
 msgstr ""
-"git notes [--ref <referència-de-notes>] add [-f] [--allow-empty] [-m <missatge> | -F "
-"<fitxer> | (-c | -C) <objecte>] [<objecte>]"
+"git notes [--ref <referència-de-notes>] add [-f] [--allow-empty] [-m "
+"<missatge> | -F <fitxer> | (-c | -C) <objecte>] [<objecte>]"
 
 #: builtin/notes.c:28
 msgid "git notes [--ref <notes-ref>] copy [-f] <from-object> <to-object>"
-msgstr "git notes [--ref <referència-de-notes>] copy [-f] <d'objecte> <a-objecte>"
+msgstr ""
+"git notes [--ref <referència-de-notes>] copy [-f] <d'objecte> <a-objecte>"
 
 #: builtin/notes.c:29
 msgid ""
-"git notes [--ref <notes-ref>] append [--allow-empty] [-m <msg> | -F <file> | (-c | -C) "
-"<object>] [<object>]"
+"git notes [--ref <notes-ref>] append [--allow-empty] [-m <msg> | -F <file> | "
+"(-c | -C) <object>] [<object>]"
 msgstr ""
-"git notes [--ref <referència-de-notes>] append [--allow-empty] [-m <missatge> | -F "
-"<fitxer> | (-c | -C) <objecte>] [<objecte>]"
+"git notes [--ref <referència-de-notes>] append [--allow-empty] [-m "
+"<missatge> | -F <fitxer> | (-c | -C) <objecte>] [<objecte>]"
 
 #: builtin/notes.c:30
 msgid "git notes [--ref <notes-ref>] edit [--allow-empty] [<object>]"
-msgstr "git notes [--ref <referència-de-notes>] edit [--allow-empty] [<objecte>]"
+msgstr ""
+"git notes [--ref <referència-de-notes>] edit [--allow-empty] [<objecte>]"
 
 #: builtin/notes.c:31
 msgid "git notes [--ref <notes-ref>] show [<object>]"
 msgstr "git notes [--ref <referència-de-notes>] show [<objecte>]"
 
 #: builtin/notes.c:32
-msgid "git notes [--ref <notes-ref>] merge [-v | -q] [-s <strategy>] <notes-ref>"
+msgid ""
+"git notes [--ref <notes-ref>] merge [-v | -q] [-s <strategy>] <notes-ref>"
 msgstr ""
-"git notes [--ref <referència-de-notes>] merge [-v | -q] [-s <estratègia>] <referència-de-"
-"notes>"
+"git notes [--ref <referència-de-notes>] merge [-v | -q] [-s <estratègia>] "
+"<referència-de-notes>"
 
 #: builtin/notes.c:33
 msgid "git notes merge --commit [-v | -q]"
@@ -10964,7 +11244,8 @@ msgstr "S'ha produït un error en finalitzar 'show' per a l'objecte «%s»"
 
 #: builtin/notes.c:195
 msgid "please supply the note contents using either -m or -F option"
-msgstr "especifiqueu el contingut de la nota fent servir l'opció -m o l'opció -F"
+msgstr ""
+"especifiqueu el contingut de la nota fent servir l'opció -m o l'opció -F"
 
 #: builtin/notes.c:204
 msgid "unable to write note object"
@@ -10985,9 +11266,9 @@ msgstr "no es pot llegir «%s»"
 msgid "could not open or read '%s'"
 msgstr "no s'ha pogut obrir o llegir «%s»"
 
-#: builtin/notes.c:255 builtin/notes.c:306 builtin/notes.c:308 builtin/notes.c:376
-#: builtin/notes.c:431 builtin/notes.c:517 builtin/notes.c:522 builtin/notes.c:600
-#: builtin/notes.c:662
+#: builtin/notes.c:255 builtin/notes.c:306 builtin/notes.c:308
+#: builtin/notes.c:376 builtin/notes.c:431 builtin/notes.c:517
+#: builtin/notes.c:522 builtin/notes.c:600 builtin/notes.c:662
 #, c-format
 msgid "failed to resolve '%s' as a valid ref."
 msgstr "s'ha produït un error en resoldre «%s» com a referència vàlida."
@@ -11020,9 +11301,9 @@ msgstr "s'ha produït un error en copiar les notes de «%s» a «%s»"
 msgid "refusing to %s notes in %s (outside of refs/notes/)"
 msgstr "s'està refusant %s les notes en %s (fora de refs/notes/)"
 
-#: builtin/notes.c:369 builtin/notes.c:424 builtin/notes.c:500 builtin/notes.c:512
-#: builtin/notes.c:588 builtin/notes.c:655 builtin/notes.c:805 builtin/notes.c:952
-#: builtin/notes.c:973
+#: builtin/notes.c:369 builtin/notes.c:424 builtin/notes.c:500
+#: builtin/notes.c:512 builtin/notes.c:588 builtin/notes.c:655
+#: builtin/notes.c:805 builtin/notes.c:952 builtin/notes.c:973
 msgid "too many parameters"
 msgstr "massa paràmetres"
 
@@ -11058,11 +11339,11 @@ msgstr "reemplaça les notes existents"
 #: builtin/notes.c:441
 #, c-format
 msgid ""
-"Cannot add notes. Found existing notes for object %s. Use '-f' to overwrite existing "
-"notes"
+"Cannot add notes. Found existing notes for object %s. Use '-f' to overwrite "
+"existing notes"
 msgstr ""
-"No es poden afegir les notes. S'han trobat notes existents de l'objecte %s. Useu '-f' "
-"per a sobreescriure les notes existents."
+"No es poden afegir les notes. S'han trobat notes existents de l'objecte %s. "
+"Useu '-f' per a sobreescriure les notes existents."
 
 #: builtin/notes.c:456 builtin/notes.c:535
 #, c-format
@@ -11080,7 +11361,8 @@ msgstr "llegeix els objectes des de stdin"
 
 #: builtin/notes.c:490
 msgid "load rewriting config for <command> (implies --stdin)"
-msgstr "carrega la configuració de reescriptura per a <ordre> (implica --stdin)"
+msgstr ""
+"carrega la configuració de reescriptura per a <ordre> (implica --stdin)"
 
 #: builtin/notes.c:508
 msgid "too few parameters"
@@ -11089,11 +11371,11 @@ msgstr "hi ha massa pocs paràmetres"
 #: builtin/notes.c:529
 #, c-format
 msgid ""
-"Cannot copy notes. Found existing notes for object %s. Use '-f' to overwrite existing "
-"notes"
+"Cannot copy notes. Found existing notes for object %s. Use '-f' to overwrite "
+"existing notes"
 msgstr ""
-"No es poden copiar les notes. S'han trobat notes existents de l'objecte %s. Useu '-f' "
-"per a sobreescriure les notes existents."
+"No es poden copiar les notes. S'han trobat notes existents de l'objecte %s. "
+"Useu '-f' per a sobreescriure les notes existents."
 
 #: builtin/notes.c:541
 #, c-format
@@ -11119,7 +11401,8 @@ msgstr "s'ha produït un error en suprimir la referència NOTES_MERGE_REF"
 
 #: builtin/notes.c:692
 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'"
+msgstr ""
+"s'ha produït un error en eliminar l'arbre de treball de 'git notes merge'"
 
 #: builtin/notes.c:712
 msgid "failed to read ref NOTES_MERGE_PARTIAL"
@@ -11156,10 +11439,11 @@ msgstr "Opcions de fusió"
 
 #: builtin/notes.c:778
 msgid ""
-"resolve notes conflicts using the given strategy (manual/ours/theirs/union/cat_sort_uniq)"
-msgstr ""
-"resol els conflictes de nota usant l'estratègia donada (manual/ours/theirs/union/"
+"resolve notes conflicts using the given strategy (manual/ours/theirs/union/"
 "cat_sort_uniq)"
+msgstr ""
+"resol els conflictes de nota usant l'estratègia donada (manual/ours/theirs/"
+"union/cat_sort_uniq)"
 
 #: builtin/notes.c:780
 msgid "Committing unmerged notes"
@@ -11199,17 +11483,19 @@ msgstr "una fusió de notes a %s ja està en curs a %s"
 #, c-format
 msgid "failed to store link to current notes ref (%s)"
 msgstr ""
-"s'ha produït un error en emmagatzemar l'enllaç a la referència de notes actual (%s)"
+"s'ha produït un error en emmagatzemar l'enllaç a la referència de notes "
+"actual (%s)"
 
 #: builtin/notes.c:868
 #, c-format
 msgid ""
-"Automatic notes merge failed. Fix conflicts in %s and commit the result with 'git notes "
-"merge --commit', or abort the merge with 'git notes merge --abort'.\n"
-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 --"
+"Automatic notes merge failed. Fix conflicts in %s and commit the result with "
+"'git notes merge --commit', or abort the merge with 'git notes merge --"
 "abort'.\n"
+msgstr ""
+"La 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"
 
 #: builtin/notes.c:890
 #, c-format
@@ -11246,16 +11532,18 @@ msgid "unknown subcommand: %s"
 msgstr "subordre desconeguda: %s"
 
 #: builtin/pack-objects.c:33
-msgid "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
+msgid ""
+"git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
 msgstr ""
-"git pack-objects --stdout [<opcions>...] [< <llista-de-referències> | < <llista-de-"
-"objectes>]"
+"git pack-objects --stdout [<opcions>...] [< <llista-de-referències> | < "
+"<llista-de-objectes>]"
 
 #: builtin/pack-objects.c:34
-msgid "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
+msgid ""
+"git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr ""
-"git pack-objects [<opcions>...] <nom-base> [< <llista-de-referències> | < <llista-de-"
-"objectes>]"
+"git pack-objects [<opcions>...] <nom-base> [< <llista-de-referències> | < "
+"<llista-de-objectes>]"
 
 #: builtin/pack-objects.c:195 builtin/pack-objects.c:198
 #, c-format
@@ -11265,8 +11553,8 @@ msgstr "error de deflació (%d)"
 #: builtin/pack-objects.c:791
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr ""
-"s'està inhabilitant l'escriptura de mapes de bits, es divideixen els paquets a causa de "
-"pack.packSizeLimit"
+"s'està inhabilitant l'escriptura de mapes de bits, es divideixen els paquets "
+"a causa de pack.packSizeLimit"
 
 #: builtin/pack-objects.c:804
 msgid "Writing objects"
@@ -11275,11 +11563,12 @@ msgstr "S'estan escrivint els objectes"
 #: builtin/pack-objects.c:1084
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr ""
-"s'està inhabilitant l'escriptura de mapes de bits, perquè alguns objectes no s'empaqueten"
+"s'està inhabilitant l'escriptura de mapes de bits, perquè alguns objectes no "
+"s'empaqueten"
 
 #: builtin/pack-objects.c:2454
 msgid "Compressing objects"
-msgstr "S'estan comprimint objectes"
+msgstr "S'estan comprimint els objectes"
 
 #: builtin/pack-objects.c:2625
 msgid "invalid value for --missing"
@@ -11317,7 +11606,9 @@ msgstr "versió[,desplaçament]"
 
 #: builtin/pack-objects.c:2971
 msgid "write the pack index file in the specified idx format version"
-msgstr "escriu el fitxer d'índex de paquet en la versió de format d'índex especificada"
+msgstr ""
+"escriu el fitxer d'índex de paquet en la versió de format d'índex "
+"especificada"
 
 #: builtin/pack-objects.c:2974
 msgid "maximum size of each output pack file"
@@ -11337,11 +11628,13 @@ msgstr "limita la finestra d'empaquetament per objectes"
 
 #: builtin/pack-objects.c:2982
 msgid "limit pack window by memory in addition to object limit"
-msgstr "limita la finestra d'empaquetament per memòria a més del límit d'objectes"
+msgstr ""
+"limita la finestra d'empaquetament per memòria a més del límit d'objectes"
 
 #: builtin/pack-objects.c:2984
 msgid "maximum length of delta chain allowed in the resulting pack"
-msgstr "longitud màxima de la cadena de diferències permesa en el paquet resultant"
+msgstr ""
+"longitud màxima de la cadena de diferències permesa en el paquet resultant"
 
 #: builtin/pack-objects.c:2986
 msgid "reuse existing deltas"
@@ -11378,7 +11671,8 @@ msgstr "inclou els objectes abastables de qualsevol referència"
 #: builtin/pack-objects.c:3004
 msgid "include objects referred by reflog entries"
 msgstr ""
-"inclou els objectes als quals facin referència les entrades del registre de referències"
+"inclou els objectes als quals facin referència les entrades del registre de "
+"referències"
 
 #: builtin/pack-objects.c:3007
 msgid "include objects referred to by the index"
@@ -11390,7 +11684,8 @@ msgstr "emet el paquet a stdout"
 
 #: builtin/pack-objects.c:3012
 msgid "include tag objects that refer to objects to be packed"
-msgstr "inclou els objectes d'etiqueta que facin referència als objectes a empaquetar"
+msgstr ""
+"inclou els objectes d'etiqueta que facin referència als objectes a empaquetar"
 
 #: builtin/pack-objects.c:3014
 msgid "keep unreachable objects"
@@ -11427,7 +11722,8 @@ msgstr "no amaguis les comissions per empelt"
 #: builtin/pack-objects.c:3031
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr ""
-"usa un índex de mapa de bits, si està disponible, per a accelerar el recompte d'objectes"
+"usa un índex de mapa de bits, si està disponible, per a accelerar el "
+"recompte d'objectes"
 
 #: builtin/pack-objects.c:3033
 msgid "write a bitmap index together with the pack index"
@@ -11512,7 +11808,8 @@ msgstr "permet l'avanç ràpid"
 
 #: builtin/pull.c:170
 msgid "automatically stash/stash pop before and after rebase"
-msgstr "fes «stash» i «stash pop» automàticament abans i després de fer «rebase»"
+msgstr ""
+"fes «stash» i «stash pop» automàticament abans i després de fer «rebase»"
 
 #: builtin/pull.c:186
 msgid "Options related to fetching"
@@ -11528,14 +11825,18 @@ msgid "Invalid value for pull.ff: %s"
 msgstr "Valor no vàlid per a pull.ff: %s"
 
 #: builtin/pull.c:415
-msgid "There is no candidate for rebasing against among the refs that you just fetched."
+msgid ""
+"There is no candidate for rebasing against among the refs that you just "
+"fetched."
 msgstr ""
-"No hi ha cap candidat sobre el qual fer «rebase» entre les referències que acabeu "
-"d'obtenir."
+"No hi ha cap candidat sobre el qual fer «rebase» entre les referències que "
+"acabeu d'obtenir."
 
 #: builtin/pull.c:417
-msgid "There are no candidates for merging among the refs that you just fetched."
-msgstr "No hi ha candidats per a fusionar entre les referències que acabeu d'obtenir."
+msgid ""
+"There are no candidates for merging among the refs that you just fetched."
+msgstr ""
+"No hi ha candidats per a fusionar entre les referències que acabeu d'obtenir."
 
 #: builtin/pull.c:418
 msgid ""
@@ -11572,7 +11873,8 @@ msgstr "Especifiqueu amb quina branca voleu fusionar."
 msgid "See git-pull(1) for details."
 msgstr "Vegeu git-pull(1) per detalls."
 
-#: builtin/pull.c:433 builtin/pull.c:439 builtin/pull.c:448 git-parse-remote.sh:64
+#: builtin/pull.c:433 builtin/pull.c:439 builtin/pull.c:448
+#: git-parse-remote.sh:64
 msgid "<remote>"
 msgstr "<remot>"
 
@@ -11586,8 +11888,11 @@ msgid "There is no tracking information for the current branch."
 msgstr "No hi ha cap informació de seguiment per a la branca actual."
 
 #: builtin/pull.c:450 git-parse-remote.sh:95
-msgid "If you wish to set tracking information for this branch you can do so with:"
-msgstr "Si voleu establir informació de seguiment per a aquesta branca, podeu fer-ho amb:"
+msgid ""
+"If you wish to set tracking information for this branch you can do so with:"
+msgstr ""
+"Si voleu establir informació de seguiment per a aquesta branca, podeu fer-ho "
+"amb:"
 
 #: builtin/pull.c:455
 #, c-format
@@ -11608,7 +11913,8 @@ msgstr "l'opció --[no-]-autostash és vàlid només amb --rebase."
 
 #: builtin/pull.c:875
 msgid "Updating an unborn branch with changes added to the index."
-msgstr "S'està actualitzant una branca no nascuda amb canvis afegits a l'índex."
+msgstr ""
+"S'està actualitzant una branca no nascuda amb canvis afegits a l'índex."
 
 #: builtin/pull.c:878
 msgid "pull with rebase"
@@ -11640,7 +11946,8 @@ msgid ""
 "to recover."
 msgstr ""
 "No es pot avançar ràpidament el vostre arbre de treball.\n"
-"Després d'assegurar que hàgiu desat qualsevol cosa preciosa de la sortida de\n"
+"Després d'assegurar que hàgiu desat qualsevol cosa preciosa de la sortida "
+"de\n"
 "$ git diff %s\n"
 "executeu\n"
 "$ git reset --hard\n"
@@ -11656,7 +11963,9 @@ msgstr "No es pot fer «rebase» sobre múltiples branques."
 
 #: builtin/pull.c:935
 msgid "cannot rebase with locally recorded submodule modifications"
-msgstr "no es pot fer «rebase» amb modificacions als submòduls enregistrades localment"
+msgstr ""
+"no es pot fer «rebase» amb modificacions als submòduls enregistrades "
+"localment"
 
 #: builtin/push.c:17
 msgid "git push [<options>] [<repository> [<refspec>...]]"
@@ -11676,7 +11985,8 @@ msgid ""
 "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:149
 #, c-format
@@ -11734,7 +12044,8 @@ msgstr ""
 #: builtin/push.c:186
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
-msgstr "La branca actual %s té múltiples branques fonts, s'està refusant pujar."
+msgstr ""
+"La branca actual %s té múltiples branques fonts, s'està refusant pujar."
 
 #: builtin/push.c:189
 #, c-format
@@ -11748,10 +12059,11 @@ msgstr ""
 "quina branca remota."
 
 #: builtin/push.c:248
-msgid "You didn't specify any refspecs to push, and push.default is \"nothing\"."
+msgid ""
+"You didn't specify any refspecs to push, and push.default is \"nothing\"."
 msgstr ""
-"No heu especificat cap especificació de referència a pujar, i push.default és \"nothing"
-"\"."
+"No heu especificat cap especificació de referència a pujar, i push.default "
+"és \"nothing\"."
 
 #: builtin/push.c:255
 msgid ""
@@ -11786,8 +12098,8 @@ msgid ""
 "(e.g., 'git pull ...') before pushing again.\n"
 "See the 'Note about fast-forwards' in 'git push --help' for details."
 msgstr ""
-"S'han rebutjat les actualitzacions perquè el remot conté treball\n"
-"que no teniu localment. Això acostumar a ser causat per un altre dipòsit\n"
+"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"
 "pujar de nou.\n"
@@ -11795,7 +12107,8 @@ msgstr ""
 
 #: builtin/push.c:274
 msgid "Updates were rejected because the tag already exists in the remote."
-msgstr "S'han rebutjat les actualitzacions perquè l'etiqueta ja existeix en el remot."
+msgstr ""
+"S'han rebutjat les actualitzacions perquè l'etiqueta ja existeix en el remot."
 
 #: builtin/push.c:277
 msgid ""
@@ -11826,7 +12139,8 @@ msgstr "dipòsit incorrecte «%s»"
 #: builtin/push.c:373
 msgid ""
 "No configured push destination.\n"
-"Either specify the URL from the command-line or configure a remote repository using\n"
+"Either specify the URL from the command-line or configure a remote "
+"repository using\n"
 "\n"
 "    git remote add <name> <url>\n"
 "\n"
@@ -11835,8 +12149,8 @@ msgid ""
 "    git push <name>\n"
 msgstr ""
 "No hi ha cap destí de pujada configurat.\n"
-"Especifiqueu l'URL des de la línia d'ordres o bé configureu un dipòsit remot fent "
-"servir\n"
+"Especifiqueu l'URL des de la línia d'ordres o bé configureu un dipòsit remot "
+"fent servir\n"
 "\n"
 "    git remote add <nom> <url>\n"
 "\n"
@@ -11904,7 +12218,8 @@ msgstr "controla la pujada recursiva dels submòduls"
 msgid "use thin pack"
 msgstr "usa el paquet prim"
 
-#: builtin/push.c:552 builtin/push.c:553 builtin/send-pack.c:160 builtin/send-pack.c:161
+#: builtin/push.c:552 builtin/push.c:553 builtin/send-pack.c:160
+#: builtin/send-pack.c:161
 msgid "receive pack program"
 msgstr "programa que rep els paquets"
 
@@ -11954,13 +12269,13 @@ msgstr "les opcions de pujada no han de tenir caràcters de línia nova"
 
 #: builtin/read-tree.c:40
 msgid ""
-"git read-tree [(-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>) [-u [--"
-"exclude-per-directory=<gitignore>] | -i]] [--no-sparse-checkout] [--index-output=<file>] "
-"(--empty | <tree-ish1> [<tree-ish2> [<tree-ish3>]])"
+"git read-tree [(-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>) "
+"[-u [--exclude-per-directory=<gitignore>] | -i]] [--no-sparse-checkout] [--"
+"index-output=<file>] (--empty | <tree-ish1> [<tree-ish2> [<tree-ish3>]])"
 msgstr ""
-"git read-tree [(-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>) [-u [--"
-"exclude-per-directory=<gitignore>] | -i]] [--no-sparse-checkout] [--index-"
-"output=<fitxer>] (--empty | <arbre1> [<arbre2> [<arbre3>]])"
+"git read-tree [(-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>) "
+"[-u [--exclude-per-directory=<gitignore>] | -i]] [--no-sparse-checkout] [--"
+"index-output=<fitxer>] (--empty | <arbre1> [<arbre2> [<arbre3>]])"
 
 #: builtin/read-tree.c:121
 msgid "write resulting index to <file>"
@@ -12150,11 +12465,11 @@ msgstr "git remote [-v | --verbose]"
 
 #: builtin/remote.c:14
 msgid ""
-"git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--mirror=<fetch|"
-"push>] <name> <url>"
+"git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
+"mirror=<fetch|push>] <name> <url>"
 msgstr ""
-"git remote add [-t <branca>] [-m <mestra>] [-f] [--tags | --no-tags] [--mirror=<fetch|"
-"push>] <nom> <url>"
+"git remote add [-t <branca>] [-m <mestra>] [-f] [--tags | --no-tags] [--"
+"mirror=<fetch|push>] <nom> <url>"
 
 #: builtin/remote.c:15 builtin/remote.c:35
 msgid "git remote rename <old> <new>"
@@ -12177,8 +12492,10 @@ msgid "git remote prune [-n | --dry-run] <name>"
 msgstr "git remote prune [-n | --dry-run] <nom>"
 
 #: builtin/remote.c:20
-msgid "git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]"
-msgstr "git remote [-v | --verbose] update [-p | --prune] [(<grup> | <remot>)...]"
+msgid ""
+"git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]"
+msgstr ""
+"git remote [-v | --verbose] update [-p | --prune] [(<grup> | <remot>)...]"
 
 #: builtin/remote.c:21
 msgid "git remote set-branches [--add] <name> <branch>..."
@@ -12277,7 +12594,8 @@ msgstr "especificar una branca mestra no té sentit amb --mirror"
 
 #: builtin/remote.c:184
 msgid "specifying branches to track makes sense only with fetch mirrors"
-msgstr "especificar les branques a seguir té sentit només amb miralls d'obtenció"
+msgstr ""
+"especificar les branques a seguir té sentit només amb miralls d'obtenció"
 
 #: builtin/remote.c:191 builtin/remote.c:631
 #, c-format
@@ -12297,7 +12615,8 @@ msgstr "No s'ha pogut configurar la mestra «%s»"
 #: builtin/remote.c:337
 #, c-format
 msgid "Could not get fetch map for refspec %s"
-msgstr "No s'ha pogut obtenir el mapa d'obtenció de l'especificació de referència %s"
+msgstr ""
+"No s'ha pogut obtenir el mapa d'obtenció de l'especificació de referència %s"
 
 #: builtin/remote.c:438 builtin/remote.c:446
 msgid "(matching)"
@@ -12324,7 +12643,8 @@ msgid ""
 "\t%s\n"
 "\tPlease update the configuration manually if necessary."
 msgstr ""
-"No s'està actualitzant l'especificació de referències d'obtenció no per defecte\n"
+"No s'està actualitzant l'especificació de referències d'obtenció no per "
+"defecte\n"
 "\t%s\n"
 "\tActualitzeu la configuració manualment si és necessari."
 
@@ -12349,7 +12669,8 @@ msgstr[0] ""
 "Nota: Una branca fora de la jerarquia refs/remotes/ no s'ha eliminat;\n"
 "per a suprimir-la, useu:"
 msgstr[1] ""
-"Nota: Algunes branques fora de la jerarquia refs/remotes/ no s'han eliminat;\n"
+"Nota: Algunes branques fora de la jerarquia refs/remotes/ no s'han "
+"eliminat;\n"
 "per a suprimir-les, useu:"
 
 #: builtin/remote.c:810
@@ -12486,8 +12807,10 @@ msgstr "(desconegut)"
 
 #: builtin/remote.c:1171
 #, c-format
-msgid "  HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
-msgstr "  Branca de HEAD (el HEAD remot és ambigu, pot ser un dels següents):\n"
+msgid ""
+"  HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
+msgstr ""
+"  Branca de HEAD (la HEAD remot és ambigua, pot ser un dels següents):\n"
 
 #: builtin/remote.c:1183
 #, c-format
@@ -12527,7 +12850,7 @@ msgstr "suprimeix refs/remotes/<name>/HEAD"
 
 #: builtin/remote.c:1247
 msgid "Cannot determine remote HEAD"
-msgstr "No es pot determinar el HEAD remot"
+msgstr "No es pot determinar la HEAD remota"
 
 #: builtin/remote.c:1249
 msgid "Multiple remote HEAD branches. Please choose one explicitly with:"
@@ -12656,8 +12979,10 @@ msgid ""
 "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"
-"--no-write-bitmap-index o inhabiliteu el paràmetre de configuració pack.writebitmaps."
+"Els reempaquetaments incrementals són incompatibles amb els índexs de "
+"bitmaps.  Useu\n"
+"--no-write-bitmap-index o inhabiliteu el paràmetre de configuració pack."
+"writebitmaps."
 
 #: builtin/repack.c:170
 msgid "pack everything in a single pack"
@@ -12714,7 +13039,8 @@ msgstr "octets"
 #: builtin/repack.c:194
 msgid "same as the above, but limit memory size instead of entries count"
 msgstr ""
-"el mateix que l'anterior, però limita la mida de memòria en lloc del nombre d'entrades"
+"el mateix que l'anterior, però limita la mida de memòria en lloc del nombre "
+"d'entrades"
 
 #: builtin/repack.c:196
 msgid "limits the maximum delta depth"
@@ -12783,11 +13109,11 @@ msgstr "etiqueta de fusió mal formada en la comissió «%s»"
 #: builtin/replace.c:374
 #, c-format
 msgid ""
-"original commit '%s' contains mergetag '%s' that is discarded; use --edit instead of --"
-"graft"
+"original commit '%s' contains mergetag '%s' that is discarded; use --edit "
+"instead of --graft"
 msgstr ""
-"la comissió original «%s» conté l'etiqueta de fusió «%s» que es descarta; useu --edit en "
-"lloc de --graft"
+"la comissió original «%s» conté l'etiqueta de fusió «%s» que es descarta; "
+"useu --edit en lloc de --graft"
 
 #: builtin/replace.c:407
 #, c-format
@@ -12840,8 +13166,10 @@ msgid "register clean resolutions in index"
 msgstr "registra les resolucions netes en l'índex"
 
 #: builtin/reset.c:29
-msgid "git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]"
-msgstr "git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<comissió>]"
+msgid ""
+"git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]"
+msgstr ""
+"git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<comissió>]"
 
 #: builtin/reset.c:30
 msgid "git reset [-q] [<tree-ish>] [--] <paths>..."
@@ -12934,7 +13262,9 @@ msgstr "--patch és incompatible amb --{hard,mixed,soft}"
 
 #: builtin/reset.c:347
 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 d'això."
+msgstr ""
+"--mixed amb camins està en desús; useu 'git reset -- <camins>' en lloc "
+"d'això."
 
 #: builtin/reset.c:349
 #, c-format
@@ -13012,7 +13342,8 @@ msgstr ""
 "   or: git rev-parse --sq-quote [<paràmetre>...]\n"
 "   or: git rev-parse [<opcions>] [<paràmetre>...]\n"
 "\n"
-"Executeu \"git rev-parse --parseopt -h\" per més informació sobre l'ús inicial."
+"Executeu \"git rev-parse --parseopt -h\" per més informació sobre l'ús "
+"inicial."
 
 #: builtin/revert.c:23
 msgid "git revert [<options>] <commit-ish>..."
@@ -13108,10 +13439,10 @@ msgid_plural ""
 "file and the HEAD:"
 msgstr[0] ""
 "el fitxer següent té contingut «stage» diferent d'ambdós el\n"
-"fitxer i el HEAD:"
+"fitxer i la HEAD:"
 msgstr[1] ""
 "els fitxers següents tenen contingut «stage» diferent d'ambdós\n"
-"el fitxer i el HEAD:"
+"el fitxer i la HEAD:"
 
 #: builtin/rm.c:211
 msgid ""
@@ -13178,12 +13509,14 @@ msgstr "no s'ha pogut suprimir «%s»"
 
 #: builtin/send-pack.c:19
 msgid ""
-"git send-pack [--all | --mirror] [--dry-run] [--force] [--receive-pack=<git-receive-"
-"pack>] [--verbose] [--thin] [--atomic] [<host>:]<directory> [<ref>...]\n"
+"git send-pack [--all | --mirror] [--dry-run] [--force] [--receive-pack=<git-"
+"receive-pack>] [--verbose] [--thin] [--atomic] [<host>:]<directory> "
+"[<ref>...]\n"
 "  --all and explicit <ref> specification are mutually exclusive."
 msgstr ""
-"git send-pack [--all | --mirror] [--dry-run] [--force] [--receive-pack=<paquet-del-git-"
-"receive>] [--verbose] [--thin] [--atomic] [<màquina>:]<directori> [<referència>...]\n"
+"git send-pack [--all | --mirror] [--dry-run] [--force] [--receive-"
+"pack=<paquet-del-git-receive>] [--verbose] [--thin] [--atomic] "
+"[<màquina>:]<directori> [<referència>...]\n"
 "  --all i especificació <referència> explícita són mútuament excloents."
 
 #: builtin/send-pack.c:162
@@ -13216,7 +13549,8 @@ msgstr "ordena la sortida segons el nombre de comissions per autor"
 
 #: builtin/shortlog.c:267
 msgid "Suppress commit descriptions, only provides commit count"
-msgstr "Omet les descripcions de comissió, només proveeix el recompte de comissions"
+msgstr ""
+"Omet les descripcions de comissió, només proveeix el recompte de comissions"
 
 #: builtin/shortlog.c:269
 msgid "Show the email address of each author"
@@ -13323,8 +13657,10 @@ msgid "show <n> most recent ref-log entries starting at base"
 msgstr "mostra les <n> entrades més recents començant a la base"
 
 #: builtin/show-branch.c:690
-msgid "--reflog is incompatible with --all, --remotes, --independent or --merge-base"
-msgstr "--reflog és incompatible amb --all, --remotes, --independent o --merge-base"
+msgid ""
+"--reflog is incompatible with --all, --remotes, --independent or --merge-base"
+msgstr ""
+"--reflog és incompatible amb --all, --remotes, --independent o --merge-base"
 
 #: builtin/show-branch.c:714
 msgid "no branches given, and HEAD is not valid"
@@ -13365,11 +13701,11 @@ msgstr "no es pot trobar la comissió %s (%s)"
 
 #: builtin/show-ref.c:10
 msgid ""
-"git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --hash[=<n>]] "
-"[--abbrev[=<n>]] [--tags] [--heads] [--] [<pattern>...]"
+"git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --"
+"hash[=<n>]] [--abbrev[=<n>]] [--tags] [--heads] [--] [<pattern>...]"
 msgstr ""
-"git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --hash[=<n>]] "
-"[--abbrev[=<n>]] [--tags] [--heads] [--] [<patró>...]"
+"git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --"
+"hash[=<n>]] [--abbrev[=<n>]] [--tags] [--heads] [--] [<patró>...]"
 
 #: builtin/show-ref.c:11
 msgid "git show-ref --exclude-existing[=<pattern>]"
@@ -13385,7 +13721,9 @@ msgstr "mostra només els caps (es pot combinar amb tags)"
 
 #: builtin/show-ref.c:161
 msgid "stricter reference checking, requires exact ref path"
-msgstr "comprovació de referència més estricta, requereix el camí de referència exacte"
+msgstr ""
+"comprovació de referència més estricta, requereix el camí de referència "
+"exacte"
 
 #: builtin/show-ref.c:164 builtin/show-ref.c:166
 msgid "show the HEAD reference, even if it would be filtered out"
@@ -13417,7 +13755,8 @@ msgstr "git stripspace [-c | --comment-lines]"
 
 #: builtin/stripspace.c:36
 msgid "skip and remove all lines starting with comment character"
-msgstr "omet i elimina totes les línies que comencin amb el caràcter de comentari"
+msgstr ""
+"omet i elimina totes les línies que comencin amb el caràcter de comentari"
 
 #: builtin/stripspace.c:39
 msgid "prepend comment character and space to each line"
@@ -13458,11 +13797,11 @@ msgstr "No s'ha trobat cap url per al camí de submòdul «%s» a .gitmodules"
 #: builtin/submodule--helper.c:498
 #, c-format
 msgid ""
-"could not lookup configuration '%s'. Assuming this repository is its own authoritative "
-"upstream."
+"could not lookup configuration '%s'. Assuming this repository is its own "
+"authoritative upstream."
 msgstr ""
-"no s'ha pogut trobar la configuració «%s». S'assumeix que aquest dipòsit és el seu "
-"dipòsit font autoritzat."
+"no s'ha pogut trobar la configuració «%s». S'assumeix que aquest dipòsit és "
+"el seu dipòsit font autoritzat."
 
 #: builtin/submodule--helper.c:509
 #, c-format
@@ -13477,13 +13816,16 @@ msgstr "S'ha registrat el submòdul «%s» (%s) per al camí «%s»\n"
 #: builtin/submodule--helper.c:523
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
-msgstr "advertència: se suggereix el mode d'actualització per ordre per al submòdul «%s»\n"
+msgstr ""
+"advertència: se suggereix el mode d'actualització per ordre per al submòdul "
+"«%s»\n"
 
 #: builtin/submodule--helper.c:530
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
 msgstr ""
-"S'ha produït un error en registrar el mode d'actualització per al camí de submòdul «%s»"
+"S'ha produït un error en registrar el mode d'actualització per al camí de "
+"submòdul «%s»"
 
 #: builtin/submodule--helper.c:552
 msgid "Suppress output for initializing a submodule"
@@ -13513,7 +13855,9 @@ msgid "Suppress submodule status output"
 msgstr "Suprimeix la sortida de l'estat del submòdul"
 
 #: builtin/submodule--helper.c:712
-msgid "Use commit stored in the index instead of the one stored in the submodule HEAD"
+msgid ""
+"Use commit stored in the index instead of the one stored in the submodule "
+"HEAD"
 msgstr ""
 
 #: builtin/submodule--helper.c:713
@@ -13522,7 +13866,7 @@ msgstr "inclou recursivament els submòduls imbrincats"
 
 #: builtin/submodule--helper.c:718
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
-msgstr  "git submodule status [--quiet] [--cached] [--recursive] [<camí>...]"
+msgstr "git submodule status [--quiet] [--cached] [--recursive] [<camí>...]"
 
 #: builtin/submodule--helper.c:742
 msgid "git submodule--helper name <path>"
@@ -13539,9 +13883,10 @@ msgid "failed to register url for submodule path '%s'"
 msgstr "s'ha produït un error en registrar l'url per al camí del submòdul «%s»"
 
 #: builtin/submodule--helper.c:826
-#,  c-format
+#, c-format
 msgid "failed to get the default remote for submodule '%s'"
-msgstr "s'ha produït un error en obtenir el remot per defecte pel submòdul «%s»"
+msgstr ""
+"s'ha produït un error en obtenir el remot per defecte pel submòdul «%s»"
 
 #: builtin/submodule--helper.c:837
 #, c-format
@@ -13563,18 +13908,20 @@ msgstr "git submodule--helper sync [--quiet] [--recursive] [<camí>]"
 #: builtin/submodule--helper.c:946
 #, c-format
 msgid ""
-"Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you really want to "
-"remove it including all of its history)"
+"Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
+"really want to remove it including all of its history)"
 msgstr ""
 "L'arbre de treball de submòdul «%s» conté un directori .git\n"
 "(useu 'rm -rf' si realment voleu eliminar-lo, incloent tota la seva història)"
 
 #: builtin/submodule--helper.c:958
 #, c-format
-msgid "Submodule work tree '%s' contains local modifications; use '-f' to discard them"
+msgid ""
+"Submodule work tree '%s' contains local modifications; use '-f' to discard "
+"them"
 msgstr ""
-"L'arbre de treball del submòdul «%s» conté modificacions locals; useu '-f' per "
-"a descartar-les"
+"L'arbre de treball del submòdul «%s» conté modificacions locals; useu '-f' "
+"per a descartar-les"
 
 #: builtin/submodule--helper.c:966
 #, c-format
@@ -13592,22 +13939,25 @@ msgid "could not create empty submodule directory %s"
 msgstr "no s'ha pogut crear el directori de submòdul buit %s"
 
 #: builtin/submodule--helper.c:993
-#, fuzzy, c-format
+#, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
-msgstr "S'ha registrat el submòdul «%s» (%s) per al camí «%s»\n"
+msgstr "S'ha desregistrat el submòdul «%s» (%s) per al camí «%s»\n"
 
 #: builtin/submodule--helper.c:1022
 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 locals"
+msgstr ""
+"Suprimeix els arbres de treball dels submòduls fins i tot si contenen canvis "
+"locals"
 
 #: builtin/submodule--helper.c:1023
-#, fuzzy
 msgid "Unregister all submodules"
-msgstr "inclou recursivament als submòduls"
+msgstr "Desregistra recursivament tots els submòduls"
 
 #: builtin/submodule--helper.c:1028
-msgid "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
-msgstr  "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<camí>...]]"
+msgid ""
+"git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
+msgstr ""
+"git submodule deinit [--quiet] [-f | --force] [--all | [--] [<camí>...]]"
 
 #: builtin/submodule--helper.c:1042
 msgid "Use '--all' if you really want to deinitialize all submodules"
@@ -13650,11 +14000,11 @@ msgstr "força el progrés del clonatge"
 
 #: builtin/submodule--helper.c:1221
 msgid ""
-"git submodule--helper clone [--prefix=<path>] [--quiet] [--reference <repository>] [--"
-"name <name>] [--depth <depth>] --url <url> --path <path>"
+"git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
+"<repository>] [--name <name>] [--depth <depth>] --url <url> --path <path>"
 msgstr ""
-"git submodule--helper clone [--prefix=<camí>] [--quiet] [--reference <dipòsit>] [--name "
-"<nom>] [--depth <profunditat>] --url <url> --path <camí>"
+"git submodule--helper clone [--prefix=<camí>] [--quiet] [--reference "
+"<dipòsit>] [--name <nom>] [--depth <profunditat>] --url <url> --path <camí>"
 
 #: builtin/submodule--helper.c:1252
 #, c-format
@@ -13734,11 +14084,11 @@ msgstr "valor incorrecte per al paràmetre update"
 #: builtin/submodule--helper.c:1673
 #, c-format
 msgid ""
-"Submodule (%s) branch configured to inherit branch from superproject, but the "
-"superproject is not on any branch"
+"Submodule (%s) branch configured to inherit branch from superproject, but "
+"the superproject is not on any branch"
 msgstr ""
-"La branca de submòdul (%s) està configurada per a heretar la branca del superprojecte, "
-"però el superprojecte no és en cap branca"
+"La branca de submòdul (%s) està configurada per a heretar la branca del "
+"superprojecte, però el superprojecte no és en cap branca"
 
 #: builtin/submodule--helper.c:1789
 msgid "recurse into submodules"
@@ -13787,10 +14137,12 @@ msgid "reason of the update"
 msgstr "raó de l'actualització"
 
 #: builtin/tag.c:24
-msgid "git tag [-a | -s | -u <key-id>] [-f] [-m <msg> | -F <file>] <tagname> [<head>]"
+msgid ""
+"git tag [-a | -s | -u <key-id>] [-f] [-m <msg> | -F <file>] <tagname> "
+"[<head>]"
 msgstr ""
-"git tag [-a | -s | -u <id-de-clau>] [-f] [-m <missatge> | -F <fitxer>] <nom-d'etiqueta> "
-"[<cap>]"
+"git tag [-a | -s | -u <id-de-clau>] [-f] [-m <missatge> | -F <fitxer>] <nom-"
+"d'etiqueta> [<cap>]"
 
 #: builtin/tag.c:25
 msgid "git tag -d <tagname>..."
@@ -13798,12 +14150,12 @@ msgstr "git tag -d <nom-d'etiqueta>..."
 
 #: builtin/tag.c:26
 msgid ""
-"git tag -l [-n[<num>]] [--contains <commit>] [--no-contains <commit>] [--points-at "
-"<object>]\n"
+"git tag -l [-n[<num>]] [--contains <commit>] [--no-contains <commit>] [--"
+"points-at <object>]\n"
 "\t\t[--format=<format>] [--[no-]merged [<commit>]] [<pattern>...]"
 msgstr ""
-"git tag -l [-n[<nombre>]] [--contains <comissió>] [--no-contains <comissió>] [--points-"
-"at <objecte>]\n"
+"git tag -l [-n[<nombre>]] [--contains <comissió>] [--no-contains <comissió>] "
+"[--points-at <objecte>]\n"
 "\t\t[--format=<format>] [--[no-]merged [<comissió>]] [<patró>...]"
 
 #: builtin/tag.c:28
@@ -13839,13 +14191,14 @@ msgid ""
 "\n"
 "Write a message for tag:\n"
 "  %s\n"
-"Lines starting with '%c' will be kept; you may remove them yourself if you want to.\n"
+"Lines starting with '%c' will be kept; you may remove them yourself if you "
+"want to.\n"
 msgstr ""
 "\n"
 "Escriviu el missatge de l'etiqueta:\n"
 "  %s\n"
-"Les línies que comencin amb '%c' es retindran; podeu eliminar-les per vós mateix si "
-"voleu.\n"
+"Les línies que comencin amb '%c' es retindran; podeu eliminar-les per vós "
+"mateix si voleu.\n"
 
 #: builtin/tag.c:189
 msgid "unable to sign the tag"
@@ -14027,29 +14380,34 @@ msgstr "S'està provant mtime en «%s» "
 
 #: builtin/update-index.c:152
 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"
+msgstr ""
+"la informació d'stat de directori no canvia després d'afegir un fitxer nou"
 
 #: builtin/update-index.c:165
 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"
+msgstr ""
+"la informació d'stat de directori no canvia després d'afegir un directori nou"
 
 #: builtin/update-index.c:178
 msgid "directory stat info changes after updating a file"
-msgstr "la informació d'stat de directori canvia després d'actualitzar un fitxer"
+msgstr ""
+"la informació d'stat de directori canvia després d'actualitzar un fitxer"
 
 #: builtin/update-index.c:189
 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 d'un "
-"subdirectori"
+"la informació d'stat de directori canvia després d'afegir un fitxer dins "
+"d'un subdirectori"
 
 #: builtin/update-index.c:200
 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"
+msgstr ""
+"la informació d'stat de directori no canvia després de suprimir un fitxer"
 
 #: builtin/update-index.c:213
 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"
+msgstr ""
+"la informació d'stat de directori no canvia després de suprimir un directori"
 
 #: builtin/update-index.c:220
 msgid " OK"
@@ -14061,7 +14419,8 @@ msgstr "git update-index [<opcions>] [--] [<fitxer>...]"
 
 #: builtin/update-index.c:936
 msgid "continue refresh even when index needs update"
-msgstr "continua l'actualització encara que l'índex necessiti una actualització"
+msgstr ""
+"continua l'actualització encara que l'índex necessiti una actualització"
 
 #: builtin/update-index.c:939
 msgid "refresh: ignore submodules"
@@ -14117,11 +14476,15 @@ msgstr "neteja el bit skip-worktree"
 
 #: builtin/update-index.c:981
 msgid "add to index only; do not add content to object database"
-msgstr "només afegeix a l'índex; no afegeixis el contingut a la base de dades d'objectes"
+msgstr ""
+"només afegeix a l'índex; no afegeixis el contingut a la base de dades "
+"d'objectes"
 
 #: builtin/update-index.c:983
 msgid "remove named paths even if present in worktree"
-msgstr "elimina els camins anomenats encara que estiguin presents en l'arbre de treball"
+msgstr ""
+"elimina els camins anomenats encara que estiguin presents en l'arbre de "
+"treball"
 
 #: builtin/update-index.c:985
 msgid "with --stdin: input lines are terminated by null bytes"
@@ -14193,27 +14556,27 @@ msgstr "neteja el bit de validesa del fsmonitor"
 
 #: builtin/update-index.c:1127
 msgid ""
-"core.splitIndex is set to false; remove or change it, if you really want to enable split "
-"index"
+"core.splitIndex is set to false; remove or change it, if you really want to "
+"enable split index"
 msgstr ""
-"core.splitIndex està establert a fals; elimineu-lo o canviar-lo, si realment voleu "
-"habilitar l'índex dividit"
+"core.splitIndex està establert a fals; elimineu-lo o canviar-lo, si realment "
+"voleu habilitar l'índex dividit"
 
 #: builtin/update-index.c:1136
 msgid ""
-"core.splitIndex is set to true; remove or change it, if you really want to disable split "
-"index"
+"core.splitIndex is set to true; remove or change it, if you really want to "
+"disable split index"
 msgstr ""
-"core.splitIndex està establert a cert; elimineu-lo o canvieu-lo, si realment voleu "
-"inhabilitar l'índex dividit"
+"core.splitIndex està establert a cert; elimineu-lo o canvieu-lo, si realment "
+"voleu inhabilitar l'índex dividit"
 
 #: builtin/update-index.c:1147
 msgid ""
-"core.untrackedCache is set to true; remove or change it, if you really want to disable "
-"the untracked cache"
+"core.untrackedCache is set to true; remove or change it, if you really want "
+"to disable the untracked cache"
 msgstr ""
-"core.untrackedCache està establert a cert; elimineu-lo o canvieu-lo, si realment voleu "
-"inhabilitar el cau no seguit"
+"core.untrackedCache està establert a cert; elimineu-lo o canvieu-lo, si "
+"realment voleu inhabilitar el cau no seguit"
 
 #: builtin/update-index.c:1151
 msgid "Untracked cache disabled"
@@ -14221,11 +14584,11 @@ msgstr "La memòria cau no seguida està inhabilitada"
 
 #: builtin/update-index.c:1159
 msgid ""
-"core.untrackedCache is set to false; remove or change it, if you really want to enable "
-"the untracked cache"
+"core.untrackedCache is set to false; remove or change it, if you really want "
+"to enable the untracked cache"
 msgstr ""
-"core.untrackedCache està establert a fals; elimineu-lo o canviar-lo, si realment voleu "
-"habilitar el cau no seguit"
+"core.untrackedCache està establert a fals; elimineu-lo o canviar-lo, si "
+"realment voleu habilitar el cau no seguit"
 
 #: builtin/update-index.c:1163
 #, c-format
@@ -14233,26 +14596,25 @@ msgid "Untracked cache enabled for '%s'"
 msgstr "La memòria cau no seguida està habilitada per a «%s»"
 
 #: builtin/update-index.c:1171
-#, fuzzy
 msgid "core.fsmonitor is unset; set it if you really want to enable fsmonitor"
 msgstr ""
-"core.splitIndex està establert a fals; elimineu-lo o canviar-lo, si realment voleu "
-"habilitar l'índex dividit"
+"core.fsmonitor està establert a fals; establiu-lo a cert si realment voleu "
+"habilitar fsmonitor"
 
 #: builtin/update-index.c:1175
 msgid "fsmonitor enabled"
-msgstr ""
+msgstr "fsmonitor habilitat"
 
 #: builtin/update-index.c:1178
-#, fuzzy
-msgid "core.fsmonitor is set; remove it if you really want to disable fsmonitor"
+msgid ""
+"core.fsmonitor is set; remove it if you really want to disable fsmonitor"
 msgstr ""
-"core.splitIndex està establert a cert; elimineu-lo o canvieu-lo, si realment voleu "
-"inhabilitar l'índex dividit"
+"core.fsmonitor està establert a cert; elimineu-lo si realment voleu "
+"inhabilitar fsmonitor"
 
 #: builtin/update-index.c:1182
 msgid "fsmonitor disabled"
-msgstr ""
+msgstr "fsmonitor inhabilitat"
 
 #: builtin/update-ref.c:10
 msgid "git update-ref [<options>] -d <refname> [<old-val>]"
@@ -14260,7 +14622,8 @@ msgstr "git update-ref [<opcions>] -d <nom-de-referència> [<valor-antic>]"
 
 #: builtin/update-ref.c:11
 msgid "git update-ref [<options>]    <refname> <new-val> [<old-val>]"
-msgstr "git update-ref [<opcions>]    <nom-de-referència> <valor-nou> [<valor-antic>]"
+msgstr ""
+"git update-ref [<opcions>]    <nom-de-referència> <valor-nou> [<valor-antic>]"
 
 #: builtin/update-ref.c:12
 msgid "git update-ref [<options>] --stdin [-z]"
@@ -14336,16 +14699,15 @@ msgstr "git worktree lock [<opcions>] <camí>"
 
 #: builtin/worktree.c:20
 msgid "git worktree move <worktree> <new-path>"
-msgstr "git worktree move <worktree> <camí-nou>"
+msgstr "git worktree move <arbre de treball> <camí-nou>"
 
 #: builtin/worktree.c:21
 msgid "git worktree prune [<options>]"
 msgstr "git worktree prune [<opcions>]"
 
 #: builtin/worktree.c:22
-#, fuzzy
 msgid "git worktree remove [<options>] <worktree>"
-msgstr "git worktree lock [<opcions>] <camí>"
+msgstr "git worktree lock [<opcions>] <arbre de treball>"
 
 #: builtin/worktree.c:23
 msgid "git worktree unlock <path>"
@@ -14368,10 +14730,12 @@ msgstr "Eliminació de worktrees/%s: no s'ha pogut llegir el fitxer gitdir (%s)"
 
 #: builtin/worktree.c:90
 #, c-format
-msgid "Removing worktrees/%s: short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgid ""
+"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 suprimint els arbres de treball/%s: lectura curta (s'esperaven "
+"%<PRIuMAX> bytes, llegits %<PRIuMAX>)"
 
 #: builtin/worktree.c:98
 #, c-format
@@ -14382,7 +14746,8 @@ msgstr "Eliminació de worktrees/%s: fitxer gitdir no vàlid"
 #, c-format
 msgid "Removing worktrees/%s: gitdir file points to non-existent location"
 msgstr ""
-"Eliminació de worktrees/%s: el fitxer gitdir es refereix a una ubicació no existent"
+"Eliminació de worktrees/%s: el fitxer gitdir es refereix a una ubicació no "
+"existent"
 
 #: builtin/worktree.c:161
 msgid "report pruned working trees"
@@ -14583,7 +14948,8 @@ msgstr "surt immediatament després de l'anunci inicial de referència"
 
 #: upload-pack.c:1074
 msgid "do not try <directory>/.git/ if <directory> is no Git directory"
-msgstr "no intentis <directori>/.git/ si <directori> no és cap directori del Git"
+msgstr ""
+"no intentis <directori>/.git/ si <directori> no és cap directori del Git"
 
 #: upload-pack.c:1076
 msgid "interrupt transfer after <n> seconds of inactivity"
@@ -14629,17 +14995,17 @@ msgstr ""
 #: git.c:95
 #, c-format
 msgid "no directory given for --git-dir\n"
-msgstr ""
+msgstr "no s'ha especificat un directori per --git-dir\n"
 
 #: git.c:109
 #, c-format
 msgid "no namespace given for --namespace\n"
-msgstr ""
+msgstr "no s'ha especificat un nom d'espai per --namespace\n"
 
 #: git.c:123
 #, c-format
 msgid "no directory given for --work-tree\n"
-msgstr ""
+msgstr "no s'ha especificat un directori per --work-tree\n"
 
 #: git.c:137
 #, fuzzy, c-format
@@ -14649,12 +15015,12 @@ msgstr "%s no admet --super-prefix"
 #: git.c:159
 #, c-format
 msgid "-c expects a configuration string\n"
-msgstr ""
+msgstr "-c espera una cadena de configuració\n"
 
 #: git.c:197
 #, c-format
 msgid "no directory given for -C\n"
-msgstr ""
+msgstr "no s'ha especificat un directori per -C\n"
 
 #: git.c:212
 #, c-format
@@ -14755,7 +15121,8 @@ msgstr "Registra els canvis al dipòsit"
 
 #: common-cmds.h:23
 msgid "Show changes between commits, commit and working tree, etc"
-msgstr "Mostra els canvis entre comissions, la comissió i l'arbre de treball, etc."
+msgstr ""
+"Mostra els canvis entre comissions, la comissió i l'arbre de treball, etc."
 
 #: common-cmds.h:24
 msgid "Download objects and refs from another repository"
@@ -14787,7 +15154,8 @@ msgstr "Obtén i integra amb un altre dipòsit o una branca local"
 
 #: common-cmds.h:31
 msgid "Update remote refs along with associated objects"
-msgstr "Actualitza les referències remotes juntament amb els objectes associats"
+msgstr ""
+"Actualitza les referències remotes juntament amb els objectes associats"
 
 #: common-cmds.h:32
 msgid "Reapply commits on top of another base tip"
@@ -14795,7 +15163,7 @@ msgstr "Reaplica les comissions sobre un altre punt de basament"
 
 #: common-cmds.h:33
 msgid "Reset current HEAD to the specified state"
-msgstr "Restableix el HEAD actual a l'estat especificat"
+msgstr "Restableix la HEAD actual a l'estat especificat"
 
 #: common-cmds.h:34
 msgid "Remove files from the working tree and from the index"
@@ -14811,7 +15179,8 @@ msgstr "Mostra l'estat de l'arbre de treball"
 
 #: common-cmds.h:37
 msgid "Create, list, delete or verify a tag object signed with GPG"
-msgstr "Crea, llista, suprimeix o verifica un objecte d'etiqueta signat amb GPG"
+msgstr ""
+"Crea, llista, suprimeix o verifica un objecte d'etiqueta signat amb GPG"
 
 #: parse-options.h:157
 msgid "expiry-date"
@@ -14835,7 +15204,8 @@ msgstr "usa <n> xifres per presentar els SHA-1"
 
 #: rerere.h:40
 msgid "update the index with reused conflict resolution if possible"
-msgstr "actualitza l'índex amb la resolució de conflicte reusada si és possible"
+msgstr ""
+"actualitza l'índex amb la resolució de conflicte reusada si és possible"
 
 #: git-bisect.sh:54
 msgid "You need to start by \"git bisect start\""
@@ -14864,8 +15234,11 @@ msgstr "HEAD incorrecte - Cal un HEAD"
 
 #: git-bisect.sh:167
 #, sh-format
-msgid "Checking out '$start_head' failed. Try 'git bisect reset <valid-branch>'."
-msgstr "L'agafament de '$start_head' ha fallat. Proveu 'git bisect reset <branca-vàlida>'."
+msgid ""
+"Checking out '$start_head' failed. Try 'git bisect reset <valid-branch>'."
+msgstr ""
+"L'agafament de '$start_head' ha fallat. Proveu 'git bisect reset <branca-"
+"vàlida>'."
 
 #: git-bisect.sh:177
 msgid "won't bisect on cg-seek'ed tree"
@@ -14947,7 +15320,7 @@ msgid ""
 "Could not check out original HEAD '$branch'.\n"
 "Try 'git bisect reset <commit>'."
 msgstr ""
-"No s'ha pogut agafar el HEAD original '$branch'.\n"
+"No s'ha pogut agafar la HEAD original '$branch'.\n"
 "Proveu 'git bisect reset <comissió>'."
 
 #: git-bisect.sh:422
@@ -15001,7 +15374,8 @@ msgstr "pas de bisecció reeixit"
 #: git-bisect.sh:533
 #, sh-format
 msgid "Invalid command: you're currently in a $TERM_BAD/$TERM_GOOD bisect."
-msgstr "Ordre no vàlida: actualment esteu en una bisecció $TERM_BAD/$TERM_GOOD."
+msgstr ""
+"Ordre no vàlida: actualment esteu en una bisecció $TERM_BAD/$TERM_GOOD."
 
 #: git-bisect.sh:567
 msgid "no terms defined"
@@ -15017,9 +15391,12 @@ msgstr ""
 "Les opcions admeses són: --term-good|--term-old i --term-bad|--term-new."
 
 #: git-merge-octopus.sh:46
-msgid "Error: Your local changes to the following files would be overwritten by merge"
+msgid ""
+"Error: Your local changes to the following files would be overwritten by "
+"merge"
 msgstr ""
-"Error: Els vostres canvis locals als fitxers següents se sobreescriurien per fusionar"
+"Error: Els vostres canvis locals als fitxers següents se sobreescriurien per "
+"fusionar"
 
 #: git-merge-octopus.sh:61
 msgid "Automated merge did not work."
@@ -15051,20 +15428,23 @@ msgstr "S'està intentant una fusió simple amb $pretty_name"
 
 #: git-merge-octopus.sh:102
 msgid "Simple merge did not work, trying automatic merge."
-msgstr "La fusió simple no ha funcionat, s'està intentant una fusió automàtica."
+msgstr ""
+"La fusió simple no ha funcionat, s'està intentant una fusió automàtica."
 
 #: git-rebase.sh:60
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
 "You can instead skip this commit: run \"git rebase --skip\".\n"
-"To abort and get back to the state before \"git rebase\", run \"git rebase --abort\"."
+"To abort and get back to the state before \"git rebase\", run \"git rebase --"
+"abort\"."
 msgstr ""
 "Resolgueu tots els conflictes manualment, marqueu-los com a resolts amb\n"
-"«git add/rm <fitxers amb conflicte>», llavors executeu «git rebase --continue».\n"
+"«git add/rm <fitxers amb conflicte>», llavors executeu «git rebase --"
+"continue».\n"
 "Podeu en comptes ometre aquesta comissió: executeu «git rebase --skip».\n"
-"Per a avortar i tornar a l'estat anterior abans de l'ordre «git rebase», executeu «git "
-"rebase --abort»."
+"Per a avortar i tornar a l'estat anterior abans de l'ordre «git rebase», "
+"executeu «git rebase --abort»."
 
 #: git-rebase.sh:163 git-rebase.sh:409
 #, sh-format
@@ -15195,7 +15575,8 @@ msgstr "Canvis de $mb a $onto:"
 
 #: git-rebase.sh:651
 msgid "First, rewinding head to replay your work on top of it..."
-msgstr "Primer, s'està rebobinant HEAD per a reproduir el vostre treball al damunt..."
+msgstr ""
+"Primer, s'està rebobinant HEAD per a reproduir el vostre treball al damunt..."
 
 #: git-rebase.sh:661
 #, sh-format
@@ -15350,7 +15731,9 @@ msgstr "(Per restaurar-les teclegeu \"git stash apply\")"
 
 #: git-submodule.sh:181
 msgid "Relative path can only be used from the toplevel of the working tree"
-msgstr "El camí relatiu només es pot usar des del nivell superior de l'arbre de treball"
+msgstr ""
+"El camí relatiu només es pot usar des del nivell superior de l'arbre de "
+"treball"
 
 #: git-submodule.sh:191
 #, sh-format
@@ -15391,25 +15774,31 @@ msgstr "'$sm_path' ja existeix i no és un dipòsit de git vàlid"
 #: git-submodule.sh:247
 #, 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:"
+msgstr ""
+"Es troba un directori de git per a '$sm_name' localment amb els remots:"
 
 #: git-submodule.sh:249
 #, sh-format
 msgid ""
 "If you want to reuse this local git directory instead of cloning again from\n"
 "  $realrepo\n"
-"use the '--force' option. If the local git directory is not the correct repo\n"
-"or you are unsure what this means choose another name with the '--name' option."
+"use the '--force' option. If the local git directory is not the correct "
+"repo\n"
+"or you are unsure what this means choose another name with the '--name' "
+"option."
 msgstr ""
 "Si voleu reusar aquest directori de git local en lloc de clonar de nou de\n"
 "  $realrepo\n"
-"useu l'opció '--force'. Si el directori de git local no és el dipòsit correcte\n"
-"o no esteu segur de què vol dir això, trieu un altre nom amb l'opció '--name'."
+"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'."
 
 #: git-submodule.sh:255
 #, sh-format
 msgid "Reactivating local git directory for submodule '$sm_name'."
-msgstr "S'està reactivant el directori de git local per al submòdul '$sm_name'."
+msgstr ""
+"S'està reactivant el directori de git local per al submòdul '$sm_name'."
 
 #: git-submodule.sh:267
 #, sh-format
@@ -15434,12 +15823,14 @@ msgstr "S'està entrant '$displaypath'"
 #: git-submodule.sh:362
 #, sh-format
 msgid "Stopping at '$displaypath'; script returned non-zero status."
-msgstr "S'està aturant a '$displaypath'; l'script ha retornat un estat no zero."
+msgstr ""
+"S'està aturant a '$displaypath'; l'script ha retornat un estat no zero."
 
 #: git-submodule.sh:584
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
-msgstr "No s'ha pogut trobar la revisió actual en el camí de submòdul '$displaypath'"
+msgstr ""
+"No s'ha pogut trobar la revisió actual en el camí de submòdul '$displaypath'"
 
 #: git-submodule.sh:594
 #, sh-format
@@ -15449,10 +15840,11 @@ msgstr "No s'ha pogut obtenir en el camí de submòdul '$sm_path'"
 #: git-submodule.sh:599
 #, sh-format
 msgid ""
-"Unable to find current ${remote_name}/${branch} revision in submodule path '$sm_path'"
+"Unable to find current ${remote_name}/${branch} revision in submodule path "
+"'$sm_path'"
 msgstr ""
-"No s'ha pogut trobar la revisió actual de ${remote_name}/${branch} en el camí de "
-"submòdul '$sm_path'"
+"No s'ha pogut trobar la revisió actual de ${remote_name}/${branch} en el "
+"camí de submòdul '$sm_path'"
 
 #: git-submodule.sh:617
 #, sh-format
@@ -15462,11 +15854,11 @@ msgstr "No s'ha pogut obtenir en el camí de submòdul '$displaypath'"
 #: git-submodule.sh:623
 #, sh-format
 msgid ""
-"Fetched in submodule path '$displaypath', but it did not contain $sha1. Direct fetching "
-"of that commit failed."
+"Fetched in submodule path '$displaypath', but it did not contain $sha1. "
+"Direct fetching of that commit failed."
 msgstr ""
-"S'ha obtingut en el camí de submòdul '$displaypath', però no contenia $sha1. L'obtenció "
-"directa d'aquella comissió ha fallat."
+"S'ha obtingut en el camí de submòdul '$displaypath', però no contenia $sha1. "
+"L'obtenció directa d'aquella comissió ha fallat."
 
 #: git-submodule.sh:630
 #, sh-format
@@ -15481,7 +15873,8 @@ msgstr "Camí de submòdul '$displaypath': s'ha agafat '$sha1'"
 #: git-submodule.sh:635
 #, 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'"
+msgstr ""
+"No s'ha pogut fer «rebase» '$sha1' en el camí de submòdul '$displaypath'"
 
 #: git-submodule.sh:636
 #, sh-format
@@ -15501,7 +15894,9 @@ msgstr "Camí de submòdul '$displaypath': s'ha fusionat en '$sha1'"
 #: git-submodule.sh:647
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
-msgstr "L'execució de '$command $sha1' ha fallat en el camí de submòdul '$displaypath'"
+msgstr ""
+"L'execució de '$command $sha1' ha fallat en el camí de submòdul "
+"'$displaypath'"
 
 #: git-submodule.sh:648
 #, sh-format
@@ -15512,7 +15907,8 @@ msgstr "Camí de submòdul '$displaypath': '$command $sha1'"
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr ""
-"S'ha produït un error en recorre recursivament dins del camí de submòdul '$displaypath'"
+"S'ha produït un error en recorre recursivament dins del camí de submòdul "
+"'$displaypath'"
 
 #: git-submodule.sh:775
 msgid "The --cached option cannot be used with the --files option"
@@ -15568,8 +15964,10 @@ msgstr ""
 " r, reword = usa la comissió, però edita el missatge de comissió\n"
 " e, edit = usa la comissió, però atura't per a esmenar\n"
 " s, squash = usa la comissió, però fusiona'l a la comissió prèvia\n"
-" f, fixup = com \"squash\", però descarta el missatge de registre d'aquesta comissió\n"
-" x, exec = executa l'ordre (la resta de la línia) usant l'intèrpret d'ordres\n"
+" f, fixup = com \"squash\", però descarta el missatge de registre d'aquesta "
+"comissió\n"
+" x, exec = executa l'ordre (la resta de la línia) usant l'intèrpret "
+"d'ordres\n"
 " d, drop = elimina la comissió\n"
 "\n"
 "Es pot canviar l'ordre d'aquestes línies; s'executen de dalt a baix.\n"
@@ -15580,7 +15978,8 @@ msgid ""
 "Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
 msgstr ""
 "\n"
-"No elimineu cap línia. Useu 'drop' explícitament per a eliminar una comissió.\n"
+"No elimineu cap línia. Useu 'drop' explícitament per a eliminar una "
+"comissió.\n"
 
 #: git-rebase--interactive.sh:175
 msgid ""
@@ -15690,10 +16089,12 @@ msgstr "No s'ha pogut aplicar $sha1... $rest"
 msgid ""
 "Could not amend commit after successfully picking $sha1... $rest\n"
 "This is most likely due to an empty commit message, or the pre-commit hook\n"
-"failed. If the pre-commit hook failed, you may need to resolve the issue before\n"
+"failed. If the pre-commit hook failed, you may need to resolve the issue "
+"before\n"
 "you are able to reword the commit."
 msgstr ""
-"No s'ha pogut esmenar la comissió després d'escollir amb èxit $sha1... $rest\n"
+"No s'ha pogut esmenar la comissió després d'escollir amb èxit $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"
 "necessiteu resoldre el problema abans que pugueu canviar el missatge de\n"
@@ -15805,7 +16206,8 @@ msgstr ""
 #: git-rebase--interactive.sh:793
 msgid "Error trying to find the author identity to amend commit"
 msgstr ""
-"Hi ha hagut un error en intentar trobar la identitat d'autor per a esmenar la comissió"
+"Hi ha hagut un error en intentar trobar la identitat d'autor per a esmenar "
+"la comissió"
 
 #: git-rebase--interactive.sh:798
 msgid ""
@@ -15892,7 +16294,9 @@ msgstr "ús: $dashless $USAGE"
 #: git-sh-setup.sh:190
 #, sh-format
 msgid "Cannot chdir to $cdup, the toplevel of the working tree"
-msgstr "No es pot canviar de directori a $cdup, el nivell superior de l'arbre de treball"
+msgstr ""
+"No es pot canviar de directori a $cdup, el nivell superior de l'arbre de "
+"treball"
 
 #: git-sh-setup.sh:199 git-sh-setup.sh:206
 #, sh-format
@@ -15922,7 +16326,8 @@ msgstr "No es pot fer «rebase»: El vostre índex conté canvis sense cometre."
 
 #: git-sh-setup.sh:245
 msgid "Cannot pull with rebase: Your index contains uncommitted changes."
-msgstr "No es pot baixar fent «rebase»: El vostre índex conté canvis sense cometre."
+msgstr ""
+"No es pot baixar fent «rebase»: El vostre índex conté canvis sense cometre."
 
 #: git-sh-setup.sh:248
 #, sh-format
@@ -15935,7 +16340,8 @@ msgstr "Addicionalment, el vostre índex conté canvis sense cometre."
 
 #: git-sh-setup.sh:372
 msgid "You need to run this command from the toplevel of the working tree."
-msgstr "Heu d'executar aquesta ordre des del nivell superior de l'arbre de treball."
+msgstr ""
+"Heu d'executar aquesta ordre des del nivell superior de l'arbre de treball."
 
 #: git-sh-setup.sh:377
 msgid "Unable to determine absolute path of git directory"
@@ -16063,7 +16469,8 @@ msgstr "s'ha produït un error en escriure al fitxer d'edició del tros: %s"
 
 #: git-add--interactive.perl:1079
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
-msgstr "Mode d'edició de trossos manual - vegeu més avall per una guia ràpida.\n"
+msgstr ""
+"Mode d'edició de trossos manual - vegeu més avall per una guia ràpida.\n"
 
 #: git-add--interactive.perl:1085
 #, perl-format
@@ -16086,7 +16493,8 @@ msgid ""
 "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 totes les línies del tros se suprimeixen, llavors l'edició "
+"s'avorta\n"
 "i el tros es deixa sense cap canvi.\n"
 
 #: git-add--interactive.perl:1107
@@ -16101,9 +16509,11 @@ msgstr "s'ha produït un error en llegir al fitxer d'edició del tros: %s"
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
 #: git-add--interactive.perl:1206
-msgid "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
+msgid ""
+"Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr ""
-"El tros editat no s'aplica. Editeu-lo de nou (si responeu \"no\" es descartarà) [y/n]? "
+"El tros editat no s'aplica. Editeu-lo de nou (si responeu \"no\" es "
+"descartarà) [y/n]? "
 
 #: git-add--interactive.perl:1215
 msgid ""
@@ -16332,22 +16742,27 @@ msgstr "Descarta aquest tros des de l'arbre de treball  [y,n,q,a,d%s,?]? "
 #: git-add--interactive.perl:1408
 #, 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%s,?]? "
+msgstr ""
+"Descarta el canvi de mode des de l'índex i l'arbre de treball [y,n,q,a,d"
+"%s,?]? "
 
 #: git-add--interactive.perl:1409
 #, 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 la supressió des de l'índex i l'arbre de treball [y,n,q,a,d%s,?]? "
 
 #: git-add--interactive.perl:1410
 #, 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,?]? "
+msgstr ""
+"Descarta aquest tros des de l'índex i l'arbre de treball [y,n,q,a,d%s,?]? "
 
 #: git-add--interactive.perl:1413
 #, 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,?]? "
+msgstr ""
+"Aplica el canvi de mode a l'índex i l'arbre de treball [y,n,q,a,d%s,?]? "
 
 #: git-add--interactive.perl:1414
 #, perl-format
@@ -16385,7 +16800,7 @@ msgstr[1] "Només %d trossos disponibles.\n"
 
 #: git-add--interactive.perl:1564
 msgid "No other hunks to search\n"
-msgstr ""
+msgstr "No hi ha cap altre tros a cercar\n"
 
 #: git-add--interactive.perl:1568
 msgid "search for regex? "
@@ -16410,7 +16825,7 @@ msgstr "No hi ha tros següent\n"
 
 #: git-add--interactive.perl:1637
 msgid "Sorry, cannot split this hunk\n"
-msgstr ""
+msgstr "No es pot dividir aquest tros\n"
 
 #: git-add--interactive.perl:1643
 #, perl-format
@@ -16421,7 +16836,7 @@ msgstr[1] "Divideix en %d trossos.\n"
 
 #: git-add--interactive.perl:1653
 msgid "Sorry, cannot edit this hunk\n"
-msgstr ""
+msgstr "No es pot editar aquest tros\n"
 
 #: git-add--interactive.perl:1699
 msgid "Review diff"
@@ -16436,15 +16851,17 @@ msgid ""
 "revert        - revert staged set of changes back to the HEAD version\n"
 "patch         - pick hunks and update selectively\n"
 "diff          - view diff between HEAD and index\n"
-"add untracked - add contents of untracked files to the staged set of changes\n"
+"add untracked - add contents of untracked files to the staged set of "
+"changes\n"
 msgstr ""
 "status        - mostra els camins amb canvis\n"
-"update        - afegeix l'estat de l'arbre de treball al conjunt de canvis «staged»\n"
+"update        - afegeix l'estat de l'arbre de treball al conjunt de canvis "
+"«staged»\n"
 "revert        - reverteix el conjunt de canvis de «staged» a la versió HEAD\n"
 "patch         - selecciona trossos i actualitza'ls selectivament\n"
 "diff          - mostra la diferència entre HEAD i l'índex\n"
-"add untracked - afegeix el contingut dels fitxers no seguits al conjunt de canvis "
-"«staged»\n"
+"add untracked - afegeix el contingut dels fitxers no seguits al conjunt de "
+"canvis «staged»\n"
 
 #: git-add--interactive.perl:1735 git-add--interactive.perl:1740
 #: git-add--interactive.perl:1743 git-add--interactive.perl:1750
@@ -16476,7 +16893,8 @@ msgstr "l'editor no ha sortit correctament, avortant-ho tot"
 
 #: git-send-email.perl:294
 #, perl-format
-msgid "'%s' contains an intermediate version of the email you were composing.\n"
+msgid ""
+"'%s' contains an intermediate version of the email you were composing.\n"
 msgstr "«%s» conté una versió intermèdia del correu que estàveu redactant.\n"
 
 #: git-send-email.perl:299
@@ -16494,8 +16912,8 @@ msgstr "No es pot executar git format-patch des de fora del dipòsit\n"
 
 #: git-send-email.perl:386
 msgid ""
-"`batch-size` and `relogin` must be specified together (via command-line or configuration "
-"option)\n"
+"`batch-size` and `relogin` must be specified together (via command-line or "
+"configuration option)\n"
 msgstr ""
 
 #: git-send-email.perl:456
@@ -16612,8 +17030,12 @@ msgid "Are you sure you want to use <%s> [y/N]? "
 msgstr "Esteu segur que voleu usar <%s> [y/N]? "
 
 #: git-send-email.perl:868
-msgid "The following files are 8bit, but do not declare a Content-Transfer-Encoding.\n"
-msgstr "Els fitxers següents són 8bit, però no declaren un Content-Transfer-Encoding.\n"
+msgid ""
+"The following files are 8bit, but do not declare a Content-Transfer-"
+"Encoding.\n"
+msgstr ""
+"Els fitxers següents són 8bit, però no declaren un Content-Transfer-"
+"Encoding.\n"
 
 #: git-send-email.perl:873
 msgid "Which 8bit encoding should I declare [UTF-8]? "
@@ -16624,17 +17046,18 @@ msgstr "Quina codificació de 8 bits hauria de declarar [UTF-8]? "
 msgid ""
 "Refusing to send because the patch\n"
 "\t%s\n"
-"has the template subject '*** SUBJECT HERE ***'. Pass --force if you really want to "
-"send.\n"
+"has the template subject '*** SUBJECT HERE ***'. Pass --force if you really "
+"want to send.\n"
 msgstr ""
 "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-lo.\n"
 
 #: git-send-email.perl:900
 msgid "To whom should the emails be sent (if anyone)?"
-msgstr "A qui s'haurien d'enviar els correus electrònics (si s'han d'enviar a algú)?"
+msgstr ""
+"A qui s'haurien d'enviar els correus electrònics (si s'han d'enviar a algú)?"
 
 #: git-send-email.perl:918
 #, perl-format
@@ -16643,7 +17066,9 @@ msgstr "fatal: l'àlies «%s» s'expandeix a si mateix\n"
 
 #: git-send-email.perl:930
 msgid "Message-ID to be used as In-Reply-To for the first email (if any)? "
-msgstr "S'ha d'usar el Message-ID com a In-Reply-To pel primer correu (si n'hi ha cap)? "
+msgstr ""
+"S'ha d'usar el Message-ID com a In-Reply-To pel primer correu (si n'hi ha "
+"cap)? "
 
 #: git-send-email.perl:988 git-send-email.perl:996
 #, perl-format
@@ -16714,8 +17139,8 @@ msgstr "STARTTLS ha fallat! %s"
 #: git-send-email.perl:1505
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
 msgstr ""
-"No s'ha pogut inicialitzar SMTP correctament. Comproveu-ho la configuració i useu --smtp-"
-"debug."
+"No s'ha pogut inicialitzar SMTP correctament. Comproveu-ho la configuració i "
+"useu --smtp-debug."
 
 #: git-send-email.perl:1523
 #, perl-format
@@ -16816,71 +17241,3 @@ msgstr "S'està ometent %s amb el sufix de còpia de seguretat «%s».\n"
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "Esteu segur que voleu enviar %s? [y|N]: "
-
-#~ msgid "git fetch-pack: expected ACK/NAK, got EOF"
-#~ msgstr "git fetch-pack: s'esperava ACK/NAK, s'ha rebut EOF"
-
-#~ msgid ""
-#~ "empty strings as pathspecs will be made invalid in upcoming releases. please use . "
-#~ "instead if you meant to match all paths"
-#~ msgstr ""
-#~ "es faran no vàlides les cadenes buides com especificacions de camí en versions "
-#~ "futures. Useu . en lloc d'això si volíeu coincidir amb tots els camins"
-
-#~ msgid "unable to open '%s' for writing"
-#~ msgstr "no s'ha pogut obrir «%s» per a escriptura"
-
-#~ msgid "could not truncate '%s'"
-#~ msgstr "no s'ha pogut truncar a «%s»"
-
-#~ msgid "could not finish '%s'"
-#~ msgstr "no s'ha pogut finalitzar «%s»"
-
-#~ msgid "could not close %s"
-#~ msgstr "no s'ha pogut tancar %s"
-
-#~ msgid "The copy of the patch that failed is found in: %s"
-#~ msgstr "La còpia del pedaç que ha fallat es troba en: %s"
-
-#~ msgid "Copied a misnamed branch '%s' away"
-#~ msgstr "S'ha copiat el nom de la branca mal anomenada «%s»"
-
-#~ msgid "it does not make sense to create 'HEAD' manually"
-#~ msgstr "no té sentit crear 'HEAD' manualment"
-
-#~ msgid "Don't know how to clone %s"
-#~ msgstr "No se sap com clonar %s"
-
-#~ msgid "show ignored files"
-#~ msgstr "mostra els fitxers ignorats"
-
-#~ msgid "%s is not a valid '%s' object"
-#~ msgstr "%s no és un objecte de «%s» vàlid"
-
-#~ msgid "Don't know how to fetch from %s"
-#~ msgstr "No se sap com obtenir de %s"
-
-#~ msgid "'$term' is not a valid term"
-#~ msgstr "'$term' no és un terme vàlid"
-
-#~ msgid ""
-#~ "error: unknown option for 'stash save': $option\n"
-#~ "       To provide a message, use git stash save -- '$option'"
-#~ msgstr ""
-#~ "error: opció desconeguda de 'stash save': $option\n"
-#~ "       Per a proveir un missatge, useu git stash save -- '$option'"
-
-#~ msgid "pathspec and --all are incompatible"
-#~ msgstr "--pathspec i --all són incompatibles"
-
-#~ msgid "Submodule '$name' ($url) unregistered for path '$displaypath'"
-#~ msgstr "Submòdul '$name' ($url) no registrat per al camí '$displaypath'"
-
-#~ msgid "Failed to recurse into submodule path '$sm_path'"
-#~ msgstr "S'ha produït un error en cercar recursivament al camí de submòdul '$sm_path'"
-
-#~ msgid "To/Cc/Bcc fields are not interpreted yet, they have been ignored\n"
-#~ msgstr "Els camps A/Cc/Bcc no s'interpreten encara, s'ignoraran\n"
-
-#~ msgid "%%(trailers) does not take arguments"
-#~ msgstr "%%(trailers) no accepta paràmetres"
index 793bd2a803b9d7c9d759faf665e43db84e1cd066..7df1cfcd49fb9f7bbc466393a59dc8d0c04c0aa5 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -15052,7 +15052,7 @@ msgstr "Kann gesperrtes Arbeitsverzeichnis nicht verschieben, Sperrgrund: %s"
 
 #: builtin/worktree.c:692
 msgid "cannot move a locked working tree"
-msgstr "Kann gesperrtes Arbeitsverzeichnisses nicht verschieben."
+msgstr "Kann gesperrtes Arbeitsverzeichnis nicht verschieben."
 
 #: builtin/worktree.c:695
 #, c-format
@@ -16991,7 +16991,7 @@ msgstr "Löschung im Arbeitsverzeichnis verwerfen [y,n,q,a,d%s,?]? "
 #: git-add--interactive.perl:1405
 #, 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,?]? "
+msgstr "Diesen Patch-Block im Arbeitsverzeichnis verwerfen [y,n,q,a,d%s,?]? "
 
 #: git-add--interactive.perl:1408
 #, perl-format
index 4e9949673ccadd0399d3b2ec39cd7656a6df63d3..a68bcd999154320e8f81a228d5e75d0768ed2b60 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2018-03-16 07:29+0800\n"
-"PO-Revision-Date: 2018-03-15 21:31-0500\n"
+"POT-Creation-Date: 2018-06-16 22:06+0800\n"
+"PO-Revision-Date: 2018-06-16 09:57-0500\n"
 "Last-Translator: christopher.diaz.riv@gmail.com\n"
 "Language-Team: CodeLabora <codelabora@gmail.com>\n"
 "Language: es\n"
@@ -16,40 +16,40 @@ msgstr ""
 "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.0.6\n"
+"X-Generator: Poedit 2.0.7\n"
 
-#: advice.c:62
+#: advice.c:92
 #, c-format
-msgid "hint: %.*s\n"
-msgstr "ayuda: %.*s\n"
+msgid "%shint: %.*s%s\n"
+msgstr "%sayuda: %.*s%s\n"
 
-#: advice.c:90
+#: advice.c:137
 msgid "Cherry-picking is not possible because you have unmerged files."
 msgstr ""
 "No es posible ejecutar cherry-picking porque tienes archivos sin fusionar."
 
-#: advice.c:92
+#: advice.c:139
 msgid "Committing is not possible because you have unmerged files."
 msgstr "No es posible realizar un commit porque tienes archivos sin fusionar."
 
-#: advice.c:94
+#: advice.c:141
 msgid "Merging is not possible because you have unmerged files."
 msgstr "No es posible hacer merge porque tienes archivos sin fusionar."
 
-#: advice.c:96
+#: advice.c:143
 msgid "Pulling is not possible because you have unmerged files."
 msgstr "No es posible hacer pull porque tienes archivos sin fusionar."
 
-#: advice.c:98
+#: advice.c:145
 msgid "Reverting is not possible because you have unmerged files."
 msgstr "No es posible revertir porque tienes archivos sin fusionar."
 
-#: advice.c:100
+#: advice.c:147
 #, c-format
 msgid "It is not possible to %s because you have unmerged files."
 msgstr "No es posible %s porque tienes archivos sin fusionar."
 
-#: advice.c:108
+#: advice.c:155
 msgid ""
 "Fix them up in the work tree, and then use 'git add/rm <file>'\n"
 "as appropriate to mark resolution and make a commit."
@@ -57,23 +57,23 @@ msgstr ""
 "Corrígelos en el árbol de trabajo y entonces usa 'git add/rm <archivo>',\n"
 "como sea apropiado, para marcar la resolución y realizar un commit."
 
-#: advice.c:116
+#: advice.c:163
 msgid "Exiting because of an unresolved conflict."
 msgstr "Saliendo porque existe un conflicto sin resolver."
 
-#: advice.c:121 builtin/merge.c:1251
+#: advice.c:168 builtin/merge.c:1250
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "No has concluido tu fusión (MERGE_HEAD existe)."
 
-#: advice.c:123
+#: advice.c:170
 msgid "Please, commit your changes before merging."
 msgstr "Por favor, realiza un commit antes de fusionar."
 
-#: advice.c:124
+#: advice.c:171
 msgid "Exiting because of unfinished merge."
 msgstr "Saliendo por una fusión inconclusa."
 
-#: advice.c:130
+#: advice.c:177
 #, c-format
 msgid ""
 "Note: checking out '%s'.\n"
@@ -343,14 +343,14 @@ msgstr ""
 #: apply.c:3225
 #, c-format
 msgid "patch failed: %s:%ld"
-msgstr "el parche fallo: %s:%ld"
+msgstr "el parche falló: %s:%ld"
 
 #: apply.c:3347
 #, c-format
 msgid "cannot checkout %s"
 msgstr "no se puede hacer checkout a %s"
 
-#: apply.c:3396 apply.c:3407 apply.c:3453 setup.c:277
+#: apply.c:3396 apply.c:3407 apply.c:3453 setup.c:278
 #, c-format
 msgid "failed to read %s"
 msgstr "no se pudo leer %s"
@@ -394,7 +394,7 @@ msgstr "no se pueden leer los contenidos actuales de '%s'"
 #: apply.c:3595
 #, c-format
 msgid "Failed to fall back on three-way merge...\n"
-msgstr "Fallo el merge en retroceso de tres-vías...\n"
+msgstr "Falló el merge en retroceso de tres-vías...\n"
 
 #: apply.c:3609
 #, c-format
@@ -478,7 +478,7 @@ msgstr "falta información sha1 o es inútil (%s)."
 #: apply.c:4095 builtin/checkout.c:235 builtin/reset.c:140
 #, c-format
 msgid "make_cache_entry failed for path '%s'"
-msgstr "make_cache_entry fallo para la ruta '%s'"
+msgstr "make_cache_entry falló para la ruta '%s'"
 
 #: apply.c:4099
 #, c-format
@@ -519,7 +519,7 @@ msgstr "no es posible agregar una entrada en el cache para %s"
 #: apply.c:4343
 #, c-format
 msgid "failed to write to '%s'"
-msgstr "fallo escribir para '%s'"
+msgstr "falló escribir para '%s'"
 
 #: apply.c:4347
 #, c-format
@@ -552,7 +552,7 @@ msgstr[1] "Aplicando parche %%s con %d rechazos..."
 msgid "truncating .rej filename to %.*s.rej"
 msgstr "truncando el nombre de archivo .rej a %.*s.rej"
 
-#: apply.c:4545 builtin/fetch.c:775 builtin/fetch.c:1025
+#: apply.c:4545 builtin/fetch.c:786 builtin/fetch.c:1036
 #, c-format
 msgid "cannot open %s"
 msgstr "no se puede abrir %s"
@@ -608,15 +608,15 @@ msgstr[0] ""
 msgstr[1] ""
 "%d líneas aplicadas después de arreglar los errores de espacios en blanco."
 
-#: apply.c:4894 builtin/add.c:539 builtin/mv.c:298 builtin/rm.c:390
+#: apply.c:4894 builtin/add.c:538 builtin/mv.c:300 builtin/rm.c:389
 msgid "Unable to write new index file"
 msgstr "No es posible escribir el archivo índice"
 
 #: apply.c:4921 apply.c:4924 builtin/am.c:2254 builtin/am.c:2257
-#: builtin/clone.c:118 builtin/fetch.c:127 builtin/pull.c:193
-#: builtin/submodule--helper.c:403 builtin/submodule--helper.c:1197
-#: builtin/submodule--helper.c:1200 builtin/submodule--helper.c:1567
-#: builtin/submodule--helper.c:1570 builtin/submodule--helper.c:1787
+#: builtin/clone.c:120 builtin/fetch.c:126 builtin/pull.c:198
+#: builtin/submodule--helper.c:405 builtin/submodule--helper.c:1210
+#: builtin/submodule--helper.c:1213 builtin/submodule--helper.c:1584
+#: builtin/submodule--helper.c:1587 builtin/submodule--helper.c:1807
 #: git-add--interactive.perl:197
 msgid "path"
 msgstr "ruta"
@@ -692,7 +692,7 @@ msgstr "asegure que por lo menos <n> líneas del contexto concuerden"
 
 #: apply.c:4960 builtin/am.c:2242 builtin/interpret-trailers.c:95
 #: builtin/interpret-trailers.c:97 builtin/interpret-trailers.c:99
-#: builtin/pack-objects.c:3035
+#: builtin/pack-objects.c:3177
 msgid "action"
 msgstr "acción"
 
@@ -723,9 +723,9 @@ msgstr "dejar los hunks rechazados en los archivos *.rej correspontientes"
 msgid "allow overlapping hunks"
 msgstr "permitir solapamiento de hunks"
 
-#: apply.c:4977 builtin/add.c:292 builtin/check-ignore.c:21
-#: builtin/commit.c:1276 builtin/count-objects.c:96 builtin/fsck.c:665
-#: builtin/log.c:1901 builtin/mv.c:123 builtin/read-tree.c:125
+#: apply.c:4977 builtin/add.c:290 builtin/check-ignore.c:21
+#: builtin/commit.c:1301 builtin/count-objects.c:98 builtin/fsck.c:666
+#: builtin/log.c:1901 builtin/mv.c:122 builtin/read-tree.c:124
 msgid "be verbose"
 msgstr "ser verboso"
 
@@ -766,98 +766,98 @@ msgstr ""
 msgid "git archive --remote <repo> [--exec <cmd>] --list"
 msgstr "git archive --remote <repo> [--exec <comando>] --list"
 
-#: archive.c:351 builtin/add.c:176 builtin/add.c:515 builtin/rm.c:299
+#: archive.c:351 builtin/add.c:176 builtin/add.c:514 builtin/rm.c:298
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "ruta especificada '%s' no concordó con ninguna carpeta"
 
-#: archive.c:436
+#: archive.c:434
 msgid "fmt"
 msgstr "fmt"
 
-#: archive.c:436
+#: archive.c:434
 msgid "archive format"
 msgstr "formato del archivo"
 
-#: archive.c:437 builtin/log.c:1462
+#: archive.c:435 builtin/log.c:1462
 msgid "prefix"
 msgstr "prefijo"
 
-#: archive.c:438
+#: archive.c:436
 msgid "prepend prefix to each pathname in the archive"
 msgstr "anteponer prefijo a cada ruta en el archivo"
 
-#: archive.c:439 builtin/blame.c:702 builtin/blame.c:703 builtin/config.c:62
-#: builtin/fast-export.c:1005 builtin/fast-export.c:1007 builtin/grep.c:869
+#: archive.c:437 builtin/blame.c:813 builtin/blame.c:814 builtin/config.c:127
+#: builtin/fast-export.c:1007 builtin/fast-export.c:1009 builtin/grep.c:869
 #: builtin/hash-object.c:103 builtin/ls-files.c:551 builtin/ls-files.c:554
-#: builtin/notes.c:405 builtin/notes.c:568 builtin/read-tree.c:120
+#: builtin/notes.c:405 builtin/notes.c:568 builtin/read-tree.c:119
 #: parse-options.h:165
 msgid "file"
 msgstr "carpeta"
 
-#: archive.c:440 builtin/archive.c:89
+#: archive.c:438 builtin/archive.c:89
 msgid "write the archive to this file"
 msgstr "escribe el archivo en esta carpeta"
 
-#: archive.c:442
+#: archive.c:440
 msgid "read .gitattributes in working directory"
 msgstr "leer .gitattributes en el directorio de trabajo"
 
-#: archive.c:443
+#: archive.c:441
 msgid "report archived files on stderr"
 msgstr "reportar archivos archivados por stderr"
 
-#: archive.c:444
+#: archive.c:442
 msgid "store only"
 msgstr "solo guardar"
 
-#: archive.c:445
+#: archive.c:443
 msgid "compress faster"
 msgstr "comprimir mas rápido"
 
-#: archive.c:453
+#: archive.c:451
 msgid "compress better"
 msgstr "comprimir mejor"
 
-#: archive.c:456
+#: archive.c:454
 msgid "list supported archive formats"
 msgstr "listar los formatos de carpeta soportados"
 
-#: archive.c:458 builtin/archive.c:90 builtin/clone.c:108 builtin/clone.c:111
-#: builtin/submodule--helper.c:1209 builtin/submodule--helper.c:1576
+#: archive.c:456 builtin/archive.c:90 builtin/clone.c:110 builtin/clone.c:113
+#: builtin/submodule--helper.c:1222 builtin/submodule--helper.c:1593
 msgid "repo"
 msgstr "repo"
 
-#: archive.c:459 builtin/archive.c:91
+#: archive.c:457 builtin/archive.c:91
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "obtener la carpeta del repositorio remoto <repo>"
 
-#: archive.c:460 builtin/archive.c:92 builtin/notes.c:489
+#: archive.c:458 builtin/archive.c:92 builtin/notes.c:489
 msgid "command"
 msgstr "comando"
 
-#: archive.c:461 builtin/archive.c:93
+#: archive.c:459 builtin/archive.c:93
 msgid "path to the remote git-upload-archive command"
 msgstr "ruta para el comando git-upload-archivo remoto"
 
-#: archive.c:468
+#: archive.c:466
 msgid "Unexpected option --remote"
 msgstr "Opción inesperada --remote"
 
-#: archive.c:470
+#: archive.c:468
 msgid "Option --exec can only be used together with --remote"
 msgstr "Opción --exec solo puede ser utilizada con --remote"
 
-#: archive.c:472
+#: archive.c:470
 msgid "Unexpected option --output"
 msgstr "Opción inesperada --output"
 
-#: archive.c:494
+#: archive.c:492
 #, c-format
 msgid "Unknown archive format '%s'"
 msgstr "Formato de carpeta desconocido '%s'"
 
-#: archive.c:501
+#: archive.c:499
 #, c-format
 msgid "Argument not supported for format '%s': -%d"
 msgstr "Argumento no soportado para formato '%s': -%d"
@@ -875,22 +875,22 @@ msgstr ""
 "Los patrones negativos son ignorados en los atributos de git\n"
 "Usa '\\!' para comenzar literalmente con exclamación."
 
-#: bisect.c:460
+#: bisect.c:461
 #, c-format
 msgid "Badly quoted content in file '%s': %s"
 msgstr "Revisa las comillas en el archivo '%s': %s"
 
-#: bisect.c:668
+#: bisect.c:669
 #, c-format
 msgid "We cannot bisect more!\n"
 msgstr "No podemos bisecar mas!\n"
 
-#: bisect.c:722
+#: bisect.c:723
 #, c-format
 msgid "Not a valid commit name %s"
 msgstr "No es un nombre de commit valido %s"
 
-#: bisect.c:746
+#: bisect.c:747
 #, c-format
 msgid ""
 "The merge base %s is bad.\n"
@@ -899,7 +899,7 @@ msgstr ""
 "La base de fisión %s esta mal.\n"
 "Esto quiere decir que el bug ha sido arreglado entre %s y [%s].\n"
 
-#: bisect.c:751
+#: bisect.c:752
 #, c-format
 msgid ""
 "The merge base %s is new.\n"
@@ -908,7 +908,7 @@ msgstr ""
 "La base de fisión %s es nueva.\n"
 "Esta propiedad ha cambiado entre %s y [%s].\n"
 
-#: bisect.c:756
+#: bisect.c:757
 #, c-format
 msgid ""
 "The merge base %s is %s.\n"
@@ -917,7 +917,7 @@ msgstr ""
 "La base de fisión %s es %s.\n"
 "Esto quiere decir que el primer '%s' commit esta entre %s y [%s].\n"
 
-#: bisect.c:764
+#: bisect.c:765
 #, c-format
 msgid ""
 "Some %s revs are not ancestors of the %s rev.\n"
@@ -928,7 +928,7 @@ msgstr ""
 "git bisect no puede trabajar bien en este caso.\n"
 "Tal vez confundió la revisión %s y %s?\n"
 
-#: bisect.c:777
+#: bisect.c:778
 #, c-format
 msgid ""
 "the merge base between %s and [%s] must be skipped.\n"
@@ -939,36 +939,36 @@ msgstr ""
 "Así que no podemos estar seguros que el primer %s commit esta entre%s y %s.\n"
 "Vamos a continuar de todas maneras."
 
-#: bisect.c:810
+#: bisect.c:811
 #, c-format
 msgid "Bisecting: a merge base must be tested\n"
 msgstr "Bisectando: una base de fisión debe ser probada\n"
 
-#: bisect.c:850
+#: bisect.c:851
 #, c-format
 msgid "a %s revision is needed"
 msgstr "una %s revisión es necesaria"
 
-#: bisect.c:869 builtin/notes.c:175 builtin/tag.c:235
+#: bisect.c:870 builtin/notes.c:175 builtin/tag.c:236
 #, c-format
 msgid "could not create file '%s'"
 msgstr "no se pudo crear el archivo '%s'"
 
-#: bisect.c:920
+#: bisect.c:921
 #, c-format
 msgid "could not read file '%s'"
 msgstr "no se pudo leer el archivo '%s'"
 
-#: bisect.c:950
+#: bisect.c:951
 msgid "reading bisect refs failed"
-msgstr "fallo leer las refs de bisect"
+msgstr "falló leer las refs de bisect"
 
-#: bisect.c:969
+#: bisect.c:970
 #, c-format
 msgid "%s was both %s and %s\n"
 msgstr "%s fue tanto %s como %s\n"
 
-#: bisect.c:977
+#: bisect.c:978
 #, c-format
 msgid ""
 "No testable commit found.\n"
@@ -977,7 +977,7 @@ msgstr ""
 "No se encontró commit que se pueda probar.\n"
 "¿Quizás iniciaste con parámetros de rutas incorrectos?\n"
 
-#: bisect.c:996
+#: bisect.c:997
 #, c-format
 msgid "(roughly %d step)"
 msgid_plural "(roughly %d steps)"
@@ -987,51 +987,51 @@ msgstr[1] "(aproximadamente %d pasos)"
 #. TRANSLATORS: the last %s will be replaced with "(roughly %d
 #. steps)" translation.
 #.
-#: bisect.c:1002
+#: bisect.c:1003
 #, c-format
 msgid "Bisecting: %d revision left to test after this %s\n"
 msgid_plural "Bisecting: %d revisions left to test after this %s\n"
 msgstr[0] "Bisectando: falta %d revisión por probar después de esto %s\n"
 msgstr[1] "Bisectando: faltan %d revisiones por probar después de esto %s\n"
 
-#: blame.c:1758
+#: blame.c:1756
 msgid "--contents and --reverse do not blend well."
 msgstr "--contents y --reverse no se mezclan bien."
 
-#: blame.c:1769
+#: blame.c:1767
 msgid "cannot use --contents with final commit object name"
 msgstr "no se puede usar --contents con el nombre de objeto commit final"
 
-#: blame.c:1789
+#: blame.c:1787
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr ""
 "--reverse y --first-parent juntos requieren especificar el último commit"
 
-#: blame.c:1798 bundle.c:160 ref-filter.c:1978 sequencer.c:1699
-#: sequencer.c:2901 builtin/commit.c:976 builtin/log.c:366 builtin/log.c:920
-#: builtin/log.c:1371 builtin/log.c:1702 builtin/log.c:1950 builtin/merge.c:370
-#: builtin/shortlog.c:191
+#: blame.c:1796 bundle.c:160 ref-filter.c:2075 sequencer.c:1861
+#: sequencer.c:3632 builtin/commit.c:981 builtin/log.c:366 builtin/log.c:920
+#: builtin/log.c:1371 builtin/log.c:1702 builtin/log.c:1950 builtin/merge.c:372
+#: builtin/shortlog.c:192
 msgid "revision walk setup failed"
-msgstr "fallo la configuración del camino de revisión"
+msgstr "falló la configuración del camino de revisión"
 
-#: blame.c:1816
+#: blame.c:1814
 msgid ""
 "--reverse --first-parent together require range along first-parent chain"
 msgstr ""
 "--reverse --first-parent juntos requieren un rango a lo largo de la cadena "
 "del primer padre"
 
-#: blame.c:1827
+#: blame.c:1825
 #, c-format
 msgid "no such path %s in %s"
 msgstr "no hay una ruta %s en %s"
 
-#: blame.c:1838
+#: blame.c:1836
 #, c-format
 msgid "cannot read blob %s for path %s"
 msgstr "no se puede leer el blob %s para la ruta %s"
 
-#: branch.c:53
+#: branch.c:54
 #, c-format
 msgid ""
 "\n"
@@ -1044,97 +1044,97 @@ msgstr ""
 "la infamación del rastreo remoto invocando\n"
 "\"git branch --set-upstream-to=%s%s%s\"."
 
-#: branch.c:67
+#: branch.c:68
 #, c-format
 msgid "Not setting branch %s as its own upstream."
 msgstr "La rama %s no se configura como su propio upstream."
 
-#: branch.c:93
+#: branch.c:94
 #, c-format
 msgid "Branch '%s' set up to track remote branch '%s' from '%s' by rebasing."
 msgstr ""
 "Rama '%s' configurada para hacer seguimiento a la rama remota '%s' de '%s' "
 "por rebase."
 
-#: branch.c:94
+#: branch.c:95
 #, c-format
 msgid "Branch '%s' set up to track remote branch '%s' from '%s'."
 msgstr ""
 "Rama '%s' configurada para hacer seguimiento a la rama remota '%s' de '%s'."
 
-#: branch.c:98
+#: branch.c:99
 #, c-format
 msgid "Branch '%s' set up to track local branch '%s' by rebasing."
 msgstr ""
 "Rama '%s' configurada para hacer seguimiento a la rama local '%s' por rebase."
 
-#: branch.c:99
+#: branch.c:100
 #, c-format
 msgid "Branch '%s' set up to track local branch '%s'."
 msgstr "Rama '%s' configurada para hacer seguimiento a la rama local '%s'."
 
-#: branch.c:104
+#: branch.c:105
 #, c-format
 msgid "Branch '%s' set up to track remote ref '%s' by rebasing."
 msgstr ""
 "Rama '%s' configurada para hacer seguimiento a la referencia remota '%s' por "
 "rebase."
 
-#: branch.c:105
+#: branch.c:106
 #, c-format
 msgid "Branch '%s' set up to track remote ref '%s'."
 msgstr ""
 "Rama '%s' configurada para hacer seguimiento a la referencia remota '%s'."
 
-#: branch.c:109
+#: branch.c:110
 #, c-format
 msgid "Branch '%s' set up to track local ref '%s' by rebasing."
 msgstr ""
 "Rama '%s' configurada para hacer seguimiento a la referencia local '%s' por "
 "rebase."
 
-#: branch.c:110
+#: branch.c:111
 #, c-format
 msgid "Branch '%s' set up to track local ref '%s'."
 msgstr ""
 "Rama '%s' configurada para hacer seguimiento a la referencia local '%s'."
 
-#: branch.c:119
+#: branch.c:120
 msgid "Unable to write upstream branch configuration"
 msgstr "No es posible escribir la configuración de la rama upstream"
 
-#: branch.c:156
+#: branch.c:157
 #, c-format
 msgid "Not tracking: ambiguous information for ref %s"
 msgstr "No rastreando: información ambigua para la referencia %s"
 
-#: branch.c:189
+#: branch.c:190
 #, c-format
 msgid "'%s' is not a valid branch name."
 msgstr "'%s' no es un nombre valido de rama."
 
-#: branch.c:208
+#: branch.c:209
 #, c-format
 msgid "A branch named '%s' already exists."
 msgstr "Una rama llamada '%s' ya existe."
 
-#: branch.c:213
+#: branch.c:214
 msgid "Cannot force update the current branch."
 msgstr "No se puede forzar la actualización de la rama actual."
 
-#: branch.c:233
+#: branch.c:234
 #, c-format
 msgid "Cannot setup tracking information; starting point '%s' is not a branch."
 msgstr ""
 "No se puede configurar el rastreo de información; el punto de partida '%s' "
 "no es una rama."
 
-#: branch.c:235
+#: branch.c:236
 #, c-format
 msgid "the requested upstream branch '%s' does not exist"
 msgstr "la rama de upstream solicitada '%s' no existe"
 
-#: branch.c:237
+#: branch.c:238
 msgid ""
 "\n"
 "If you are planning on basing your work on an upstream\n"
@@ -1155,27 +1155,27 @@ msgstr ""
 "\"git push -u\" para configurar tu upstream predeterminado cuando realizas "
 "el push."
 
-#: branch.c:280
+#: branch.c:281
 #, c-format
 msgid "Not a valid object name: '%s'."
 msgstr "Nombre de objeto no valido: '%s'."
 
-#: branch.c:300
+#: branch.c:301
 #, c-format
 msgid "Ambiguous object name: '%s'."
 msgstr "Nombre de objeto ambiguo: '%s'."
 
-#: branch.c:305
+#: branch.c:306
 #, c-format
 msgid "Not a valid branch point: '%s'."
 msgstr "Punto de rama no valido: '%s'."
 
-#: branch.c:359
+#: branch.c:360
 #, c-format
 msgid "'%s' is already checked out at '%s'"
 msgstr "'%s' ya ha sido marcado en '%s'"
 
-#: branch.c:382
+#: branch.c:383
 #, c-format
 msgid "HEAD of working tree %s is not updated"
 msgstr "HEAD del árbol de trabajo %s no esta actualizada"
@@ -1190,7 +1190,7 @@ msgstr "'%s' no se ve como un archivo bundle v2"
 msgid "unrecognized header: %s%s (%d)"
 msgstr "header no reconocido %s%s (%d)"
 
-#: bundle.c:88 sequencer.c:1879 sequencer.c:2337 builtin/commit.c:750
+#: bundle.c:88 sequencer.c:2081 sequencer.c:2558 builtin/commit.c:755
 #, c-format
 msgid "could not open '%s'"
 msgstr "no se pudo abrir '%s'"
@@ -1234,7 +1234,7 @@ msgstr "rev-list murió"
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "referencia '%s' es excluida por las opciones de rev-list"
 
-#: bundle.c:450 builtin/log.c:183 builtin/log.c:1607 builtin/shortlog.c:296
+#: bundle.c:450 builtin/log.c:183 builtin/log.c:1607 builtin/shortlog.c:303
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "argumento no reconocido: %s"
@@ -1257,18 +1257,39 @@ msgstr "index-pack murió"
 msgid "invalid color value: %.*s"
 msgstr "color inválido: %.*s"
 
-#: commit.c:41 sequencer.c:2141 builtin/am.c:421 builtin/am.c:465
-#: builtin/am.c:1436 builtin/am.c:2072
+#: commit.c:43 sequencer.c:2364 builtin/am.c:421 builtin/am.c:465
+#: builtin/am.c:1436 builtin/am.c:2072 builtin/replace.c:376
+#: builtin/replace.c:448
 #, c-format
 msgid "could not parse %s"
 msgstr "no se puede analizar %s"
 
-#: commit.c:43
+#: commit.c:45
 #, c-format
 msgid "%s %s is not a commit!"
 msgstr "%s %s no es un commit!"
 
-#: commit.c:1506
+#: commit.c:182
+msgid ""
+"Support for <GIT_DIR>/info/grafts is deprecated\n"
+"and will be removed in a future Git version.\n"
+"\n"
+"Please use \"git replace --convert-graft-file\"\n"
+"to convert the grafts into replace refs.\n"
+"\n"
+"Turn this message off by running\n"
+"\"git config advice.graftFileDeprecated false\""
+msgstr ""
+"El soporte para <GIT_DIR>/info/grafts ha sido deprecado\n"
+"y será removido en una versión futura de Git.\n"
+"\n"
+"Por favor use \"git replace --convert-graft-file\"\n"
+"para convertir los grafts en refs.\n"
+"\n"
+"Apapa este mensaje ejecutando\n"
+"\"git config advice.graftFileDeprecated false\""
+
+#: commit.c:1540
 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"
@@ -1279,176 +1300,190 @@ msgstr ""
 "variable de configuración i18n.commitencoding para la codificación que usa "
 "su proyecto.\n"
 
+#: commit-graph.c:669
+#, 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:696
+msgid "too many commits to write graph"
+msgstr "demasiados commits para escribir el gráfico"
+
+#: commit-graph.c:707 builtin/init-db.c:516 builtin/init-db.c:521
+#, c-format
+msgid "cannot mkdir %s"
+msgstr "no se pude crear directorio %s"
+
 #: compat/obstack.c:405 compat/obstack.c:407
 msgid "memory exhausted"
 msgstr "memoria agotada"
 
-#: config.c:186
+#: config.c:187
 msgid "relative config include conditionals must come from files"
 msgstr ""
 "la configuración relativa incluye condicionales que deben venir de archivos"
 
-#: config.c:720
+#: config.c:788
 #, c-format
 msgid "bad config line %d in blob %s"
 msgstr "mala línea de config %d en el blob %s"
 
-#: config.c:724
+#: config.c:792
 #, c-format
 msgid "bad config line %d in file %s"
 msgstr "mala línea de config %d en el archivo %s"
 
-#: config.c:728
+#: config.c:796
 #, c-format
 msgid "bad config line %d in standard input"
 msgstr "mala línea de config %d en la entrada standard"
 
-#: config.c:732
+#: config.c:800
 #, c-format
 msgid "bad config line %d in submodule-blob %s"
 msgstr "mala línea de config %d en el submódulo-blob %s"
 
-#: config.c:736
+#: config.c:804
 #, c-format
 msgid "bad config line %d in command line %s"
 msgstr "mala línea de config %d en la línea de comando %s"
 
-#: config.c:740
+#: config.c:808
 #, c-format
 msgid "bad config line %d in %s"
 msgstr "mala línea de config %d en %s"
 
-#: config.c:868
+#: config.c:936
 msgid "out of range"
 msgstr "fuera de rango"
 
-#: config.c:868
+#: config.c:936
 msgid "invalid unit"
 msgstr "unidad invalida"
 
-#: config.c:874
+#: config.c:942
 #, c-format
 msgid "bad numeric config value '%s' for '%s': %s"
 msgstr "mal valor de config numérica '%s' para '%s': %s"
 
-#: config.c:879
+#: config.c:947
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
 msgstr "mal valor de config numérica '%s' para '%s' en el blob %s: %s"
 
-#: config.c:882
+#: config.c:950
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in file %s: %s"
 msgstr "mal valor de config numérica '%s' para '%s' en el archivo %s: %s"
 
-#: config.c:885
+#: config.c:953
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
 msgstr "mal valor de config numérica '%s' para '%s' en la entrada standard: %s"
 
-#: config.c:888
+#: config.c:956
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
 msgstr ""
 "mal valor de config numérica '%s' para '%s' en el submódulo-blob %s: %s"
 
-#: config.c:891
+#: config.c:959
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
 msgstr ""
 "mal valor de config numérica '%s' para '%s' en la línea de comando %s: %s"
 
-#: config.c:894
+#: config.c:962
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in %s: %s"
 msgstr "mal valor de config numérica '%s' para '%s' en %s: %s"
 
-#: config.c:989
+#: config.c:1057
 #, c-format
 msgid "failed to expand user dir in: '%s'"
-msgstr "fallo al expandir el directorio de usuario en: '%s'"
+msgstr "falló al expandir el directorio de usuario en: '%s'"
 
-#: config.c:998
+#: config.c:1066
 #, c-format
 msgid "'%s' for '%s' is not a valid timestamp"
 msgstr "'%s' para '%s' no es una marca de tiempo válida"
 
-#: config.c:1094 config.c:1105
+#: config.c:1171 config.c:1182
 #, c-format
 msgid "bad zlib compression level %d"
 msgstr "mala compresión zlib en nivel %d"
 
-#: config.c:1225
+#: config.c:1307
 #, c-format
 msgid "invalid mode for object creation: %s"
 msgstr "modo invalido de creación de objetos: %s"
 
-#: config.c:1386
+#: config.c:1473
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "mala compresión pack en el nivel %d"
 
-#: config.c:1582
+#: config.c:1681
 msgid "unable to parse command-line config"
 msgstr "no es posible analizar la configuración de la línea de comando"
 
-#: config.c:1914
+#: config.c:2013
 msgid "unknown error occurred while reading the configuration files"
 msgstr ""
 "error desconocido ocurrió mientras se leían los archivos de configuración"
 
-#: config.c:2101
+#: config.c:2200
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "Invalido %s: '%s'"
 
-#: config.c:2144
+#: config.c:2243
 #, c-format
 msgid "unknown core.untrackedCache value '%s'; using 'keep' default value"
 msgstr ""
 "valor core.untrackedCache '%s' desconocido; usando 'keep' como valor por "
 "defecto"
 
-#: config.c:2170
+#: config.c:2269
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr "valor splitIndex.maxPercentChange '%d' debe estar entre 0 y 100"
 
-#: config.c:2195
+#: config.c:2294
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "no es posible analizar '%s' de la configuración de la línea de comando"
 
-#: config.c:2197
+#: config.c:2296
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "mala variable de config '%s' en el archivo '%s' en la línea %d"
 
-#: config.c:2256
+#: config.c:2402
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s tiene múltiples valores"
 
-#: config.c:2599 config.c:2816
+#: config.c:2766 config.c:3019
 #, c-format
 msgid "fstat on %s failed"
-msgstr "fstat en %s fallo"
+msgstr "fstat en %s falló"
 
-#: config.c:2706
+#: config.c:2905
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "no se pudo configurar '%s' a '%s'"
 
-#: config.c:2708 builtin/remote.c:776
+#: config.c:2907 builtin/remote.c:779
 #, c-format
 msgid "could not unset '%s'"
 msgstr "no se pudo desactivar '%s'"
 
-#: connect.c:52
+#: connect.c:61
 msgid "The remote end hung up upon initial contact"
 msgstr "El remoto se colgó en el contacto inicial"
 
-#: connect.c:54
+#: connect.c:63
 msgid ""
 "Could not read from remote repository.\n"
 "\n"
@@ -1460,7 +1495,7 @@ msgstr ""
 "Por favor asegúrese que tiene los permisos de acceso correctos\n"
 "y que el repositorio existe."
 
-#: connected.c:66 builtin/fsck.c:198 builtin/prune.c:144
+#: connected.c:66 builtin/fsck.c:201 builtin/prune.c:145
 msgid "Checking connectivity"
 msgstr "Verificando conectividad"
 
@@ -1470,18 +1505,18 @@ msgstr "No se pudo correr 'git rev-list'"
 
 #: connected.c:98
 msgid "failed write to rev-list"
-msgstr "fallo escribir a rev-list"
+msgstr "falló escribir a rev-list"
 
 #: connected.c:105
 msgid "failed to close rev-list's stdin"
-msgstr "fallo al cerrar la entrada standard de rev-list"
+msgstr "falló al cerrar la entrada standard de rev-list"
 
-#: convert.c:205
+#: convert.c:206
 #, c-format
 msgid "CRLF would be replaced by LF in %s."
 msgstr "CRLF será reemplazado por LF en %s."
 
-#: convert.c:207
+#: convert.c:208
 #, c-format
 msgid ""
 "CRLF will be replaced by LF in %s.\n"
@@ -1491,12 +1526,12 @@ msgstr ""
 "El archivo tendrá sus finales de línea originales en tu directorio de "
 "trabajo."
 
-#: convert.c:215
+#: convert.c:216
 #, c-format
 msgid "LF would be replaced by CRLF in %s"
 msgstr "LF será reemplazado por CRLF en %s"
 
-#: convert.c:217
+#: convert.c:218
 #, c-format
 msgid ""
 "LF will be replaced by CRLF in %s.\n"
@@ -1506,6 +1541,48 @@ msgstr ""
 "El archivo tendrá sus finales de línea originales en tu directorio de "
 "trabajo."
 
+#: convert.c:279
+#, c-format
+msgid "BOM is prohibited in '%s' if encoded as %s"
+msgstr "BOM está prohibido en '%s' si es codificado como %s"
+
+#: convert.c:286
+#, c-format
+msgid ""
+"The file '%s' contains a byte order mark (BOM). Please use UTF-%s as working-"
+"tree-encoding."
+msgstr ""
+"El archivo '%s' contiene una marca de byte (BOM). Por favor usa UTF-%s como "
+"working-tree-encoding."
+
+#: convert.c:304
+#, c-format
+msgid "BOM is required in '%s' if encoded as %s"
+msgstr "BOM es requerido en '%s' si es codificado como %s"
+
+#: convert.c:306
+#, c-format
+msgid ""
+"The file '%s' is missing a byte order mark (BOM). Please use UTF-%sBE or UTF-"
+"%sLE (depending on the byte order) as working-tree-encoding."
+msgstr ""
+"Al archivo '%s' le falta una marca de byte (BOM). Por favor usa UTF-%sBE o "
+"UTF-%sLE (dependiendo en el orden de byte) como working-tree-encoding."
+
+#: convert.c:424
+#, c-format
+msgid "failed to encode '%s' from %s to %s"
+msgstr "falló al codificar '%s' de %s a %s"
+
+#: convert.c:467
+#, c-format
+msgid "encoding '%s' from %s to %s and back is not the same"
+msgstr "codificación '%s' de %s a %s y de vuelta no son iguales"
+
+#: convert.c:1225
+msgid "true/false are no valid working-tree-encodings"
+msgstr "true/false no son working-tree-encodings válidos"
+
 #: date.c:116
 msgid "in the future"
 msgstr "en el futuro"
@@ -1577,7 +1654,7 @@ msgstr[1] "hace %<PRIuMAX> años"
 #: diffcore-order.c:24
 #, c-format
 msgid "failed to read orderfile '%s'"
-msgstr "fallo al leer orden de archivos '%s'"
+msgstr "falló al leer orden de archivos '%s'"
 
 #: diffcore-rename.c:535
 msgid "Performing inexact rename detection"
@@ -1591,7 +1668,7 @@ msgstr "opción '%s' requiere un valor"
 #: diff.c:152
 #, c-format
 msgid "  Failed to parse dirstat cut-off percentage '%s'\n"
-msgstr "  Fallo al analizar dirstat porcentaje de corte '%s'\n"
+msgstr "  Falló al analizar dirstat porcentaje de corte '%s'\n"
 
 #: diff.c:157
 #, c-format
@@ -1621,48 +1698,48 @@ msgstr ""
 "Errores en la variable de config 'diff.dirstat' encontrados:\n"
 "%s"
 
-#: diff.c:3822
+#: diff.c:3823
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "diff externo murió, deteniendo en %s"
 
-#: diff.c:4146
+#: diff.c:4153
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only, --name-status, --check y -s son mutuamente exclusivas"
 
-#: diff.c:4149
+#: diff.c:4156
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S y --find-object son mutuamente exclusivas"
 
-#: diff.c:4237
+#: diff.c:4244
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow requiere exactamente un pathspec"
 
-#: diff.c:4403
+#: diff.c:4410
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
 "%s"
 msgstr ""
-"Fallo al analizar parámetro de opción --dirstat/-X:\n"
+"Falló al analizar parámetro de opción --dirstat/-X:\n"
 "%s"
 
-#: diff.c:4417
+#: diff.c:4424
 #, c-format
 msgid "Failed to parse --submodule option parameter: '%s'"
-msgstr "Fallo al analizar parámetro de opción --submodule: '%s'"
+msgstr "Falló al analizar parámetro de opción --submodule: '%s'"
 
-#: diff.c:5493
+#: diff.c:5500
 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:5496
+#: diff.c:5503
 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:5499
+#: diff.c:5506
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -1670,25 +1747,25 @@ msgstr ""
 "tal vez quiera configurar la variable %s para por lo menos %d y volver a "
 "intentar el comando."
 
-#: dir.c:1866
+#: dir.c:1867
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "no se pudo abrir el directorio '%s'"
 
-#: dir.c:2108
+#: dir.c:2109
 msgid "failed to get kernel name and information"
-msgstr "fallo al conseguir la información y nombre del kernel"
+msgstr "falló al conseguir la información y nombre del kernel"
 
-#: dir.c:2232
+#: dir.c:2233
 msgid "Untracked cache is disabled on this system or location."
 msgstr "Untracked cache esta desactivado en este sistema o ubicación."
 
-#: dir.c:3024 dir.c:3029
+#: dir.c:3075 dir.c:3080
 #, c-format
 msgid "could not create directories for %s"
 msgstr "no se pudo crear directorios para %s"
 
-#: dir.c:3054
+#: dir.c:3109
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "no se pudo migrar el directorio git de '%s' a '%s'"
@@ -1711,240 +1788,305 @@ msgstr "no se pudo establecer el archivo '%s'"
 msgid "Remote with no URL"
 msgstr "Remoto sin URL"
 
-#: fetch-pack.c:253
+#: fetch-pack.c:254
 msgid "git fetch-pack: expected shallow list"
 msgstr "git fetch-pack: lista poco profunda esperada"
 
-#: fetch-pack.c:265
+#: fetch-pack.c:266
 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:284 builtin/archive.c:63
+#: fetch-pack.c:285 builtin/archive.c:63
 #, c-format
 msgid "remote error: %s"
 msgstr "error remoto: %s"
 
-#: fetch-pack.c:285
+#: fetch-pack.c:286
 #, 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:337
+#: fetch-pack.c:338
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc requiere multi_ack_detailed"
 
-#: fetch-pack.c:428
+#: fetch-pack.c:429 fetch-pack.c:1310
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "línea poco profunda invalida: %s"
 
-#: fetch-pack.c:434
+#: fetch-pack.c:435 fetch-pack.c:1316
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "línea superficial inválida: %s"
 
-#: fetch-pack.c:436
+#: fetch-pack.c:437 fetch-pack.c:1318
 #, c-format
 msgid "object not found: %s"
 msgstr "objeto no encontrado: %s"
 
-#: fetch-pack.c:439
+#: fetch-pack.c:440 fetch-pack.c:1321
 #, c-format
 msgid "error in object: %s"
 msgstr "error en objeto: %s"
 
-#: fetch-pack.c:441
+#: fetch-pack.c:442 fetch-pack.c:1323
 #, c-format
 msgid "no shallow found: %s"
 msgstr "superficie no encontrada: %s"
 
-#: fetch-pack.c:444
+#: fetch-pack.c:445 fetch-pack.c:1326
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "se esperaba shallow/unshallow, se obtuvo %s"
 
-#: fetch-pack.c:485
+#: fetch-pack.c:486
 #, c-format
 msgid "got %s %d %s"
 msgstr "se obtuvo %s %d %s"
 
-#: fetch-pack.c:499
+#: fetch-pack.c:500
 #, c-format
 msgid "invalid commit %s"
 msgstr "commit inválido %s"
 
-#: fetch-pack.c:532
+#: fetch-pack.c:533
 msgid "giving up"
 msgstr "rindiéndose"
 
-#: fetch-pack.c:542 progress.c:229
+#: fetch-pack.c:543 progress.c:229
 msgid "done"
 msgstr "listo"
 
-#: fetch-pack.c:554
+#: fetch-pack.c:555
 #, c-format
 msgid "got %s (%d) %s"
 msgstr "se obtuvo %s (%d) %s"
 
-#: fetch-pack.c:600
+#: fetch-pack.c:601
 #, c-format
 msgid "Marking %s as complete"
 msgstr "Marcando %s como completa"
 
-#: fetch-pack.c:788
+#: fetch-pack.c:828
 #, c-format
 msgid "already have %s (%s)"
 msgstr "ya se tiene %s (%s)"
 
-#: fetch-pack.c:829
+#: fetch-pack.c:869
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack: no se puede extraer un demultiplexor de banda lateral"
 
-#: fetch-pack.c:837
+#: fetch-pack.c:877
 msgid "protocol error: bad pack header"
 msgstr "error de protocolo: mal paquete de header"
 
-#: fetch-pack.c:895
+#: fetch-pack.c:944
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack: no se puede quitar %s"
 
-#: fetch-pack.c:911
+#: fetch-pack.c:960
 #, c-format
 msgid "%s failed"
-msgstr "%s fallo"
+msgstr "%s falló"
 
-#: fetch-pack.c:913
+#: fetch-pack.c:962
 msgid "error in sideband demultiplexer"
 msgstr "error en demultiplexor de banda lateral"
 
-#: fetch-pack.c:940
+#: fetch-pack.c:989
 msgid "Server does not support shallow clients"
 msgstr "Servidor no soporta clientes superficiales"
 
-#: fetch-pack.c:944
+#: fetch-pack.c:993
 msgid "Server supports multi_ack_detailed"
 msgstr "Servidor soporta ulti_ack_detailed"
 
-#: fetch-pack.c:947
+#: fetch-pack.c:996
 msgid "Server supports no-done"
 msgstr "Servidor soporta no-done"
 
-#: fetch-pack.c:953
+#: fetch-pack.c:1002
 msgid "Server supports multi_ack"
 msgstr "Servidor soporta multi_ack"
 
-#: fetch-pack.c:957
+#: fetch-pack.c:1006
 msgid "Server supports side-band-64k"
 msgstr "Servidor soporta side-band-64k"
 
-#: fetch-pack.c:961
+#: fetch-pack.c:1010
 msgid "Server supports side-band"
 msgstr "Servidor soporta side-band"
 
-#: fetch-pack.c:965
+#: fetch-pack.c:1014
 msgid "Server supports allow-tip-sha1-in-want"
 msgstr "Servidor soporta allow-tip-sha1-in-want"
 
-#: fetch-pack.c:969
+#: fetch-pack.c:1018
 msgid "Server supports allow-reachable-sha1-in-want"
 msgstr "Servidor soporta allow-reachable-sha1-in-want"
 
-#: fetch-pack.c:979
+#: fetch-pack.c:1028
 msgid "Server supports ofs-delta"
 msgstr "Servidor soporta ofs-delta"
 
-#: fetch-pack.c:985
+#: fetch-pack.c:1034 fetch-pack.c:1204
 msgid "Server supports filter"
 msgstr "Servidor soporta filtro"
 
-#: fetch-pack.c:993
+#: fetch-pack.c:1042
 #, c-format
 msgid "Server version is %.*s"
 msgstr "Versión de servidor es %.*s"
 
-#: fetch-pack.c:999
+#: fetch-pack.c:1048
 msgid "Server does not support --shallow-since"
 msgstr "Servidor no soporta --shalow-since"
 
-#: fetch-pack.c:1003
+#: fetch-pack.c:1052
 msgid "Server does not support --shallow-exclude"
 msgstr "Servidor no soporta --shalow-exclude"
 
-#: fetch-pack.c:1005
+#: fetch-pack.c:1054
 msgid "Server does not support --deepen"
 msgstr "Servidor no soporta --deepen"
 
-#: fetch-pack.c:1016
+#: fetch-pack.c:1065
 msgid "no common commits"
 msgstr "no hay commits comunes"
 
-#: fetch-pack.c:1028
+#: fetch-pack.c:1077 fetch-pack.c:1414
 msgid "git fetch-pack: fetch failed."
-msgstr "git fetch-pack: fetch fallo."
+msgstr "git fetch-pack: fetch falló."
 
-#: fetch-pack.c:1190
+#: fetch-pack.c:1199
+msgid "Server does not support shallow requests"
+msgstr "Servidor no soporta peticiones superficiales"
+
+#: fetch-pack.c:1584
 msgid "no matching remote head"
 msgstr "no concuerda el head remoto"
 
-#: fetch-pack.c:1212
+#: fetch-pack.c:1610
 #, c-format
 msgid "no such remote ref %s"
 msgstr "no existe ref remota %s"
 
-#: fetch-pack.c:1215
+#: fetch-pack.c:1613
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "Servidor no permite solicitudes de objetos inadvertidos %s"
 
-#: gpg-interface.c:181
+#: gpg-interface.c:185
 msgid "gpg failed to sign the data"
-msgstr "gpg fallo al firmar la data"
+msgstr "gpg falló al firmar la data"
 
-#: gpg-interface.c:211
+#: gpg-interface.c:210
 msgid "could not create temporary file"
 msgstr "no se pudo crear archivo temporal"
 
-#: gpg-interface.c:214
+#: gpg-interface.c:213
 #, c-format
 msgid "failed writing detached signature to '%s'"
-msgstr "fallo al escribir la firma separada para '%s'"
+msgstr "falló al escribir la firma separada para '%s'"
 
 #: graph.c:97
 #, c-format
 msgid "ignore invalid color '%.*s' in log.graphColors"
 msgstr "ignora color invalido '%.*s' en log.graphColors"
 
-#: grep.c:2022
+#: grep.c:2020
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "'%s': no es posible leer %s"
 
-#: grep.c:2039 setup.c:163 builtin/clone.c:407 builtin/diff.c:81
+#: grep.c:2037 setup.c:164 builtin/clone.c:409 builtin/diff.c:81
 #: builtin/rm.c:134
 #, c-format
 msgid "failed to stat '%s'"
-msgstr "fallo al marcar '%s'"
+msgstr "falló al marcar '%s'"
 
-#: grep.c:2050
+#: grep.c:2048
 #, c-format
 msgid "'%s': short read"
 msgstr "'%s': lectura corta"
 
-#: help.c:179
+#: help.c:23
+msgid "start a working area (see also: git help tutorial)"
+msgstr "comienza un área de trabajo (ver también: git help tutorial)"
+
+#: help.c:24
+msgid "work on the current change (see also: git help everyday)"
+msgstr "trabaja en los cambios actuales (ver también: git help everyday)"
+
+#: help.c:25
+msgid "examine the history and state (see also: git help revisions)"
+msgstr "examina el historial y el estado (ver también: git help revisions)"
+
+#: help.c:26
+msgid "grow, mark and tweak your common history"
+msgstr "crece, marca y ajusta tu historial común"
+
+#: help.c:27
+msgid "collaborate (see also: git help workflows)"
+msgstr "colabora (mira también: git help workflows)"
+
+#: help.c:31
+msgid "Main Porcelain Commands"
+msgstr "Comandos de Porcelana principales"
+
+#: help.c:32
+msgid "Ancillary Commands / Manipulators"
+msgstr "Comandos auxiliares / Manipuladores"
+
+#: help.c:33
+msgid "Ancillary Commands / Interrogators"
+msgstr "Comandos auxiliares / Interrogadores"
+
+#: help.c:34
+msgid "Interacting with Others"
+msgstr "Interactuando con Otros"
+
+#: help.c:35
+msgid "Low-level Commands / Manipulators"
+msgstr "Comandos de bajo nivel / Manipuladores"
+
+#: help.c:36
+msgid "Low-level Commands / Interrogators"
+msgstr "Comandos de bajo nivel / Interrogadores"
+
+#: help.c:37
+msgid "Low-level Commands / Synching Repositories"
+msgstr "Comandos de bajo nivel / Sincronización de repositorios"
+
+#: help.c:38
+msgid "Low-level Commands / Internal Helpers"
+msgstr "Comandos de bajo nivel / Auxiliares internos"
+
+#: help.c:293
 #, c-format
 msgid "available git commands in '%s'"
 msgstr "comandos disponibles de git en '%s'"
 
-#: help.c:186
+#: help.c:300
 msgid "git commands available from elsewhere on your $PATH"
 msgstr "comandos disponibles de git desde otro lugar en tu $PATH"
 
-#: help.c:217
+#: help.c:309
 msgid "These are common Git commands used in various situations:"
 msgstr "Estos son comandos comunes de Git usados en varias situaciones:"
 
-#: help.c:281
+#: help.c:358 git.c:90
+#, c-format
+msgid "unsupported command listing type '%s'"
+msgstr "comando de listado de tipos no soportado '%s'"
+
+#: help.c:405
+msgid "The common Git guides are:"
+msgstr "Las guías comunes de Git son:"
+
+#: help.c:467
 #, c-format
 msgid ""
 "'%s' appears to be a git command, but we were not\n"
@@ -1953,31 +2095,31 @@ msgstr ""
 "'%s' parece ser un comando de git, pero no hemos\n"
 "podido ejecutarlo. Tal vez git-%s se ha roto?"
 
-#: help.c:336
+#: help.c:526
 msgid "Uh oh. Your system reports no Git commands at all."
 msgstr "Oh oh. Tu sistema no reporta ningún comando de Git."
 
-#: help.c:358
+#: help.c:548
 #, c-format
 msgid "WARNING: You called a Git command named '%s', which does not exist."
 msgstr "PELIGRO: Has llamado a un comando de Git '%s', el cual no existe."
 
-#: help.c:363
+#: help.c:553
 #, c-format
 msgid "Continuing under the assumption that you meant '%s'."
 msgstr "Continuando asumiendo que quisiste decir '%s'."
 
-#: help.c:368
+#: help.c:558
 #, c-format
 msgid "Continuing in %0.1f seconds, assuming that you meant '%s'."
 msgstr "Continuando en %0.1f segundos, asumiendo que tu dijiste '%s'."
 
-#: help.c:376
+#: help.c:566
 #, c-format
 msgid "git: '%s' is not a git command. See 'git --help'."
 msgstr "git: '%s'no es un comando de git. Mira 'git --help'."
 
-#: help.c:380
+#: help.c:570
 msgid ""
 "\n"
 "The most similar command is"
@@ -1991,16 +2133,16 @@ msgstr[1] ""
 "\n"
 "Los comandos mas similares son"
 
-#: help.c:395
+#: help.c:585
 msgid "git version [<options>]"
 msgstr "git versión [<opciones>]"
 
-#: help.c:462
+#: help.c:652
 #, c-format
 msgid "%s: %s - %s"
 msgstr "%s: %s - %s"
 
-#: help.c:466
+#: help.c:656
 msgid ""
 "\n"
 "Did you mean this?"
@@ -2068,7 +2210,7 @@ msgstr "no se puede tener un nombre vacío (para <%s>)"
 msgid "name consists only of disallowed characters: %s"
 msgstr "el nombre consiste solo de caracteres no permitidos: %s"
 
-#: ident.c:416 builtin/commit.c:582
+#: ident.c:416 builtin/commit.c:587
 #, c-format
 msgid "invalid date format: %s"
 msgstr "formato de fecha invalido: %s"
@@ -2106,82 +2248,161 @@ msgstr ""
 msgid "Unable to create '%s.lock': %s"
 msgstr "No se pudo crear '%s.lock': %s"
 
-#: merge.c:74
+#: merge.c:71
 msgid "failed to read the cache"
-msgstr "fallo al leer la cache"
+msgstr "falló al leer la cache"
 
-#: merge.c:134 builtin/am.c:1946 builtin/am.c:1980 builtin/checkout.c:378
-#: builtin/checkout.c:599 builtin/clone.c:759
+#: merge.c:136 builtin/am.c:1946 builtin/am.c:1980 builtin/checkout.c:378
+#: builtin/checkout.c:606 builtin/clone.c:761
 msgid "unable to write new index file"
 msgstr "no es posible escribir el archivo índice"
 
-#: merge-recursive.c:235
+#: merge-recursive.c:298
 msgid "(bad commit)\n"
 msgstr "(mal commit)\n"
 
-#: merge-recursive.c:257 merge-recursive.c:265
+#: merge-recursive.c:320
+#, c-format
+msgid "add_cacheinfo failed for path '%s'; merge aborting."
+msgstr "add_cacheinfo falló para la ruta '%s'; abortando fusión."
+
+#: merge-recursive.c:328
 #, c-format
-msgid "addinfo_cache failed for path '%s'"
-msgstr "addinfo_cache fallo para la ruta '%s'"
+msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+msgstr "add_cacheinfo falló para refrescar la ruta '%s'; abortando fusión."
 
-#: merge-recursive.c:329
+#: merge-recursive.c:410
 msgid "error building trees"
 msgstr "error construyendo árboles"
 
-#: merge-recursive.c:771
+#: merge-recursive.c:881
 #, c-format
 msgid "failed to create path '%s'%s"
-msgstr "fallo al crear la ruta '%s'%s"
+msgstr "falló al crear la ruta '%s'%s"
 
-#: merge-recursive.c:782
+#: merge-recursive.c:892
 #, c-format
 msgid "Removing %s to make room for subdirectory\n"
 msgstr "Removiendo %s para hacer espacio para un subdirectorio\n"
 
-#: merge-recursive.c:796 merge-recursive.c:815
+#: merge-recursive.c:906 merge-recursive.c:925
 msgid ": perhaps a D/F conflict?"
 msgstr ": tal vez un conflicto D/F?"
 
-#: merge-recursive.c:805
+#: merge-recursive.c:915
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
 msgstr "rehusando perder el archivo rastreado en '%s'"
 
-#: merge-recursive.c:847 builtin/cat-file.c:37
+#: merge-recursive.c:957 builtin/cat-file.c:37
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr "no se puede leer el objeto %s '%s'"
 
-#: merge-recursive.c:849
+#: merge-recursive.c:959
 #, c-format
 msgid "blob expected for %s '%s'"
 msgstr "se esperaba blob para %s '%s'"
 
-#: merge-recursive.c:873
+#: merge-recursive.c:983
 #, c-format
 msgid "failed to open '%s': %s"
-msgstr "fallo al abrir '%s': %s"
+msgstr "falló al abrir '%s': %s"
 
-#: merge-recursive.c:884
+#: merge-recursive.c:994
 #, c-format
 msgid "failed to symlink '%s': %s"
-msgstr "fallo al crear el enlace simbólico '%s': %s"
+msgstr "falló al crear el enlace simbólico '%s': %s"
 
-#: merge-recursive.c:889
+#: merge-recursive.c:999
 #, c-format
 msgid "do not know what to do with %06o %s '%s'"
 msgstr "no se que hacer con %06o %s '%s'"
 
-#: merge-recursive.c:1029
+#: merge-recursive.c:1186
+#, c-format
+msgid "Failed to merge submodule %s (not checked out)"
+msgstr "Falló al fusionar el submódulo %s (no revisado)"
+
+#: merge-recursive.c:1193
+#, c-format
+msgid "Failed to merge submodule %s (commits not present)"
+msgstr "Falló al fusionar el submódulo %s (commits no presentes)"
+
+#: merge-recursive.c:1200
+#, c-format
+msgid "Failed to merge submodule %s (commits don't follow merge-base)"
+msgstr "Falló el fusionar submódulo %s (commits no siguen la fusión base)"
+
+#: merge-recursive.c:1208 merge-recursive.c:1220
+#, c-format
+msgid "Fast-forwarding submodule %s to the following commit:"
+msgstr "Haciendo fast-forward a submódulo %s para el siguiente commit:"
+
+#: merge-recursive.c:1211 merge-recursive.c:1223
+#, c-format
+msgid "Fast-forwarding submodule %s"
+msgstr "Avance rápido en submódulo %s"
+
+#: merge-recursive.c:1245
+#, c-format
+msgid "Failed to merge submodule %s (merge following commits not found)"
+msgstr ""
+"Falló al fusionar submódulo %s (los siguentes commits no fueron encontrados)"
+
+#: merge-recursive.c:1249
+#, c-format
+msgid "Failed to merge submodule %s (not fast-forward)"
+msgstr "Falló al fusionar el submódulo %s (no es posible avance rápido)"
+
+#: merge-recursive.c:1250
+msgid "Found a possible merge resolution for the submodule:\n"
+msgstr "Se encontró una posible solución de fusión para el submódulo:\n"
+
+#: merge-recursive.c:1253
+#, c-format
+msgid ""
+"If this is correct simply add it to the index for example\n"
+"by using:\n"
+"\n"
+"  git update-index --cacheinfo 160000 %s \"%s\"\n"
+"\n"
+"which will accept this suggestion.\n"
+msgstr ""
+"Si esto es correcto simplemente agrégalo al índice por ejemplo\n"
+"usando:\n"
+"\n"
+"  git update-index --cacheinfo 160000 %s \"%s\"\n"
+"\n"
+"el cual aceptará esta sugerencia.\n"
+
+#: merge-recursive.c:1262
+#, c-format
+msgid "Failed to merge submodule %s (multiple merges found)"
+msgstr "Falló al fusionar el submódulo %s (fusiones múltiples encontradas)"
+
+#: merge-recursive.c:1321
 msgid "Failed to execute internal merge"
-msgstr "Fallo al ejecutar la fusión interna"
+msgstr "Falló al ejecutar la fusión interna"
 
-#: merge-recursive.c:1034
+#: merge-recursive.c:1326
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "No es posible agregar %s a la base de datos"
 
-#: merge-recursive.c:1146
+#: merge-recursive.c:1358
+#, c-format
+msgid "Auto-merging %s"
+msgstr "Auto-fusionando %s"
+
+#: merge-recursive.c:1423
+#, c-format
+msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+msgstr ""
+"Error: Rehusando perder el archivo no rastreado en %s; escribiéndolo a %s en "
+"cambio."
+
+#: merge-recursive.c:1475
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -2190,7 +2411,7 @@ msgstr ""
 "CONFLICTO (%s/borrar): %s borrado en %s y %s en %s. Falta versión %s de %s "
 "en el árbol."
 
-#: merge-recursive.c:1151
+#: merge-recursive.c:1480
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -2199,7 +2420,7 @@ msgstr ""
 "CONFLICTO (%s/borrar): %s borrado en %s y %s para %s en %s. Versión %s de %s "
 "permanece en el árbol."
 
-#: merge-recursive.c:1158
+#: merge-recursive.c:1487
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -2208,7 +2429,7 @@ msgstr ""
 "CONFLICTO (%s/eliminar): %s eliminado en %s y %s en %s. Versión %s de %s "
 "dejada en el árbol, en %s."
 
-#: merge-recursive.c:1163
+#: merge-recursive.c:1492
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -2217,20 +2438,32 @@ msgstr ""
 "CONFLICTO (%s/borrar): %s borrado en %s y %s para %s en %s. Versión %s de %s "
 "permanece en el árbol en %s."
 
-#: merge-recursive.c:1197
+#: merge-recursive.c:1526
 msgid "rename"
 msgstr "renombrar"
 
-#: merge-recursive.c:1197
+#: merge-recursive.c:1526
 msgid "renamed"
 msgstr "renombrado"
 
-#: merge-recursive.c:1254
+#: merge-recursive.c:1580 merge-recursive.c:1736 merge-recursive.c:2368
+#: merge-recursive.c:3086
+#, c-format
+msgid "Refusing to lose dirty file at %s"
+msgstr "Rehusando perder el archivo sucio en %s"
+
+#: merge-recursive.c:1594
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr "%s es un directorio en %s agregando como %s más bien"
 
-#: merge-recursive.c:1279
+#: merge-recursive.c:1599
+#, c-format
+msgid "Refusing to lose untracked file at %s; adding as %s instead"
+msgstr ""
+"Rehusando perder el archivo no rastreado en %s; agregándolo como %s en cambio"
+
+#: merge-recursive.c:1625
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
@@ -2239,143 +2472,193 @@ msgstr ""
 "CONFLICTO (renombrar/renombrar): Renombrar \"%s\"->\"%s\" en la rama \"%s\" "
 "renombrar \"%s\"->\"%s\" en \"%s\"%s"
 
-#: merge-recursive.c:1284
+#: merge-recursive.c:1630
 msgid " (left unresolved)"
 msgstr " (dejado sin resolver)"
 
-#: merge-recursive.c:1346
+#: merge-recursive.c:1694
 #, 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:1379
+#: merge-recursive.c:1733
 #, c-format
 msgid "Renaming %s to %s and %s to %s instead"
 msgstr "Renombrando %s a %s y %s a %s más bien"
 
-#: merge-recursive.c:1582
+#: merge-recursive.c:1745
+#, c-format
+msgid "Refusing to lose untracked file at %s, even though it's in the way."
+msgstr ""
+"Rehusando perder el archivo no rastreado en %s, incluso aunque se está "
+"interponiendo."
+
+#: merge-recursive.c:1951
+#, c-format
+msgid ""
+"CONFLICT (directory rename split): Unclear where to place %s because "
+"directory %s was renamed to multiple other directories, with no destination "
+"getting a majority of the files."
+msgstr ""
+"CONFLICTO (división de cambio de nombre de directorio): No es claro dónde "
+"colocar %s porque el directorio %s fue renombrado a otros múltiples "
+"directorios, sin ningún que contenga la mayoría de archivos."
+
+#: merge-recursive.c:1983
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
+"implicit directory rename(s) putting the following path(s) there: %s."
+msgstr ""
+"CONFLICTO (cambio de nombre de directorio implícito): Archivo/directorio "
+"existente en %s se interpone con el cambio de nombres implícito, poniendo "
+"la(s) siguiente(s) ruta(s) aquí: %s."
+
+#: merge-recursive.c:1993
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
+"implicit directory renames tried to put these paths there: %s"
+msgstr ""
+"CONFLICTO (cambio de nombre implícito): No se puede mapear más de una ruta "
+"para %s; cambio de nombre implícito intentó poner estas rutas: %s"
+
+#: merge-recursive.c:2085
+#, c-format
+msgid ""
+"CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
+">%s in %s"
+msgstr ""
+"CONFLICTO (renombrar/renombrar): Renombrar directorio %s->%s en %s. "
+"Renombrar directorio %s->%s en %s"
+
+#: merge-recursive.c:2330
+#, c-format
+msgid ""
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
+msgstr ""
+"PELIGRO: Evitando aplicar %s -> %s renombrado a %s, porque %s mismo fue "
+"renombrado."
+
+#: merge-recursive.c:2736
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s. %s added in %s"
 msgstr ""
 "CONFLICTO (renombrar/agregar): Renombrar %s->%s en %s. %s agregado en %s"
 
-#: merge-recursive.c:1597
+#: merge-recursive.c:2751
 #, c-format
 msgid "Adding merged %s"
 msgstr "Agregar %s fusionado"
 
-#: merge-recursive.c:1604 merge-recursive.c:1834
+#: merge-recursive.c:2758 merge-recursive.c:3089
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Agregando más bien como %s"
 
-#: merge-recursive.c:1661
+#: merge-recursive.c:2914
 #, c-format
 msgid "cannot read object %s"
 msgstr "no se pudo leer el objeto %s"
 
-#: merge-recursive.c:1664
+#: merge-recursive.c:2917
 #, c-format
 msgid "object %s is not a blob"
 msgstr "objeto %s no es un blob"
 
-#: merge-recursive.c:1733
+#: merge-recursive.c:2986
 msgid "modify"
 msgstr "modificar"
 
-#: merge-recursive.c:1733
+#: merge-recursive.c:2986
 msgid "modified"
 msgstr "modificado"
 
-#: merge-recursive.c:1743
+#: merge-recursive.c:2997
 msgid "content"
 msgstr "contenido"
 
-#: merge-recursive.c:1750
+#: merge-recursive.c:3004
 msgid "add/add"
 msgstr "agregar/agregar"
 
-#: merge-recursive.c:1786
+#: merge-recursive.c:3046
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "Saltado %s (fusionado como existente)"
 
-#: merge-recursive.c:1800
-#, c-format
-msgid "Auto-merging %s"
-msgstr "Auto-fusionando %s"
-
-#: merge-recursive.c:1804 git-submodule.sh:879
+#: merge-recursive.c:3055 git-submodule.sh:895
 msgid "submodule"
 msgstr "submódulo"
 
-#: merge-recursive.c:1805
+#: merge-recursive.c:3056
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr "CONFLICTO (%s): Conflicto de fusión en %s"
 
-#: merge-recursive.c:1899
+#: merge-recursive.c:3178
 #, c-format
 msgid "Removing %s"
 msgstr "Eliminando %s"
 
-#: merge-recursive.c:1925
+#: merge-recursive.c:3204
 msgid "file/directory"
 msgstr "archivo/directorio"
 
-#: merge-recursive.c:1931
+#: merge-recursive.c:3210
 msgid "directory/file"
 msgstr "directorio/archivo"
 
-#: merge-recursive.c:1938
+#: merge-recursive.c:3217
 #, 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:1947
+#: merge-recursive.c:3226
 #, c-format
 msgid "Adding %s"
 msgstr "Agregando %s"
 
-#: merge-recursive.c:1987
+#: merge-recursive.c:3267
 #, c-format
 msgid "Dirty index: cannot merge (dirty: %s)"
 msgstr "Índice sucio: no se puede fusionar (sucio: %s)"
 
-#: merge-recursive.c:1991
+#: merge-recursive.c:3271
 msgid "Already up to date!"
 msgstr "¡Ya está actualizado!"
 
-#: merge-recursive.c:2000
+#: merge-recursive.c:3280
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr "falló la fusión de los árboles %s y %s"
 
-#: merge-recursive.c:2097
+#: merge-recursive.c:3379
 msgid "Merging:"
 msgstr "Fusionando:"
 
-#: merge-recursive.c:2110
+#: merge-recursive.c:3392
 #, 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:2149
+#: merge-recursive.c:3431
 msgid "merge returned no commit"
 msgstr "la fusión no devolvió ningún commit"
 
-#: merge-recursive.c:2212
+#: merge-recursive.c:3495
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "No se pudo analizar el objeto '%s'"
 
-#: merge-recursive.c:2228 builtin/merge.c:657 builtin/merge.c:816
+#: merge-recursive.c:3511 builtin/merge.c:659 builtin/merge.c:816
 msgid "Unable to write index."
 msgstr "Incapaz de escribir el índice."
 
@@ -2421,32 +2704,32 @@ msgstr "Rehusando reescribir notas en %s (fuera de refs/notes/)"
 msgid "Bad %s value: '%s'"
 msgstr "Mal valor para %s: '%s'"
 
-#: object.c:239
+#: object.c:242
 #, c-format
 msgid "unable to parse object: %s"
 msgstr "incapaz de analizar objeto: %s"
 
-#: packfile.c:561
+#: packfile.c:563
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "offset antes del final del paquete (broken .idx?)"
 
-#: packfile.c:1694
+#: packfile.c:1742
 #, 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:1698
+#: packfile.c:1746
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr ""
 "offset más allá del índice de fin de paquete para %s (índice truncado?)"
 
-#: parse-options.c:619
+#: parse-options.c:621
 msgid "..."
 msgstr "..."
 
-#: parse-options.c:638
+#: parse-options.c:640
 #, c-format
 msgid "usage: %s"
 msgstr "uso: %s"
@@ -2454,26 +2737,31 @@ msgstr "uso: %s"
 #. TRANSLATORS: the colon here should align with the
 #. one in "usage: %s" translation.
 #.
-#: parse-options.c:644
+#: parse-options.c:646
 #, c-format
 msgid "   or: %s"
 msgstr "   o: %s"
 
-#: parse-options.c:647
+#: parse-options.c:649
 #, c-format
 msgid "    %s"
 msgstr "    %s"
 
-#: parse-options.c:686
+#: parse-options.c:688
 msgid "-NUM"
 msgstr "-NUM"
 
-#: parse-options-cb.c:108
+#: parse-options-cb.c:44
+#, c-format
+msgid "malformed expiration date '%s'"
+msgstr "fecha de expiración mal formada: '%s'"
+
+#: parse-options-cb.c:112
 #, c-format
 msgid "malformed object name '%s'"
 msgstr "nombre de objeto mal formado '%s'"
 
-#: path.c:891
+#: path.c:892
 #, c-format
 msgid "Could not make %s writable by group"
 msgstr "No se pudo hacer que %s fuera escribible por el grupo"
@@ -2557,7 +2845,7 @@ msgstr "el patrón de ruta '%s' está detrás de un enlace simbólico"
 msgid "unable to parse --pretty format"
 msgstr "incapaz de analizar el formato --pretty"
 
-#: read-cache.c:1473
+#: read-cache.c:1500
 #, c-format
 msgid ""
 "index.version set, but the value is invalid.\n"
@@ -2566,7 +2854,7 @@ msgstr ""
 "index.version configurado, pero el valor no es válido.\n"
 "Usando versión %i"
 
-#: read-cache.c:1483
+#: read-cache.c:1510
 #, c-format
 msgid ""
 "GIT_INDEX_VERSION set, but the value is invalid.\n"
@@ -2575,52 +2863,53 @@ msgstr ""
 "GIT_INDEX_VERSION configurado, pero el valor no es válido.\n"
 "Usando versión %i"
 
-#: read-cache.c:2375 sequencer.c:3248 wrapper.c:658 builtin/merge.c:1049
+#: read-cache.c:2404 sequencer.c:4338 wrapper.c:658 builtin/merge.c:1048
 #, c-format
 msgid "could not close '%s'"
 msgstr "no se pudo cerrar '%s'"
 
-#: read-cache.c:2448 sequencer.c:1900 sequencer.c:2627
+#: read-cache.c:2477 sequencer.c:2102 sequencer.c:3234
 #, c-format
 msgid "could not stat '%s'"
 msgstr "no se pudo definir '%s'"
 
-#: read-cache.c:2461
+#: read-cache.c:2490
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr "no es posible abrir el directorio de git: %s"
 
-#: read-cache.c:2473
+#: read-cache.c:2502
 #, c-format
 msgid "unable to unlink: %s"
 msgstr "no es posible remover el vinculo: %s"
 
-#: refs.c:706
+#: refs.c:732 sequencer.c:4334 sequencer.c:4393 wrapper.c:225 wrapper.c:395
+#: builtin/am.c:779
 #, c-format
-msgid "Could not open '%s' for writing"
-msgstr "No se pudo abrir '%s' para escritura"
+msgid "could not open '%s' for writing"
+msgstr "no se pudo abrir '%s' para escritura"
 
-#: refs.c:1850
+#: refs.c:1880
 msgid "ref updates forbidden inside quarantine environment"
 msgstr "actualizaciones de ref prohibidas dentro de ambiente de cuarentena"
 
-#: refs/files-backend.c:1189
+#: refs/files-backend.c:1191
 #, c-format
 msgid "could not remove reference %s"
 msgstr "no se pudo remover la referencia %s"
 
-#: refs/files-backend.c:1203 refs/packed-backend.c:1528
-#: refs/packed-backend.c:1538
+#: refs/files-backend.c:1205 refs/packed-backend.c:1531
+#: refs/packed-backend.c:1541
 #, c-format
 msgid "could not delete reference %s: %s"
 msgstr "no se pudo eliminar la referencia %s: %s"
 
-#: refs/files-backend.c:1206 refs/packed-backend.c:1541
+#: refs/files-backend.c:1208 refs/packed-backend.c:1544
 #, c-format
 msgid "could not delete references: %s"
 msgstr "no se pudo eliminar la referencia: %s"
 
-#: ref-filter.c:35 wt-status.c:1842
+#: ref-filter.c:35 wt-status.c:1850
 msgid "gone"
 msgstr "desaparecido"
 
@@ -2639,157 +2928,162 @@ msgstr "detrás %d"
 msgid "ahead %d, behind %d"
 msgstr "delante %d, detrás %d"
 
-#: ref-filter.c:107
+#: ref-filter.c:121
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr "formato esperado: %%(color:<color>)"
 
-#: ref-filter.c:109
+#: ref-filter.c:123
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr "color no reconocido: %%(color:%s)"
 
-#: ref-filter.c:129
+#: ref-filter.c:145
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr "Valor entero esperado refname:lstrip=%s"
 
-#: ref-filter.c:133
+#: ref-filter.c:149
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr "Valor entero esperado refname:rstrip=%s"
 
-#: ref-filter.c:135
+#: ref-filter.c:151
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr "argumento: %s no reconocido %%(%s)"
 
-#: ref-filter.c:184
+#: ref-filter.c:206
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr "%%(body) no toma ningún argumento"
 
-#: ref-filter.c:191
+#: ref-filter.c:215
 #, c-format
 msgid "%%(subject) does not take arguments"
 msgstr "%%(subject) no toma ningún argumento"
 
-#: ref-filter.c:209
+#: ref-filter.c:235
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr "%%(trailers) desconocidos, argumento: %s"
 
-#: ref-filter.c:232
+#: ref-filter.c:264
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr "valor positivo esperado contents:lines=%s"
 
-#: ref-filter.c:234
+#: ref-filter.c:266
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr "argumento %s no reconocido %%(contents)"
 
-#: ref-filter.c:247
+#: ref-filter.c:281
 #, c-format
 msgid "positive value expected objectname:short=%s"
 msgstr "valor positivo esperado objectname:short=%s"
 
-#: ref-filter.c:251
+#: ref-filter.c:285
 #, c-format
 msgid "unrecognized %%(objectname) argument: %s"
 msgstr "argumento: %s no reconocido %%(objectname)"
 
-#: ref-filter.c:278
+#: ref-filter.c:315
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr "formato esperado: %%(align:<ancho>,<posición>)"
 
-#: ref-filter.c:290
+#: ref-filter.c:327
 #, c-format
 msgid "unrecognized position:%s"
 msgstr "posición desconocida: %s"
 
-#: ref-filter.c:294
+#: ref-filter.c:334
 #, c-format
 msgid "unrecognized width:%s"
 msgstr "ancho desconocido: %s"
 
-#: ref-filter.c:300
+#: ref-filter.c:343
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr "argumento no reconocido para %%(align): %s"
 
-#: ref-filter.c:304
+#: ref-filter.c:351
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr "se esperaba un ancho positivo con el átomo %%(align)"
 
-#: ref-filter.c:319
+#: ref-filter.c:369
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
 msgstr "argumento: %s no reconocido %%(if)"
 
-#: ref-filter.c:409
+#: ref-filter.c:464
 #, c-format
 msgid "malformed field name: %.*s"
 msgstr "nombre mal formado de campo: %.*s"
 
-#: ref-filter.c:435
+#: ref-filter.c:491
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr "nombre de campo desconocido: %.*s"
 
-#: ref-filter.c:547
+#: ref-filter.c:608
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr "formato: átomo %%(if) usado sin un átomo %%(then)"
 
-#: ref-filter.c:607
+#: ref-filter.c:671
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr "formato: átomo %%(then) usado sin átomo %%(if)"
 
-#: ref-filter.c:609
+#: ref-filter.c:673
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr "formato: átomo %%(then) usado mas de una vez"
 
-#: ref-filter.c:611
+#: ref-filter.c:675
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr "formato: átomo %%(then) usado después de %%(else)"
 
-#: ref-filter.c:637
+#: ref-filter.c:703
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr "formato: átomo %%(else) usado sin un átomo %%(if)"
 
-#: ref-filter.c:639
+#: ref-filter.c:705
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr "formato: átomo %%(else) usado sin un átomo %%(then)"
 
-#: ref-filter.c:641
+#: ref-filter.c:707
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr "formato: átomo %%(else) usado mas de una vez"
 
-#: ref-filter.c:654
+#: ref-filter.c:722
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr "formato: átomo %%(end) usado sin átomo correspondiente"
 
-#: ref-filter.c:709
+#: ref-filter.c:779
 #, c-format
 msgid "malformed format string %s"
 msgstr "formato de cadena mal formado %s"
 
-#: ref-filter.c:1313
+#: ref-filter.c:1387
 #, c-format
 msgid "(no branch, rebasing %s)"
 msgstr "(no hay rama, rebasando %s)"
 
-#: ref-filter.c:1316
+#: ref-filter.c:1390
+#, c-format
+msgid "(no branch, rebasing detached HEAD %s)"
+msgstr "(no hay rama, rebasando con HEAD desacoplado %s)"
+
+#: ref-filter.c:1393
 #, c-format
 msgid "(no branch, bisect started on %s)"
 msgstr "(no hay rama, comenzando bisecado en %s)"
@@ -2797,7 +3091,7 @@ msgstr "(no hay rama, comenzando bisecado en %s)"
 #. TRANSLATORS: make sure this matches "HEAD
 #. detached at " in wt-status.c
 #.
-#: ref-filter.c:1324
+#: ref-filter.c:1401
 #, c-format
 msgid "(HEAD detached at %s)"
 msgstr "(HEAD desacoplado en %s)"
@@ -2805,148 +3099,148 @@ msgstr "(HEAD desacoplado en %s)"
 #. TRANSLATORS: make sure this matches "HEAD
 #. detached from " in wt-status.c
 #.
-#: ref-filter.c:1331
+#: ref-filter.c:1408
 #, c-format
 msgid "(HEAD detached from %s)"
 msgstr "(HEAD desacoplado de %s)"
 
-#: ref-filter.c:1335
+#: ref-filter.c:1412
 msgid "(no branch)"
 msgstr "(sin rama)"
 
-#: ref-filter.c:1364
+#: ref-filter.c:1442
 #, c-format
 msgid "missing object %s for %s"
 msgstr "falta objeto %s para %s"
 
-#: ref-filter.c:1367
+#: ref-filter.c:1445
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr "parse_object_buffer falló en %s para %s"
 
-#: ref-filter.c:1819
+#: ref-filter.c:1902
 #, c-format
 msgid "malformed object at '%s'"
 msgstr "objeto mal formado en '%s'"
 
-#: ref-filter.c:1886
+#: ref-filter.c:1984
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr "ignorando referencia con nombre roto %s"
 
-#: ref-filter.c:1891
+#: ref-filter.c:1989
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "ignorando referencia rota %s"
 
-#: ref-filter.c:2152
+#: ref-filter.c:2261
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr "formato: falta átomo %%(end)"
 
-#: ref-filter.c:2246
+#: ref-filter.c:2365
 #, c-format
 msgid "malformed object name %s"
 msgstr "nombre de objeto mal formado %s"
 
-#: remote.c:795
+#: remote.c:605
 #, c-format
 msgid "Cannot fetch both %s and %s to %s"
 msgstr "No se pueden traer ambos %s y %s a %s"
 
-#: remote.c:799
+#: remote.c:609
 #, c-format
 msgid "%s usually tracks %s, not %s"
 msgstr "%s por lo general hace seguimiento a %s, no a %s"
 
-#: remote.c:803
+#: remote.c:613
 #, c-format
 msgid "%s tracks both %s and %s"
 msgstr "%s hace seguimiento tanto a %s como a %s"
 
-#: remote.c:811
+#: remote.c:621
 msgid "Internal error"
 msgstr "Error interno"
 
-#: remote.c:1726 remote.c:1828
+#: remote.c:1534 remote.c:1635
 msgid "HEAD does not point to a branch"
 msgstr "HEAD no apunta a ninguna rama"
 
-#: remote.c:1735
+#: remote.c:1543
 #, c-format
 msgid "no such branch: '%s'"
 msgstr "no existe tal rama: '%s'"
 
-#: remote.c:1738
+#: remote.c:1546
 #, c-format
 msgid "no upstream configured for branch '%s'"
 msgstr "no se ha configurado upstream para la rama '%s'"
 
-#: remote.c:1744
+#: remote.c:1552
 #, c-format
 msgid "upstream branch '%s' not stored as a remote-tracking branch"
 msgstr "la rama '%s' de upstream no es guardad como rama de rastreo remoto"
 
-#: remote.c:1759
+#: remote.c:1567
 #, c-format
 msgid "push destination '%s' on remote '%s' has no local tracking branch"
 msgstr ""
 "destino de push '%s' en el remoto '%s' no tiene una rama de rastreo local"
 
-#: remote.c:1771
+#: remote.c:1579
 #, c-format
 msgid "branch '%s' has no remote for pushing"
 msgstr "la rama '%s' no tiene remoto para enviar"
 
-#: remote.c:1782
+#: remote.c:1589
 #, c-format
 msgid "push refspecs for '%s' do not include '%s'"
 msgstr "refspecs del push para '%s' no incluyen '%s'"
 
-#: remote.c:1795
+#: remote.c:1602
 msgid "push has no destination (push.default is 'nothing')"
 msgstr "push no tiene destino (push.default es 'nada')"
 
-#: remote.c:1817
+#: remote.c:1624
 msgid "cannot resolve 'simple' push to a single destination"
 msgstr "no se puede resolver push 'simple' para un destino único"
 
-#: remote.c:2132
+#: remote.c:1939
 #, c-format
 msgid "Your branch is based on '%s', but the upstream is gone.\n"
 msgstr "Tu rama esta basada en '%s', pero upstream ha desaparecido.\n"
 
-#: remote.c:2136
+#: remote.c:1943
 msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
 msgstr "  (usa \"git branch --unset-upstream\" para arreglar)\n"
 
-#: remote.c:2139
+#: remote.c:1946
 #, c-format
 msgid "Your branch is up to date with '%s'.\n"
 msgstr "Tu rama está actualizada con '%s'.\n"
 
-#: remote.c:2143
+#: remote.c:1950
 #, c-format
 msgid "Your branch and '%s' refer to different commits.\n"
 msgstr "Tu rama y '%s' refieren a commits diferentes.\n"
 
-#: remote.c:2146
+#: remote.c:1953
 #, c-format
 msgid "  (use \"%s\" for details)\n"
 msgstr "  (usa \"%s\" para detalles)\n"
 
-#: remote.c:2150
+#: remote.c:1957
 #, c-format
 msgid "Your branch is ahead of '%s' by %d commit.\n"
 msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
 msgstr[0] "Tu rama está adelantada a '%s' por %d commit.\n"
 msgstr[1] "Tu rama está adelantada a '%s' por %d commits.\n"
 
-#: remote.c:2156
+#: remote.c:1963
 msgid "  (use \"git push\" to publish your local commits)\n"
 msgstr "  (usa \"git push\" para publicar tus commits locales)\n"
 
-#: remote.c:2159
+#: remote.c:1966
 #, c-format
 msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
 msgid_plural ""
@@ -2956,11 +3250,11 @@ msgstr[0] ""
 msgstr[1] ""
 "Tu rama está detrás de '%s' por %d commits, y puede ser avanzada rápido.\n"
 
-#: remote.c:2167
+#: remote.c:1974
 msgid "  (use \"git pull\" to update your local branch)\n"
 msgstr "  (usa \"git pull\" para actualizar tu rama local)\n"
 
-#: remote.c:2170
+#: remote.c:1977
 #, c-format
 msgid ""
 "Your branch and '%s' have diverged,\n"
@@ -2975,28 +3269,28 @@ msgstr[1] ""
 "Tu rama y '%s' han divergido,\n"
 "y tienen %d y %d commits diferentes cada una respectivamente.\n"
 
-#: remote.c:2180
+#: remote.c:1987
 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"
 
-#: revision.c:2277
+#: revision.c:2289
 msgid "your current branch appears to be broken"
 msgstr "tu rama actual parece estar rota"
 
-#: revision.c:2280
+#: revision.c:2292
 #, 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:2477
+#: revision.c:2489
 msgid "--first-parent is incompatible with --bisect"
 msgstr "--first-parent es incompatible con --bisect"
 
-#: run-command.c:731
+#: run-command.c:728
 msgid "open /dev/null failed"
 msgstr "falló al abrir /dev/null"
 
-#: run-command.c:1274
+#: run-command.c:1271
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
@@ -3045,29 +3339,34 @@ msgstr "el destino no soporta push atómicos (--atomic)"
 msgid "the receiving end does not support push options"
 msgstr "el destino no soporta opciones de push"
 
-#: sequencer.c:158
+#: sequencer.c:175
 #, c-format
 msgid "invalid commit message cleanup mode '%s'"
 msgstr "mensaje de commit inválido, modo cleanup '%s'"
 
-#: sequencer.c:267
+#: sequencer.c:275
+#, c-format
+msgid "could not delete '%s'"
+msgstr "no se pudo borrar '%s'"
+
+#: sequencer.c:301
 msgid "revert"
 msgstr "revertir"
 
-#: sequencer.c:269
+#: sequencer.c:303
 msgid "cherry-pick"
 msgstr "cherry-pick"
 
-#: sequencer.c:271
+#: sequencer.c:305
 msgid "rebase -i"
 msgstr "rebase -i"
 
-#: sequencer.c:273
+#: sequencer.c:307
 #, c-format
 msgid "Unknown action: %d"
 msgstr "Acción desconocida: %d"
 
-#: sequencer.c:330
+#: sequencer.c:364
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'"
@@ -3075,7 +3374,7 @@ msgstr ""
 "después de resolver los conflictos, marca las rutas corregidas\n"
 "con 'git add <rutas>' o 'git rm <rutas>'"
 
-#: sequencer.c:333
+#: sequencer.c:367
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'\n"
@@ -3085,43 +3384,45 @@ msgstr ""
 "con 'git add <rutas>' o 'git rm <rutas>'\n"
 "y haz un commit del resultado con 'git commit'"
 
-#: sequencer.c:346 sequencer.c:2245
+#: sequencer.c:380 sequencer.c:2468
 #, c-format
 msgid "could not lock '%s'"
 msgstr "no se pudo bloquear '%s'"
 
-#: sequencer.c:349 sequencer.c:2124 sequencer.c:2250 sequencer.c:2264
-#: sequencer.c:3246 sequencer.c:3310 wrapper.c:656
+#: sequencer.c:382 sequencer.c:2346 sequencer.c:2472 sequencer.c:2486
+#: sequencer.c:2694 sequencer.c:4336 sequencer.c:4399 wrapper.c:656
 #, c-format
 msgid "could not write to '%s'"
 msgstr "no se pudo escribir en '%s'"
 
-#: sequencer.c:353
+#: sequencer.c:387
 #, c-format
 msgid "could not write eol to '%s'"
 msgstr "no se pudo escribir EOL en '%s'"
 
-#: sequencer.c:356 sequencer.c:2128 sequencer.c:2252
+#: sequencer.c:392 sequencer.c:2351 sequencer.c:2474 sequencer.c:2488
+#: sequencer.c:2702
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr "falló al finalizar '%s'"
 
-#: sequencer.c:379 sequencer.c:1340 sequencer.c:2148 builtin/am.c:259
-#: builtin/commit.c:722 builtin/merge.c:1047
+#: sequencer.c:415 sequencer.c:804 sequencer.c:1493 sequencer.c:2371
+#: sequencer.c:2684 sequencer.c:2788 builtin/am.c:259 builtin/commit.c:727
+#: builtin/merge.c:1046
 #, c-format
 msgid "could not read '%s'"
 msgstr "no se pudo leer '%s'"
 
-#: sequencer.c:405
+#: sequencer.c:441
 #, c-format
 msgid "your local changes would be overwritten by %s."
 msgstr "tus cambios locales serán sobreescritos por %s."
 
-#: sequencer.c:409
+#: sequencer.c:445
 msgid "commit your changes or stash them to proceed."
 msgstr "realiza un commit con tus cambios o aplica un stash para proceder."
 
-#: sequencer.c:438
+#: sequencer.c:474
 #, c-format
 msgid "%s: fast-forward"
 msgstr "%s: avance rápido"
@@ -3129,20 +3430,20 @@ msgstr "%s: avance rápido"
 #. TRANSLATORS: %s will be "revert", "cherry-pick" or
 #. "rebase -i".
 #.
-#: sequencer.c:526
+#: sequencer.c:563
 #, c-format
 msgid "%s: Unable to write new index file"
 msgstr "%s: Incapaz de escribir el nuevo archivo índice"
 
-#: sequencer.c:542
-msgid "could not resolve HEAD commit"
-msgstr "no se pudo resolver el commit de HEAD"
-
-#: sequencer.c:562
+#: sequencer.c:579
 msgid "unable to update cache tree"
 msgstr "no es posible actualizar el árbol de la caché"
 
-#: sequencer.c:658
+#: sequencer.c:592
+msgid "could not resolve HEAD commit"
+msgstr "no se pudo resolver el commit de HEAD"
+
+#: sequencer.c:749
 #, c-format
 msgid ""
 "you have staged changes in your working tree\n"
@@ -3172,11 +3473,15 @@ msgstr ""
 "\n"
 "  git rebase --continue\n"
 
-#: sequencer.c:915
+#: sequencer.c:818
+msgid "writing root commit"
+msgstr "escribiendo commit raíz"
+
+#: sequencer.c:1043
 msgid "'prepare-commit-msg' hook failed"
 msgstr "hook 'prepare-commit-msg' falló"
 
-#: sequencer.c:922
+#: sequencer.c:1050
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -3203,7 +3508,7 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:935
+#: sequencer.c:1063
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -3227,327 +3532,313 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:975
+#: sequencer.c:1103
 msgid "couldn't look up newly created commit"
 msgstr "no se pudo revisar el commit recién creado"
 
-#: sequencer.c:977
+#: sequencer.c:1105
 msgid "could not parse newly created commit"
 msgstr "no se pudo analizar el commit recién creado"
 
-#: sequencer.c:1023
+#: sequencer.c:1151
 msgid "unable to resolve HEAD after creating commit"
 msgstr "no se pudo resolver HEAD tras crear el commit"
 
-#: sequencer.c:1025
+#: sequencer.c:1153
 msgid "detached HEAD"
 msgstr "HEAD desacoplado"
 
-#: sequencer.c:1029
+#: sequencer.c:1157
 msgid " (root-commit)"
 msgstr " (commit-raíz)"
 
-#: sequencer.c:1050
+#: sequencer.c:1178
 msgid "could not parse HEAD"
 msgstr "no se pudo analizar HEAD"
 
-#: sequencer.c:1052
+#: sequencer.c:1180
 #, c-format
 msgid "HEAD %s is not a commit!"
 msgstr "HEAD %s no es un commit!"
 
-#: sequencer.c:1056 builtin/commit.c:1491
+#: sequencer.c:1184 builtin/commit.c:1528
 msgid "could not parse HEAD commit"
 msgstr "no se pudo analizar el commit de HEAD"
 
-#: sequencer.c:1107 sequencer.c:1673
+#: sequencer.c:1235 sequencer.c:1832
 msgid "unable to parse commit author"
 msgstr "no es posible analizar el autor del commit"
 
-#: sequencer.c:1117 builtin/am.c:1630 builtin/merge.c:643
+#: sequencer.c:1245 builtin/am.c:1630 builtin/merge.c:645
 msgid "git write-tree failed to write a tree"
 msgstr "git write-tree falló al escribir el árbol"
 
-#: sequencer.c:1134 sequencer.c:1186
+#: sequencer.c:1262 sequencer.c:1317
 #, c-format
 msgid "unable to read commit message from '%s'"
 msgstr "no se puede leer el mensaje del commit de '%s'"
 
-#: sequencer.c:1154 builtin/am.c:1650 builtin/commit.c:1594 builtin/merge.c:826
-#: builtin/merge.c:851
+#: sequencer.c:1284 builtin/am.c:1650 builtin/commit.c:1631 builtin/merge.c:825
+#: builtin/merge.c:850
 msgid "failed to write commit object"
-msgstr "fallo al escribir el objeto commit"
+msgstr "falló al escribir el objeto commit"
 
-#: sequencer.c:1213
+#: sequencer.c:1344
 #, c-format
 msgid "could not parse commit %s"
 msgstr "no se pudo analizar commit %s"
 
-#: sequencer.c:1218
+#: sequencer.c:1349
 #, c-format
 msgid "could not parse parent commit %s"
 msgstr "no se pudo analizar el commit padre %s"
 
-#: sequencer.c:1347
-#, c-format
-msgid ""
-"unexpected 1st line of squash message:\n"
-"\n"
-"\t%.*s"
-msgstr ""
-"1ra línea del mensaje squash no esperada:\n"
-"\n"
-"\t%.*s"
-
-#: sequencer.c:1353
-#, c-format
-msgid ""
-"invalid 1st line of squash message:\n"
-"\n"
-"\t%.*s"
-msgstr ""
-"1ra línea del mensaje squash inválida:\n"
-"\n"
-"\t%.*s"
-
-#: sequencer.c:1359 sequencer.c:1384
+#: sequencer.c:1500 sequencer.c:1525
 #, c-format
 msgid "This is a combination of %d commits."
 msgstr "Esta es una combinación de %d commits."
 
-#: sequencer.c:1368 sequencer.c:3265
+#: sequencer.c:1510 sequencer.c:4355
 msgid "need a HEAD to fixup"
 msgstr "se necesita un HEAD para arreglar"
 
-#: sequencer.c:1370
+#: sequencer.c:1512 sequencer.c:2729
 msgid "could not read HEAD"
 msgstr "no se pudo leer HEAD"
 
-#: sequencer.c:1372
+#: sequencer.c:1514
 msgid "could not read HEAD's commit message"
 msgstr "no se pudo leer el mensaje de commit de HEAD"
 
-#: sequencer.c:1378
+#: sequencer.c:1520
 #, c-format
 msgid "cannot write '%s'"
 msgstr "no se puede escribir '%s'"
 
-#: sequencer.c:1387 git-rebase--interactive.sh:452
+#: sequencer.c:1527 git-rebase--interactive.sh:457
 msgid "This is the 1st commit message:"
 msgstr "Este es el mensaje del 1er commit:"
 
-#: sequencer.c:1395
+#: sequencer.c:1535
 #, c-format
 msgid "could not read commit message of %s"
 msgstr "no se puede leer el mensaje del commit de %s"
 
-#: sequencer.c:1402
+#: sequencer.c:1542
 #, c-format
 msgid "This is the commit message #%d:"
 msgstr "Este es el mensaje del commit #%d:"
 
-#: sequencer.c:1407
+#: sequencer.c:1548
 #, c-format
 msgid "The commit message #%d will be skipped:"
 msgstr "El mensaje del commit #%d será saltado:"
 
-#: sequencer.c:1412
+#: sequencer.c:1553
 #, c-format
 msgid "unknown command: %d"
 msgstr "comando desconocido: %d"
 
-#: sequencer.c:1479
+#: sequencer.c:1631
 msgid "your index file is unmerged."
 msgstr "tu archivo índice no esta fusionado."
 
-#: sequencer.c:1498
+#: sequencer.c:1638
+msgid "cannot fixup root commit"
+msgstr "no se puede arreglar el commit raíz"
+
+#: sequencer.c:1657
 #, c-format
 msgid "commit %s is a merge but no -m option was given."
 msgstr "el commit %s es una fusión pero no se entrego la opción -m."
 
-#: sequencer.c:1506
+#: sequencer.c:1665
 #, c-format
 msgid "commit %s does not have parent %d"
 msgstr "el commit %s no tiene un padre %d"
 
-#: sequencer.c:1510
+#: sequencer.c:1669
 #, c-format
 msgid "mainline was specified but commit %s is not a merge."
 msgstr "línea principal especificada pero el commit %s no es una fusión."
 
-#: sequencer.c:1516
+#: sequencer.c:1675
 #, c-format
 msgid "cannot get commit message for %s"
 msgstr "no se puede obtener el mensaje de commit para %s"
 
 #. TRANSLATORS: The first %s will be a "todo" command like
 #. "revert" or "pick", the second %s a SHA1.
-#: sequencer.c:1535
+#: sequencer.c:1694
 #, c-format
 msgid "%s: cannot parse parent commit %s"
 msgstr "%s: no se puede analizar el commit padre %s"
 
-#: sequencer.c:1600 sequencer.c:2397
+#: sequencer.c:1759
 #, c-format
 msgid "could not rename '%s' to '%s'"
 msgstr "no se puede renombrar '%s' a '%s'"
 
-#: sequencer.c:1654
+#: sequencer.c:1813
 #, c-format
 msgid "could not revert %s... %s"
 msgstr "no se pudo revertir %s... %s"
 
-#: sequencer.c:1655
+#: sequencer.c:1814
 #, c-format
 msgid "could not apply %s... %s"
 msgstr "no se pudo aplicar %s... %s"
 
-#: sequencer.c:1702
+#: sequencer.c:1864
 msgid "empty commit set passed"
 msgstr "conjunto de commits vacío entregado"
 
-#: sequencer.c:1712
+#: sequencer.c:1874
 #, c-format
 msgid "git %s: failed to read the index"
-msgstr "git %s: fallo al leer el índice"
+msgstr "git %s: falló al leer el índice"
 
-#: sequencer.c:1718
+#: sequencer.c:1881
 #, c-format
 msgid "git %s: failed to refresh the index"
-msgstr "git %s: fallo al refrescar el índice"
+msgstr "git %s: falló al refrescar el índice"
 
-#: sequencer.c:1792
+#: sequencer.c:1961
 #, c-format
 msgid "%s does not accept arguments: '%s'"
 msgstr "%s no acepta los argumentos: '%s'"
 
-#: sequencer.c:1801
+#: sequencer.c:1970
 #, c-format
 msgid "missing arguments for %s"
 msgstr "faltan argumentos para para %s"
 
-#: sequencer.c:1844
+#: sequencer.c:2029
 #, c-format
 msgid "invalid line %d: %.*s"
 msgstr "línea inválida %d: %.*s"
 
-#: sequencer.c:1852
+#: sequencer.c:2037
 #, c-format
 msgid "cannot '%s' without a previous commit"
 msgstr "no se puede  '%s' sin un commit previo"
 
-#: sequencer.c:1883 sequencer.c:3056 sequencer.c:3091
+#: sequencer.c:2085 sequencer.c:4138 sequencer.c:4173
 #, c-format
 msgid "could not read '%s'."
 msgstr "no se puede leer '%s'."
 
-#: sequencer.c:1906
+#: sequencer.c:2108
 msgid "please fix this using 'git rebase --edit-todo'."
 msgstr "por favor arregle esto usando 'git rebase --edit-todo'."
 
-#: sequencer.c:1908
+#: sequencer.c:2110
 #, c-format
 msgid "unusable instruction sheet: '%s'"
 msgstr "hoja de instrucciones inutilizable: '%s'"
 
-#: sequencer.c:1913
+#: sequencer.c:2115
 msgid "no commits parsed."
 msgstr "ningún commit analizado."
 
-#: sequencer.c:1924
+#: sequencer.c:2126
 msgid "cannot cherry-pick during a revert."
 msgstr "no se puede realizar cherry-pick durante un revert."
 
-#: sequencer.c:1926
+#: sequencer.c:2128
 msgid "cannot revert during a cherry-pick."
 msgstr "no se puede realizar un revert durante un cherry-pick."
 
-#: sequencer.c:1993
+#: sequencer.c:2195
 #, c-format
 msgid "invalid key: %s"
 msgstr "llave invalida: %s"
 
-#: sequencer.c:1996
+#: sequencer.c:2198
 #, c-format
 msgid "invalid value for %s: %s"
 msgstr "valor invalido para %s: %s"
 
-#: sequencer.c:2062
+#: sequencer.c:2269
+msgid "unusable squash-onto"
+msgstr "squash-onto inservible"
+
+#: sequencer.c:2285
 #, c-format
 msgid "malformed options sheet: '%s'"
 msgstr "hoja de opciones mal formada: '%s'"
 
-#: sequencer.c:2100
+#: sequencer.c:2323
 msgid "a cherry-pick or revert is already in progress"
 msgstr "un cherry-pick o revert ya esta en progreso"
 
-#: sequencer.c:2101
+#: sequencer.c:2324
 msgid "try \"git cherry-pick (--continue | --quit | --abort)\""
 msgstr "intenta \"git cherry-pick (--continue | --quit | --abort)\""
 
-#: sequencer.c:2104
+#: sequencer.c:2327
 #, c-format
 msgid "could not create sequencer directory '%s'"
 msgstr "no se pudo crear un directorio secuenciador '%s'"
 
-#: sequencer.c:2118
+#: sequencer.c:2341
 msgid "could not lock HEAD"
 msgstr "no se pudo bloquear HEAD"
 
-#: sequencer.c:2173 sequencer.c:2761
+#: sequencer.c:2396 sequencer.c:3403
 msgid "no cherry-pick or revert in progress"
 msgstr "ningún cherry-pick o revert en progreso"
 
-#: sequencer.c:2175
+#: sequencer.c:2398
 msgid "cannot resolve HEAD"
 msgstr "no se puede resolver HEAD"
 
-#: sequencer.c:2177 sequencer.c:2212
+#: sequencer.c:2400 sequencer.c:2435
 msgid "cannot abort from a branch yet to be born"
 msgstr "no se puede abortar de una rama por nacer"
 
-#: sequencer.c:2198 builtin/grep.c:720
+#: sequencer.c:2421 builtin/grep.c:720
 #, c-format
 msgid "cannot open '%s'"
 msgstr "no se puede abrir '%s'"
 
-#: sequencer.c:2200
+#: sequencer.c:2423
 #, c-format
 msgid "cannot read '%s': %s"
 msgstr "no se puede leer '%s': %s"
 
-#: sequencer.c:2201
+#: sequencer.c:2424
 msgid "unexpected end of file"
 msgstr "final de archivo inesperado"
 
-#: sequencer.c:2207
+#: sequencer.c:2430
 #, c-format
 msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
 msgstr "archivo HEAD de pre-cherry-pick guardado '%s' esta corrupto"
 
-#: sequencer.c:2218
+#: sequencer.c:2441
 msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
 msgstr "Parece que se ha movido HEAD. No se hace rebobinado, revise su HEAD!"
 
-#: sequencer.c:2324 sequencer.c:2679
+#: sequencer.c:2545 sequencer.c:3321
 #, c-format
 msgid "could not update %s"
 msgstr "no se puede actualizar %s"
 
-#: sequencer.c:2362 sequencer.c:2659
+#: sequencer.c:2583 sequencer.c:3301
 msgid "cannot read HEAD"
 msgstr "no se puede leer HEAD"
 
-#: sequencer.c:2402 builtin/difftool.c:639
+#: sequencer.c:2618 sequencer.c:2622 builtin/difftool.c:639
 #, c-format
 msgid "could not copy '%s' to '%s'"
 msgstr "no se pudo copiar '%s' a '%s'"
 
-#: sequencer.c:2421
+#: sequencer.c:2641
 msgid "could not read index"
 msgstr "no se pudo leer índice"
 
-#: sequencer.c:2426
+#: sequencer.c:2646
 #, c-format
 msgid ""
 "execution failed: %s\n"
@@ -3562,11 +3853,11 @@ msgstr ""
 "  git rebase --continue\n"
 "\n"
 
-#: sequencer.c:2432
+#: sequencer.c:2652
 msgid "and made changes to the index and/or the working tree\n"
 msgstr "y se hicieron cambios al índice y/o árbol de trabajo\n"
 
-#: sequencer.c:2438
+#: sequencer.c:2658
 #, c-format
 msgid ""
 "execution succeeded: %s\n"
@@ -3583,17 +3874,62 @@ msgstr ""
 "  git rebase --continue\n"
 "\n"
 
-#: sequencer.c:2497
+#: sequencer.c:2771
+msgid "writing fake root commit"
+msgstr "escribiendo commit raíz falso"
+
+#: sequencer.c:2776
+msgid "writing squash-onto"
+msgstr "escribiendo squash-onto"
+
+#: sequencer.c:2811
+#, c-format
+msgid "failed to find tree of %s"
+msgstr "falló al encontrar árbol de %s"
+
+#: sequencer.c:2829
+msgid "could not write index"
+msgstr "no se pudo escribir índice"
+
+#: sequencer.c:2861
+msgid "cannot merge without a current revision"
+msgstr "no se puede fusionar sin una versión actual"
+
+#: sequencer.c:2884
+#, c-format
+msgid "could not resolve '%s'"
+msgstr "no se pudo resolver '%s'"
+
+#: sequencer.c:2906
+#, c-format
+msgid "could not get commit message of '%s'"
+msgstr "no se puede leer el mensaje del commit '%s'"
+
+#: sequencer.c:2916 sequencer.c:2941
+#, c-format
+msgid "could not write '%s'"
+msgstr "no se pudo escribir '%s'"
+
+#: sequencer.c:3005
+#, c-format
+msgid "could not even attempt to merge '%.*s'"
+msgstr "no se pudo intentar fusionar '%.*s'"
+
+#: sequencer.c:3021
+msgid "merge: Unable to write new index file"
+msgstr "fusión: No se puede escribir el nuevo archivo índice"
+
+#: sequencer.c:3088
 #, c-format
 msgid "Applied autostash.\n"
 msgstr "Autostash aplicado.\n"
 
-#: sequencer.c:2509
+#: sequencer.c:3100
 #, c-format
 msgid "cannot store %s"
 msgstr "no se puede guardar %s"
 
-#: sequencer.c:2512 git-rebase.sh:178
+#: sequencer.c:3103 git-rebase.sh:188
 #, c-format
 msgid ""
 "Applying autostash resulted in conflicts.\n"
@@ -3605,52 +3941,69 @@ msgstr ""
 "Puedes ejecutar \"git stash pop\" o \"git stash drop\" en cualquier "
 "momento.\n"
 
-#: sequencer.c:2595
+#: sequencer.c:3134
+#, c-format
+msgid ""
+"Could not execute the todo command\n"
+"\n"
+"    %.*s\n"
+"It has been rescheduled; To edit the command before continuing, please\n"
+"edit the todo list first:\n"
+"\n"
+"    git rebase --edit-todo\n"
+"    git rebase --continue\n"
+msgstr ""
+"No se pudo ejecutar el comando \"todo\"\n"
+"\n"
+"    %.*s\n"
+"Ha sido reprogramado; Para editar el comando antes de continuar, por favor\n"
+"edite la lista de \"todo\" primero:\n"
+"\n"
+"    git rebase --edit-todo\n"
+"    git rebase --continue\n"
+
+#: sequencer.c:3202
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
 msgstr "Detenido en %s...  %.*s\n"
 
-#: sequencer.c:2637
+#: sequencer.c:3264
 #, c-format
 msgid "unknown command %d"
 msgstr "comando desconocido %d"
 
-#: sequencer.c:2667
+#: sequencer.c:3309
 msgid "could not read orig-head"
 msgstr "no se puede leer orig-head"
 
-#: sequencer.c:2672 sequencer.c:3262
+#: sequencer.c:3314 sequencer.c:4352
 msgid "could not read 'onto'"
 msgstr "no se puede leer 'onto'"
 
-#: sequencer.c:2686
+#: sequencer.c:3328
 #, c-format
 msgid "could not update HEAD to %s"
 msgstr "no se puede actualizar HEAD a %s"
 
-#: sequencer.c:2770
+#: sequencer.c:3414
 msgid "cannot rebase: You have unstaged changes."
 msgstr "no se puede realizar rebase: Tienes cambios fuera del área de stage."
 
-#: sequencer.c:2775
-msgid "could not remove CHERRY_PICK_HEAD"
-msgstr "no se puede remover CHERRY_PICK_HEAD"
-
-#: sequencer.c:2784
+#: sequencer.c:3423
 msgid "cannot amend non-existing commit"
 msgstr "no se puede arreglar un commit no existente"
 
-#: sequencer.c:2786
+#: sequencer.c:3425
 #, c-format
 msgid "invalid file: '%s'"
 msgstr "archivo invalido: '%s'"
 
-#: sequencer.c:2788
+#: sequencer.c:3427
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr "contenido inválido: '%s'"
 
-#: sequencer.c:2791
+#: sequencer.c:3430
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
@@ -3661,45 +4014,54 @@ msgstr ""
 "un commit con estos\n"
 "primero y luego ejecuta 'git rebase --continue' de nuevo."
 
-#: sequencer.c:2801
+#: sequencer.c:3455 sequencer.c:3493
+#, c-format
+msgid "could not write file: '%s'"
+msgstr "no se pudo escribir el archivo: '%s'"
+
+#: sequencer.c:3508
+msgid "could not remove CHERRY_PICK_HEAD"
+msgstr "no se puede remover CHERRY_PICK_HEAD"
+
+#: sequencer.c:3515
 msgid "could not commit staged changes."
 msgstr "no se pudo realizar el commit con los cambios en el área de stage."
 
-#: sequencer.c:2881
+#: sequencer.c:3612
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr "%s: no se puede aplicar cherry-pick a un %s"
 
-#: sequencer.c:2885
+#: sequencer.c:3616
 #, c-format
 msgid "%s: bad revision"
 msgstr "%s: mala revision"
 
-#: sequencer.c:2918
+#: sequencer.c:3649
 msgid "can't revert as initial commit"
 msgstr "no se puede revertir como commit inicial"
 
-#: sequencer.c:3023
+#: sequencer.c:4098
 msgid "make_script: unhandled options"
 msgstr "make_script: opciones desconocidas"
 
-#: sequencer.c:3026
+#: sequencer.c:4101
 msgid "make_script: error preparing revisions"
 msgstr "make_script: error preparando revisiones"
 
-#: sequencer.c:3060 sequencer.c:3095
+#: sequencer.c:4142 sequencer.c:4177
 #, c-format
 msgid "unusable todo list: '%s'"
 msgstr "lista de pendientes inutilizable: '%s'"
 
-#: sequencer.c:3146
+#: sequencer.c:4236
 #, c-format
 msgid ""
 "unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
 msgstr ""
 "opción %s no reconocida para la opción rebase.missingCommitsCheck. Ignorando."
 
-#: sequencer.c:3212
+#: sequencer.c:4302
 #, c-format
 msgid ""
 "Warning: some commits may have been dropped accidentally.\n"
@@ -3708,7 +4070,7 @@ msgstr ""
 "Peligro: algunos commits pueden haber sido botados de forma accidental.\n"
 "Commits botados (empezando con el mas nuevo):\n"
 
-#: sequencer.c:3219
+#: sequencer.c:4309
 #, c-format
 msgid ""
 "To avoid this message, use \"drop\" to explicitly remove a commit.\n"
@@ -3726,7 +4088,7 @@ msgstr ""
 "Los posibles comportamientos son: ignore,warn,error.\n"
 "\n"
 
-#: sequencer.c:3231
+#: sequencer.c:4321
 #, c-format
 msgid ""
 "You can fix this with 'git rebase --edit-todo' and then run 'git rebase --"
@@ -3737,27 +4099,21 @@ msgstr ""
 "rebase --continue'.\n"
 "O se puede abortar el rebase con 'git rebase --abort'.\n"
 
-#: sequencer.c:3244 sequencer.c:3304 wrapper.c:225 wrapper.c:395
-#: builtin/am.c:779
-#, c-format
-msgid "could not open '%s' for writing"
-msgstr "no se pudo abrir '%s' para escritura"
-
-#: sequencer.c:3285
+#: sequencer.c:4375
 #, c-format
 msgid "could not parse commit '%s'"
 msgstr "no se pudo analizar commit '%s'"
 
-#: sequencer.c:3401
+#: sequencer.c:4490
 msgid "the script was already rearranged."
 msgstr "este script ya fue reorganizado."
 
-#: setup.c:122
+#: setup.c:123
 #, c-format
 msgid "'%s' is outside repository"
 msgstr "'%s' está fuera del repositorio"
 
-#: setup.c:171
+#: setup.c:172
 #, c-format
 msgid ""
 "%s: no such path in the working tree.\n"
@@ -3767,7 +4123,7 @@ msgstr ""
 "Use 'git <comando> -- <ruta>...' para especificar rutas que no existen "
 "localmente."
 
-#: setup.c:184
+#: setup.c:185
 #, c-format
 msgid ""
 "ambiguous argument '%s': unknown revision or path not in the working tree.\n"
@@ -3779,12 +4135,12 @@ msgstr ""
 "Use '--' para separar las rutas de las revisiones, de esta manera:\n"
 "'git <comando> [<revisión>...] -- [<archivo>...]'"
 
-#: setup.c:233
+#: setup.c:234
 #, c-format
 msgid "option '%s' must come before non-option arguments"
 msgstr "opción '%s' debe venir antes de argumentos no opcionales"
 
-#: setup.c:252
+#: setup.c:253
 #, c-format
 msgid ""
 "ambiguous argument '%s': both revision and filename\n"
@@ -3795,95 +4151,95 @@ msgstr ""
 "Use '--' para separar rutas de revisiones, de esta manera:\n"
 "'git <comando> [<revisión>...] -- [<archivo>...]'"
 
-#: setup.c:388
+#: setup.c:389
 msgid "unable to set up work tree using invalid config"
 msgstr ""
 "no es posible configurar el directorio de trabajo usando una configuración "
 "inválida"
 
-#: setup.c:395
+#: setup.c:393
 msgid "this operation must be run in a work tree"
 msgstr "esta operación debe ser realizada en un árbol de trabajo"
 
-#: setup.c:506
+#: setup.c:503
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "Se esperaba versión de git repo  <= %d, encontrada %d"
 
-#: setup.c:514
+#: setup.c:511
 msgid "unknown repository extensions found:"
 msgstr "se encontró extensión de repositorio desconocida:"
 
-#: setup.c:533
+#: setup.c:530
 #, c-format
 msgid "error opening '%s'"
 msgstr "error abriendo '%s'"
 
-#: setup.c:535
+#: setup.c:532
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr "muy grande para ser un archivo .git: '%s'"
 
-#: setup.c:537
+#: setup.c:534
 #, c-format
 msgid "error reading %s"
 msgstr "error leyendo %s"
 
-#: setup.c:539
+#: setup.c:536
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "formato gitfile inválido: %s"
 
-#: setup.c:541
+#: setup.c:538
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "no hay ruta en gitfile: %s"
 
-#: setup.c:543
+#: setup.c:540
 #, c-format
 msgid "not a git repository: %s"
 msgstr "no es un repositorio git: %s"
 
-#: setup.c:642
+#: setup.c:639
 #, c-format
 msgid "'$%s' too big"
 msgstr "'$%s' muy grande"
 
-#: setup.c:656
+#: setup.c:653
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "no es un repositorio git: '%s'"
 
-#: setup.c:685 setup.c:687 setup.c:718
+#: setup.c:682 setup.c:684 setup.c:715
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "no se puede aplicar chdir a '%s'"
 
-#: setup.c:690 setup.c:746 setup.c:756 setup.c:795 setup.c:803 setup.c:818
+#: setup.c:687 setup.c:743 setup.c:753 setup.c:792 setup.c:800 setup.c:815
 msgid "cannot come back to cwd"
 msgstr "no se puede volver a cwd"
 
-#: setup.c:816
+#: setup.c:813
 #, 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:827
+#: setup.c:824
 #, c-format
 msgid "failed to stat '%*s%s%s'"
-msgstr "fallo al determinar '%*s%s%s'"
+msgstr "falló al determinar '%*s%s%s'"
 
-#: setup.c:1057
+#: setup.c:1054
 msgid "Unable to read current working directory"
 msgstr "Incapaz de leer el directorio de trabajo actual"
 
-#: setup.c:1069 setup.c:1075
+#: setup.c:1066 setup.c:1072
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "no se puede cambiar a '%s'"
 
-#: setup.c:1088
+#: setup.c:1085
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -3893,7 +4249,7 @@ msgstr ""
 "Parando en el límite del sistema de archivos "
 "(GIT_DISCOVERY_ACROSS_FILESYSTEM no establecido)."
 
-#: setup.c:1172
+#: setup.c:1168
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -3902,55 +4258,55 @@ msgstr ""
 "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:1215
+#: setup.c:1211
 msgid "open /dev/null or dup failed"
 msgstr "falló al abrir /dev/null o dup"
 
-#: setup.c:1230
+#: setup.c:1226
 msgid "fork failed"
 msgstr "falló fork"
 
-#: setup.c:1235
+#: setup.c:1231
 msgid "setsid failed"
 msgstr "falló setsid"
 
-#: sha1_file.c:592
+#: sha1-file.c:625
 #, c-format
 msgid "path '%s' does not exist"
 msgstr "ruta '%s' no existe"
 
-#: sha1_file.c:618
+#: sha1-file.c:651
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr ""
 "repositorio de referencia '%s' como un checkout vinculado no es soportado "
 "todavía."
 
-#: sha1_file.c:624
+#: sha1-file.c:657
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr "repositorio de referencia '%s' no es un repositorio local."
 
-#: sha1_file.c:630
+#: sha1-file.c:663
 #, c-format
 msgid "reference repository '%s' is shallow"
 msgstr "repositorio de referencia '%s' es superficial (shallow)"
 
-#: sha1_file.c:638
+#: sha1-file.c:671
 #, c-format
 msgid "reference repository '%s' is grafted"
 msgstr "repositorio de referencia '% s' está injertado"
 
-#: sha1_name.c:422
+#: sha1-name.c:442
 #, c-format
 msgid "short SHA1 %s is ambiguous"
 msgstr "SHA1 %s corto es ambiguao"
 
-#: sha1_name.c:433
+#: sha1-name.c:453
 msgid "The candidates are:"
 msgstr "Los candidatos son:"
 
-#: sha1_name.c:693
+#: sha1-name.c:695
 msgid ""
 "Git normally never creates a ref that ends with 40 hex characters\n"
 "because it will be ignored when you just specify 40-hex. These refs\n"
@@ -3973,70 +4329,70 @@ msgstr ""
 "examine estas refs y tal vez bórrelas. Silencie este mensaje \n"
 "ejecutando \"git config advice.objectNameWarning false\""
 
-#: submodule.c:96 submodule.c:130
+#: submodule.c:97 submodule.c:131
 msgid "Cannot change unmerged .gitmodules, resolve merge conflicts first"
 msgstr ""
 "No se puede cambiar .gitmodules no fusionados, resuelva este problema primero"
 
-#: submodule.c:100 submodule.c:134
+#: submodule.c:101 submodule.c:135
 #, c-format
 msgid "Could not find section in .gitmodules where path=%s"
 msgstr "No se pudo encontrar la sección en .gitmodules donde path=%s"
 
-#: submodule.c:108
+#: submodule.c:109
 #, c-format
 msgid "Could not update .gitmodules entry %s"
 msgstr "No se pudo actualizar la entrada %s de .gitmodules"
 
-#: submodule.c:141
+#: submodule.c:142
 #, c-format
 msgid "Could not remove .gitmodules entry for %s"
 msgstr "No se pudo remover la entrada %s de .gitmodules"
 
-#: submodule.c:152
+#: submodule.c:153
 msgid "staging updated .gitmodules failed"
 msgstr "falló realizar stage a los .gitmodules actualizados"
 
-#: submodule.c:312
+#: submodule.c:315
 #, c-format
 msgid "in unpopulated submodule '%s'"
 msgstr "en el submódulo no poblado '%s'"
 
-#: submodule.c:343
+#: submodule.c:346
 #, c-format
 msgid "Pathspec '%s' is in submodule '%.*s'"
 msgstr "El patrón de ruta '%s' está en el submódulo '%.*s'"
 
-#: submodule.c:833
+#: submodule.c:837
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "entrada de submódulo '%s' (%s) es un %s, no un commit"
 
-#: submodule.c:1065 builtin/branch.c:648 builtin/submodule--helper.c:1724
+#: submodule.c:1069 builtin/branch.c:651 builtin/submodule--helper.c:1743
 msgid "Failed to resolve HEAD as a valid ref."
-msgstr "Fallo al resolver HEAD como un ref valido."
+msgstr "Falló al resolver HEAD como un ref valido."
 
-#: submodule.c:1370
+#: submodule.c:1375
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "'%s' no reconocido como un repositorio git"
 
-#: submodule.c:1508
+#: submodule.c:1513
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "no se pudo comenzar 'git status' en el submódulo '%s'"
 
-#: submodule.c:1521
+#: submodule.c:1526
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "no se pudo ejecutar 'git status' en el submódulo '%s'"
 
-#: submodule.c:1614
+#: submodule.c:1619
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "submódulo '%s' tiene un índice corrupto"
 
-#: submodule.c:1878
+#: submodule.c:1718
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
@@ -4044,18 +4400,18 @@ msgstr ""
 "relocate_gitdir para el submódulo '%s' con más de un árbol de trabajo no "
 "soportado"
 
-#: submodule.c:1890 submodule.c:1946
+#: submodule.c:1730 submodule.c:1786
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "no se pudo resolver el nombre para el submódulo '%s'"
 
-#: submodule.c:1894 builtin/submodule--helper.c:1246
-#: builtin/submodule--helper.c:1256
+#: submodule.c:1734 builtin/submodule--helper.c:1261
+#: builtin/submodule--helper.c:1271
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "no se pudo crear el directorio '%s'"
 
-#: submodule.c:1897
+#: submodule.c:1737
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -4066,29 +4422,30 @@ msgstr ""
 "'%s' hacia\n"
 "'%s'\n"
 
-#: submodule.c:1981
+#: submodule.c:1821
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "no pudo recursar en el submódulo '%s'"
 
-#: submodule.c:2025
+#: submodule.c:1865
 msgid "could not start ls-files in .."
 msgstr "no se pudo comenzar ls-files en .."
 
-#: submodule.c:2045
-msgid "BUG: returned path string doesn't match cwd?"
-msgstr "BUG: string de ruta recibido no concuerda con cwd?"
-
-#: submodule.c:2064
+#: submodule.c:1904
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree retornó un código %d inesperado"
 
-#: submodule-config.c:263
+#: submodule-config.c:230
+#, c-format
+msgid "ignoring suspicious submodule name: %s"
+msgstr "ignorando submódulo sospechoso: %s"
+
+#: submodule-config.c:294
 msgid "negative values not allowed for submodule.fetchjobs"
 msgstr "no se permiten valores negativos para submodule.fetchjobs"
 
-#: submodule-config.c:436
+#: submodule-config.c:467
 #, c-format
 msgid "invalid value for %s"
 msgstr "valor inválido para %s"
@@ -4104,7 +4461,7 @@ msgstr "ejecución del comando de remolque '%s' falló"
 msgid "unknown value '%s' for key '%s'"
 msgstr "valor '%s' desconocido para la clave '%s'"
 
-#: trailer.c:539 trailer.c:544 builtin/remote.c:290
+#: trailer.c:539 trailer.c:544 builtin/remote.c:293
 #, c-format
 msgid "more than one %s"
 msgstr "más de un %s"
@@ -4147,17 +4504,21 @@ msgstr "no se pudo abrir el archivo temporal"
 msgid "could not rename temporary file to %s"
 msgstr "no se pudo renombrar el archivo temporal a %s"
 
-#: transport.c:63
+#: transport.c:116
 #, c-format
 msgid "Would set upstream of '%s' to '%s' of '%s'\n"
 msgstr "Configurará upstream de '%s' a '%s' de '%s'\n"
 
-#: transport.c:152
+#: transport.c:208
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "transport: opción inválida '%s'"
 
-#: transport.c:916
+#: transport.c:584
+msgid "could not parse transport.color.* config"
+msgstr "no se pudo analizar valor de configuración transport.color.*"
+
+#: transport.c:996
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -4166,7 +4527,7 @@ msgstr ""
 "La siguiente ruta de submódulo contiene cambios que no\n"
 "pueden ser encontrados en ningún remoto:\n"
 
-#: transport.c:920
+#: transport.c:1000
 #, c-format
 msgid ""
 "\n"
@@ -4193,11 +4554,11 @@ msgstr ""
 "para hacer un push al remoto.\n"
 "\n"
 
-#: transport.c:928
+#: transport.c:1008
 msgid "Aborting."
 msgstr "Abortando."
 
-#: transport-helper.c:1079
+#: transport-helper.c:1087
 #, c-format
 msgid "Could not read ref %s"
 msgstr "No se pudo leer la referencia %s"
@@ -4214,22 +4575,22 @@ msgstr "modo mal formado en la entrada de árbol"
 msgid "empty filename in tree entry"
 msgstr "nombre de archivo vacío en la entrada de árbol"
 
-#: tree-walk.c:114
+#: tree-walk.c:113
 msgid "too-short tree file"
 msgstr "archivo de árbol muy corto"
 
-#: unpack-trees.c:108
+#: unpack-trees.c:111
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by checkout:\n"
 "%%sPlease commit your changes or stash them before you switch branches."
 msgstr ""
 "Los cambios locales de los siguientes archivos serán sobrescritos por "
-"checkuot:\n"
+"checkout:\n"
 "%%sPor favor realiza un commit con los cambios o un stash antes de cambiar "
 "ramas."
 
-#: unpack-trees.c:110
+#: unpack-trees.c:113
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by checkout:\n"
@@ -4239,7 +4600,7 @@ msgstr ""
 "checkout:\n"
 "%%s"
 
-#: unpack-trees.c:113
+#: unpack-trees.c:116
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -4249,7 +4610,7 @@ msgstr ""
 "fusionar:\n"
 "%%sPor favor, confirma tus cambios o aguárdalos antes de fusionar."
 
-#: unpack-trees.c:115
+#: unpack-trees.c:118
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -4259,7 +4620,7 @@ msgstr ""
 "merge:\n"
 "%%s"
 
-#: unpack-trees.c:118
+#: unpack-trees.c:121
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by %s:\n"
@@ -4268,7 +4629,7 @@ msgstr ""
 "Los cambios locales de los siguientes archivos serán sobrescritos al %s:\n"
 "%%sPor favor, confirma tus cambios o guárdalos antes de %s."
 
-#: unpack-trees.c:120
+#: unpack-trees.c:123
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by %s:\n"
@@ -4277,7 +4638,7 @@ msgstr ""
 "Los cambios locales de los siguientes archivos serán sobreescritos por %s:\n"
 "%%s"
 
-#: unpack-trees.c:125
+#: unpack-trees.c:128
 #, c-format
 msgid ""
 "Updating the following directories would lose untracked files in them:\n"
@@ -4287,7 +4648,7 @@ msgstr ""
 "seguimiento en ellos:\n"
 "%s"
 
-#: unpack-trees.c:129
+#: unpack-trees.c:132
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by checkout:\n"
@@ -4297,7 +4658,7 @@ msgstr ""
 "removidos al actualizar el árbol de trabajo:\n"
 "%%sPor favor, muévelos o elimínalos antes de intercambiar ramas."
 
-#: unpack-trees.c:131
+#: unpack-trees.c:134
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by checkout:\n"
@@ -4307,7 +4668,7 @@ msgstr ""
 "al actualizar el árbol de trabajo:\n"
 "%%s"
 
-#: unpack-trees.c:134
+#: unpack-trees.c:137
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by merge:\n"
@@ -4317,7 +4678,7 @@ msgstr ""
 "removidos al fusionar:\n"
 "%%sPor favor, muévelos o elimínalos antes de fusionar."
 
-#: unpack-trees.c:136
+#: unpack-trees.c:139
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by merge:\n"
@@ -4327,7 +4688,7 @@ msgstr ""
 "al fusionar:\n"
 "%%s"
 
-#: unpack-trees.c:139
+#: unpack-trees.c:142
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by %s:\n"
@@ -4337,7 +4698,7 @@ msgstr ""
 "removidos al %s:\n"
 "%%sPor favor, muévelos o elimínalos antes de %s."
 
-#: unpack-trees.c:141
+#: unpack-trees.c:144
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by %s:\n"
@@ -4347,7 +4708,7 @@ msgstr ""
 "removidos al ejecutar %s:\n"
 "%%s"
 
-#: unpack-trees.c:146
+#: unpack-trees.c:150
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by "
@@ -4358,7 +4719,7 @@ msgstr ""
 "sobrescritos al actualizar el árbol de trabajo:\n"
 "%%sPor favor, muévelos o elimínalos antes de intercambiar ramas."
 
-#: unpack-trees.c:148
+#: unpack-trees.c:152
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by "
@@ -4369,7 +4730,7 @@ msgstr ""
 "sobrescritos al actualizar el árbol de trabajo:\n"
 "%%s"
 
-#: unpack-trees.c:151
+#: unpack-trees.c:155
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by merge:\n"
@@ -4379,7 +4740,7 @@ msgstr ""
 "sobrescritos al fusionar:\n"
 "%%sPor favor, muévelos o elimínalos antes de fusionar."
 
-#: unpack-trees.c:153
+#: unpack-trees.c:157
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by merge:\n"
@@ -4389,7 +4750,7 @@ msgstr ""
 "sobrescritos al fusionar:\n"
 "%%s"
 
-#: unpack-trees.c:156
+#: unpack-trees.c:160
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by %s:\n"
@@ -4399,7 +4760,7 @@ msgstr ""
 "sobrescritos al %s:\n"
 "%%sPor favor, muévelos o elimínalos antes de %s."
 
-#: unpack-trees.c:158
+#: unpack-trees.c:162
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by %s:\n"
@@ -4409,12 +4770,12 @@ msgstr ""
 "por %s:\n"
 "%%s"
 
-#: unpack-trees.c:165
+#: unpack-trees.c:170
 #, c-format
 msgid "Entry '%s' overlaps with '%s'.  Cannot bind."
 msgstr "Entrada '%s' se superpone con '%s'.  No se pueden unir."
 
-#: unpack-trees.c:168
+#: unpack-trees.c:173
 #, c-format
 msgid ""
 "Cannot update sparse checkout: the following entries are not up to date:\n"
@@ -4424,7 +4785,7 @@ msgstr ""
 "actualizadas:\n"
 "%s"
 
-#: unpack-trees.c:170
+#: unpack-trees.c:175
 #, c-format
 msgid ""
 "The following working tree files would be overwritten by sparse checkout "
@@ -4435,7 +4796,7 @@ msgstr ""
 "actualización sparse checkout:\n"
 "%s"
 
-#: unpack-trees.c:172
+#: unpack-trees.c:177
 #, c-format
 msgid ""
 "The following working tree files would be removed by sparse checkout "
@@ -4446,7 +4807,7 @@ msgstr ""
 "actualización sparse checkout:\n"
 "%s"
 
-#: unpack-trees.c:174
+#: unpack-trees.c:179
 #, c-format
 msgid ""
 "Cannot update submodule:\n"
@@ -4455,12 +4816,12 @@ msgstr ""
 "No se puede actualizar le submódulo:\n"
 "%s"
 
-#: unpack-trees.c:251
+#: unpack-trees.c:262
 #, c-format
 msgid "Aborting\n"
 msgstr "Abortando\n"
 
-#: unpack-trees.c:333
+#: unpack-trees.c:344
 msgid "Checking out files"
 msgstr "Revisando archivos"
 
@@ -4496,7 +4857,7 @@ msgstr "segmento de ruta '..' invalido"
 #: worktree.c:245 builtin/am.c:2147
 #, c-format
 msgid "failed to read '%s'"
-msgstr "fallo al leer '%s'"
+msgstr "falló al leer '%s'"
 
 #: worktree.c:291
 #, c-format
@@ -4532,7 +4893,7 @@ msgid "could not open '%s' for reading and writing"
 msgstr "no se pudo abrir '%s' para lectura y escritura"
 
 #: wrapper.c:227 wrapper.c:397 builtin/am.c:320 builtin/am.c:770
-#: builtin/am.c:862 builtin/merge.c:1044
+#: builtin/am.c:862 builtin/merge.c:1043
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "no se pudo abrir '%s' para lectura"
@@ -4546,159 +4907,159 @@ msgstr "no es posible acceder '%s'"
 msgid "unable to get current working directory"
 msgstr "no es posible obtener el directorio de trabajo actual"
 
-#: wt-status.c:151
+#: wt-status.c:154
 msgid "Unmerged paths:"
 msgstr "Rutas no fusionadas:"
 
-#: wt-status.c:178 wt-status.c:205
+#: wt-status.c:181 wt-status.c:208
 #, c-format
 msgid "  (use \"git reset %s <file>...\" to unstage)"
 msgstr "  (usa \"git reset %s <archivo>...\" para sacar del área de stage)"
 
-#: wt-status.c:180 wt-status.c:207
+#: wt-status.c:183 wt-status.c:210
 msgid "  (use \"git rm --cached <file>...\" to unstage)"
 msgstr "  (usa \"git rm --cached <archivo>...\" para sacar del área de stage)"
 
-#: wt-status.c:184
+#: wt-status.c:187
 msgid "  (use \"git add <file>...\" to mark resolution)"
 msgstr "  (usa \"git add <archivo>...\" para marcar una resolución)"
 
-#: wt-status.c:186 wt-status.c:190
+#: wt-status.c:189 wt-status.c:193
 msgid "  (use \"git add/rm <file>...\" as appropriate to mark resolution)"
 msgstr ""
 "  (usa \"git add/rm <archivo>...\" como una forma apropiada de marcar la "
 "resolución)"
 
-#: wt-status.c:188
+#: wt-status.c:191
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (usa \"git rm <file>...\" para marcar la resolución)"
 
-#: wt-status.c:199 wt-status.c:1007
+#: wt-status.c:202 wt-status.c:1015
 msgid "Changes to be committed:"
 msgstr "Cambios a ser confirmados:"
 
-#: wt-status.c:217 wt-status.c:1016
+#: wt-status.c:220 wt-status.c:1024
 msgid "Changes not staged for commit:"
 msgstr "Cambios no rastreados para el commit:"
 
-#: wt-status.c:221
+#: wt-status.c:224
 msgid "  (use \"git add <file>...\" to update what will be committed)"
 msgstr ""
 "  (usa \"git add <archivo>...\" para actualizar lo que será confirmado)"
 
-#: wt-status.c:223
+#: wt-status.c:226
 msgid "  (use \"git add/rm <file>...\" to update what will be committed)"
 msgstr ""
 "  (usa \"git add/rm <archivo>...\" para actualizar a lo que se le va a hacer "
 "commit)"
 
-#: wt-status.c:224
+#: wt-status.c:227
 msgid ""
 "  (use \"git checkout -- <file>...\" to discard changes in working directory)"
 msgstr ""
 "  (usa \"git checkout -- <archivo>...\" para descartar los cambios en el "
 "directorio de trabajo)"
 
-#: wt-status.c:226
+#: wt-status.c:229
 msgid "  (commit or discard the untracked or modified content in submodules)"
 msgstr ""
 "  (confirmar o descartar el contenido sin seguimiento o modificado en los "
 "sub-módulos)"
 
-#: wt-status.c:238
+#: wt-status.c:241
 #, c-format
 msgid "  (use \"git %s <file>...\" to include in what will be committed)"
 msgstr ""
 "  (usa \"git %s <archivo>...\" para incluirlo a lo que se será confirmado)"
 
-#: wt-status.c:253
+#: wt-status.c:256
 msgid "both deleted:"
 msgstr "ambos borrados:"
 
-#: wt-status.c:255
+#: wt-status.c:258
 msgid "added by us:"
 msgstr "agregado por nosotros:"
 
-#: wt-status.c:257
+#: wt-status.c:260
 msgid "deleted by them:"
 msgstr "borrados por ellos:"
 
-#: wt-status.c:259
+#: wt-status.c:262
 msgid "added by them:"
 msgstr "agregado por ellos:"
 
-#: wt-status.c:261
+#: wt-status.c:264
 msgid "deleted by us:"
 msgstr "borrado por nosotros:"
 
-#: wt-status.c:263
+#: wt-status.c:266
 msgid "both added:"
 msgstr "ambos agregados:"
 
-#: wt-status.c:265
+#: wt-status.c:268
 msgid "both modified:"
 msgstr "ambos modificados:"
 
-#: wt-status.c:275
+#: wt-status.c:278
 msgid "new file:"
 msgstr "nuevo archivo:"
 
-#: wt-status.c:277
+#: wt-status.c:280
 msgid "copied:"
 msgstr "copiado:"
 
-#: wt-status.c:279
+#: wt-status.c:282
 msgid "deleted:"
 msgstr "borrado:"
 
-#: wt-status.c:281
+#: wt-status.c:284
 msgid "modified:"
 msgstr "modificado:"
 
-#: wt-status.c:283
+#: wt-status.c:286
 msgid "renamed:"
 msgstr "renombrado:"
 
-#: wt-status.c:285
+#: wt-status.c:288
 msgid "typechange:"
 msgstr "cambio de tipo:"
 
-#: wt-status.c:287
+#: wt-status.c:290
 msgid "unknown:"
 msgstr "desconocido:"
 
-#: wt-status.c:289
+#: wt-status.c:292
 msgid "unmerged:"
 msgstr "des-fusionado:"
 
-#: wt-status.c:369
+#: wt-status.c:372
 msgid "new commits, "
 msgstr "nuevos commits, "
 
-#: wt-status.c:371
+#: wt-status.c:374
 msgid "modified content, "
 msgstr "contenido modificado, "
 
-#: wt-status.c:373
+#: wt-status.c:376
 msgid "untracked content, "
 msgstr "contenido no rastreado, "
 
-#: wt-status.c:847
+#: wt-status.c:853
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] "Tu stash actualmente tiene %d entrada"
 msgstr[1] "Tu stash actualmente tiene %d entradas"
 
-#: wt-status.c:879
+#: wt-status.c:885
 msgid "Submodules changed but not updated:"
 msgstr "Submodulos cambiados pero no actualizados:"
 
-#: wt-status.c:881
+#: wt-status.c:887
 msgid "Submodule changes to be committed:"
 msgstr "Submodulos cambiados listos para realizar commit:"
 
-#: wt-status.c:963
+#: wt-status.c:969
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -4706,107 +5067,107 @@ msgstr ""
 "No modifique o borre la línea de encima.\n"
 "Todo lo que este por abajo será removido."
 
-#: wt-status.c:1076
+#: wt-status.c:1084
 msgid "You have unmerged paths."
 msgstr "Tienes rutas no fusionadas."
 
-#: wt-status.c:1079
+#: wt-status.c:1087
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (arregla los conflictos y corre \"git commit\""
 
-#: wt-status.c:1081
+#: wt-status.c:1089
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (usa \"git merge --abort\" para abortar la fusion)"
 
-#: wt-status.c:1086
+#: wt-status.c:1094
 msgid "All conflicts fixed but you are still merging."
 msgstr "Todos los conflictos resueltos pero sigues fusionando."
 
-#: wt-status.c:1089
+#: wt-status.c:1097
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (usa \"git commit\" para concluir la fusión)"
 
-#: wt-status.c:1099
+#: wt-status.c:1107
 msgid "You are in the middle of an am session."
 msgstr "Estás en medio de una sesión am."
 
-#: wt-status.c:1102
+#: wt-status.c:1110
 msgid "The current patch is empty."
 msgstr "El parche actual esta vacío."
 
-#: wt-status.c:1106
+#: wt-status.c:1114
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (arregla los conflictos y luego corre \"git am --continue\""
 
-#: wt-status.c:1108
+#: wt-status.c:1116
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (usa \"git am --skip\" para saltar este parche)"
 
-#: wt-status.c:1110
+#: wt-status.c:1118
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr "  (usa \"git am --abort\" para restaurar la rama original)"
 
-#: wt-status.c:1242
+#: wt-status.c:1250
 msgid "git-rebase-todo is missing."
 msgstr "git-rebase-todo no esta presente."
 
-#: wt-status.c:1244
+#: wt-status.c:1252
 msgid "No commands done."
 msgstr "No se realizaron los comandos."
 
-#: wt-status.c:1247
+#: wt-status.c:1255
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] "El último comando realizado (%d comando realizado):"
 msgstr[1] "Los últimos comandos realizados (%d comandos realizados):"
 
-#: wt-status.c:1258
+#: wt-status.c:1266
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (ver mas en el archivo %s)"
 
-#: wt-status.c:1263
+#: wt-status.c:1271
 msgid "No commands remaining."
 msgstr "No quedan mas comandos."
 
-#: wt-status.c:1266
+#: wt-status.c:1274
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
 msgstr[0] "Siguiente comando a realizar (%d comando restante):"
 msgstr[1] "Siguiente comandos a realizar (%d comandos faltantes):"
 
-#: wt-status.c:1274
+#: wt-status.c:1282
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (usa \"git rebase --edit-todo\" para ver y editar)"
 
-#: wt-status.c:1287
+#: wt-status.c:1295
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "Estás aplicando un rebase de la rama '%s' en '%s."
 
-#: wt-status.c:1292
+#: wt-status.c:1300
 msgid "You are currently rebasing."
 msgstr "Estás aplicando un rebase."
 
-#: wt-status.c:1306
+#: wt-status.c:1314
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (corrige los conflictos y ejecuta \"git rebase --continue\")"
 
-#: wt-status.c:1308
+#: wt-status.c:1316
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (usa \"git rebase --skip\" para omitir este parche)"
 
-#: wt-status.c:1310
+#: wt-status.c:1318
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr "  (usa \"git rebase --abort\" para volver a tu rama original)"
 
-#: wt-status.c:1316
+#: wt-status.c:1324
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (todos los conflictos corregidos: ejecuta \"git rebase --continue\")"
 
-#: wt-status.c:1320
+#: wt-status.c:1328
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
@@ -4814,128 +5175,128 @@ msgstr ""
 "Estás dividiendo un commit mientras aplicas un rebase de la rama '%s' en "
 "'%s'."
 
-#: wt-status.c:1325
+#: wt-status.c:1333
 msgid "You are currently splitting a commit during a rebase."
 msgstr "Estás dividiendo un commit durante un rebase."
 
-#: wt-status.c:1328
+#: wt-status.c:1336
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr ""
 "  (Una vez que tu directorio de trabajo esté limpio, ejecuta \"git rebase --"
 "continue\")"
 
-#: wt-status.c:1332
+#: wt-status.c:1340
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 "Estás editando un commit mientras se aplica un rebase de la rama '%s' en "
 "'%s'."
 
-#: wt-status.c:1337
+#: wt-status.c:1345
 msgid "You are currently editing a commit during a rebase."
 msgstr "Estás editando un commit durante un rebase."
 
-#: wt-status.c:1340
+#: wt-status.c:1348
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr "  (usa \"git commit --amend\" para enmendar el commit actual)"
 
-#: wt-status.c:1342
+#: wt-status.c:1350
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr ""
 "  (usa \"git rebase --continue\" una vez que estés satisfecho con tus "
 "cambios)"
 
-#: wt-status.c:1352
+#: wt-status.c:1360
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "Estás realizando un cherry-picking en el commit %s."
 
-#: wt-status.c:1357
+#: wt-status.c:1365
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (corrige los conflictos y ejecuta \"git cherry-pick --continue\")"
 
-#: wt-status.c:1360
+#: wt-status.c:1368
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr ""
 "  (todos los conflictos corregidos: ejecuta \"git cherry-pick --continue\")"
 
-#: wt-status.c:1362
+#: wt-status.c:1370
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr ""
 "  (use \"git cherry-pick --abort\" para cancelar la operación cherry-pick)"
 
-#: wt-status.c:1371
+#: wt-status.c:1379
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "Estás revirtiendo el commit %s."
 
-#: wt-status.c:1376
+#: wt-status.c:1384
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (corrige los conflictos y ejecuta \"git revert --continue\")"
 
-#: wt-status.c:1379
+#: wt-status.c:1387
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (todos los conflictos corregidos: ejecuta \"git revert --continue\")"
 
-#: wt-status.c:1381
+#: wt-status.c:1389
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (usa \"git revert --abort\" para cancelar la operación de revertir)"
 
-#: wt-status.c:1392
+#: wt-status.c:1400
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "Estás aplicando un bisect, comenzando en la rama '%s'."
 
-#: wt-status.c:1396
+#: wt-status.c:1404
 msgid "You are currently bisecting."
 msgstr "Estás aplicando un bisect."
 
-#: wt-status.c:1399
+#: wt-status.c:1407
 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:1596
+#: wt-status.c:1604
 msgid "On branch "
 msgstr "En la rama "
 
-#: wt-status.c:1602
+#: wt-status.c:1610
 msgid "interactive rebase in progress; onto "
 msgstr "rebase interactivo en progreso; en "
 
-#: wt-status.c:1604
+#: wt-status.c:1612
 msgid "rebase in progress; onto "
 msgstr "rebase en progreso; en "
 
-#: wt-status.c:1609
+#: wt-status.c:1617
 msgid "HEAD detached at "
 msgstr "HEAD desacoplada en "
 
-#: wt-status.c:1611
+#: wt-status.c:1619
 msgid "HEAD detached from "
 msgstr "HEAD desacoplada de "
 
-#: wt-status.c:1614
+#: wt-status.c:1622
 msgid "Not currently on any branch."
 msgstr "Actualmente no estás en ninguna rama."
 
-#: wt-status.c:1634
+#: wt-status.c:1642
 msgid "Initial commit"
 msgstr "Confirmación inicial"
 
-#: wt-status.c:1635
+#: wt-status.c:1643
 msgid "No commits yet"
 msgstr "No hay commits todavía"
 
-#: wt-status.c:1649
+#: wt-status.c:1657
 msgid "Untracked files"
 msgstr "Archivos sin seguimiento"
 
-#: wt-status.c:1651
+#: wt-status.c:1659
 msgid "Ignored files"
 msgstr "Archivos ignorados"
 
-#: wt-status.c:1655
+#: wt-status.c:1663
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -4946,31 +5307,31 @@ msgstr ""
 "puede acelerarlo, pero tiene que ser cuidadoso de no olvidar agregar\n"
 "nuevos archivos usted mismo (vea 'git help status')."
 
-#: wt-status.c:1661
+#: wt-status.c:1669
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Archivos no rastreados no son mostrados %s"
 
-#: wt-status.c:1663
+#: wt-status.c:1671
 msgid " (use -u option to show untracked files)"
 msgstr " (usa la opción -u para mostrar los archivos sin seguimiento)"
 
-#: wt-status.c:1669
+#: wt-status.c:1677
 msgid "No changes"
 msgstr "Sin cambios"
 
-#: wt-status.c:1674
+#: wt-status.c:1682
 #, 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:1677
+#: wt-status.c:1685
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "no se agregaron cambios al commit\n"
 
-#: wt-status.c:1680
+#: wt-status.c:1688
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -4979,75 +5340,75 @@ msgstr ""
 "no hay nada agregado al commit pero hay archivos sin seguimiento presentes "
 "(usa \"git add\" para hacerles seguimiento)\n"
 
-#: wt-status.c:1683
+#: wt-status.c:1691
 #, 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:1686
+#: wt-status.c:1694
 #, 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:1689 wt-status.c:1694
+#: wt-status.c:1697 wt-status.c:1702
 #, c-format
 msgid "nothing to commit\n"
 msgstr "nada para hacer commit\n"
 
-#: wt-status.c:1692
+#: wt-status.c:1700
 #, 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:1696
+#: wt-status.c:1704
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "nada para hacer commit, el árbol de trabajo esta limpio\n"
 
-#: wt-status.c:1809
+#: wt-status.c:1817
 msgid "No commits yet on "
 msgstr "No hay commits todavía en "
 
-#: wt-status.c:1813
+#: wt-status.c:1821
 msgid "HEAD (no branch)"
 msgstr "HEAD (sin rama)"
 
-#: wt-status.c:1844
+#: wt-status.c:1852
 msgid "different"
 msgstr "diferente"
 
-#: wt-status.c:1846 wt-status.c:1854
+#: wt-status.c:1854 wt-status.c:1862
 msgid "behind "
 msgstr "detrás "
 
-#: wt-status.c:1849 wt-status.c:1852
+#: wt-status.c:1857 wt-status.c:1860
 msgid "ahead "
 msgstr "adelante "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2358
+#: wt-status.c:2366
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "no se puede %s: Tienes cambios sin marcar."
 
-#: wt-status.c:2364
+#: wt-status.c:2372
 msgid "additionally, your index contains uncommitted changes."
 msgstr "adicionalmente, tu índice contiene cambios que no están en un commit."
 
-#: wt-status.c:2366
+#: wt-status.c:2374
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "no se puede %s: Tu índice contiene cambios que no están en un commit."
 
-#: compat/precompose_utf8.c:58 builtin/clone.c:440
+#: compat/precompose_utf8.c:58 builtin/clone.c:442
 #, c-format
 msgid "failed to unlink '%s'"
-msgstr "fallo al desvincular '%s'"
+msgstr "falló al desvincular '%s'"
 
 #: builtin/add.c:24
 msgid "git add [<options>] [--] <pathspec>..."
@@ -5058,9 +5419,9 @@ msgstr "git add [<opción>] [--] <especificación-de-ruta>..."
 msgid "unexpected diff status %c"
 msgstr "diff status inesperado %c"
 
-#: builtin/add.c:88 builtin/commit.c:257
+#: builtin/add.c:88 builtin/commit.c:266
 msgid "updating files failed"
-msgstr "fallo la actualización de carpetas"
+msgstr "falló la actualización de carpetas"
 
 #: builtin/add.c:98
 #, c-format
@@ -5071,7 +5432,7 @@ msgstr "remover '%s'\n"
 msgid "Unstaged changes after refreshing the index:"
 msgstr "Cambios fuera del área de stage tras refrescar el índice:"
 
-#: builtin/add.c:233 builtin/rev-parse.c:888
+#: builtin/add.c:233 builtin/rev-parse.c:892
 msgid "Could not read the index"
 msgstr "No se pudo leer el índice"
 
@@ -5086,7 +5447,7 @@ msgstr "No se puede escribir el parche"
 
 #: builtin/add.c:251
 msgid "editing patch failed"
-msgstr "fallo la edición del parche"
+msgstr "falló la edición del parche"
 
 #: builtin/add.c:254
 #, c-format
@@ -5102,78 +5463,78 @@ msgstr "Parche vacío. Abortado."
 msgid "Could not apply '%s'"
 msgstr "No se pudo aplicar '%s'"
 
-#: builtin/add.c:271
+#: builtin/add.c:269
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr ""
 "Las siguientes rutas son ignoradas por uno de tus archivos .gitignore:\n"
 
-#: builtin/add.c:291 builtin/clean.c:911 builtin/fetch.c:146 builtin/mv.c:124
-#: builtin/prune-packed.c:55 builtin/pull.c:207 builtin/push.c:541
-#: builtin/remote.c:1333 builtin/rm.c:242 builtin/send-pack.c:164
+#: builtin/add.c:289 builtin/clean.c:911 builtin/fetch.c:145 builtin/mv.c:123
+#: builtin/prune-packed.c:55 builtin/pull.c:212 builtin/push.c:557
+#: builtin/remote.c:1342 builtin/rm.c:240 builtin/send-pack.c:165
 msgid "dry run"
 msgstr "dry run ( ejecución en seco)"
 
-#: builtin/add.c:294
+#: builtin/add.c:292
 msgid "interactive picking"
 msgstr "selección interactiva"
 
-#: builtin/add.c:295 builtin/checkout.c:1128 builtin/reset.c:302
+#: builtin/add.c:293 builtin/checkout.c:1135 builtin/reset.c:302
 msgid "select hunks interactively"
 msgstr "elegir hunks de forma interactiva"
 
-#: builtin/add.c:296
+#: builtin/add.c:294
 msgid "edit current diff and apply"
 msgstr "editar diff actual y aplicar"
 
-#: builtin/add.c:297
+#: builtin/add.c:295
 msgid "allow adding otherwise ignored files"
 msgstr "permitir agregar caso contrario ignorar archivos"
 
-#: builtin/add.c:298
+#: builtin/add.c:296
 msgid "update tracked files"
 msgstr "actualizado las carpetas rastreadas"
 
-#: builtin/add.c:299
+#: builtin/add.c:297
 msgid "renormalize EOL of tracked files (implies -u)"
 msgstr "renormalizar EOL de los archivos rastreados (implica -u)"
 
-#: builtin/add.c:300
+#: builtin/add.c:298
 msgid "record only the fact that the path will be added later"
 msgstr "grabar solo el hecho de que la ruta será agregada después"
 
-#: builtin/add.c:301
+#: builtin/add.c:299
 msgid "add changes from all tracked and untracked files"
 msgstr "agregar los cambios de todas las carpetas con y sin seguimiento"
 
-#: builtin/add.c:304
+#: builtin/add.c:302
 msgid "ignore paths removed in the working tree (same as --no-all)"
 msgstr "ignorar rutas removidas en el árbol de trabajo (lo mismo que --no-all)"
 
-#: builtin/add.c:306
+#: builtin/add.c:304
 msgid "don't add, only refresh the index"
 msgstr "no agregar, solo actualizar el índice"
 
-#: builtin/add.c:307
+#: builtin/add.c:305
 msgid "just skip files which cannot be added because of errors"
 msgstr "saltar las carpetas que no pueden ser agregadas a causa de errores"
 
-#: builtin/add.c:308
+#: builtin/add.c:306
 msgid "check if - even missing - files are ignored in dry run"
 msgstr "comprobar si - incluso los archivos que faltan - se ignoran en dry run"
 
-#: builtin/add.c:309 builtin/update-index.c:964
+#: builtin/add.c:307 builtin/update-index.c:974
 msgid "(+/-)x"
 msgstr "(+/-)x"
 
-#: builtin/add.c:309 builtin/update-index.c:965
+#: builtin/add.c:307 builtin/update-index.c:975
 msgid "override the executable bit of the listed files"
 msgstr "sobrescribir el bit ejecutable de los archivos listados"
 
-#: builtin/add.c:311
+#: builtin/add.c:309
 msgid "warn when adding an embedded repository"
 msgstr "avisar cuando se agrega un repositorio incrustado"
 
-#: builtin/add.c:326
+#: builtin/add.c:324
 #, c-format
 msgid ""
 "You've added another git repository inside your current repository.\n"
@@ -5204,47 +5565,47 @@ msgstr ""
 "\n"
 "Vea \"git help submodule\" para mas información."
 
-#: builtin/add.c:354
+#: builtin/add.c:352
 #, c-format
 msgid "adding embedded git repository: %s"
 msgstr "agregando repositorio embebido: %s"
 
-#: builtin/add.c:372
+#: builtin/add.c:370
 #, c-format
 msgid "Use -f if you really want to add them.\n"
 msgstr "Use -f si realmente quiere agregarlos.\n"
 
-#: builtin/add.c:380
+#: builtin/add.c:378
 msgid "adding files failed"
-msgstr "fallo al agregar archivos"
+msgstr "falló al agregar archivos"
 
-#: builtin/add.c:417
+#: builtin/add.c:416
 msgid "-A and -u are mutually incompatible"
 msgstr "-A y -u son mutuamente incompatibles"
 
-#: builtin/add.c:424
+#: builtin/add.c:423
 msgid "Option --ignore-missing can only be used together with --dry-run"
 msgstr "Opción --ignore-missing solo puede ser usada junto a --dry-run"
 
-#: builtin/add.c:428
+#: builtin/add.c:427
 #, c-format
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "El parámetro '%s' para --chmod debe ser -x ó +x"
 
-#: builtin/add.c:443
+#: builtin/add.c:442
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr "Nada especificado, nada agregado.\n"
 
-#: builtin/add.c:444
+#: builtin/add.c:443
 #, c-format
 msgid "Maybe you wanted to say 'git add .'?\n"
 msgstr "Tal vez quiso decir 'git add .'?\n"
 
-#: builtin/add.c:449 builtin/check-ignore.c:177 builtin/checkout.c:280
-#: builtin/checkout.c:483 builtin/clean.c:958 builtin/commit.c:316
+#: builtin/add.c:448 builtin/check-ignore.c:177 builtin/checkout.c:280
+#: builtin/checkout.c:483 builtin/clean.c:958 builtin/commit.c:325
 #: builtin/diff-tree.c:114 builtin/mv.c:144 builtin/reset.c:241
-#: builtin/rm.c:271 builtin/submodule--helper.c:326
+#: builtin/rm.c:270 builtin/submodule--helper.c:328
 msgid "index file corrupt"
 msgstr "archivo índice corrompido"
 
@@ -5265,7 +5626,7 @@ msgstr "Línea mal formada: '%s'."
 #: builtin/am.c:576
 #, c-format
 msgid "Failed to copy notes from '%s' to '%s'"
-msgstr "Fallo al copiar notas de '%s' a '%s'"
+msgstr "Falló al copiar notas de '%s' a '%s'"
 
 #: builtin/am.c:602
 msgid "fseek failed"
@@ -5296,16 +5657,16 @@ msgstr "offset de zona horaria inválido"
 msgid "Patch format detection failed."
 msgstr "Falló al detectar el formato del parche."
 
-#: builtin/am.c:1013 builtin/clone.c:405
+#: builtin/am.c:1013 builtin/clone.c:407
 #, c-format
 msgid "failed to create directory '%s'"
-msgstr "fallo al crear el directorio '%s'"
+msgstr "falló al crear el directorio '%s'"
 
 #: builtin/am.c:1018
 msgid "Failed to split patches."
-msgstr "Fallo al dividir parches."
+msgstr "Falló al dividir parches."
 
-#: builtin/am.c:1148 builtin/commit.c:342
+#: builtin/am.c:1148 builtin/commit.c:351
 msgid "unable to write index file"
 msgstr "no es posible escribir en el archivo índice"
 
@@ -5408,7 +5769,7 @@ msgstr "Sin cambios -- parche ya aplicado."
 #: builtin/am.c:1832
 #, c-format
 msgid "Patch failed at %s %.*s"
-msgstr "El parche fallo en %s %.*s"
+msgstr "El parche falló en %s %.*s"
 
 #: builtin/am.c:1838
 msgid "Use 'git am --show-current-patch' to see the failed patch"
@@ -5445,14 +5806,14 @@ msgstr "No se pudo analizar el objeto '%s'."
 
 #: builtin/am.c:2048
 msgid "failed to clean index"
-msgstr "fallo al limpiar el índice"
+msgstr "falló al limpiar el índice"
 
 #: builtin/am.c:2083
 msgid ""
 "You seem to have moved HEAD since the last 'am' failure.\n"
 "Not rewinding to ORIG_HEAD"
 msgstr ""
-"Parece haber movido HEAD desde el último fallo 'am'.\n"
+"Parece haber movido HEAD desde el último falló 'am'.\n"
 "No rebobinando a ORIG_HEAD"
 
 #: builtin/am.c:2174
@@ -5481,7 +5842,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:2222 builtin/init-db.c:484 builtin/prune-packed.c:57
-#: builtin/repack.c:182
+#: builtin/repack.c:192
 msgid "be quiet"
 msgstr "ser silencioso"
 
@@ -5524,16 +5885,17 @@ msgstr "descubrir todo antes de una línea de tijeras"
 msgid "pass it through git-apply"
 msgstr "pasarlo a través de git-apply"
 
-#: builtin/am.c:2260 builtin/fmt-merge-msg.c:665 builtin/fmt-merge-msg.c:668
-#: builtin/grep.c:853 builtin/merge.c:206 builtin/pull.c:145 builtin/pull.c:203
-#: builtin/repack.c:191 builtin/repack.c:195 builtin/repack.c:197
-#: builtin/show-branch.c:631 builtin/show-ref.c:169 builtin/tag.c:382
-#: parse-options.h:144 parse-options.h:146 parse-options.h:257
+#: builtin/am.c:2260 builtin/commit.c:1332 builtin/fmt-merge-msg.c:665
+#: builtin/fmt-merge-msg.c:668 builtin/grep.c:853 builtin/merge.c:208
+#: builtin/pull.c:150 builtin/pull.c:208 builtin/repack.c:201
+#: builtin/repack.c:205 builtin/repack.c:207 builtin/show-branch.c:631
+#: builtin/show-ref.c:169 builtin/tag.c:383 parse-options.h:144
+#: parse-options.h:146 parse-options.h:258
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2266 builtin/branch.c:629 builtin/for-each-ref.c:38
-#: builtin/replace.c:445 builtin/tag.c:418 builtin/verify-tag.c:39
+#: builtin/am.c:2266 builtin/branch.c:632 builtin/for-each-ref.c:38
+#: builtin/replace.c:543 builtin/tag.c:419 builtin/verify-tag.c:39
 msgid "format"
 msgstr "formato"
 
@@ -5577,8 +5939,8 @@ msgstr "mentir sobre la fecha del committer"
 msgid "use current timestamp for author date"
 msgstr "usar el timestamp actual para la fecha del autor"
 
-#: builtin/am.c:2298 builtin/commit.c:1431 builtin/merge.c:237
-#: builtin/pull.c:178 builtin/revert.c:112 builtin/tag.c:398
+#: builtin/am.c:2298 builtin/commit.c:1468 builtin/merge.c:239
+#: builtin/pull.c:183 builtin/revert.c:112 builtin/tag.c:399
 msgid "key-id"
 msgstr "key-id"
 
@@ -5600,7 +5962,7 @@ msgstr ""
 
 #: builtin/am.c:2327
 msgid "failed to read the index"
-msgstr "fallo al leer el índice"
+msgstr "falló al leer el índice"
 
 #: builtin/am.c:2342
 #, c-format
@@ -5717,115 +6079,141 @@ msgstr "--write-terms requiere dos argumentos"
 msgid "--bisect-clean-state requires no arguments"
 msgstr "--bisect-clean-state no requiere argumentos"
 
-#: builtin/blame.c:27
+#: builtin/blame.c:29
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
 msgstr "git blame [<opciones>] [<opciones-rev>] [<revision>] [--] <archivo>"
 
-#: builtin/blame.c:32
+#: builtin/blame.c:34
 msgid "<rev-opts> are documented in git-rev-list(1)"
 msgstr "<rev-opts> están documentadas en git-rev-list(1)"
 
-#: builtin/blame.c:677
+#: builtin/blame.c:404
+#, c-format
+msgid "expecting a color: %s"
+msgstr "esperando un color: %s"
+
+#: builtin/blame.c:411
+msgid "must end with a color"
+msgstr "tiene que terminar con un color"
+
+#: builtin/blame.c:697
+#, c-format
+msgid "invalid color '%s' in color.blame.repeatedLines"
+msgstr "color invalido '%s' en color.blame.repeatedLines"
+
+#: builtin/blame.c:715
+msgid "invalid value for blame.coloring"
+msgstr "valor inválido para blame.coloring"
+
+#: builtin/blame.c:786
 msgid "Show blame entries as we find them, incrementally"
 msgstr "Mostrar las entradas blame como las encontramos, incrementalmente"
 
-#: builtin/blame.c:678
+#: builtin/blame.c:787
 msgid "Show blank SHA-1 for boundary commits (Default: off)"
 msgstr "Mostrar SHA-1 en blanco para commits extremos (Default: off)"
 
-#: builtin/blame.c:679
+#: builtin/blame.c:788
 msgid "Do not treat root commits as boundaries (Default: off)"
 msgstr "No tratar commits raíces como extremos (Default: off)"
 
-#: builtin/blame.c:680
+#: builtin/blame.c:789
 msgid "Show work cost statistics"
 msgstr "Mostrar estadísticas de costo de trabajo"
 
-#: builtin/blame.c:681
+#: builtin/blame.c:790
 msgid "Force progress reporting"
 msgstr "Forzar el reporte de progreso"
 
-#: builtin/blame.c:682
+#: builtin/blame.c:791
 msgid "Show output score for blame entries"
 msgstr "Mostrar la puntuación de salida de las entradas de blame"
 
-#: builtin/blame.c:683
+#: builtin/blame.c:792
 msgid "Show original filename (Default: auto)"
 msgstr "Mostrar nombre original del archivo (Default: auto)"
 
-#: builtin/blame.c:684
+#: builtin/blame.c:793
 msgid "Show original linenumber (Default: off)"
 msgstr "Mostrar número de línea original (Default: off)"
 
-#: builtin/blame.c:685
+#: builtin/blame.c:794
 msgid "Show in a format designed for machine consumption"
 msgstr "Mostrar en un formato diseñado para consumo de máquina"
 
-#: builtin/blame.c:686
+#: builtin/blame.c:795
 msgid "Show porcelain format with per-line commit information"
 msgstr "Mostrar en formato porcelana con información de commit por línea"
 
-#: builtin/blame.c:687
+#: builtin/blame.c:796
 msgid "Use the same output mode as git-annotate (Default: off)"
 msgstr "Usar el mismo modo salida como git-annotate (Default: off)"
 
-#: builtin/blame.c:688
+#: builtin/blame.c:797
 msgid "Show raw timestamp (Default: off)"
 msgstr "Mostrar timestamp en formato raw (Default: off)"
 
-#: builtin/blame.c:689
+#: builtin/blame.c:798
 msgid "Show long commit SHA1 (Default: off)"
 msgstr "Mostrar SHA1 del commit en formato largo (Default: off)"
 
-#: builtin/blame.c:690
+#: builtin/blame.c:799
 msgid "Suppress author name and timestamp (Default: off)"
 msgstr "Suprimir nombre del autor y timestamp (Default: off)"
 
-#: builtin/blame.c:691
+#: builtin/blame.c:800
 msgid "Show author email instead of name (Default: off)"
 msgstr "Mostrar en cambio el email del autor (Default: off)"
 
-#: builtin/blame.c:692
+#: builtin/blame.c:801
 msgid "Ignore whitespace differences"
 msgstr "Ignorar diferencias de espacios en blanco"
 
-#: builtin/blame.c:699
+#: builtin/blame.c:802
+msgid "color redundant metadata from previous line differently"
+msgstr "colorear metadata redundante de lineas previas de manera diferente"
+
+#: builtin/blame.c:803
+msgid "color lines by age"
+msgstr "colorear lineas por edad"
+
+#: builtin/blame.c:810
 msgid "Use an experimental heuristic to improve diffs"
 msgstr "Usar un heurístico experimental para mejorar los diffs"
 
-#: builtin/blame.c:701
+#: builtin/blame.c:812
 msgid "Spend extra cycles to find better match"
 msgstr "Ocupo más ciclos para encontrar mejoras resultados"
 
-#: builtin/blame.c:702
+#: builtin/blame.c:813
 msgid "Use revisions from <file> instead of calling git-rev-list"
 msgstr "Use revisiones desde <archivo> en lugar de llamar git-rev-list"
 
-#: builtin/blame.c:703
+#: builtin/blame.c:814
 msgid "Use <file>'s contents as the final image"
 msgstr "Usar contenido de <archivo> como imagen final"
 
-#: builtin/blame.c:704 builtin/blame.c:705
+#: builtin/blame.c:815 builtin/blame.c:816
 msgid "score"
 msgstr "puntaje"
 
-#: builtin/blame.c:704
+#: builtin/blame.c:815
 msgid "Find line copies within and across files"
 msgstr "Encontrar copias de líneas entre y a través de archivos"
 
-#: builtin/blame.c:705
+#: builtin/blame.c:816
 msgid "Find line movements within and across files"
 msgstr "Encontrar movimientos de líneas entre y a través de archivos"
 
-#: builtin/blame.c:706
+#: builtin/blame.c:817
 msgid "n,m"
 msgstr "n,m"
 
-#: builtin/blame.c:706
+#: builtin/blame.c:817
 msgid "Process only line range n,m, counting from 1"
 msgstr "Procesar solo el rango de líneas n,m, contando desde 1"
 
-#: builtin/blame.c:753
+#: builtin/blame.c:866
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr "--progress no puede ser usado con --incremental o formatos porcelana"
 
@@ -5837,18 +6225,18 @@ msgstr "--progress no puede ser usado con --incremental o formatos porcelana"
 #. your language may need more or fewer display
 #. columns.
 #.
-#: builtin/blame.c:804
+#: builtin/blame.c:917
 msgid "4 years, 11 months ago"
 msgstr "hace 4 años, 11 meses"
 
-#: builtin/blame.c:890
+#: builtin/blame.c:1003
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
 msgstr[0] "archivo %s tiene solo %lu línea"
 msgstr[1] "archivo %s tiene solo %lu líneas"
 
-#: builtin/blame.c:936
+#: builtin/blame.c:1049
 msgid "Blaming lines"
 msgstr "Blaming a líneas"
 
@@ -5914,7 +6302,7 @@ msgstr ""
 
 #: builtin/branch.c:181
 msgid "Update of config-file failed"
-msgstr "Fallo de actualización de config-file"
+msgstr "Falló de actualización de config-file"
 
 #: builtin/branch.c:212
 msgid "cannot use -a with -d"
@@ -5959,69 +6347,69 @@ msgstr "Eliminada la rama de rastreo remota %s (era %s).\n"
 msgid "Deleted branch %s (was %s).\n"
 msgstr "Eliminada la rama %s (era %s)..\n"
 
-#: builtin/branch.c:417 builtin/tag.c:58
+#: builtin/branch.c:416 builtin/tag.c:58
 msgid "unable to parse format string"
 msgstr "no es posible analizar el string de formato"
 
-#: builtin/branch.c:450
+#: builtin/branch.c:453
 #, c-format
 msgid "Branch %s is being rebased at %s"
 msgstr "Rama %s está siendo rebasada en %s"
 
-#: builtin/branch.c:454
+#: builtin/branch.c:457
 #, c-format
 msgid "Branch %s is being bisected at %s"
 msgstr "Rama %s está siendo bisecada en %s"
 
-#: builtin/branch.c:471
+#: builtin/branch.c:474
 msgid "cannot copy the current branch while not on any."
 msgstr "no se puede copiar la rama actual mientras no se está en ninguna."
 
-#: builtin/branch.c:473
+#: builtin/branch.c:476
 msgid "cannot rename the current branch while not on any."
 msgstr "no se puede renombrar la rama actual mientras no se está en ninguna."
 
-#: builtin/branch.c:484
+#: builtin/branch.c:487
 #, c-format
 msgid "Invalid branch name: '%s'"
 msgstr "Nombre de rama invalido: '%s'"
 
-#: builtin/branch.c:511
+#: builtin/branch.c:514
 msgid "Branch rename failed"
 msgstr "Cambio de nombre de rama fallido"
 
-#: builtin/branch.c:513
+#: builtin/branch.c:516
 msgid "Branch copy failed"
 msgstr "Copiado de rama fallido"
 
-#: builtin/branch.c:517
+#: builtin/branch.c:520
 #, c-format
 msgid "Created a copy of a misnamed branch '%s'"
 msgstr "Copia creada de la rama malnombrada '%s'"
 
-#: builtin/branch.c:520
+#: builtin/branch.c:523
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
 msgstr "Rama mal llamada '%s' renombrada"
 
-#: builtin/branch.c:526
+#: builtin/branch.c:529
 #, c-format
 msgid "Branch renamed to %s, but HEAD is not updated!"
 msgstr "¡Rama renombrada a %s, pero HEAD no está actualizado!"
 
-#: builtin/branch.c:535
+#: builtin/branch.c:538
 msgid "Branch is renamed, but update of config-file failed"
 msgstr ""
 "La rama está renombrada, pero falló la actualización del archivo de "
 "configuración"
 
-#: builtin/branch.c:537
+#: builtin/branch.c:540
 msgid "Branch is copied, but update of config-file failed"
 msgstr ""
 "La rama está copiada, pero falló la actualización del archivo de "
 "configuración"
 
-#: builtin/branch.c:553
+#: builtin/branch.c:556
 #, c-format
 msgid ""
 "Please edit the description for the branch\n"
@@ -6032,184 +6420,186 @@ msgstr ""
 "%s\n"
 "Las líneas que comiencen con '%c' serán removidas.\n"
 
-#: builtin/branch.c:586
+#: builtin/branch.c:589
 msgid "Generic options"
 msgstr "Opciones genéricas"
 
-#: builtin/branch.c:588
+#: builtin/branch.c:591
 msgid "show hash and subject, give twice for upstream branch"
 msgstr "mostrar hash y tema, dar dos veces para rama upstream"
 
-#: builtin/branch.c:589
+#: builtin/branch.c:592
 msgid "suppress informational messages"
 msgstr "suprimir mensajes informativos"
 
-#: builtin/branch.c:590
+#: builtin/branch.c:593
 msgid "set up tracking mode (see git-pull(1))"
 msgstr "configurando modo tracking (mirar git-pull(1))"
 
-#: builtin/branch.c:592
+#: builtin/branch.c:595
 msgid "do not use"
 msgstr "no usar"
 
-#: builtin/branch.c:594
+#: builtin/branch.c:597
 msgid "upstream"
 msgstr "upstream"
 
-#: builtin/branch.c:594
+#: builtin/branch.c:597
 msgid "change the upstream info"
 msgstr "cambiar info de upstream"
 
-#: builtin/branch.c:595
+#: builtin/branch.c:598
 msgid "Unset the upstream info"
 msgstr "Desconfigurando la info de upstream"
 
-#: builtin/branch.c:596
+#: builtin/branch.c:599
 msgid "use colored output"
 msgstr "usar salida con colores"
 
-#: builtin/branch.c:597
+#: builtin/branch.c:600
 msgid "act on remote-tracking branches"
 msgstr "actuar en ramas de traqueo remoto"
 
-#: builtin/branch.c:599 builtin/branch.c:601
+#: builtin/branch.c:602 builtin/branch.c:604
 msgid "print only branches that contain the commit"
 msgstr "mostrar solo ramas que contienen el commit"
 
-#: builtin/branch.c:600 builtin/branch.c:602
+#: builtin/branch.c:603 builtin/branch.c:605
 msgid "print only branches that don't contain the commit"
 msgstr "mostrar solo ramas que no contienen el commit"
 
-#: builtin/branch.c:605
+#: builtin/branch.c:608
 msgid "Specific git-branch actions:"
 msgstr "Acciones específicas de git-branch:"
 
-#: builtin/branch.c:606
+#: builtin/branch.c:609
 msgid "list both remote-tracking and local branches"
 msgstr "listar ramas de remote-tracking y locales"
 
-#: builtin/branch.c:608
+#: builtin/branch.c:611
 msgid "delete fully merged branch"
 msgstr "borrar ramas totalmente fusionadas"
 
-#: builtin/branch.c:609
+#: builtin/branch.c:612
 msgid "delete branch (even if not merged)"
 msgstr "borrar rama (incluso si no esta fusionada)"
 
-#: builtin/branch.c:610
+#: builtin/branch.c:613
 msgid "move/rename a branch and its reflog"
 msgstr "mover/renombrar una rama y su reflog"
 
-#: builtin/branch.c:611
+#: builtin/branch.c:614
 msgid "move/rename a branch, even if target exists"
 msgstr "mover/renombrar una rama, incluso si el destino existe"
 
-#: builtin/branch.c:612
+#: builtin/branch.c:615
 msgid "copy a branch and its reflog"
 msgstr "copiar una rama y su reflog"
 
-#: builtin/branch.c:613
+#: builtin/branch.c:616
 msgid "copy a branch, even if target exists"
 msgstr "copiar una rama, incluso si el objetivo existe"
 
-#: builtin/branch.c:614
+#: builtin/branch.c:617
 msgid "list branch names"
 msgstr "listar nombres de ramas"
 
-#: builtin/branch.c:615
+#: builtin/branch.c:618
 msgid "create the branch's reflog"
 msgstr "crea el reflog de la rama"
 
-#: builtin/branch.c:617
+#: builtin/branch.c:620
 msgid "edit the description for the branch"
 msgstr "edita la descripción de la rama"
 
-#: builtin/branch.c:618
+#: builtin/branch.c:621
 msgid "force creation, move/rename, deletion"
 msgstr "fuerza la creación,movimiento/renombrado,borrado"
 
-#: builtin/branch.c:619
+#: builtin/branch.c:622
 msgid "print only branches that are merged"
 msgstr "muestra solo ramas que han sido fusionadas"
 
-#: builtin/branch.c:620
+#: builtin/branch.c:623
 msgid "print only branches that are not merged"
 msgstr "muestra solo ramas que no han sido fusionadas"
 
-#: builtin/branch.c:621
+#: builtin/branch.c:624
 msgid "list branches in columns"
 msgstr "muestra las ramas en columnas"
 
-#: builtin/branch.c:622 builtin/for-each-ref.c:40 builtin/tag.c:411
+#: builtin/branch.c:625 builtin/for-each-ref.c:40 builtin/ls-remote.c:70
+#: builtin/tag.c:412
 msgid "key"
 msgstr "clave"
 
-#: builtin/branch.c:623 builtin/for-each-ref.c:41 builtin/tag.c:412
+#: builtin/branch.c:626 builtin/for-each-ref.c:41 builtin/ls-remote.c:71
+#: builtin/tag.c:413
 msgid "field name to sort on"
 msgstr "nombre del campo por el cuál ordenar"
 
-#: builtin/branch.c:625 builtin/for-each-ref.c:43 builtin/notes.c:408
+#: builtin/branch.c:628 builtin/for-each-ref.c:43 builtin/notes.c:408
 #: builtin/notes.c:411 builtin/notes.c:571 builtin/notes.c:574
-#: builtin/tag.c:414
+#: builtin/tag.c:415
 msgid "object"
 msgstr "objeto"
 
-#: builtin/branch.c:626
+#: builtin/branch.c:629
 msgid "print only branches of the object"
 msgstr "imprimir sólo las ramas del objeto"
 
-#: builtin/branch.c:628 builtin/for-each-ref.c:49 builtin/tag.c:421
+#: builtin/branch.c:631 builtin/for-each-ref.c:49 builtin/tag.c:422
 msgid "sorting and filtering are case insensitive"
 msgstr "ordenamiento y filtrado son case-insensitive"
 
-#: builtin/branch.c:629 builtin/for-each-ref.c:38 builtin/tag.c:419
+#: builtin/branch.c:632 builtin/for-each-ref.c:38 builtin/tag.c:420
 #: builtin/verify-tag.c:39
 msgid "format to use for the output"
 msgstr "formato para usar para el output"
 
-#: builtin/branch.c:652 builtin/clone.c:735
+#: builtin/branch.c:655 builtin/clone.c:737
 msgid "HEAD not found below refs/heads!"
 msgstr "HEAD no encontrado abajo de refs/heads!"
 
-#: builtin/branch.c:675
+#: builtin/branch.c:678
 msgid "--column and --verbose are incompatible"
 msgstr "--column y --verbose son incompatibles"
 
-#: builtin/branch.c:690 builtin/branch.c:742 builtin/branch.c:751
+#: builtin/branch.c:693 builtin/branch.c:745 builtin/branch.c:754
 msgid "branch name required"
 msgstr "se necesita el nombre de la rama"
 
-#: builtin/branch.c:718
+#: builtin/branch.c:721
 msgid "Cannot give description to detached HEAD"
 msgstr "No se puede dar descripción al HEAD desacoplado"
 
-#: builtin/branch.c:723
+#: builtin/branch.c:726
 msgid "cannot edit description of more than one branch"
 msgstr "no se puede editar la descripción de más de una rama"
 
-#: builtin/branch.c:730
+#: builtin/branch.c:733
 #, c-format
 msgid "No commit on branch '%s' yet."
 msgstr "Aún no hay commits en la rama '%s'."
 
-#: builtin/branch.c:733
+#: builtin/branch.c:736
 #, c-format
 msgid "No branch named '%s'."
 msgstr "No hay ninguna rama llamada '%s'."
 
-#: builtin/branch.c:748
+#: builtin/branch.c:751
 msgid "too many branches for a copy operation"
 msgstr "demasiadas ramas para una operación de copiado"
 
-#: builtin/branch.c:757
+#: builtin/branch.c:760
 msgid "too many arguments for a rename operation"
 msgstr "demasiados argumentos para una operación de renombrado"
 
-#: builtin/branch.c:762
+#: builtin/branch.c:765
 msgid "too many arguments to set new upstream"
 msgstr "demasiados argumentos para configurar un nuevo upstream"
 
-#: builtin/branch.c:766
+#: builtin/branch.c:769
 #, c-format
 msgid ""
 "could not set upstream of HEAD to %s when it does not point to any branch."
@@ -6217,37 +6607,37 @@ msgstr ""
 "no se pudo configurar upstream de HEAD a %s cuando este no apunta a ninguna "
 "rama."
 
-#: builtin/branch.c:769 builtin/branch.c:791 builtin/branch.c:807
+#: builtin/branch.c:772 builtin/branch.c:794 builtin/branch.c:810
 #, c-format
 msgid "no such branch '%s'"
 msgstr "no hay tal rama '%s'"
 
-#: builtin/branch.c:773
+#: builtin/branch.c:776
 #, c-format
 msgid "branch '%s' does not exist"
 msgstr "la rama '%s' no existe"
 
-#: builtin/branch.c:785
+#: builtin/branch.c:788
 msgid "too many arguments to unset upstream"
 msgstr "demasiados argumentos para desconfigurar upstream"
 
-#: builtin/branch.c:789
+#: builtin/branch.c:792
 msgid "could not unset upstream of HEAD when it does not point to any branch."
 msgstr ""
 "no se puede desconfigurar upstream de HEAD cuando este no apunta a ninguna "
 "rama."
 
-#: builtin/branch.c:795
+#: builtin/branch.c:798
 #, c-format
 msgid "Branch '%s' has no upstream information"
 msgstr "Rama '%s' no tiene información de upstream"
 
-#: builtin/branch.c:810
+#: builtin/branch.c:813
 msgid "-a and -r options to 'git branch' do not make sense with a branch name"
 msgstr ""
 "opciones -a y -r para 'git branch' no tienen sentido con un nombre de rama"
 
-#: builtin/branch.c:813
+#: builtin/branch.c:816
 msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
@@ -6268,7 +6658,7 @@ msgstr "Se necesita un repositorio para agrupar."
 msgid "Need a repository to unbundle."
 msgstr "Se necesita un repositorio para desagrupar."
 
-#: builtin/cat-file.c:523
+#: builtin/cat-file.c:525
 msgid ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <type> | --textconv | --filters) [--path=<path>] <object>"
@@ -6276,7 +6666,7 @@ msgstr ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <tipo> | --textconv | --filters) [--path=<ruta>] <objeto>"
 
-#: builtin/cat-file.c:524
+#: builtin/cat-file.c:526
 msgid ""
 "git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
 "filters]"
@@ -6284,64 +6674,64 @@ msgstr ""
 "git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
 "filters]"
 
-#: builtin/cat-file.c:561
+#: builtin/cat-file.c:563
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr "<tipo> puede ser: blob, tree, commit, tag"
 
-#: builtin/cat-file.c:562
+#: builtin/cat-file.c:564
 msgid "show object type"
 msgstr "mostrar el tipo del objeto"
 
-#: builtin/cat-file.c:563
+#: builtin/cat-file.c:565
 msgid "show object size"
 msgstr "mostrar el tamaño del objeto"
 
-#: builtin/cat-file.c:565
+#: builtin/cat-file.c:567
 msgid "exit with zero when there's no error"
 msgstr "salir con cero cuando no haya error"
 
-#: builtin/cat-file.c:566
+#: builtin/cat-file.c:568
 msgid "pretty-print object's content"
 msgstr "realizar pretty-print del contenido del objeto"
 
-#: builtin/cat-file.c:568
+#: builtin/cat-file.c:570
 msgid "for blob objects, run textconv on object's content"
 msgstr "para objetos blob, ejecuta textconv en el contenido del objeto"
 
-#: builtin/cat-file.c:570
+#: builtin/cat-file.c:572
 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:571 git-submodule.sh:878
+#: builtin/cat-file.c:573 git-submodule.sh:894
 msgid "blob"
 msgstr "blob"
 
-#: builtin/cat-file.c:572
+#: builtin/cat-file.c:574
 msgid "use a specific path for --textconv/--filters"
 msgstr "use una ruta específica para --textconv/--filters"
 
-#: builtin/cat-file.c:574
+#: builtin/cat-file.c:576
 msgid "allow -s and -t to work with broken/corrupt objects"
 msgstr "permita -s y -t para trabajar con objetos rotos o corruptos"
 
-#: builtin/cat-file.c:575
+#: builtin/cat-file.c:577
 msgid "buffer --batch output"
 msgstr "salida buffer --batch"
 
-#: builtin/cat-file.c:577
+#: builtin/cat-file.c:579
 msgid "show info and content of objects fed from the standard input"
 msgstr "mostrar info y content de los objetos alimentados por standard input"
 
-#: builtin/cat-file.c:580
+#: builtin/cat-file.c:582
 msgid "show info about objects fed from the standard input"
 msgstr "mostrar info de los objetos alimentados por standard input"
 
-#: builtin/cat-file.c:583
+#: builtin/cat-file.c:585
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
 msgstr ""
 "seguir los enlaces simbólicos en el árbol (usado con --batch o --batch-check)"
 
-#: builtin/cat-file.c:585
+#: builtin/cat-file.c:587
 msgid "show all objects with --batch or --batch-check"
 msgstr "mostrar todos los objetos con --batch o --batch-check"
 
@@ -6369,7 +6759,7 @@ msgstr "leer nombres de archivos de stdin"
 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:20 builtin/checkout.c:1106 builtin/gc.c:358
+#: builtin/check-ignore.c:20 builtin/checkout.c:1113 builtin/gc.c:500
 msgid "suppress progress reporting"
 msgstr "suprimir el reporte de progreso"
 
@@ -6461,9 +6851,9 @@ msgid "write the content to temporary files"
 msgstr "escribir el contenido en un archivo temporal"
 
 #: builtin/checkout-index.c:173 builtin/column.c:31
-#: builtin/submodule--helper.c:1203 builtin/submodule--helper.c:1206
-#: builtin/submodule--helper.c:1212 builtin/submodule--helper.c:1574
-#: builtin/worktree.c:570
+#: builtin/submodule--helper.c:1216 builtin/submodule--helper.c:1219
+#: builtin/submodule--helper.c:1227 builtin/submodule--helper.c:1591
+#: builtin/worktree.c:610
 msgid "string"
 msgstr "string"
 
@@ -6534,54 +6924,54 @@ msgstr "No se puede actualizar rutas y cambiar a la rama '%s' al mismo tiempo."
 msgid "path '%s' is unmerged"
 msgstr "ruta '%s' no esta fusionada"
 
-#: builtin/checkout.c:505
+#: builtin/checkout.c:506
 msgid "you need to resolve your current index first"
 msgstr "necesita resolver su índice actual primero"
 
-#: builtin/checkout.c:636
+#: builtin/checkout.c:643
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "No se puede hacer reflog para '%s': %s\n"
 
-#: builtin/checkout.c:677
+#: builtin/checkout.c:684
 msgid "HEAD is now at"
 msgstr "HEAD está ahora en"
 
-#: builtin/checkout.c:681 builtin/clone.c:689
+#: builtin/checkout.c:688 builtin/clone.c:691
 msgid "unable to update HEAD"
 msgstr "no es posible actualizar  HEAD"
 
-#: builtin/checkout.c:685
+#: builtin/checkout.c:692
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Reiniciar rama '%s'\n"
 
-#: builtin/checkout.c:688
+#: builtin/checkout.c:695
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Ya en '%s'\n"
 
-#: builtin/checkout.c:692
+#: builtin/checkout.c:699
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Rama reiniciada y cambiada a '%s'\n"
 
-#: builtin/checkout.c:694 builtin/checkout.c:1039
+#: builtin/checkout.c:701 builtin/checkout.c:1046
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Cambiado a nueva rama '%s'\n"
 
-#: builtin/checkout.c:696
+#: builtin/checkout.c:703
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Cambiado a rama '%s'\n"
 
-#: builtin/checkout.c:747
+#: builtin/checkout.c:754
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... y %d más.\n"
 
-#: builtin/checkout.c:753
+#: builtin/checkout.c:760
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -6604,7 +6994,7 @@ msgstr[1] ""
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:772
+#: builtin/checkout.c:779
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -6631,160 +7021,160 @@ msgstr[1] ""
 " git branch <nombre-de-rama> %s\n"
 "\n"
 
-#: builtin/checkout.c:804
+#: builtin/checkout.c:811
 msgid "internal error in revision walk"
 msgstr "error interno en camino de revisión"
 
-#: builtin/checkout.c:808
+#: builtin/checkout.c:815
 msgid "Previous HEAD position was"
 msgstr "La posición previa de HEAD era"
 
-#: builtin/checkout.c:836 builtin/checkout.c:1034
+#: builtin/checkout.c:843 builtin/checkout.c:1041
 msgid "You are on a branch yet to be born"
 msgstr "Estás en una rama por nacer"
 
-#: builtin/checkout.c:940
+#: builtin/checkout.c:947
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "solo una referencia esperada, %d entregadas."
 
-#: builtin/checkout.c:980 builtin/worktree.c:249
+#: builtin/checkout.c:987 builtin/worktree.c:240 builtin/worktree.c:389
 #, c-format
 msgid "invalid reference: %s"
 msgstr "referencia invalida: %s"
 
-#: builtin/checkout.c:1009
+#: builtin/checkout.c:1016
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "la referencia no es n árbol: %s"
 
-#: builtin/checkout.c:1048
+#: builtin/checkout.c:1055
 msgid "paths cannot be used with switching branches"
 msgstr "rutas no pueden ser usadas con cambios de rama"
 
-#: builtin/checkout.c:1051 builtin/checkout.c:1055
+#: builtin/checkout.c:1058 builtin/checkout.c:1062
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "'%s' no puede ser usado con cambios de ramas"
 
-#: builtin/checkout.c:1059 builtin/checkout.c:1062 builtin/checkout.c:1067
-#: builtin/checkout.c:1070
+#: builtin/checkout.c:1066 builtin/checkout.c:1069 builtin/checkout.c:1074
+#: builtin/checkout.c:1077
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' no puede ser usado con '%s'"
 
-#: builtin/checkout.c:1075
+#: builtin/checkout.c:1082
 #, 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:1107 builtin/checkout.c:1109 builtin/clone.c:116
-#: builtin/remote.c:166 builtin/remote.c:168 builtin/worktree.c:387
-#: builtin/worktree.c:389
+#: builtin/checkout.c:1114 builtin/checkout.c:1116 builtin/clone.c:118
+#: builtin/remote.c:167 builtin/remote.c:169 builtin/worktree.c:433
+#: builtin/worktree.c:435
 msgid "branch"
 msgstr "rama"
 
-#: builtin/checkout.c:1108
+#: builtin/checkout.c:1115
 msgid "create and checkout a new branch"
 msgstr "crear y hacer checkout a una nueva rama"
 
-#: builtin/checkout.c:1110
+#: builtin/checkout.c:1117
 msgid "create/reset and checkout a branch"
 msgstr "crear/reiniciar y hacer checkout a una rama"
 
-#: builtin/checkout.c:1111
+#: builtin/checkout.c:1118
 msgid "create reflog for new branch"
 msgstr "crear un reflog para una nueva rama"
 
-#: builtin/checkout.c:1112 builtin/worktree.c:391
+#: builtin/checkout.c:1119 builtin/worktree.c:437
 msgid "detach HEAD at named commit"
 msgstr "desacoplar HEAD en el commit nombrado"
 
-#: builtin/checkout.c:1113
+#: builtin/checkout.c:1120
 msgid "set upstream info for new branch"
 msgstr "configurar info de upstream para una rama nueva"
 
-#: builtin/checkout.c:1115
+#: builtin/checkout.c:1122
 msgid "new-branch"
 msgstr "nueva-rama"
 
-#: builtin/checkout.c:1115
+#: builtin/checkout.c:1122
 msgid "new unparented branch"
 msgstr "nueva rama no emparentada"
 
-#: builtin/checkout.c:1116
+#: builtin/checkout.c:1123
 msgid "checkout our version for unmerged files"
 msgstr "hacer checkout a  nuestra versión para archivos sin fusionar"
 
-#: builtin/checkout.c:1118
+#: builtin/checkout.c:1125
 msgid "checkout their version for unmerged files"
 msgstr "hacer checkout a su versión para los archivos sin fusionar"
 
-#: builtin/checkout.c:1120
+#: builtin/checkout.c:1127
 msgid "force checkout (throw away local modifications)"
 msgstr "forzar el checkout (descartar modificaciones locales)"
 
-#: builtin/checkout.c:1122
+#: builtin/checkout.c:1129
 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:1124 builtin/merge.c:239
+#: builtin/checkout.c:1131 builtin/merge.c:241
 msgid "update ignored files (default)"
 msgstr "actualizar archivos ignorados (default)"
 
-#: builtin/checkout.c:1126 builtin/log.c:1499 parse-options.h:263
+#: builtin/checkout.c:1133 builtin/log.c:1499 parse-options.h:264
 msgid "style"
 msgstr "estilo"
 
-#: builtin/checkout.c:1127
+#: builtin/checkout.c:1134
 msgid "conflict style (merge or diff3)"
 msgstr "conflicto de estilos (merge o diff3)"
 
-#: builtin/checkout.c:1130
+#: builtin/checkout.c:1137
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "no limitar pathspecs a dispersar entradas solamente"
 
-#: builtin/checkout.c:1132
+#: builtin/checkout.c:1139
 msgid "second guess 'git checkout <no-such-branch>'"
 msgstr "segunda opción 'git checkout <no-hay-tal-rama>'"
 
-#: builtin/checkout.c:1134
+#: builtin/checkout.c:1141
 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:1138 builtin/clone.c:83 builtin/fetch.c:150
-#: builtin/merge.c:236 builtin/pull.c:123 builtin/push.c:556
-#: builtin/send-pack.c:173
+#: builtin/checkout.c:1145 builtin/clone.c:85 builtin/fetch.c:149
+#: builtin/merge.c:238 builtin/pull.c:128 builtin/push.c:572
+#: builtin/send-pack.c:174
 msgid "force progress reporting"
 msgstr "forzar el reporte de progreso"
 
-#: builtin/checkout.c:1168
+#: builtin/checkout.c:1175
 msgid "-b, -B and --orphan are mutually exclusive"
 msgstr "-b, -B y --orphan son mutuamente exclusivas"
 
-#: builtin/checkout.c:1185
+#: builtin/checkout.c:1192
 msgid "--track needs a branch name"
 msgstr "--track necesita el nombre de una rama"
 
-#: builtin/checkout.c:1190
+#: builtin/checkout.c:1197
 msgid "Missing branch name; try -b"
 msgstr "Falta nombre de rama; prueba -b"
 
-#: builtin/checkout.c:1226
+#: builtin/checkout.c:1233
 msgid "invalid path specification"
 msgstr "especificación de ruta invalida"
 
-#: builtin/checkout.c:1233
+#: builtin/checkout.c:1240
 #, 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:1237
+#: builtin/checkout.c:1244
 #, 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:1241
+#: builtin/checkout.c:1248
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -6821,9 +7211,9 @@ msgstr "Se saltara repositorio %s\n"
 #: builtin/clean.c:34
 #, c-format
 msgid "failed to remove %s"
-msgstr "fallo al borrar %s"
+msgstr "falló al borrar %s"
 
-#: builtin/clean.c:302 git-add--interactive.perl:572
+#: builtin/clean.c:302 git-add--interactive.perl:579
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -6836,7 +7226,7 @@ msgstr ""
 "foo        - selecciona un objeto basado en un prefijo único\n"
 "           - (vacío) no elegir nada\n"
 
-#: builtin/clean.c:306 git-add--interactive.perl:581
+#: builtin/clean.c:306 git-add--interactive.perl:588
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -6857,8 +7247,8 @@ msgstr ""
 "*          - escoger todos los objetos\n"
 "           - (vacío) terminar selección\n"
 
-#: builtin/clean.c:522 git-add--interactive.perl:547
-#: git-add--interactive.perl:552
+#: builtin/clean.c:522 git-add--interactive.perl:554
+#: git-add--interactive.perl:559
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "Ahh (%s)?\n"
@@ -6883,7 +7273,7 @@ msgstr "Seleccionar objetos para borrar"
 msgid "Remove %s [y/N]? "
 msgstr "Borrar %s [y/N]? "
 
-#: builtin/clean.c:788 git-add--interactive.perl:1710
+#: builtin/clean.c:788 git-add--interactive.perl:1717
 #, c-format
 msgid "Bye.\n"
 msgstr "Adiós.\n"
@@ -6906,11 +7296,11 @@ msgstr ""
 "help                - esta ventana\n"
 "?                   - ayuda para selección de opciones"
 
-#: builtin/clean.c:823 git-add--interactive.perl:1786
+#: builtin/clean.c:823 git-add--interactive.perl:1793
 msgid "*** Commands ***"
 msgstr "*** Comandos ***"
 
-#: builtin/clean.c:824 git-add--interactive.perl:1783
+#: builtin/clean.c:824 git-add--interactive.perl:1790
 msgid "What now"
 msgstr "Ahora que"
 
@@ -6979,144 +7369,146 @@ msgstr ""
 "clean.requireForce default en true y ninguno -i, -n, ni -f entregados; "
 "rehusando el clean"
 
-#: builtin/clone.c:40
+#: builtin/clone.c:42
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr "git clone [<opciones>] [--] <repo> [<directorio>]"
 
-#: builtin/clone.c:85
+#: builtin/clone.c:87
 msgid "don't create a checkout"
 msgstr "no crear checkout"
 
-#: builtin/clone.c:86 builtin/clone.c:88 builtin/init-db.c:479
+#: builtin/clone.c:88 builtin/clone.c:90 builtin/init-db.c:479
 msgid "create a bare repository"
 msgstr "crear un repositorio vacío"
 
-#: builtin/clone.c:90
+#: builtin/clone.c:92
 msgid "create a mirror repository (implies bare)"
 msgstr "crear un repositorio espejo (implica vacío)"
 
-#: builtin/clone.c:92
+#: builtin/clone.c:94
 msgid "to clone from a local repository"
 msgstr "clonar de un repositorio local"
 
-#: builtin/clone.c:94
+#: builtin/clone.c:96
 msgid "don't use local hardlinks, always copy"
 msgstr "no usar hardlinks, siempre copiar"
 
-#: builtin/clone.c:96
+#: builtin/clone.c:98
 msgid "setup as shared repository"
 msgstr "configurar como repositorio compartido"
 
-#: builtin/clone.c:98 builtin/clone.c:102
+#: builtin/clone.c:100 builtin/clone.c:104
 msgid "pathspec"
 msgstr "pathspec"
 
-#: builtin/clone.c:98 builtin/clone.c:102
+#: builtin/clone.c:100 builtin/clone.c:104
 msgid "initialize submodules in the clone"
 msgstr "inicializar submódulos en el clonado"
 
-#: builtin/clone.c:105
+#: builtin/clone.c:107
 msgid "number of submodules cloned in parallel"
 msgstr "numero de submódulos clonados en paralelo"
 
-#: builtin/clone.c:106 builtin/init-db.c:476
+#: builtin/clone.c:108 builtin/init-db.c:476
 msgid "template-directory"
 msgstr "directorio-template"
 
-#: builtin/clone.c:107 builtin/init-db.c:477
+#: builtin/clone.c:109 builtin/init-db.c:477
 msgid "directory from which templates will be used"
 msgstr "directorio del cual los templates serán usados"
 
-#: builtin/clone.c:109 builtin/clone.c:111 builtin/submodule--helper.c:1210
-#: builtin/submodule--helper.c:1577
+#: builtin/clone.c:111 builtin/clone.c:113 builtin/submodule--helper.c:1223
+#: builtin/submodule--helper.c:1594
 msgid "reference repository"
 msgstr "repositorio de referencia"
 
-#: builtin/clone.c:113
+#: builtin/clone.c:115 builtin/submodule--helper.c:1225
+#: builtin/submodule--helper.c:1596
 msgid "use --reference only while cloning"
 msgstr "usa--reference  solamente si estas clonado"
 
-#: builtin/clone.c:114 builtin/column.c:27 builtin/merge-file.c:44
+#: builtin/clone.c:116 builtin/column.c:27 builtin/merge-file.c:44
+#: builtin/pack-objects.c:3166 builtin/repack.c:213
 msgid "name"
 msgstr "nombre"
 
-#: builtin/clone.c:115
+#: builtin/clone.c:117
 msgid "use <name> instead of 'origin' to track upstream"
 msgstr "use <nombre> en lugar de 'origin' para rastrear upstream"
 
-#: builtin/clone.c:117
+#: builtin/clone.c:119
 msgid "checkout <branch> instead of the remote's HEAD"
 msgstr "checkout <rama> en lugar de HEAD remota"
 
-#: builtin/clone.c:119
+#: builtin/clone.c:121
 msgid "path to git-upload-pack on the remote"
 msgstr "ruta para git-upload-pack en el remoto"
 
-#: builtin/clone.c:120 builtin/fetch.c:151 builtin/grep.c:813
-#: builtin/pull.c:211
+#: builtin/clone.c:122 builtin/fetch.c:150 builtin/grep.c:813
+#: builtin/pull.c:216
 msgid "depth"
 msgstr "profundidad"
 
-#: builtin/clone.c:121
+#: builtin/clone.c:123
 msgid "create a shallow clone of that depth"
 msgstr "crear un clon superficial para esa profundidad"
 
-#: builtin/clone.c:122 builtin/fetch.c:153 builtin/pack-objects.c:3017
+#: builtin/clone.c:124 builtin/fetch.c:152 builtin/pack-objects.c:3157
 #: parse-options.h:154
 msgid "time"
 msgstr "tiempo"
 
-#: builtin/clone.c:123
+#: builtin/clone.c:125
 msgid "create a shallow clone since a specific time"
 msgstr "crear un clon superficial desde el tiempo específico"
 
-#: builtin/clone.c:124 builtin/fetch.c:155
+#: builtin/clone.c:126 builtin/fetch.c:154
 msgid "revision"
 msgstr "revision"
 
-#: builtin/clone.c:125 builtin/fetch.c:156
+#: builtin/clone.c:127 builtin/fetch.c:155
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "ahondando historia de clon superficial, excluyendo rev"
 
-#: builtin/clone.c:127
+#: builtin/clone.c:129
 msgid "clone only one branch, HEAD or --branch"
 msgstr "clonar solo una rama,HEAD o --branch"
 
-#: builtin/clone.c:129
+#: builtin/clone.c:131
 msgid "don't clone any tags, and make later fetches not to follow them"
 msgstr "no clonar ningún tag, y hacer que los subsiguientes fetch no los sigan"
 
-#: builtin/clone.c:131
+#: builtin/clone.c:133
 msgid "any cloned submodules will be shallow"
 msgstr "cualquier submódulo clonado será superficial"
 
-#: builtin/clone.c:132 builtin/init-db.c:485
+#: builtin/clone.c:134 builtin/init-db.c:485
 msgid "gitdir"
 msgstr "gitdir"
 
-#: builtin/clone.c:133 builtin/init-db.c:486
+#: builtin/clone.c:135 builtin/init-db.c:486
 msgid "separate git dir from working tree"
 msgstr "separa git dir del árbol de trabajo"
 
-#: builtin/clone.c:134
+#: builtin/clone.c:136
 msgid "key=value"
 msgstr "llave=valor"
 
-#: builtin/clone.c:135
+#: builtin/clone.c:137
 msgid "set config inside the new repository"
 msgstr "configurar config dentro del nuevo repositorio"
 
-#: builtin/clone.c:136 builtin/fetch.c:173 builtin/pull.c:224
-#: builtin/push.c:567
+#: builtin/clone.c:138 builtin/fetch.c:173 builtin/pull.c:229
+#: builtin/push.c:583
 msgid "use IPv4 addresses only"
 msgstr "solo usar direcciones IPv4"
 
-#: builtin/clone.c:138 builtin/fetch.c:175 builtin/pull.c:227
-#: builtin/push.c:569
+#: builtin/clone.c:140 builtin/fetch.c:175 builtin/pull.c:232
+#: builtin/push.c:585
 msgid "use IPv6 addresses only"
 msgstr "solo usar direcciones IPv6"
 
-#: builtin/clone.c:276
+#: builtin/clone.c:278
 msgid ""
 "No directory name could be guessed.\n"
 "Please specify a directory on the command line"
@@ -7124,42 +7516,42 @@ msgstr ""
 "No se pudo adivinar ningún nombre de directorio.\n"
 "Por favor especifique un directorio en la línea de comando"
 
-#: builtin/clone.c:329
+#: builtin/clone.c:331
 #, c-format
 msgid "info: Could not add alternate for '%s': %s\n"
 msgstr "info: No se pudo agregar un alterno para '%s': %s\n"
 
-#: builtin/clone.c:401
+#: builtin/clone.c:403
 #, c-format
 msgid "failed to open '%s'"
-msgstr "fallo al abrir '%s'"
+msgstr "falló al abrir '%s'"
 
-#: builtin/clone.c:409
+#: builtin/clone.c:411
 #, c-format
 msgid "%s exists and is not a directory"
 msgstr "%s existe pero no es un directorio"
 
-#: builtin/clone.c:423
+#: builtin/clone.c:425
 #, c-format
 msgid "failed to stat %s\n"
 msgstr "falló al analizar %s\n"
 
-#: builtin/clone.c:445
+#: builtin/clone.c:447
 #, c-format
 msgid "failed to create link '%s'"
-msgstr "fallo al crear link '%s'"
+msgstr "falló al crear link '%s'"
 
-#: builtin/clone.c:449
+#: builtin/clone.c:451
 #, c-format
 msgid "failed to copy file to '%s'"
-msgstr "fallo al copiar archivo a '%s'"
+msgstr "falló al copiar archivo a '%s'"
 
-#: builtin/clone.c:475
+#: builtin/clone.c:477
 #, c-format
 msgid "done.\n"
 msgstr "hecho.\n"
 
-#: builtin/clone.c:489
+#: builtin/clone.c:491
 msgid ""
 "Clone succeeded, but checkout failed.\n"
 "You can inspect what was checked out with 'git status'\n"
@@ -7169,100 +7561,100 @@ msgstr ""
 "Puede inspeccionar a qué se hizo checkout con 'git status'\n"
 "y volver a intentarlo con 'git checkout -f HEAD'\n"
 
-#: builtin/clone.c:566
+#: builtin/clone.c:568
 #, c-format
 msgid "Could not find remote branch %s to clone."
 msgstr "No se pudo encontrar la rama remota %s para clonar."
 
-#: builtin/clone.c:661
+#: builtin/clone.c:663
 msgid "remote did not send all necessary objects"
 msgstr "remoto no mando todos los objetos necesarios"
 
-#: builtin/clone.c:677
+#: builtin/clone.c:679
 #, c-format
 msgid "unable to update %s"
 msgstr "incapaz de actualizar %s"
 
-#: builtin/clone.c:726
+#: builtin/clone.c:728
 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
 msgstr ""
 "remoto HEAD refiere a un ref inexistente, no se puede hacer checkout.\n"
 
-#: builtin/clone.c:756
+#: builtin/clone.c:758
 msgid "unable to checkout working tree"
 msgstr "no es posible realizar checkout en el árbol de trabajo"
 
-#: builtin/clone.c:801
+#: builtin/clone.c:803
 msgid "unable to write parameters to config file"
 msgstr "no es posible escribir parámetros al archivo config"
 
-#: builtin/clone.c:864
+#: builtin/clone.c:866
 msgid "cannot repack to clean up"
 msgstr "no se puede reempaquetar para limpiar"
 
-#: builtin/clone.c:866
+#: builtin/clone.c:868
 msgid "cannot unlink temporary alternates file"
 msgstr "no se puede desvincular archivos alternos temporales"
 
-#: builtin/clone.c:906 builtin/receive-pack.c:1946
+#: builtin/clone.c:907 builtin/receive-pack.c:1947
 msgid "Too many arguments."
 msgstr "Muchos argumentos."
 
-#: builtin/clone.c:910
+#: builtin/clone.c:911
 msgid "You must specify a repository to clone."
 msgstr "Tienes que especificar un repositorio para clonar."
 
-#: builtin/clone.c:923
+#: builtin/clone.c:924
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr "Las opciones --bare y --origin %s son incompatibles."
 
-#: builtin/clone.c:926
+#: builtin/clone.c:927
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "--bare y --separate-git-dir son incompatibles."
 
-#: builtin/clone.c:939
+#: builtin/clone.c:940
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "repositorio '%s' no existe"
 
-#: builtin/clone.c:945 builtin/fetch.c:1455
+#: builtin/clone.c:946 builtin/fetch.c:1460
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "profundidad %s no es un numero positivo"
 
-#: builtin/clone.c:955
+#: builtin/clone.c:956
 #, 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:965
+#: builtin/clone.c:966
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "directorio de trabajo '%s' ya existe."
 
-#: builtin/clone.c:980 builtin/clone.c:1001 builtin/difftool.c:270
-#: builtin/worktree.c:255 builtin/worktree.c:285
+#: builtin/clone.c:981 builtin/clone.c:1002 builtin/difftool.c:270
+#: builtin/worktree.c:246 builtin/worktree.c:276
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "no se pudo crear directorios principales de '%s'"
 
-#: builtin/clone.c:985
+#: builtin/clone.c:986
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "no se pudo crear un árbol de trabajo '%s'"
 
-#: builtin/clone.c:1005
+#: builtin/clone.c:1006
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "Clonando en un repositorio vacío '%s'...\n"
 
-#: builtin/clone.c:1007
+#: builtin/clone.c:1008
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Clonando en '%s'...\n"
 
-#: builtin/clone.c:1031
+#: builtin/clone.c:1032
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
@@ -7331,7 +7723,7 @@ msgstr "Realizando padding en el borde derecho"
 msgid "Padding space between columns"
 msgstr "Realizando padding entre columnas"
 
-#: builtin/column.c:52
+#: builtin/column.c:51
 msgid "--command must be the first argument"
 msgstr "--command debe ser el primer argumento"
 
@@ -7388,61 +7780,61 @@ msgstr ""
 "Luego \"git cherry-pick --continue\" continuara el cherry-picking\n"
 "para los commits restantes.\n"
 
-#: builtin/commit.c:284
+#: builtin/commit.c:293
 msgid "failed to unpack HEAD tree object"
-msgstr "fallo al desempaquetar objeto del árbol HEAD"
+msgstr "falló al desempaquetar objeto del árbol HEAD"
 
-#: builtin/commit.c:325
+#: builtin/commit.c:334
 msgid "unable to create temporary index"
 msgstr "no es posible crear un índice temporal"
 
-#: builtin/commit.c:331
+#: builtin/commit.c:340
 msgid "interactive add failed"
 msgstr "adición interactiva fallida"
 
-#: builtin/commit.c:344
+#: builtin/commit.c:353
 msgid "unable to update temporary index"
 msgstr "no es posible actualizar el índice temporal"
 
-#: builtin/commit.c:346
+#: builtin/commit.c:355
 msgid "Failed to update main cache tree"
-msgstr "Fallo al actualizar el cache principal del árbol"
+msgstr "Falló al actualizar el cache principal del árbol"
 
-#: builtin/commit.c:371 builtin/commit.c:395 builtin/commit.c:444
+#: builtin/commit.c:380 builtin/commit.c:403 builtin/commit.c:449
 msgid "unable to write new_index file"
 msgstr "no es posible escribir archivo new_index"
 
-#: builtin/commit.c:427
+#: builtin/commit.c:432
 msgid "cannot do a partial commit during a merge."
 msgstr "no se puede realizar un commit parcial durante una fusión."
 
-#: builtin/commit.c:429
+#: builtin/commit.c:434
 msgid "cannot do a partial commit during a cherry-pick."
 msgstr "no se puede realizar un commit parcial durante un cherry-pick."
 
-#: builtin/commit.c:437
+#: builtin/commit.c:442
 msgid "cannot read the index"
 msgstr "no se puede leer el índice"
 
-#: builtin/commit.c:456
+#: builtin/commit.c:461
 msgid "unable to write temporary index file"
 msgstr "no es posible escribir el índice temporal"
 
-#: builtin/commit.c:553
+#: builtin/commit.c:558
 #, c-format
 msgid "commit '%s' lacks author header"
 msgstr "commit '%s' requiere cabecera de autor"
 
-#: builtin/commit.c:555
+#: builtin/commit.c:560
 #, c-format
 msgid "commit '%s' has malformed author line"
 msgstr "el commit '%s' tiene una línea de autor mal formada"
 
-#: builtin/commit.c:574
+#: builtin/commit.c:579
 msgid "malformed --author parameter"
 msgstr "parámetro --author mal formado"
 
-#: builtin/commit.c:626
+#: builtin/commit.c:631
 msgid ""
 "unable to select a comment character that is not used\n"
 "in the current commit message"
@@ -7450,38 +7842,38 @@ msgstr ""
 "no es posible seleccionar un carácter de comentario que no es usado\n"
 "en el mensaje de commit actual"
 
-#: builtin/commit.c:663 builtin/commit.c:696 builtin/commit.c:1024
+#: builtin/commit.c:668 builtin/commit.c:701 builtin/commit.c:1029
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "no se pudo revisar el commit %s"
 
-#: builtin/commit.c:675 builtin/shortlog.c:309
+#: builtin/commit.c:680 builtin/shortlog.c:316
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(leyendo mensajes de logs desde standard input)\n"
 
-#: builtin/commit.c:677
+#: builtin/commit.c:682
 msgid "could not read log from standard input"
 msgstr "no se pudo leer log desde standard input"
 
-#: builtin/commit.c:681
+#: builtin/commit.c:686
 #, c-format
 msgid "could not read log file '%s'"
 msgstr "no se pudo leer el log '%s'"
 
-#: builtin/commit.c:710 builtin/commit.c:718
+#: builtin/commit.c:715 builtin/commit.c:723
 msgid "could not read SQUASH_MSG"
 msgstr "no se pudo leer SQUASH_MSG"
 
-#: builtin/commit.c:715
+#: builtin/commit.c:720
 msgid "could not read MERGE_MSG"
 msgstr "no se pudo leer MERGE_MSG"
 
-#: builtin/commit.c:769
+#: builtin/commit.c:774
 msgid "could not write commit template"
 msgstr "no se pudo escribir el template del commit"
 
-#: builtin/commit.c:787
+#: builtin/commit.c:792
 #, c-format
 msgid ""
 "\n"
@@ -7496,7 +7888,7 @@ msgstr ""
 "\t%s\n"
 "y vuelve a intentar.\n"
 
-#: builtin/commit.c:792
+#: builtin/commit.c:797
 #, c-format
 msgid ""
 "\n"
@@ -7511,7 +7903,7 @@ msgstr ""
 "\t%s\n"
 "y vuelva a intentar.\n"
 
-#: builtin/commit.c:805
+#: builtin/commit.c:810
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -7521,7 +7913,7 @@ msgstr ""
 "comiencen\n"
 "con '%c' serán ignoradas, y un mensaje vacío aborta el commit.\n"
 
-#: builtin/commit.c:813
+#: builtin/commit.c:818
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -7533,150 +7925,150 @@ msgstr ""
 "con '%c' serán guardadas; puede removerlas usted mismo si desea.\n"
 "Un mensaje vacío aborta el commit.\n"
 
-#: builtin/commit.c:830
+#: builtin/commit.c:835
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr "%sAutor:     %.*s <%.*s>"
 
-#: builtin/commit.c:838
+#: builtin/commit.c:843
 #, c-format
 msgid "%sDate:      %s"
 msgstr "%sFecha:     %s"
 
-#: builtin/commit.c:845
+#: builtin/commit.c:850
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr "%sCommitter: %.*s <%.*s>"
 
-#: builtin/commit.c:862
+#: builtin/commit.c:867
 msgid "Cannot read index"
 msgstr "No se puede leer el índice"
 
-#: builtin/commit.c:928
+#: builtin/commit.c:933
 msgid "Error building trees"
 msgstr "Error al construir los árboles"
 
-#: builtin/commit.c:942 builtin/tag.c:256
+#: builtin/commit.c:947 builtin/tag.c:257
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "Por favor suministra el mensaje usando las opciones -m o -F.\n"
 
-#: builtin/commit.c:986
+#: builtin/commit.c:991
 #, c-format
 msgid "--author '%s' is not 'Name <email>' and matches no existing author"
 msgstr ""
 "--author '%s' no está en el formato 'Name <email>' y no concuerda con ningún "
 "autor existente"
 
-#: builtin/commit.c:1000
+#: builtin/commit.c:1005
 #, c-format
 msgid "Invalid ignored mode '%s'"
 msgstr "Modo ignorado inválido '%s'"
 
-#: builtin/commit.c:1014 builtin/commit.c:1264
+#: builtin/commit.c:1019 builtin/commit.c:1269
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "Modo inválido de los archivos no rastreados '%s'"
 
-#: builtin/commit.c:1052
+#: builtin/commit.c:1057
 msgid "--long and -z are incompatible"
 msgstr "--long y -z son incompatibles"
 
-#: builtin/commit.c:1085
+#: builtin/commit.c:1090
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "Usar ambos --reset-author y --author no tiene sentido"
 
-#: builtin/commit.c:1094
+#: builtin/commit.c:1099
 msgid "You have nothing to amend."
 msgstr "No tienes nada que enmendar."
 
-#: builtin/commit.c:1097
+#: builtin/commit.c:1102
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr "Estás en medio de una fusión -- no puedes enmendar."
 
-#: builtin/commit.c:1099
+#: builtin/commit.c:1104
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr "Está en medio de un cherry-pick -- no se puede enmendar."
 
-#: builtin/commit.c:1102
+#: builtin/commit.c:1107
 msgid "Options --squash and --fixup cannot be used together"
 msgstr "Opciones --squash y --fixup no pueden ser usadas juntas"
 
-#: builtin/commit.c:1112
+#: builtin/commit.c:1117
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "Solo uno de -c/-C/-F/--fixup puede ser usado."
 
-#: builtin/commit.c:1114
+#: builtin/commit.c:1119
 msgid "Option -m cannot be combined with -c/-C/-F."
 msgstr "La opción -m no puede ser combinada con -c/-C/-F."
 
-#: builtin/commit.c:1122
+#: builtin/commit.c:1127
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr "--reset-author sólo puede ser usada con -C, -c o --amend."
 
-#: builtin/commit.c:1139
+#: builtin/commit.c:1144
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr ""
 "Solo uno de --include/--only/--all/--interactive/--patch puede ser usado."
 
-#: builtin/commit.c:1141
+#: builtin/commit.c:1146
 msgid "No paths with --include/--only does not make sense."
 msgstr "No hay rutas con --include/--only no tiene sentido."
 
-#: builtin/commit.c:1155 builtin/tag.c:542
+#: builtin/commit.c:1160 builtin/tag.c:543
 #, c-format
 msgid "Invalid cleanup mode %s"
 msgstr "Modo cleanup invalido %s"
 
-#: builtin/commit.c:1160
+#: builtin/commit.c:1165
 msgid "Paths with -a does not make sense."
 msgstr "Rutas con -a no tiene sentido."
 
-#: builtin/commit.c:1278 builtin/commit.c:1443
+#: builtin/commit.c:1303 builtin/commit.c:1480
 msgid "show status concisely"
 msgstr "mostrar status de manera concisa"
 
-#: builtin/commit.c:1280 builtin/commit.c:1445
+#: builtin/commit.c:1305 builtin/commit.c:1482
 msgid "show branch information"
 msgstr "mostrar información de la rama"
 
-#: builtin/commit.c:1282
+#: builtin/commit.c:1307
 msgid "show stash information"
 msgstr "mostrar información del stash"
 
-#: builtin/commit.c:1284 builtin/commit.c:1447
+#: builtin/commit.c:1309 builtin/commit.c:1484
 msgid "compute full ahead/behind values"
 msgstr "calcular todos los valores delante/atrás"
 
-#: builtin/commit.c:1286
+#: builtin/commit.c:1311
 msgid "version"
 msgstr "version"
 
-#: builtin/commit.c:1286 builtin/commit.c:1449 builtin/push.c:542
-#: builtin/worktree.c:541
+#: builtin/commit.c:1311 builtin/commit.c:1486 builtin/push.c:558
+#: builtin/worktree.c:581
 msgid "machine-readable output"
 msgstr "output formato-maquina"
 
-#: builtin/commit.c:1289 builtin/commit.c:1451
+#: builtin/commit.c:1314 builtin/commit.c:1488
 msgid "show status in long format (default)"
 msgstr "mostrar status en formato largo (default)"
 
-#: builtin/commit.c:1292 builtin/commit.c:1454
+#: builtin/commit.c:1317 builtin/commit.c:1491
 msgid "terminate entries with NUL"
 msgstr "terminar entradas con NUL"
 
-#: builtin/commit.c:1294 builtin/commit.c:1298 builtin/commit.c:1457
-#: builtin/fast-export.c:999 builtin/fast-export.c:1002 builtin/tag.c:396
+#: builtin/commit.c:1319 builtin/commit.c:1323 builtin/commit.c:1494
+#: builtin/fast-export.c:1001 builtin/fast-export.c:1004 builtin/tag.c:397
 msgid "mode"
 msgstr "modo"
 
-#: builtin/commit.c:1295 builtin/commit.c:1457
+#: builtin/commit.c:1320 builtin/commit.c:1494
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr ""
 "mostrar archivos sin seguimiento, modos opcionales: all, normal, no. "
 "(Predeterminado: all)"
 
-#: builtin/commit.c:1299
+#: builtin/commit.c:1324
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
@@ -7684,11 +8076,11 @@ msgstr ""
 "mostrar archivos ignorados, modos opcionales: traditional, matching, no. "
 "(Predeterminado: traditional)"
 
-#: builtin/commit.c:1301 parse-options.h:167
+#: builtin/commit.c:1326 parse-options.h:167
 msgid "when"
 msgstr "cuando"
 
-#: builtin/commit.c:1302
+#: builtin/commit.c:1327
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
@@ -7696,187 +8088,195 @@ msgstr ""
 "ignorar cambios en submódulos, opcional cuando: all,dirty,untracked. "
 "(Default: all)"
 
-#: builtin/commit.c:1304
+#: builtin/commit.c:1329
 msgid "list untracked files in columns"
 msgstr "listar en columnas los archivos sin seguimiento"
 
-#: builtin/commit.c:1323
+#: builtin/commit.c:1330
+msgid "do not detect renames"
+msgstr "no detectar renombrados"
+
+#: builtin/commit.c:1332
+msgid "detect renames, optionally set similarity index"
+msgstr "detectar renombres, opcionalmente configurar similaridad de índice"
+
+#: builtin/commit.c:1352
 msgid "Unsupported combination of ignored and untracked-files arguments"
 msgstr ""
 "Combinación de argumentos de archivos ignorados y no rastreados no soportada"
 
-#: builtin/commit.c:1413
+#: builtin/commit.c:1450
 msgid "suppress summary after successful commit"
 msgstr "suprime summary tras un commit exitoso"
 
-#: builtin/commit.c:1414
+#: builtin/commit.c:1451
 msgid "show diff in commit message template"
 msgstr "mostrar diff en el template del mensaje de commit"
 
-#: builtin/commit.c:1416
+#: builtin/commit.c:1453
 msgid "Commit message options"
 msgstr "Opciones para el mensaje del commit"
 
-#: builtin/commit.c:1417 builtin/tag.c:393
+#: builtin/commit.c:1454 builtin/tag.c:394
 msgid "read message from file"
 msgstr "leer mensaje desde un archivo"
 
-#: builtin/commit.c:1418
+#: builtin/commit.c:1455
 msgid "author"
 msgstr "autor"
 
-#: builtin/commit.c:1418
+#: builtin/commit.c:1455
 msgid "override author for commit"
 msgstr "sobrescribe el autor del commit"
 
-#: builtin/commit.c:1419 builtin/gc.c:359
+#: builtin/commit.c:1456 builtin/gc.c:501
 msgid "date"
 msgstr "fecha"
 
-#: builtin/commit.c:1419
+#: builtin/commit.c:1456
 msgid "override date for commit"
 msgstr "sobrescribe la fecha del commit"
 
-#: builtin/commit.c:1420 builtin/merge.c:226 builtin/notes.c:402
-#: builtin/notes.c:565 builtin/tag.c:391
+#: builtin/commit.c:1457 builtin/merge.c:228 builtin/notes.c:402
+#: builtin/notes.c:565 builtin/tag.c:392
 msgid "message"
 msgstr "mensaje"
 
-#: builtin/commit.c:1420
+#: builtin/commit.c:1457
 msgid "commit message"
 msgstr "mensaje del commit"
 
-#: builtin/commit.c:1421 builtin/commit.c:1422 builtin/commit.c:1423
-#: builtin/commit.c:1424 parse-options.h:269 ref-filter.h:92
+#: builtin/commit.c:1458 builtin/commit.c:1459 builtin/commit.c:1460
+#: builtin/commit.c:1461 parse-options.h:270 ref-filter.h:92
 msgid "commit"
 msgstr "confirmar"
 
-#: builtin/commit.c:1421
+#: builtin/commit.c:1458
 msgid "reuse and edit message from specified commit"
 msgstr "reusar y editar el mensaje de un commit especifico"
 
-#: builtin/commit.c:1422
+#: builtin/commit.c:1459
 msgid "reuse message from specified commit"
 msgstr "reusar el mensaje de un commit especifico"
 
-#: builtin/commit.c:1423
+#: builtin/commit.c:1460
 msgid "use autosquash formatted message to fixup specified commit"
 msgstr ""
 "usar mensaje de formato autosquash para arreglar el commit especificado"
 
-#: builtin/commit.c:1424
+#: builtin/commit.c:1461
 msgid "use autosquash formatted message to squash specified commit"
 msgstr ""
 "usar el mensaje de formato autosquash para realizar squash  al commit "
 "especificado"
 
-#: builtin/commit.c:1425
+#: builtin/commit.c:1462
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr "el autor del commit soy yo ahora (usado con -C/-c/--amend)"
 
-#: builtin/commit.c:1426 builtin/log.c:1446 builtin/merge.c:240
-#: builtin/pull.c:149 builtin/revert.c:105
+#: builtin/commit.c:1463 builtin/log.c:1446 builtin/merge.c:242
+#: builtin/pull.c:154 builtin/revert.c:105
 msgid "add Signed-off-by:"
 msgstr "agregar Signed-off-by: (firmado por)"
 
-#: builtin/commit.c:1427
+#: builtin/commit.c:1464
 msgid "use specified template file"
 msgstr "usar archivo de template especificado"
 
-#: builtin/commit.c:1428
+#: builtin/commit.c:1465
 msgid "force edit of commit"
 msgstr "forzar la edición del commit"
 
-#: builtin/commit.c:1429
+#: builtin/commit.c:1466
 msgid "default"
 msgstr "default"
 
-#: builtin/commit.c:1429 builtin/tag.c:397
+#: builtin/commit.c:1466 builtin/tag.c:398
 msgid "how to strip spaces and #comments from message"
 msgstr "cómo quitar espacios y #comentarios de mensajes"
 
-#: builtin/commit.c:1430
+#: builtin/commit.c:1467
 msgid "include status in commit message template"
 msgstr "incluir status en el template del mensaje de commit"
 
-#: builtin/commit.c:1432 builtin/merge.c:238 builtin/pull.c:179
+#: builtin/commit.c:1469 builtin/merge.c:240 builtin/pull.c:184
 #: builtin/revert.c:113
 msgid "GPG sign commit"
 msgstr "Firmar commit con GPG"
 
-#: builtin/commit.c:1435
+#: builtin/commit.c:1472
 msgid "Commit contents options"
 msgstr "Opciones para el contenido del commit"
 
-#: builtin/commit.c:1436
+#: builtin/commit.c:1473
 msgid "commit all changed files"
 msgstr "confirmar todos los archivos cambiados"
 
-#: builtin/commit.c:1437
+#: builtin/commit.c:1474
 msgid "add specified files to index for commit"
 msgstr "agregar archivos específicos al índice para confirmar"
 
-#: builtin/commit.c:1438
+#: builtin/commit.c:1475
 msgid "interactively add files"
 msgstr "agregar archivos interactivamente"
 
-#: builtin/commit.c:1439
+#: builtin/commit.c:1476
 msgid "interactively add changes"
 msgstr "agregar cambios interactivamente"
 
-#: builtin/commit.c:1440
+#: builtin/commit.c:1477
 msgid "commit only specified files"
 msgstr "sólo confirmar archivos específicos"
 
-#: builtin/commit.c:1441
+#: builtin/commit.c:1478
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr "evitar los capturadores (hooks) de pre-commit y commit-msg"
 
-#: builtin/commit.c:1442
+#: builtin/commit.c:1479
 msgid "show what would be committed"
 msgstr "mostrar lo que sería incluido en el commit"
 
-#: builtin/commit.c:1455
+#: builtin/commit.c:1492
 msgid "amend previous commit"
 msgstr "enmendar commit previo"
 
-#: builtin/commit.c:1456
+#: builtin/commit.c:1493
 msgid "bypass post-rewrite hook"
 msgstr "gancho bypass post reescritura"
 
-#: builtin/commit.c:1461
+#: builtin/commit.c:1498
 msgid "ok to record an empty change"
 msgstr "ok al grabar un cambio vacío"
 
-#: builtin/commit.c:1463
+#: builtin/commit.c:1500
 msgid "ok to record a change with an empty message"
 msgstr "ok al grabar un cambio con un mensaje vacío"
 
-#: builtin/commit.c:1536
+#: builtin/commit.c:1573
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "Archivo MERGE_HEAD (%s) corrupto"
 
-#: builtin/commit.c:1543
+#: builtin/commit.c:1580
 msgid "could not read MERGE_MODE"
 msgstr "no se pudo leer MERGE_MODE"
 
-#: builtin/commit.c:1562
+#: builtin/commit.c:1599
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "no se pudo leer el mensaje de commit: %s"
 
-#: builtin/commit.c:1573
+#: builtin/commit.c:1610
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr "Abortando commit debido que el mensaje está en blanco.\n"
 
-#: builtin/commit.c:1578
+#: builtin/commit.c:1615
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr "Abortando commit; no se ha editado el mensaje\n"
 
-#: builtin/commit.c:1613
+#: builtin/commit.c:1650
 msgid ""
 "Repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full and quota is\n"
@@ -7886,148 +8286,212 @@ msgstr ""
 "new_index. Verifique que el disco no este lleno y la quota no ha\n"
 "sido superada, y luego \"git reset HEAD\" para recuperar."
 
+#: builtin/commit-graph.c:9
+msgid "git commit-graph [--object-dir <objdir>]"
+msgstr "git commit-graph [--object-dir <objdir>]"
+
+#: builtin/commit-graph.c:10 builtin/commit-graph.c:16
+msgid "git commit-graph read [--object-dir <objdir>]"
+msgstr "git commit-graph read [--object-dir <objdir>]"
+
+#: builtin/commit-graph.c:11 builtin/commit-graph.c:21
+msgid ""
+"git commit-graph write [--object-dir <objdir>] [--append] [--stdin-packs|--"
+"stdin-commits]"
+msgstr ""
+"git commit-graph write [--object-dir <objdir>] [--append] [--stdin-packs|--"
+"stdin-commits]"
+
+#: builtin/commit-graph.c:39 builtin/commit-graph.c:92
+#: builtin/commit-graph.c:147 builtin/fetch.c:161 builtin/log.c:1466
+msgid "dir"
+msgstr "dir"
+
+#: builtin/commit-graph.c:40 builtin/commit-graph.c:93
+#: builtin/commit-graph.c:148
+msgid "The object directory to store the graph"
+msgstr "El directorio de objetos para guardar el gráfico"
+
+#: builtin/commit-graph.c:95
+msgid "scan pack-indexes listed by stdin for commits"
+msgstr "escanear paquete de índices por stdin por commits"
+
+#: builtin/commit-graph.c:97
+msgid "start walk at commits listed by stdin"
+msgstr "comenzar a caminar a los commits listados por stdin"
+
+#: builtin/commit-graph.c:99
+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:108
+msgid "cannot use both --stdin-commits and --stdin-packs"
+msgstr "no se pueden usar ambos --stdin-commits y --stdin-packs"
+
 #: builtin/config.c:10
 msgid "git config [<options>]"
 msgstr "git config [<opciones>]"
 
-#: builtin/config.c:58
+#: builtin/config.c:101
+#, c-format
+msgid "unrecognized --type argument, %s"
+msgstr "argumento --type no reconocido, %s"
+
+#: builtin/config.c:123
 msgid "Config file location"
 msgstr "Ubicación del archivo configuración"
 
-#: builtin/config.c:59
+#: builtin/config.c:124
 msgid "use global config file"
 msgstr "usar archivo de config global"
 
-#: builtin/config.c:60
+#: builtin/config.c:125
 msgid "use system config file"
 msgstr "usar archivo de config del sistema"
 
-#: builtin/config.c:61
+#: builtin/config.c:126
 msgid "use repository config file"
 msgstr "usar archivo de config del repositorio"
 
-#: builtin/config.c:62
+#: builtin/config.c:127
 msgid "use given config file"
 msgstr "usar archivo config especificado"
 
-#: builtin/config.c:63
+#: builtin/config.c:128
 msgid "blob-id"
 msgstr "blob-id"
 
-#: builtin/config.c:63
+#: builtin/config.c:128
 msgid "read config from given blob object"
 msgstr "leer config del objeto blob suministrado"
 
-#: builtin/config.c:64
+#: builtin/config.c:129
 msgid "Action"
 msgstr "Acción"
 
-#: builtin/config.c:65
+#: builtin/config.c:130
 msgid "get value: name [value-regex]"
 msgstr "obtener valor: nombre [valor-regex]"
 
-#: builtin/config.c:66
+#: builtin/config.c:131
 msgid "get all values: key [value-regex]"
 msgstr "obtener todos los valores: llave [valores-regex]"
 
-#: builtin/config.c:67
+#: builtin/config.c:132
 msgid "get values for regexp: name-regex [value-regex]"
 msgstr "obtener valores para una regexp: nombre-regex [valor-regex]"
 
-#: builtin/config.c:68
+#: builtin/config.c:133
 msgid "get value specific for the URL: section[.var] URL"
 msgstr "obtener valor especifico para el URL: sección[.var] URL"
 
-#: builtin/config.c:69
+#: builtin/config.c:134
 msgid "replace all matching variables: name value [value_regex]"
 msgstr ""
 "remplazar todas las variables que concuerden: nombre valor [valor_regex]"
 
-#: builtin/config.c:70
+#: builtin/config.c:135
 msgid "add a new variable: name value"
 msgstr "agregar nueva variable: nombre valor"
 
-#: builtin/config.c:71
+#: builtin/config.c:136
 msgid "remove a variable: name [value-regex]"
 msgstr "borrar una variable. nombre [valor-regex]"
 
-#: builtin/config.c:72
+#: builtin/config.c:137
 msgid "remove all matches: name [value-regex]"
 msgstr "borrar todas las concurrencias: nombre [valor-regex]"
 
-#: builtin/config.c:73
+#: builtin/config.c:138
 msgid "rename section: old-name new-name"
 msgstr "renombrar sección: nombre-viejo nombre-nuevo"
 
-#: builtin/config.c:74
+#: builtin/config.c:139
 msgid "remove a section: name"
 msgstr "borrar una sección: nombre"
 
-#: builtin/config.c:75
+#: builtin/config.c:140
 msgid "list all"
 msgstr "listar todo"
 
-#: builtin/config.c:76
+#: builtin/config.c:141
 msgid "open an editor"
 msgstr "abrir el editor"
 
-#: builtin/config.c:77
+#: builtin/config.c:142
 msgid "find the color configured: slot [default]"
 msgstr "encontrar el color configurado: slot [default]"
 
-#: builtin/config.c:78
+#: builtin/config.c:143
 msgid "find the color setting: slot [stdout-is-tty]"
 msgstr "encontrar las opciones del color: slot [stdout-es-tty]"
 
-#: builtin/config.c:79
+#: builtin/config.c:144
 msgid "Type"
 msgstr "Tipo"
 
-#: builtin/config.c:80
+#: builtin/config.c:145
+msgid "value is given this type"
+msgstr "al valor se ha dado este tipo"
+
+#: builtin/config.c:146
 msgid "value is \"true\" or \"false\""
 msgstr "valor es \"true\" o \"false\""
 
-#: builtin/config.c:81
+#: builtin/config.c:147
 msgid "value is decimal number"
 msgstr "valor es un numero decimal"
 
-#: builtin/config.c:82
+#: builtin/config.c:148
 msgid "value is --bool or --int"
 msgstr "valor es --bool o --int"
 
-#: builtin/config.c:83
+#: builtin/config.c:149
 msgid "value is a path (file or directory name)"
 msgstr "valor es una ruta (archivo o nombre de directorio)"
 
-#: builtin/config.c:84
+#: builtin/config.c:150
 msgid "value is an expiry date"
 msgstr "valor es una fecha de expiración"
 
-#: builtin/config.c:85
+#: builtin/config.c:151
 msgid "Other"
 msgstr "Otro"
 
-#: builtin/config.c:86
+#: builtin/config.c:152
 msgid "terminate values with NUL byte"
 msgstr "terminar valores con un byte NULL"
 
-#: builtin/config.c:87
+#: builtin/config.c:153
 msgid "show variable names only"
 msgstr "mostrar solo nombres de variables"
 
-#: builtin/config.c:88
+#: builtin/config.c:154
 msgid "respect include directives on lookup"
 msgstr "respetar directivas include en la búsqueda"
 
-#: builtin/config.c:89
+#: builtin/config.c:155
 msgid "show origin of config (file, standard input, blob, command line)"
 msgstr "mostrar el origen de configuración (archivo, stdin, blob, comando)"
 
-#: builtin/config.c:335
+#: builtin/config.c:156
+msgid "value"
+msgstr "valor"
+
+#: builtin/config.c:156
+msgid "with --get, use default value when missing entry"
+msgstr "con --get, usa el valor por defecto cuando falta una entrada"
+
+#: builtin/config.c:332
+#, c-format
+msgid "failed to format default config value: %s"
+msgstr "falló al formatear el valor por defecto de configuración: %s"
+
+#: builtin/config.c:431
 msgid "unable to parse default color value"
 msgstr "no es posible analizar el valor por defecto de color"
 
-#: builtin/config.c:479
+#: builtin/config.c:575
 #, c-format
 msgid ""
 "# This is Git's per-user configuration file.\n"
@@ -8042,16 +8506,20 @@ msgstr ""
 "#\tname = %s\n"
 "#\temail = %s\n"
 
-#: builtin/config.c:507
+#: builtin/config.c:603
 msgid "--local can only be used inside a git repository"
 msgstr "--local solo puedo ser usado dentro de un repositorio"
 
-#: builtin/config.c:632
+#: builtin/config.c:606
+msgid "--blob can only be used inside a git repository"
+msgstr "--blob solo puede ser usado dentro de un repositorio"
+
+#: builtin/config.c:735
 #, c-format
 msgid "cannot create configuration file %s"
 msgstr "no se puede crear el archivo de configuración %s"
 
-#: builtin/config.c:645
+#: builtin/config.c:748
 #, c-format
 msgid ""
 "cannot overwrite multiple values with a single value\n"
@@ -8060,11 +8528,11 @@ msgstr ""
 "no se puede sobrescribir múltiples valores con un único valor\n"
 "\tUse una regexp, --add o --replace-all para cambiar %s."
 
-#: builtin/count-objects.c:88
+#: builtin/count-objects.c:90
 msgid "git count-objects [-v] [-H | --human-readable]"
 msgstr "git count-objects [-v] [-H | --human-readable]"
 
-#: builtin/count-objects.c:98
+#: builtin/count-objects.c:100
 msgid "print sizes in human readable format"
 msgstr "mostrar tamaños en formato legible para humano"
 
@@ -8328,24 +8796,24 @@ msgstr "realizar un diff de todo el directorio"
 msgid "do not prompt before launching a diff tool"
 msgstr "no mostrar antes de lanzar una herramienta de diff"
 
-#: builtin/difftool.c:705
+#: builtin/difftool.c:704
 msgid "use symlinks in dir-diff mode"
 msgstr "usar enlaces simbólicos en modo dir-diff"
 
-#: builtin/difftool.c:706
+#: builtin/difftool.c:705
 msgid "<tool>"
 msgstr "<herramienta>"
 
-#: builtin/difftool.c:707
+#: builtin/difftool.c:706
 msgid "use the specified diff tool"
 msgstr "usar la herramienta de diff especificada"
 
-#: builtin/difftool.c:709
+#: builtin/difftool.c:708
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr ""
 "mostrar una lista de herramientas de diff que pueden ser usadas con `--tool`"
 
-#: builtin/difftool.c:712
+#: builtin/difftool.c:711
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
@@ -8353,169 +8821,165 @@ msgstr ""
 "hacer que 'git-difftool' salga cuando una herramienta de diff retorne un "
 "código de salida distinto de cero"
 
-#: builtin/difftool.c:714
+#: builtin/difftool.c:713
 msgid "<command>"
 msgstr "<comando>"
 
-#: builtin/difftool.c:715
+#: builtin/difftool.c:714
 msgid "specify a custom command for viewing diffs"
 msgstr "especificar un comando personalizado para ver diffs"
 
-#: builtin/difftool.c:739
+#: builtin/difftool.c:738
 msgid "no <tool> given for --tool=<tool>"
 msgstr "no se ha proporcionado <herramienta> para --tool=<herramienta>"
 
-#: builtin/difftool.c:746
+#: builtin/difftool.c:745
 msgid "no <cmd> given for --extcmd=<cmd>"
 msgstr "no se ha entregado <comando> para --extcmd=<comando>"
 
-#: builtin/fast-export.c:26
+#: builtin/fast-export.c:27
 msgid "git fast-export [rev-list-opts]"
 msgstr "git fast-export [rev-list-opts]"
 
-#: builtin/fast-export.c:998
+#: builtin/fast-export.c:1000
 msgid "show progress after <n> objects"
 msgstr "mostrar progreso después de <n> objetos"
 
-#: builtin/fast-export.c:1000
+#: builtin/fast-export.c:1002
 msgid "select handling of signed tags"
 msgstr "seleccionar el manejo de tags firmados"
 
-#: builtin/fast-export.c:1003
+#: builtin/fast-export.c:1005
 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:1006
+#: builtin/fast-export.c:1008
 msgid "Dump marks to this file"
 msgstr "Volcar marcas a este archivo"
 
-#: builtin/fast-export.c:1008
+#: builtin/fast-export.c:1010
 msgid "Import marks from this file"
 msgstr "Importar marcas de este archivo"
 
-#: builtin/fast-export.c:1010
+#: builtin/fast-export.c:1012
 msgid "Fake a tagger when tags lack one"
 msgstr "Falsificar un tagger cuando les falta uno"
 
-#: builtin/fast-export.c:1012
+#: builtin/fast-export.c:1014
 msgid "Output full tree for each commit"
 msgstr "Mostrar todo el árbol para cada commit"
 
-#: builtin/fast-export.c:1014
+#: builtin/fast-export.c:1016
 msgid "Use the done feature to terminate the stream"
 msgstr "Use el feature done para terminar el stream"
 
-#: builtin/fast-export.c:1015
+#: builtin/fast-export.c:1017
 msgid "Skip output of blob data"
 msgstr "Saltar el output de data blob"
 
-#: builtin/fast-export.c:1016
+#: builtin/fast-export.c:1018
 msgid "refspec"
 msgstr "refspec"
 
-#: builtin/fast-export.c:1017
+#: builtin/fast-export.c:1019
 msgid "Apply refspec to exported refs"
 msgstr "Aplicar refspec para los refs exportados"
 
-#: builtin/fast-export.c:1018
+#: builtin/fast-export.c:1020
 msgid "anonymize output"
 msgstr "anonimizar la salida"
 
-#: builtin/fetch.c:25
+#: builtin/fetch.c:26
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
 msgstr "git fetch [<opciones>] [<repositorio> [<refspec>...]]"
 
-#: builtin/fetch.c:26
+#: builtin/fetch.c:27
 msgid "git fetch [<options>] <group>"
 msgstr "git fetch [<opciones>] <grupo>"
 
-#: builtin/fetch.c:27
+#: builtin/fetch.c:28
 msgid "git fetch --multiple [<options>] [(<repository> | <group>)...]"
 msgstr "git fetch --multiple [<opciones>] [(<repositorio> | <grupo>)...]"
 
-#: builtin/fetch.c:28
+#: builtin/fetch.c:29
 msgid "git fetch --all [<options>]"
 msgstr "git fetch --all [<opciones>]"
 
-#: builtin/fetch.c:124 builtin/pull.c:188
+#: builtin/fetch.c:123 builtin/pull.c:193
 msgid "fetch from all remotes"
 msgstr "extraer de todos los remotos"
 
-#: builtin/fetch.c:126 builtin/pull.c:191
+#: builtin/fetch.c:125 builtin/pull.c:196
 msgid "append to .git/FETCH_HEAD instead of overwriting"
 msgstr "adjuntar a .git/FETCH_HEAD en lugar de sobrescribir"
 
-#: builtin/fetch.c:128 builtin/pull.c:194
+#: builtin/fetch.c:127 builtin/pull.c:199
 msgid "path to upload pack on remote end"
 msgstr "ruta para cargar el paquete al final del remoto"
 
-#: builtin/fetch.c:129 builtin/pull.c:196
+#: builtin/fetch.c:128 builtin/pull.c:201
 msgid "force overwrite of local branch"
 msgstr "forzar sobrescritura de la rama local"
 
-#: builtin/fetch.c:131
+#: builtin/fetch.c:130
 msgid "fetch from multiple remotes"
 msgstr "extraer de múltiples remotos"
 
-#: builtin/fetch.c:133 builtin/pull.c:198
+#: builtin/fetch.c:132 builtin/pull.c:203
 msgid "fetch all tags and associated objects"
 msgstr "extraer todos los tags y objetos asociados"
 
-#: builtin/fetch.c:135
+#: builtin/fetch.c:134
 msgid "do not fetch all tags (--no-tags)"
 msgstr "no extraer todos los tags (--no-tags)"
 
-#: builtin/fetch.c:137
+#: builtin/fetch.c:136
 msgid "number of submodules fetched in parallel"
 msgstr "número de submódulos extraídos en paralelo"
 
-#: builtin/fetch.c:139 builtin/pull.c:201
+#: builtin/fetch.c:138 builtin/pull.c:206
 msgid "prune remote-tracking branches no longer on remote"
 msgstr "limpiar ramas remotas rastreadas que ya no están en el remoto"
 
-#: builtin/fetch.c:141
+#: builtin/fetch.c:140
 msgid "prune local tags no longer on remote and clobber changed tags"
 msgstr ""
 "limpiar tags locales que no se encuentran en el remoto y eliminar tags "
 "cambiados"
 
-#: builtin/fetch.c:142 builtin/fetch.c:165 builtin/pull.c:126
+#: builtin/fetch.c:141 builtin/fetch.c:164 builtin/pull.c:131
 msgid "on-demand"
 msgstr "en demanda"
 
-#: builtin/fetch.c:143
+#: builtin/fetch.c:142
 msgid "control recursive fetching of submodules"
 msgstr "controlar extracción recursiva de submódulos"
 
-#: builtin/fetch.c:147 builtin/pull.c:209
+#: builtin/fetch.c:146 builtin/pull.c:214
 msgid "keep downloaded pack"
 msgstr "mantener el paquete descargado"
 
-#: builtin/fetch.c:149
+#: builtin/fetch.c:148
 msgid "allow updating of HEAD ref"
 msgstr "permitir actualizar la ref HEAD"
 
-#: builtin/fetch.c:152 builtin/fetch.c:158 builtin/pull.c:212
+#: builtin/fetch.c:151 builtin/fetch.c:157 builtin/pull.c:217
 msgid "deepen history of shallow clone"
 msgstr "historia profunda de un clon superficial"
 
-#: builtin/fetch.c:154
+#: builtin/fetch.c:153
 msgid "deepen history of shallow repository based on time"
 msgstr "historia profunda de un repositorio superficial basado en tiempo"
 
-#: builtin/fetch.c:160 builtin/pull.c:215
+#: builtin/fetch.c:159 builtin/pull.c:220
 msgid "convert to a complete repository"
 msgstr "convertir a un repositorio completo"
 
-#: builtin/fetch.c:162 builtin/log.c:1466
-msgid "dir"
-msgstr "dir"
-
-#: builtin/fetch.c:163
+#: builtin/fetch.c:162
 msgid "prepend this to submodule path output"
 msgstr "anteponer esto a salida de la ruta del submódulo"
 
-#: builtin/fetch.c:166
+#: builtin/fetch.c:165
 msgid ""
 "default for recursive fetching of submodules (lower priority than config "
 "files)"
@@ -8523,89 +8987,99 @@ msgstr ""
 "default para extracción recursiva de submódulos (menor prioridad que "
 "archivos de configuración)"
 
-#: builtin/fetch.c:170 builtin/pull.c:218
+#: builtin/fetch.c:169 builtin/pull.c:223
 msgid "accept refs that update .git/shallow"
 msgstr "aceptar refs que actualicen .git/shallow"
 
-#: builtin/fetch.c:171 builtin/pull.c:220
+#: builtin/fetch.c:170 builtin/pull.c:225
 msgid "refmap"
 msgstr "refmap"
 
-#: builtin/fetch.c:172 builtin/pull.c:221
+#: builtin/fetch.c:171 builtin/pull.c:226
 msgid "specify fetch refmap"
 msgstr "especificar extracción de refmap"
 
-#: builtin/fetch.c:431
+#: builtin/fetch.c:172 builtin/ls-remote.c:77 builtin/push.c:582
+#: builtin/send-pack.c:172
+msgid "server-specific"
+msgstr "especifico-de-servidor"
+
+#: builtin/fetch.c:172 builtin/ls-remote.c:77 builtin/push.c:582
+#: builtin/send-pack.c:173
+msgid "option to transmit"
+msgstr "opción para trasmitir"
+
+#: builtin/fetch.c:442
 msgid "Couldn't find remote ref HEAD"
 msgstr "No se puedo encontrar ref remota HEAD"
 
-#: builtin/fetch.c:549
+#: builtin/fetch.c:560
 #, c-format
 msgid "configuration fetch.output contains invalid value %s"
 msgstr "la configuración fetch.output contiene el valor inválido %s"
 
-#: builtin/fetch.c:642
+#: builtin/fetch.c:653
 #, c-format
 msgid "object %s not found"
 msgstr "objeto %s no encontrado"
 
-#: builtin/fetch.c:646
+#: builtin/fetch.c:657
 msgid "[up to date]"
 msgstr "[actualizado]"
 
-#: builtin/fetch.c:659 builtin/fetch.c:739
+#: builtin/fetch.c:670 builtin/fetch.c:750
 msgid "[rejected]"
 msgstr "[rechazado]"
 
-#: builtin/fetch.c:660
+#: builtin/fetch.c:671
 msgid "can't fetch in current branch"
 msgstr "no se puede traer en la rama actual"
 
-#: builtin/fetch.c:669
+#: builtin/fetch.c:680
 msgid "[tag update]"
 msgstr "[actualización de tag]"
 
-#: builtin/fetch.c:670 builtin/fetch.c:703 builtin/fetch.c:719
-#: builtin/fetch.c:734
+#: builtin/fetch.c:681 builtin/fetch.c:714 builtin/fetch.c:730
+#: builtin/fetch.c:745
 msgid "unable to update local ref"
 msgstr "no se posible actualizar el ref local"
 
-#: builtin/fetch.c:689
+#: builtin/fetch.c:700
 msgid "[new tag]"
 msgstr "[nuevo tag]"
 
-#: builtin/fetch.c:692
+#: builtin/fetch.c:703
 msgid "[new branch]"
 msgstr "[nueva rama]"
 
-#: builtin/fetch.c:695
+#: builtin/fetch.c:706
 msgid "[new ref]"
 msgstr "[nueva referencia]"
 
-#: builtin/fetch.c:734
+#: builtin/fetch.c:745
 msgid "forced update"
 msgstr "actualización forzada"
 
-#: builtin/fetch.c:739
+#: builtin/fetch.c:750
 msgid "non-fast-forward"
 msgstr "avance lento"
 
-#: builtin/fetch.c:784
+#: builtin/fetch.c:795
 #, c-format
 msgid "%s did not send all necessary objects\n"
 msgstr "%s no envió todos los objetos necesarios\n"
 
-#: builtin/fetch.c:804
+#: builtin/fetch.c:815
 #, c-format
 msgid "reject %s because shallow roots are not allowed to be updated"
 msgstr "rechazado %s porque raíces superficiales no pueden ser actualizadas"
 
-#: builtin/fetch.c:892 builtin/fetch.c:988
+#: builtin/fetch.c:903 builtin/fetch.c:999
 #, c-format
 msgid "From %.*s\n"
 msgstr "Desde %.*s\n"
 
-#: builtin/fetch.c:903
+#: builtin/fetch.c:914
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
@@ -8614,56 +9088,56 @@ msgstr ""
 "algunos refs locales no pudieron ser actualizados; intente ejecutar\n"
 " 'git remote prune %s' para remover cualquier rama vieja o conflictiva"
 
-#: builtin/fetch.c:958
+#: builtin/fetch.c:969
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr "   (%s se pondrá colgado)"
 
-#: builtin/fetch.c:959
+#: builtin/fetch.c:970
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr "   (%s se ha colgado)"
 
-#: builtin/fetch.c:991
+#: builtin/fetch.c:1002
 msgid "[deleted]"
 msgstr "[eliminado]"
 
-#: builtin/fetch.c:992 builtin/remote.c:1024
+#: builtin/fetch.c:1003 builtin/remote.c:1033
 msgid "(none)"
 msgstr "(nada)"
 
-#: builtin/fetch.c:1015
+#: builtin/fetch.c:1026
 #, c-format
 msgid "Refusing to fetch into current branch %s of non-bare repository"
 msgstr "Rehusando extraer en la rama actual %s de un repositorio no vacío"
 
-#: builtin/fetch.c:1034
+#: builtin/fetch.c:1045
 #, c-format
 msgid "Option \"%s\" value \"%s\" is not valid for %s"
 msgstr "Opción \"%s\" valor \"%s\" no es válido para %s"
 
-#: builtin/fetch.c:1037
+#: builtin/fetch.c:1048
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr "Opción \"%s\" es ignorada por %s\n"
 
-#: builtin/fetch.c:1277
+#: builtin/fetch.c:1287
 #, c-format
 msgid "Fetching %s\n"
 msgstr "Extrayendo %s\n"
 
-#: builtin/fetch.c:1279 builtin/remote.c:97
+#: builtin/fetch.c:1289 builtin/remote.c:98
 #, c-format
 msgid "Could not fetch %s"
 msgstr "No se pudo extraer %s"
 
-#: builtin/fetch.c:1325 builtin/fetch.c:1498
+#: builtin/fetch.c:1335 builtin/fetch.c:1503
 msgid ""
 "--filter can only be used with the remote configured in core.partialClone"
 msgstr ""
 "--filter solo puede ser usado con el remoto configurado en core.partialClone"
 
-#: builtin/fetch.c:1350
+#: builtin/fetch.c:1358
 msgid ""
 "No remote repository specified.  Please, specify either a URL or a\n"
 "remote name from which new revisions should be fetched."
@@ -8671,40 +9145,40 @@ msgstr ""
 "No hay repositorio remoto especificado. Por favor, especifique un URL o un\n"
 "nombre remoto del cual las nuevas revisiones deben ser extraídas."
 
-#: builtin/fetch.c:1394
+#: builtin/fetch.c:1395
 msgid "You need to specify a tag name."
 msgstr "Tiene que especificar un nombre de tag."
 
-#: builtin/fetch.c:1439
+#: builtin/fetch.c:1444
 msgid "Negative depth in --deepen is not supported"
 msgstr "Profundidad negativa en --deepen no soportada"
 
-#: builtin/fetch.c:1441
+#: builtin/fetch.c:1446
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen y --depth son mutuamente exclusivas"
 
-#: builtin/fetch.c:1446
+#: builtin/fetch.c:1451
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth y --unshallow no pueden ser usadas juntas"
 
-#: builtin/fetch.c:1448
+#: builtin/fetch.c:1453
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "--unshallow no tiene sentido en un repositorio completo"
 
-#: builtin/fetch.c:1464
+#: builtin/fetch.c:1469
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all no toma un argumento de repositorio"
 
-#: builtin/fetch.c:1466
+#: builtin/fetch.c:1471
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all no tiene sentido con refspecs"
 
-#: builtin/fetch.c:1475
+#: builtin/fetch.c:1480
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "No existe el remoto o grupo remoto: %s"
 
-#: builtin/fetch.c:1482
+#: builtin/fetch.c:1487
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "Extraer un grupo y especificar un refspecs no tiene sentido"
 
@@ -8770,7 +9244,7 @@ msgstr "cite los marcadores de posición adecuadamente para Tcl"
 msgid "show only <n> matched refs"
 msgstr "mostrar solo <n> refs encontradas"
 
-#: builtin/for-each-ref.c:39 builtin/tag.c:420
+#: builtin/for-each-ref.c:39 builtin/tag.c:421
 msgid "respect format colors"
 msgstr "respetar el formato de colores"
 
@@ -8794,81 +9268,81 @@ msgstr "mostrar solo refs que contienen el commit"
 msgid "print only refs which don't contain the commit"
 msgstr "mostrar solo refs que no contienen el commit"
 
-#: builtin/fsck.c:568
+#: builtin/fsck.c:569
 msgid "Checking object directories"
 msgstr "Revisando objetos directorios"
 
-#: builtin/fsck.c:660
+#: builtin/fsck.c:661
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<opciones>] [<objeto>...]"
 
-#: builtin/fsck.c:666
+#: builtin/fsck.c:667
 msgid "show unreachable objects"
 msgstr "mostrar objetos ilegibles"
 
-#: builtin/fsck.c:667
+#: builtin/fsck.c:668
 msgid "show dangling objects"
 msgstr "mostrar objetos colgados"
 
-#: builtin/fsck.c:668
+#: builtin/fsck.c:669
 msgid "report tags"
 msgstr "reportar tags"
 
-#: builtin/fsck.c:669
+#: builtin/fsck.c:670
 msgid "report root nodes"
 msgstr "reportar nodos raíz"
 
-#: builtin/fsck.c:670
+#: builtin/fsck.c:671
 msgid "make index objects head nodes"
 msgstr "hacer objetos índices cabezas de nodos"
 
-#: builtin/fsck.c:671
+#: builtin/fsck.c:672
 msgid "make reflogs head nodes (default)"
 msgstr "hacer reflogs cabeza de nodos (default)"
 
-#: builtin/fsck.c:672
+#: builtin/fsck.c:673
 msgid "also consider packs and alternate objects"
 msgstr "también considerar paquetes y objetos alternos"
 
-#: builtin/fsck.c:673
+#: builtin/fsck.c:674
 msgid "check only connectivity"
 msgstr "revisar solo conectividad"
 
-#: builtin/fsck.c:674
+#: builtin/fsck.c:675
 msgid "enable more strict checking"
 msgstr "habilitar revisión más estricta"
 
-#: builtin/fsck.c:676
+#: builtin/fsck.c:677
 msgid "write dangling objects in .git/lost-found"
 msgstr "escribir objetos colgados en .git/lost-found"
 
-#: builtin/fsck.c:677 builtin/prune.c:108
+#: builtin/fsck.c:678 builtin/prune.c:109
 msgid "show progress"
 msgstr "mostrar progreso"
 
-#: builtin/fsck.c:678
+#: builtin/fsck.c:679
 msgid "show verbose names for reachable objects"
 msgstr "mostrar nombres verboso para objetos alcanzables"
 
-#: builtin/fsck.c:742
+#: builtin/fsck.c:745
 msgid "Checking objects"
 msgstr "Revisando objetos"
 
-#: builtin/gc.c:27
+#: builtin/gc.c:33
 msgid "git gc [<options>]"
 msgstr "git gc [<opciones>]"
 
-#: builtin/gc.c:80
+#: builtin/gc.c:88
 #, c-format
 msgid "Failed to fstat %s: %s"
 msgstr "Falló el fstat %s: %s"
 
-#: builtin/gc.c:312
+#: builtin/gc.c:452
 #, c-format
 msgid "Can't stat %s"
 msgstr "No se puede definir %s"
 
-#: builtin/gc.c:321
+#: builtin/gc.c:461
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -8883,45 +9357,54 @@ msgstr ""
 "\n"
 "%s"
 
-#: builtin/gc.c:360
+#: builtin/gc.c:502
 msgid "prune unreferenced objects"
 msgstr "limpiar objetos no referenciados"
 
-#: builtin/gc.c:362
+#: builtin/gc.c:504
 msgid "be more thorough (increased runtime)"
 msgstr "ser más exhaustivo (aumentar runtime)"
 
-#: builtin/gc.c:363
+#: builtin/gc.c:505
 msgid "enable auto-gc mode"
 msgstr "habilitar modo auto-gc"
 
-#: builtin/gc.c:366
+#: builtin/gc.c:508
 msgid "force running gc even if there may be another gc running"
 msgstr "forzar la ejecución de gc incluso si puede haber otro gc ejecutándose"
 
-#: builtin/gc.c:384
+#: builtin/gc.c:511
+msgid "repack all other packs except the largest pack"
+msgstr "reempaquetar todos los otros paquetes excepto el paquete más grande"
+
+#: builtin/gc.c:528
+#, c-format
+msgid "failed to parse gc.logexpiry value %s"
+msgstr "falló al analizar valor %s de gc.logexpirity"
+
+#: builtin/gc.c:539
 #, c-format
-msgid "Failed to parse gc.logexpiry value %s"
-msgstr "Falló al analizar valor %s de gc.logexpirity"
+msgid "failed to parse prune expiry value %s"
+msgstr "falló al analizar valor %s de prune expiry"
 
-#: builtin/gc.c:412
+#: builtin/gc.c:559
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
 msgstr ""
 "Auto empaquetado del repositorio en segundo plano para un performance "
 "óptimo.\n"
 
-#: builtin/gc.c:414
+#: builtin/gc.c:561
 #, c-format
 msgid "Auto packing the repository for optimum performance.\n"
 msgstr "Auto empaquetado del repositorio para performance óptimo.\n"
 
-#: builtin/gc.c:415
+#: builtin/gc.c:562
 #, c-format
 msgid "See \"git help gc\" for manual housekeeping.\n"
 msgstr "Vea \"git help gc\" para limpieza manual.\n"
 
-#: builtin/gc.c:440
+#: builtin/gc.c:598
 #, c-format
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
@@ -8929,23 +9412,23 @@ msgstr ""
 "gc ya está ejecutándose en la máquina '%s' pid %<PRIuMAX> (use --force so no "
 "es así)"
 
-#: builtin/gc.c:487
+#: builtin/gc.c:645
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove them."
 msgstr ""
 "Hay muchos objetos sueltos inalcanzables; ejecute 'git prune' para "
 "removerlos."
 
-#: builtin/grep.c:27
+#: builtin/grep.c:28
 msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
 msgstr "git grep [<opciones>] [-e] <patrón> [<rev>...] [[--] <ruta>...]"
 
-#: builtin/grep.c:225
+#: builtin/grep.c:226
 #, c-format
 msgid "grep: failed to create thread: %s"
 msgstr "grep: falló al crear el hilo: %s"
 
-#: builtin/grep.c:283
+#: builtin/grep.c:284
 #, c-format
 msgid "invalid number of threads specified (%d) for %s"
 msgstr "número inválido de hilos especificado (%d) para %s"
@@ -8954,17 +9437,17 @@ msgstr "número inválido de hilos especificado (%d) para %s"
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:292 builtin/index-pack.c:1523 builtin/index-pack.c:1712
+#: builtin/grep.c:293 builtin/index-pack.c:1535 builtin/index-pack.c:1727
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "no hay soporte para hilos, ignorando %s"
 
-#: builtin/grep.c:460 builtin/grep.c:580 builtin/grep.c:622
+#: builtin/grep.c:461 builtin/grep.c:582 builtin/grep.c:623
 #, c-format
 msgid "unable to read tree (%s)"
 msgstr "no es posible leer el  árbol (%s)"
 
-#: builtin/grep.c:637
+#: builtin/grep.c:638
 #, c-format
 msgid "unable to grep from object of type %s"
 msgstr "no es posible realizar grep del objeto de tipo %s"
@@ -9167,7 +9650,7 @@ msgstr "--no-index o --untracked no se puede usar con revs"
 msgid "unable to resolve revision: %s"
 msgstr "no se posible resolver revisión: %s"
 
-#: builtin/grep.c:1036 builtin/index-pack.c:1519
+#: builtin/grep.c:1036 builtin/index-pack.c:1531
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "número inválido de hilos especificado (%d)"
@@ -9239,58 +9722,62 @@ msgstr ""
 msgid "process file as it were from this path"
 msgstr "procesar el archivo como si fuera de esta ruta"
 
-#: builtin/help.c:43
+#: builtin/help.c:45
 msgid "print all available commands"
 msgstr "mostrar todos los comandos disponibles"
 
-#: builtin/help.c:44
+#: builtin/help.c:46
 msgid "exclude guides"
 msgstr "excluir las guias"
 
-#: builtin/help.c:45
+#: builtin/help.c:47
 msgid "print list of useful guides"
 msgstr "mostrar una lista de nociones utiles"
 
-#: builtin/help.c:46
+#: builtin/help.c:48
 msgid "show man page"
 msgstr "mostrar la pagina del manual"
 
-#: builtin/help.c:47
+#: builtin/help.c:49
 msgid "show manual in web browser"
 msgstr "mostrar la pagina del manual en un navegador web"
 
-#: builtin/help.c:49
+#: builtin/help.c:51
 msgid "show info page"
 msgstr "mostrar la pagina de info"
 
-#: builtin/help.c:55
+#: builtin/help.c:53
+msgid "print command description"
+msgstr "imprimir descripción del comando"
+
+#: builtin/help.c:58
 msgid "git help [--all] [--guides] [--man | --web | --info] [<command>]"
 msgstr "git help [--all] [--guides] [--man | --web | --info] [<comando>]"
 
-#: builtin/help.c:67
+#: builtin/help.c:70
 #, c-format
 msgid "unrecognized help format '%s'"
 msgstr "formato help no reconocido '%s'"
 
-#: builtin/help.c:94
+#: builtin/help.c:97
 msgid "Failed to start emacsclient."
-msgstr "Fallo al iniciar emacsclient."
+msgstr "Falló al iniciar emacsclient."
 
-#: builtin/help.c:107
+#: builtin/help.c:110
 msgid "Failed to parse emacsclient version."
-msgstr "Fallo al analizar la versión de emacsclient."
+msgstr "Falló al analizar la versión de emacsclient."
 
-#: builtin/help.c:115
+#: builtin/help.c:118
 #, c-format
 msgid "emacsclient version '%d' too old (< 22)."
 msgstr "la versión '%d' de emacsclient es muy antigua (<22)."
 
-#: builtin/help.c:133 builtin/help.c:155 builtin/help.c:165 builtin/help.c:173
+#: builtin/help.c:136 builtin/help.c:158 builtin/help.c:168 builtin/help.c:176
 #, c-format
 msgid "failed to exec '%s'"
-msgstr "fallo al ejecutar '%s'"
+msgstr "falló al ejecutar '%s'"
 
-#: builtin/help.c:211
+#: builtin/help.c:214
 #, c-format
 msgid ""
 "'%s': path for unsupported man viewer.\n"
@@ -9299,7 +9786,7 @@ msgstr ""
 "'%s': ruta para el visualizador del manual no soportada.\n"
 "Por favor considere usar 'man.<herramienta.cmd'."
 
-#: builtin/help.c:223
+#: builtin/help.c:226
 #, c-format
 msgid ""
 "'%s': cmd for supported man viewer.\n"
@@ -9308,358 +9795,326 @@ msgstr ""
 "'%s': comando no soportado para man viewer.\n"
 "Por favor considere usar 'man.<herramienta>.path."
 
-#: builtin/help.c:340
+#: builtin/help.c:343
 #, c-format
 msgid "'%s': unknown man viewer."
 msgstr "'%s': visualizador de man desconocido."
 
-#: builtin/help.c:357
+#: builtin/help.c:360
 msgid "no man viewer handled the request"
 msgstr "ningún visualizador de manual proceso la petición"
 
-#: builtin/help.c:365
+#: builtin/help.c:368
 msgid "no info viewer handled the request"
 msgstr "ningún visor de info manejo la petición"
 
-#: builtin/help.c:407
-msgid "Defining attributes per path"
-msgstr "Definiendo atributos por ruta"
-
-#: builtin/help.c:408
-msgid "Everyday Git With 20 Commands Or So"
-msgstr "Git diario con 20 comandos o algo así"
+#: builtin/help.c:415
+#, c-format
+msgid "'%s' is aliased to '%s'"
+msgstr "'%s' tiene el alias '%s'"
 
-#: builtin/help.c:409
-msgid "A Git glossary"
-msgstr "Un glosario de Git"
+#: builtin/help.c:442 builtin/help.c:459
+#, c-format
+msgid "usage: %s%s"
+msgstr "uso: %s%s"
 
-#: builtin/help.c:410
-msgid "Specifies intentionally untracked files to ignore"
-msgstr "Especifica de forma intencional archivos sin seguimiento a ignorar"
-
-#: builtin/help.c:411
-msgid "Defining submodule properties"
-msgstr "Definiendo las propiedades del submódulo"
-
-#: builtin/help.c:412
-msgid "Specifying revisions and ranges for Git"
-msgstr "Especificando revisiones y rangos para Git"
-
-#: builtin/help.c:413
-msgid "A tutorial introduction to Git (for version 1.5.1 or newer)"
-msgstr "Un tutorial de introducción para Git ( para versiones 1.5.1 o mayores)"
-
-#: builtin/help.c:414
-msgid "An overview of recommended workflows with Git"
-msgstr "Una visión general de flujos de trabajo recomendados con Git"
-
-#: builtin/help.c:426
-msgid "The common Git guides are:\n"
-msgstr "Las guías comunes de Git son:\n"
-
-#: builtin/help.c:444
-#, c-format
-msgid "'%s' is aliased to '%s'"
-msgstr "'%s' tiene el alias '%s'"
-
-#: builtin/help.c:466 builtin/help.c:483
-#, c-format
-msgid "usage: %s%s"
-msgstr "uso: %s%s"
-
-#: builtin/index-pack.c:157
+#: builtin/index-pack.c:158
 #, c-format
 msgid "unable to open %s"
 msgstr "no es posible abrir %s"
 
-#: builtin/index-pack.c:207
+#: builtin/index-pack.c:208
 #, c-format
 msgid "object type mismatch at %s"
 msgstr "el tipo del objeto no concuerda en %s"
 
-#: builtin/index-pack.c:227
+#: builtin/index-pack.c:228
 #, c-format
 msgid "did not receive expected object %s"
 msgstr "no se recibió el objeto esperado %s"
 
-#: builtin/index-pack.c:230
+#: builtin/index-pack.c:231
 #, c-format
 msgid "object %s: expected type %s, found %s"
 msgstr "objeto %s: tipo esperado %s, encontrado %s"
 
-#: builtin/index-pack.c:272
+#: builtin/index-pack.c:273
 #, c-format
 msgid "cannot fill %d byte"
 msgid_plural "cannot fill %d bytes"
 msgstr[0] "no se puede llenar %d byte"
 msgstr[1] "no se pueden llenar %d bytes"
 
-#: builtin/index-pack.c:282
+#: builtin/index-pack.c:283
 msgid "early EOF"
 msgstr "EOF temprano"
 
-#: builtin/index-pack.c:283
+#: builtin/index-pack.c:284
 msgid "read error on input"
 msgstr "leer error en input"
 
-#: builtin/index-pack.c:295
+#: builtin/index-pack.c:296
 msgid "used more bytes than were available"
 msgstr "se usaron más bytes de los disponibles"
 
-#: builtin/index-pack.c:302
+#: builtin/index-pack.c:303
 msgid "pack too large for current definition of off_t"
 msgstr "paquete muy grande para la definición actual de off_t"
 
-#: builtin/index-pack.c:305 builtin/unpack-objects.c:93
+#: builtin/index-pack.c:306 builtin/unpack-objects.c:93
 msgid "pack exceeds maximum allowed size"
 msgstr "paquete excede el máximo tamaño permitido"
 
-#: builtin/index-pack.c:320
+#: builtin/index-pack.c:321
 #, c-format
 msgid "unable to create '%s'"
 msgstr "no se puede crear '%s'"
 
-#: builtin/index-pack.c:326
+#: builtin/index-pack.c:327
 #, c-format
 msgid "cannot open packfile '%s'"
 msgstr "no se puede abrir el archivo de paquete '%s'"
 
-#: builtin/index-pack.c:340
+#: builtin/index-pack.c:341
 msgid "pack signature mismatch"
 msgstr "firma del paquete no concuerda"
 
-#: builtin/index-pack.c:342
+#: builtin/index-pack.c:343
 #, c-format
 msgid "pack version %<PRIu32> unsupported"
 msgstr "versión de paquete %<PRIu32> no soportada"
 
-#: builtin/index-pack.c:360
+#: builtin/index-pack.c:361
 #, c-format
 msgid "pack has bad object at offset %<PRIuMAX>: %s"
 msgstr "paquete tiene un mal objeto en el offset %<PRIuMAX>: %s"
 
-#: builtin/index-pack.c:481
+#: builtin/index-pack.c:482
 #, c-format
 msgid "inflate returned %d"
 msgstr "inflate retornó %d"
 
-#: builtin/index-pack.c:530
+#: builtin/index-pack.c:531
 msgid "offset value overflow for delta base object"
 msgstr "valor de offset desbordado para el objeto base delta"
 
-#: builtin/index-pack.c:538
+#: builtin/index-pack.c:539
 msgid "delta base offset is out of bound"
 msgstr "offset de base delta está fuera de límites"
 
-#: builtin/index-pack.c:546
+#: builtin/index-pack.c:547
 #, c-format
 msgid "unknown object type %d"
 msgstr "tipo de objeto %d desconocido"
 
-#: builtin/index-pack.c:577
+#: builtin/index-pack.c:578
 msgid "cannot pread pack file"
 msgstr "no se puede propagar el paquete"
 
-#: builtin/index-pack.c:579
+#: builtin/index-pack.c:580
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
 msgstr[0] "final prematuro de archivo de paquete, %<PRIuMAX> byte faltante"
 msgstr[1] "final prematuro de archivo de paquete, %<PRIuMAX> bytes faltantes"
 
-#: builtin/index-pack.c:605
+#: builtin/index-pack.c:606
 msgid "serious inflate inconsistency"
 msgstr "inconsistencia seria en inflate"
 
-#: builtin/index-pack.c:750 builtin/index-pack.c:756 builtin/index-pack.c:779
-#: builtin/index-pack.c:818 builtin/index-pack.c:827
+#: builtin/index-pack.c:751 builtin/index-pack.c:757 builtin/index-pack.c:780
+#: builtin/index-pack.c:819 builtin/index-pack.c:828
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "COLISIÓN DE TIPO SHA1 ENCONTRADA CON %s !"
 
-#: builtin/index-pack.c:753 builtin/pack-objects.c:182
-#: builtin/pack-objects.c:276
+#: builtin/index-pack.c:754 builtin/pack-objects.c:198
+#: builtin/pack-objects.c:292
 #, c-format
 msgid "unable to read %s"
 msgstr "no se posible leer %s"
 
-#: builtin/index-pack.c:816
+#: builtin/index-pack.c:817
 #, c-format
 msgid "cannot read existing object info %s"
 msgstr "no se puede leer la información existente del objeto %s"
 
-#: builtin/index-pack.c:824
+#: builtin/index-pack.c:825
 #, c-format
 msgid "cannot read existing object %s"
 msgstr "no se puede leer el objeto existente %s"
 
-#: builtin/index-pack.c:838
+#: builtin/index-pack.c:839
 #, c-format
 msgid "invalid blob object %s"
 msgstr "objeto blob %s inválido"
 
-#: builtin/index-pack.c:853
+#: builtin/index-pack.c:842 builtin/index-pack.c:860
+msgid "fsck error in packed object"
+msgstr "error de fsck en el objeto empaquetado"
+
+#: builtin/index-pack.c:857
 #, c-format
 msgid "invalid %s"
 msgstr "%s inválido"
 
-#: builtin/index-pack.c:856
-msgid "Error in object"
-msgstr "Error en el objeto"
-
-#: builtin/index-pack.c:858
+#: builtin/index-pack.c:862
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr "No todos los objetos hijos de %s son alcanzables"
 
-#: builtin/index-pack.c:930 builtin/index-pack.c:961
+#: builtin/index-pack.c:934 builtin/index-pack.c:965
 msgid "failed to apply delta"
 msgstr "falló al aplicar delta"
 
-#: builtin/index-pack.c:1131
+#: builtin/index-pack.c:1135
 msgid "Receiving objects"
 msgstr "Recibiendo objetos"
 
-#: builtin/index-pack.c:1131
+#: builtin/index-pack.c:1135
 msgid "Indexing objects"
 msgstr "Indexando objetos"
 
-#: builtin/index-pack.c:1165
+#: builtin/index-pack.c:1169
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr "paquete está corrompido (SHA1 no concuerda)"
 
-#: builtin/index-pack.c:1170
+#: builtin/index-pack.c:1174
 msgid "cannot fstat packfile"
 msgstr "no se puede fstat al archivo de paquete"
 
-#: builtin/index-pack.c:1173
+#: builtin/index-pack.c:1177
 msgid "pack has junk at the end"
 msgstr "el paquete tiene basura al final"
 
-#: builtin/index-pack.c:1185
+#: builtin/index-pack.c:1189
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr "confusión más allá de la locura en parse_pack_objects()"
 
-#: builtin/index-pack.c:1208
+#: builtin/index-pack.c:1212
 msgid "Resolving deltas"
 msgstr "Resolviendo deltas"
 
-#: builtin/index-pack.c:1219
+#: builtin/index-pack.c:1223
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "no es posible crear hilo: %s"
 
-#: builtin/index-pack.c:1261
+#: builtin/index-pack.c:1265
 msgid "confusion beyond insanity"
 msgstr "confusión más allá de la locura"
 
-#: builtin/index-pack.c:1267
+#: builtin/index-pack.c:1271
 #, c-format
 msgid "completed with %d local object"
 msgid_plural "completed with %d local objects"
 msgstr[0] "completado con %d objeto local"
 msgstr[1] "completado con %d objetos locales"
 
-#: builtin/index-pack.c:1279
+#: builtin/index-pack.c:1283
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr "Tail checksum para %s inesperada (corrupción de disco?)"
 
-#: builtin/index-pack.c:1283
+#: builtin/index-pack.c:1287
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
 msgstr[0] "paquete tiene %d delta sin resolver"
 msgstr[1] "paquete tiene %d deltas sin resolver"
 
-#: builtin/index-pack.c:1307
+#: builtin/index-pack.c:1311
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr "no es posible desinflar el objeto adjunto (%d)"
 
-#: builtin/index-pack.c:1383
+#: builtin/index-pack.c:1388
 #, c-format
 msgid "local object %s is corrupt"
 msgstr "objeto local %s está corrompido"
 
-#: builtin/index-pack.c:1397
+#: builtin/index-pack.c:1402
 #, c-format
 msgid "packfile name '%s' does not end with '.pack'"
 msgstr "nombre '%s' de archivo de paquete no termina con '.pack'"
 
-#: builtin/index-pack.c:1422
+#: builtin/index-pack.c:1427
 #, c-format
 msgid "cannot write %s file '%s'"
 msgstr "no se puede escribir %s en el archivo '%s'"
 
-#: builtin/index-pack.c:1430
+#: builtin/index-pack.c:1435
 #, c-format
 msgid "cannot close written %s file '%s'"
 msgstr "no se puede cerrar escrito %s en archivo '%s'"
 
-#: builtin/index-pack.c:1454
+#: builtin/index-pack.c:1459
 msgid "error while closing pack file"
 msgstr "error mientras se cierra el archivo paquete"
 
-#: builtin/index-pack.c:1468
+#: builtin/index-pack.c:1473
 msgid "cannot store pack file"
 msgstr "no se puede guardar el archivo paquete"
 
-#: builtin/index-pack.c:1476
+#: builtin/index-pack.c:1481
 msgid "cannot store index file"
 msgstr "no se puede guardar el archivo índice"
 
-#: builtin/index-pack.c:1513
+#: builtin/index-pack.c:1525
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "mal pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1581
+#: builtin/index-pack.c:1594
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "No se puede abrir el archivo paquete existente '%s'"
 
-#: builtin/index-pack.c:1583
+#: builtin/index-pack.c:1596
 #, 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:1631
+#: builtin/index-pack.c:1644
 #, 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:1638
+#: builtin/index-pack.c:1651
 #, 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:1675
+#: builtin/index-pack.c:1688
 msgid "Cannot come back to cwd"
 msgstr "No se puede regresar a cwd"
 
-#: builtin/index-pack.c:1724 builtin/index-pack.c:1727
-#: builtin/index-pack.c:1743 builtin/index-pack.c:1747
+#: builtin/index-pack.c:1739 builtin/index-pack.c:1742
+#: builtin/index-pack.c:1758 builtin/index-pack.c:1762
 #, c-format
 msgid "bad %s"
 msgstr "mal %s"
 
-#: builtin/index-pack.c:1763
+#: builtin/index-pack.c:1778
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin no puede ser usada sin --stdin"
 
-#: builtin/index-pack.c:1765
+#: builtin/index-pack.c:1780
 msgid "--stdin requires a git repository"
 msgstr "--stdin requiere un repositorio git"
 
-#: builtin/index-pack.c:1771
+#: builtin/index-pack.c:1786
 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:578
+msgid "fsck error in pack objects"
+msgstr "error de fsck en objetos paquete"
+
 #: builtin/init-db.c:55
 #, c-format
 msgid "cannot stat '%s'"
@@ -9697,8 +10152,8 @@ msgstr "ignorando template %s"
 
 #: builtin/init-db.c:120
 #, c-format
-msgid "templates not found %s"
-msgstr "no se encontraron templates %s"
+msgid "templates not found in %s"
+msgstr "template no encontrado en %s"
 
 #: builtin/init-db.c:135
 #, c-format
@@ -9757,11 +10212,6 @@ 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:516 builtin/init-db.c:521
-#, c-format
-msgid "cannot mkdir %s"
-msgstr "no se pude crear directorio %s"
-
 #: builtin/init-db.c:525
 #, c-format
 msgid "cannot chdir to %s"
@@ -9945,7 +10395,7 @@ msgstr "Dos directorios de salida?"
 msgid "Unknown commit %s"
 msgstr "Commit desconocido %s"
 
-#: builtin/log.c:1289 builtin/notes.c:887 builtin/tag.c:522
+#: builtin/log.c:1289 builtin/notes.c:887 builtin/tag.c:523
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr "Falló al resolver '%s' como una ref válida."
@@ -9968,7 +10418,7 @@ msgstr ""
 
 #: builtin/log.c:1318
 msgid "Failed to find exact merge base"
-msgstr "Fallo al encontrar una base de fusión exacta"
+msgstr "Falló al encontrar una base de fusión exacta"
 
 #: builtin/log.c:1329
 msgid "base commit should be the ancestor of revision list"
@@ -10305,7 +10755,7 @@ msgstr ""
 msgid "show debugging data"
 msgstr "mostrar data de debug"
 
-#: builtin/ls-remote.c:7
+#: builtin/ls-remote.c:9
 msgid ""
 "git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
@@ -10315,39 +10765,39 @@ msgstr ""
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
 "                     [--symref] [<repositorio> [<refs>...]]"
 
-#: builtin/ls-remote.c:52
+#: builtin/ls-remote.c:59
 msgid "do not print remote URL"
 msgstr "no mostrar el URL remoto"
 
-#: builtin/ls-remote.c:53 builtin/ls-remote.c:55
+#: builtin/ls-remote.c:60 builtin/ls-remote.c:62
 msgid "exec"
 msgstr "ejecutar"
 
-#: builtin/ls-remote.c:54 builtin/ls-remote.c:56
+#: builtin/ls-remote.c:61 builtin/ls-remote.c:63
 msgid "path of git-upload-pack on the remote host"
 msgstr "ruta de git-upload-pack en el host remoto"
 
-#: builtin/ls-remote.c:58
+#: builtin/ls-remote.c:65
 msgid "limit to tags"
 msgstr "limitar a tags"
 
-#: builtin/ls-remote.c:59
+#: builtin/ls-remote.c:66
 msgid "limit to heads"
 msgstr "limitar a heads"
 
-#: builtin/ls-remote.c:60
+#: builtin/ls-remote.c:67
 msgid "do not show peeled tags"
 msgstr "no mostrar tags pelados"
 
-#: builtin/ls-remote.c:62
+#: builtin/ls-remote.c:69
 msgid "take url.<base>.insteadOf into account"
 msgstr "tomar url.<base>.insteadOf en cuenta"
 
-#: builtin/ls-remote.c:64
+#: builtin/ls-remote.c:73
 msgid "exit with exit code 2 if no matching refs are found"
 msgstr "salir con código de salida 2 si no se encuentran refs que concuerden"
 
-#: builtin/ls-remote.c:67
+#: builtin/ls-remote.c:76
 msgid "show underlying ref in addition to the object pointed by it"
 msgstr "mostrar ref subyacente en adición al objeto apuntado por él"
 
@@ -10393,167 +10843,167 @@ msgstr ""
 msgid "empty mbox: '%s'"
 msgstr "mbox vacío: '%s'"
 
-#: builtin/merge.c:49
+#: builtin/merge.c:51
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<opciones>] [<commit>...]"
 
-#: builtin/merge.c:50
+#: builtin/merge.c:52
 msgid "git merge --abort"
 msgstr "git merge --abort"
 
-#: builtin/merge.c:51
+#: builtin/merge.c:53
 msgid "git merge --continue"
 msgstr "git merge --continue"
 
-#: builtin/merge.c:108
+#: builtin/merge.c:110
 msgid "switch `m' requires a value"
 msgstr "cambiar `m' requiere un valor"
 
-#: builtin/merge.c:145
+#: builtin/merge.c:147
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
 msgstr "No se pudo encontrar estrategia de fusión '%s'.\n"
 
-#: builtin/merge.c:146
+#: builtin/merge.c:148
 #, c-format
 msgid "Available strategies are:"
 msgstr "Estrategias disponibles son:"
 
-#: builtin/merge.c:151
+#: builtin/merge.c:153
 #, c-format
 msgid "Available custom strategies are:"
 msgstr "Estrategias personalizadas disponibles son:"
 
-#: builtin/merge.c:201 builtin/pull.c:137
+#: builtin/merge.c:203 builtin/pull.c:142
 msgid "do not show a diffstat at the end of the merge"
 msgstr "no mostrar un diffstat al final de la fusión"
 
-#: builtin/merge.c:204 builtin/pull.c:140
+#: builtin/merge.c:206 builtin/pull.c:145
 msgid "show a diffstat at the end of the merge"
 msgstr "mostrar un diffstat al final de la fusión"
 
-#: builtin/merge.c:205 builtin/pull.c:143
+#: builtin/merge.c:207 builtin/pull.c:148
 msgid "(synonym to --stat)"
 msgstr "(sinónimo para --stat)"
 
-#: builtin/merge.c:207 builtin/pull.c:146
+#: builtin/merge.c:209 builtin/pull.c:151
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr ""
 "agregar (como máximo <n>) entradas del shortlog al mensaje del commit de "
 "fusión"
 
-#: builtin/merge.c:210 builtin/pull.c:152
+#: builtin/merge.c:212 builtin/pull.c:157
 msgid "create a single commit instead of doing a merge"
 msgstr "crear un commit único en lugar de hacer una fusión"
 
-#: builtin/merge.c:212 builtin/pull.c:155
+#: builtin/merge.c:214 builtin/pull.c:160
 msgid "perform a commit if the merge succeeds (default)"
 msgstr "realizar un commit si la fusión es exitosa (default)"
 
-#: builtin/merge.c:214 builtin/pull.c:158
+#: builtin/merge.c:216 builtin/pull.c:163
 msgid "edit message before committing"
 msgstr "editar mensaje antes de realizar commit"
 
-#: builtin/merge.c:215
+#: builtin/merge.c:217
 msgid "allow fast-forward (default)"
 msgstr "permitir fast-forwars (default)"
 
-#: builtin/merge.c:217 builtin/pull.c:164
+#: builtin/merge.c:219 builtin/pull.c:169
 msgid "abort if fast-forward is not possible"
 msgstr "abortar si fast-forward no es posible"
 
-#: builtin/merge.c:221 builtin/pull.c:167
+#: builtin/merge.c:223 builtin/pull.c:172
 msgid "verify that the named commit has a valid GPG signature"
 msgstr "verificar que el commit nombrado tiene una firma GPG válida"
 
-#: builtin/merge.c:222 builtin/notes.c:777 builtin/pull.c:171
+#: builtin/merge.c:224 builtin/notes.c:777 builtin/pull.c:176
 #: builtin/revert.c:109
 msgid "strategy"
 msgstr "estrategia"
 
-#: builtin/merge.c:223 builtin/pull.c:172
+#: builtin/merge.c:225 builtin/pull.c:177
 msgid "merge strategy to use"
 msgstr "estrategia de fusión para usar"
 
-#: builtin/merge.c:224 builtin/pull.c:175
+#: builtin/merge.c:226 builtin/pull.c:180
 msgid "option=value"
 msgstr "opción=valor"
 
-#: builtin/merge.c:225 builtin/pull.c:176
+#: builtin/merge.c:227 builtin/pull.c:181
 msgid "option for selected merge strategy"
 msgstr "opción para la estrategia de fusión seleccionada"
 
-#: builtin/merge.c:227
+#: builtin/merge.c:229
 msgid "merge commit message (for a non-fast-forward merge)"
 msgstr "fusionar mensaje de commit (para una fusión no fast-forward)"
 
-#: builtin/merge.c:231
+#: builtin/merge.c:233
 msgid "abort the current in-progress merge"
 msgstr "abortar la fusión en progreso actual"
 
-#: builtin/merge.c:233
+#: builtin/merge.c:235
 msgid "continue the current in-progress merge"
 msgstr "continuar la fusión en progreso actual"
 
-#: builtin/merge.c:235 builtin/pull.c:183
+#: builtin/merge.c:237 builtin/pull.c:188
 msgid "allow merging unrelated histories"
 msgstr "permitir fusionar historias no relacionadas"
 
-#: builtin/merge.c:241
+#: builtin/merge.c:243
 msgid "verify commit-msg hook"
 msgstr "verificar el hook commit-msg"
 
-#: builtin/merge.c:266
+#: builtin/merge.c:268
 msgid "could not run stash."
 msgstr "no se pudo ejecutar stash."
 
-#: builtin/merge.c:271
+#: builtin/merge.c:273
 msgid "stash failed"
 msgstr "stash falló"
 
-#: builtin/merge.c:276
+#: builtin/merge.c:278
 #, c-format
 msgid "not a valid object: %s"
 msgstr "no es un objeto válido: %s"
 
-#: builtin/merge.c:298 builtin/merge.c:315
+#: builtin/merge.c:300 builtin/merge.c:317
 msgid "read-tree failed"
 msgstr "lectura de árbol falló"
 
-#: builtin/merge.c:345
+#: builtin/merge.c:347
 msgid " (nothing to squash)"
 msgstr " (nada para hacer squash)"
 
-#: builtin/merge.c:356
+#: builtin/merge.c:358
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
 msgstr "Commit de squash -- no actualizando HEAD\n"
 
-#: builtin/merge.c:406
+#: builtin/merge.c:408
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
 msgstr "No hay mensaje de fusión -- no actualizando HEAD\n"
 
-#: builtin/merge.c:456
+#: builtin/merge.c:458
 #, c-format
 msgid "'%s' does not point to a commit"
 msgstr "'%s' no apunta a ningún commit"
 
-#: builtin/merge.c:546
+#: builtin/merge.c:548
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Mal string branch.%s.mergeoptions: %s"
 
-#: builtin/merge.c:668
+#: builtin/merge.c:669
 msgid "Not handling anything other than two heads merge."
 msgstr "No manejando nada más que fusión de dos heads."
 
-#: builtin/merge.c:682
+#: builtin/merge.c:683
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Opción desconocida para merge-recursive: -X%s"
 
-#: builtin/merge.c:697
+#: builtin/merge.c:698
 #, c-format
 msgid "unable to write %s"
 msgstr "no es posible escribir %s"
@@ -10591,66 +11041,66 @@ msgstr ""
 msgid "Empty commit message."
 msgstr "Mensaje de commit vacío."
 
-#: builtin/merge.c:820
+#: builtin/merge.c:819
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Maravilloso.\n"
 
-#: builtin/merge.c:873
+#: builtin/merge.c:872
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr ""
 "Fusión automática falló; arregle los conflictos y luego realice un commit "
 "con el resultado.\n"
 
-#: builtin/merge.c:912
+#: builtin/merge.c:911
 msgid "No current branch."
 msgstr "No rama actual."
 
-#: builtin/merge.c:914
+#: builtin/merge.c:913
 msgid "No remote for the current branch."
 msgstr "No hay remoto para la rama actual."
 
-#: builtin/merge.c:916
+#: builtin/merge.c:915
 msgid "No default upstream defined for the current branch."
 msgstr "Por defecto, no hay un upstream  definido para la rama actual."
 
-#: builtin/merge.c:921
+#: builtin/merge.c:920
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "No hay rama de rastreo remoto para %s de %s"
 
-#: builtin/merge.c:974
+#: builtin/merge.c:973
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Mal valor '%s' en el entorno '%s'"
 
-#: builtin/merge.c:1076
+#: builtin/merge.c:1075
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "nada que podamos fusionar en %s: %s"
 
-#: builtin/merge.c:1110
+#: builtin/merge.c:1109
 msgid "not something we can merge"
 msgstr "nada que podamos fusionar"
 
-#: builtin/merge.c:1212
+#: builtin/merge.c:1211
 msgid "--abort expects no arguments"
 msgstr "--abort no espera argumentos"
 
-#: builtin/merge.c:1216
+#: builtin/merge.c:1215
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "No hay una fusión para abortar (falta MERGE_HEAD)"
 
-#: builtin/merge.c:1228
+#: builtin/merge.c:1227
 msgid "--continue expects no arguments"
 msgstr "--continue no espera argumentos"
 
-#: builtin/merge.c:1232
+#: builtin/merge.c:1231
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "No hay fusión en progreso (falta MERGE_HEAD)."
 
-#: builtin/merge.c:1248
+#: builtin/merge.c:1247
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -10658,7 +11108,7 @@ msgstr ""
 "No ha concluido la fusión (existe MERGE_HEAD).\n"
 "Por favor, realice un commit con los cambios antes de fusionar."
 
-#: builtin/merge.c:1255
+#: builtin/merge.c:1254
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -10666,113 +11116,113 @@ msgstr ""
 "No ha concluido el cherry-pick (existe CHERRY_PICK_HEAD).\n"
 "Por favor, realice un commit con los cambios antes de fusionar."
 
-#: builtin/merge.c:1258
+#: builtin/merge.c:1257
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr "No ha concluido el cherry-pick (existe CHERRY_PICK_HEAD)."
 
-#: builtin/merge.c:1267
+#: builtin/merge.c:1266
 msgid "You cannot combine --squash with --no-ff."
 msgstr "No se puede combinar --squash con --no-ff."
 
-#: builtin/merge.c:1275
+#: builtin/merge.c:1274
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr ""
 "No hay commit especificado y merge.defaultToUpstream no está configurado."
 
-#: builtin/merge.c:1292
+#: builtin/merge.c:1291
 msgid "Squash commit into empty head not supported yet"
 msgstr "Commit aplastado dentro de un head vacío no es soportado todavía"
 
-#: builtin/merge.c:1294
+#: builtin/merge.c:1293
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr "Commit no fast-forward no tiene sentido dentro de un head vacío"
 
-#: builtin/merge.c:1299
+#: builtin/merge.c:1298
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - nada que podamos fusionar"
 
-#: builtin/merge.c:1301
+#: builtin/merge.c:1300
 msgid "Can merge only exactly one commit into empty head"
 msgstr "Solo se puede fusionar exactamente un commit en un head vacío"
 
-#: builtin/merge.c:1335
+#: builtin/merge.c:1334
 #, 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."
 
-#: builtin/merge.c:1338
+#: builtin/merge.c:1337
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr "Commit %s tiene una mala firma GPG pretendidamente por %s."
 
-#: builtin/merge.c:1341
+#: builtin/merge.c:1340
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "Commit %s no tiene una firma GPG."
 
-#: builtin/merge.c:1344
+#: builtin/merge.c:1343
 #, 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"
 
-#: builtin/merge.c:1403
+#: builtin/merge.c:1402
 msgid "refusing to merge unrelated histories"
 msgstr "rehusando fusionar historias no relacionadas"
 
-#: builtin/merge.c:1412
+#: builtin/merge.c:1411
 msgid "Already up to date."
 msgstr "Ya está actualizado."
 
-#: builtin/merge.c:1422
+#: builtin/merge.c:1421
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Actualizando %s..%s\n"
 
-#: builtin/merge.c:1463
+#: builtin/merge.c:1462
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "Intentando fusión en índice realmente trivial...\n"
 
-#: builtin/merge.c:1470
+#: builtin/merge.c:1469
 #, c-format
 msgid "Nope.\n"
 msgstr "Nop.\n"
 
-#: builtin/merge.c:1495
+#: builtin/merge.c:1494
 msgid "Already up to date. Yeeah!"
 msgstr "Ya está actualizado. ¡Oh, yeaahh!"
 
-#: builtin/merge.c:1501
+#: builtin/merge.c:1500
 msgid "Not possible to fast-forward, aborting."
 msgstr "No es posible hacer fast-forward, abortando."
 
-#: builtin/merge.c:1524 builtin/merge.c:1603
+#: builtin/merge.c:1523 builtin/merge.c:1602
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "Rebobinando el árbol a original...\n"
 
-#: builtin/merge.c:1528
+#: builtin/merge.c:1527
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "Intentando estrategia de fusión %s...\n"
 
-#: builtin/merge.c:1594
+#: builtin/merge.c:1593
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "Ninguna estrategia de fusión manejó la fusión.\n"
 
-#: builtin/merge.c:1596
+#: builtin/merge.c:1595
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "Fusionar con estrategia %s falló.\n"
 
-#: builtin/merge.c:1605
+#: builtin/merge.c:1604
 #, c-format
 msgid "Using the %s to prepare resolving by hand.\n"
 msgstr "Usando el %s para preparar resolución a mano.\n"
 
-#: builtin/merge.c:1617
+#: builtin/merge.c:1616
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
@@ -10909,27 +11359,27 @@ msgstr "permitir la creación de más de un árbol"
 msgid "git mv [<options>] <source>... <destination>"
 msgstr "git mv [<opciones>] <fuente>... <destino>"
 
-#: builtin/mv.c:83
+#: builtin/mv.c:82
 #, c-format
 msgid "Directory %s is in index and no submodule?"
 msgstr "Directorio %s está en el índice y no hay submódulo?"
 
-#: builtin/mv.c:85 builtin/rm.c:289
+#: builtin/mv.c:84 builtin/rm.c:288
 msgid "Please stage your changes to .gitmodules or stash them to proceed"
 msgstr ""
 "Por favor agrega el stage de tus cambios a .gitmodules o realiza un stash "
 "para proceder"
 
-#: builtin/mv.c:103
+#: builtin/mv.c:102
 #, c-format
 msgid "%.*s is in index"
 msgstr "%.*s está en el índice"
 
-#: builtin/mv.c:125
+#: builtin/mv.c:124
 msgid "force move/rename even if target exists"
 msgstr "forzar mover/renombrar incluso si el objetivo existe"
 
-#: builtin/mv.c:127
+#: builtin/mv.c:126
 msgid "skip move/rename errors"
 msgstr "saltar errores de mover/renombrar"
 
@@ -10994,7 +11444,7 @@ msgstr "%s, fuente=%s, destino=%s"
 msgid "Renaming %s to %s\n"
 msgstr "Renombrando %s a %s\n"
 
-#: builtin/mv.c:276 builtin/remote.c:712 builtin/repack.c:394
+#: builtin/mv.c:276 builtin/remote.c:715 builtin/repack.c:409
 #, c-format
 msgid "renaming '%s' failed"
 msgstr "renombrando '%s' falló"
@@ -11188,12 +11638,12 @@ msgstr "incapaz de escribir el objeto de nota"
 msgid "the note contents have been left in %s"
 msgstr "los contenidos de nota han sido dejados en %s"
 
-#: builtin/notes.c:234 builtin/tag.c:506
+#: builtin/notes.c:234 builtin/tag.c:507
 #, c-format
 msgid "cannot read '%s'"
 msgstr "no se puede leer '%s'"
 
-#: builtin/notes.c:236 builtin/tag.c:509
+#: builtin/notes.c:236 builtin/tag.c:510
 #, c-format
 msgid "could not open or read '%s'"
 msgstr "no se pudo abrir o leer '%s'"
@@ -11439,7 +11889,7 @@ msgstr "intentar remover una nota no existente no es un error"
 msgid "read object names from the standard input"
 msgstr "leer nombres de objetos de standard input"
 
-#: builtin/notes.c:943 builtin/prune.c:106 builtin/worktree.c:160
+#: builtin/notes.c:943 builtin/prune.c:107 builtin/worktree.c:151
 msgid "do not remove, show only"
 msgstr "no remover, solo mostrar"
 
@@ -11460,218 +11910,246 @@ msgstr "usar notas desde <referencia-de-notas>"
 msgid "unknown subcommand: %s"
 msgstr "subcomando desconocido: %s"
 
-#: builtin/pack-objects.c:33
+#: builtin/pack-objects.c:48
 msgid ""
 "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects --stdout [<opciones>...] [< <lista-de-ref> | < <lista-de-"
 "objetos>]"
 
-#: builtin/pack-objects.c:34
+#: builtin/pack-objects.c:49
 msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects [<opciones>...] <nombre-base> [< <lista-de-refs> | < <lista-"
 "de-objetos>]"
 
-#: builtin/pack-objects.c:195 builtin/pack-objects.c:198
+#: builtin/pack-objects.c:211 builtin/pack-objects.c:214
 #, c-format
 msgid "deflate error (%d)"
 msgstr "error al desinflar (%d)"
 
-#: builtin/pack-objects.c:791
+#: builtin/pack-objects.c:810
 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:804
+#: builtin/pack-objects.c:823
 msgid "Writing objects"
 msgstr "Escribiendo objetos"
 
-#: builtin/pack-objects.c:1084
+#: builtin/pack-objects.c:1106
 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:2454
+#: builtin/pack-objects.c:1765
+msgid "Counting objects"
+msgstr "Contando objetos"
+
+#: builtin/pack-objects.c:1895
+#, c-format
+msgid "unable to get size of %s"
+msgstr "no se pudo obtener el tamaño de %s"
+
+#: builtin/pack-objects.c:1910
+#, c-format
+msgid "unable to parse object header of %s"
+msgstr "incapaz de analizar header del objeto %s"
+
+#: builtin/pack-objects.c:2564
 msgid "Compressing objects"
 msgstr "Comprimiendo objetos"
 
-#: builtin/pack-objects.c:2625
+#: builtin/pack-objects.c:2735
 msgid "invalid value for --missing"
 msgstr "valor inválido para --missing"
 
-#: builtin/pack-objects.c:2928
+#: builtin/pack-objects.c:3067
 #, c-format
 msgid "unsupported index version %s"
 msgstr "versión de índice no soportada %s"
 
-#: builtin/pack-objects.c:2932
+#: builtin/pack-objects.c:3071
 #, c-format
 msgid "bad index version '%s'"
 msgstr "mala versión del índice '%s'"
 
-#: builtin/pack-objects.c:2962
+#: builtin/pack-objects.c:3102
 msgid "do not show progress meter"
 msgstr "no mostrar medidor de progreso"
 
-#: builtin/pack-objects.c:2964
+#: builtin/pack-objects.c:3104
 msgid "show progress meter"
 msgstr "mostrar medidor de progreso"
 
-#: builtin/pack-objects.c:2966
+#: builtin/pack-objects.c:3106
 msgid "show progress meter during object writing phase"
 msgstr "mostrar medidor de progreso durante la fase de escritura de objeto"
 
-#: builtin/pack-objects.c:2969
+#: builtin/pack-objects.c:3109
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "similar a --all-progress cuando medidor de progreso es mostrado"
 
-#: builtin/pack-objects.c:2970
+#: builtin/pack-objects.c:3110
 msgid "version[,offset]"
 msgstr "versión[,offset]"
 
-#: builtin/pack-objects.c:2971
+#: builtin/pack-objects.c:3111
 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:2974
+#: builtin/pack-objects.c:3114
 msgid "maximum size of each output pack file"
 msgstr "tamaño máximo de cada paquete resultante"
 
-#: builtin/pack-objects.c:2976
+#: builtin/pack-objects.c:3116
 msgid "ignore borrowed objects from alternate object store"
 msgstr "ignorar objetos prestados de otros almacenes de objetos"
 
-#: builtin/pack-objects.c:2978
+#: builtin/pack-objects.c:3118
 msgid "ignore packed objects"
 msgstr "ignorar objetos paquete"
 
-#: builtin/pack-objects.c:2980
+#: builtin/pack-objects.c:3120
 msgid "limit pack window by objects"
 msgstr "limitar ventana de paquete por objetos"
 
-#: builtin/pack-objects.c:2982
+#: builtin/pack-objects.c:3122
 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:2984
+#: builtin/pack-objects.c:3124
 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:2986
+#: builtin/pack-objects.c:3126
 msgid "reuse existing deltas"
 msgstr "reusar deltas existentes"
 
-#: builtin/pack-objects.c:2988
+#: builtin/pack-objects.c:3128
 msgid "reuse existing objects"
 msgstr "reutilizar objetos existentes"
 
-#: builtin/pack-objects.c:2990
+#: builtin/pack-objects.c:3130
 msgid "use OFS_DELTA objects"
 msgstr "usar objetos OFS_DELTA"
 
-#: builtin/pack-objects.c:2992
+#: builtin/pack-objects.c:3132
 msgid "use threads when searching for best delta matches"
 msgstr "usar hilos cuando se busque para mejores concordancias de delta"
 
-#: builtin/pack-objects.c:2994
+#: builtin/pack-objects.c:3134
 msgid "do not create an empty pack output"
 msgstr "no crear un paquete resultante vacío"
 
-#: builtin/pack-objects.c:2996
+#: builtin/pack-objects.c:3136
 msgid "read revision arguments from standard input"
 msgstr "leer argumentos de revisión de standard input"
 
-#: builtin/pack-objects.c:2998
+#: builtin/pack-objects.c:3138
 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:3001
+#: builtin/pack-objects.c:3141
 msgid "include objects reachable from any reference"
 msgstr "incluir objetos alcanzables por cualquier referencia"
 
-#: builtin/pack-objects.c:3004
+#: builtin/pack-objects.c:3144
 msgid "include objects referred by reflog entries"
 msgstr "incluir objetos referidos por entradas de reflog"
 
-#: builtin/pack-objects.c:3007
+#: builtin/pack-objects.c:3147
 msgid "include objects referred to by the index"
 msgstr "incluir objetos referidos por el índice"
 
-#: builtin/pack-objects.c:3010
+#: builtin/pack-objects.c:3150
 msgid "output pack to stdout"
 msgstr "mostrar paquete en stdout"
 
-#: builtin/pack-objects.c:3012
+#: builtin/pack-objects.c:3152
 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:3014
+#: builtin/pack-objects.c:3154
 msgid "keep unreachable objects"
 msgstr "mantener objetos inalcanzables"
 
-#: builtin/pack-objects.c:3016
+#: builtin/pack-objects.c:3156
 msgid "pack loose unreachable objects"
 msgstr "empaquetar objetos sueltos inalcanzables"
 
-#: builtin/pack-objects.c:3018
+#: builtin/pack-objects.c:3158
 msgid "unpack unreachable objects newer than <time>"
 msgstr "desempaquetar objetos inalcanzables más nuevos que <tiempo>"
 
-#: builtin/pack-objects.c:3021
+#: builtin/pack-objects.c:3161
 msgid "create thin packs"
 msgstr "crear paquetes delgados"
 
-#: builtin/pack-objects.c:3023
+#: builtin/pack-objects.c:3163
 msgid "create packs suitable for shallow fetches"
 msgstr "crear paquetes adecuados para fetches superficiales"
 
-#: builtin/pack-objects.c:3025
+#: builtin/pack-objects.c:3165
 msgid "ignore packs that have companion .keep file"
 msgstr "ignorar paquetes que tienen un archivo .keep acompañante"
 
-#: builtin/pack-objects.c:3027
+#: builtin/pack-objects.c:3167
+msgid "ignore this pack"
+msgstr "ignorar este paquete"
+
+#: builtin/pack-objects.c:3169
 msgid "pack compression level"
 msgstr "nivel de compresión del paquete"
 
-#: builtin/pack-objects.c:3029
+#: builtin/pack-objects.c:3171
 msgid "do not hide commits by grafts"
 msgstr "no ocultar commits por injertos"
 
-#: builtin/pack-objects.c:3031
+#: builtin/pack-objects.c:3173
 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:3033
+#: builtin/pack-objects.c:3175
 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:3036
+#: builtin/pack-objects.c:3178
 msgid "handling for missing objects"
 msgstr "manejo de objetos perdidos"
 
-#: builtin/pack-objects.c:3039
+#: builtin/pack-objects.c:3181
 msgid "do not pack objects in promisor packfiles"
 msgstr "no se puede empaquetar objetos en packfiles promisores"
 
-#: builtin/pack-objects.c:3178
-msgid "Counting objects"
-msgstr "Contando objetos"
+#: builtin/pack-objects.c:3205
+#, 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:3210
+#, c-format
+msgid "pack.deltaCacheLimit is too high, forcing %d"
+msgstr "pack.deltaCacheLimit es muy grande, forzando %d"
+
+#: builtin/pack-objects.c:3338
+msgid "Enumerating objects"
+msgstr "Enumerando objetos"
 
-#: builtin/pack-refs.c:6
+#: builtin/pack-refs.c:7
 msgid "git pack-refs [<options>]"
 msgstr "git pack-refs [<opciones>]"
 
-#: builtin/pack-refs.c:14
+#: builtin/pack-refs.c:15
 msgid "pack everything"
 msgstr "empaquetar todo"
 
-#: builtin/pack-refs.c:15
+#: builtin/pack-refs.c:16
 msgid "prune loose refs (default)"
 msgstr "recortar refs perdidos (default)"
 
@@ -11687,78 +12165,78 @@ msgstr "Removiendo objetos duplicados"
 msgid "git prune [-n] [-v] [--progress] [--expire <time>] [--] [<head>...]"
 msgstr "git prune [-n] [-v] [--progress] [--expire <tiempo>] [--] [<head>...]"
 
-#: builtin/prune.c:107
+#: builtin/prune.c:108
 msgid "report pruned objects"
 msgstr "reportar objetos recortados"
 
-#: builtin/prune.c:110
+#: builtin/prune.c:111
 msgid "expire objects older than <time>"
 msgstr "expirar objetos más viejos a <tiempo>"
 
-#: builtin/prune.c:112
+#: builtin/prune.c:113
 msgid "limit traversal to objects outside promisor packfiles"
 msgstr "limitar el recorrido a objetos fuera de los paquetes del promisor"
 
-#: builtin/prune.c:126
+#: builtin/prune.c:127
 msgid "cannot prune in a precious-objects repo"
 msgstr "no se puede recortar en un repositorio de objetos-preciosos"
 
-#: builtin/pull.c:54 builtin/pull.c:56
+#: builtin/pull.c:59 builtin/pull.c:61
 #, c-format
 msgid "Invalid value for %s: %s"
 msgstr "Valor inválido para %s: %s"
 
-#: builtin/pull.c:76
+#: builtin/pull.c:81
 msgid "git pull [<options>] [<repository> [<refspec>...]]"
 msgstr ""
 "git pull [<opciones>] [<repositorio> [<especificación-de-referencia>...]]"
 
-#: builtin/pull.c:127
+#: builtin/pull.c:132
 msgid "control for recursive fetching of submodules"
 msgstr "control de fetch recursivo en submódulos"
 
-#: builtin/pull.c:131
+#: builtin/pull.c:136
 msgid "Options related to merging"
 msgstr "Opciones relacionadas a fusión"
 
-#: builtin/pull.c:134
+#: builtin/pull.c:139
 msgid "incorporate changes by rebasing rather than merging"
 msgstr "incorporar cambios por rebase en lugar de fusión"
 
-#: builtin/pull.c:161 builtin/rebase--helper.c:23 builtin/revert.c:121
+#: builtin/pull.c:166 builtin/rebase--helper.c:23 builtin/revert.c:121
 msgid "allow fast-forward"
 msgstr "permitir fast-forward"
 
-#: builtin/pull.c:170
+#: builtin/pull.c:175
 msgid "automatically stash/stash pop before and after rebase"
 msgstr "ejecutar automáticamente stash/stash pop antes y después de rebase"
 
-#: builtin/pull.c:186
+#: builtin/pull.c:191
 msgid "Options related to fetching"
 msgstr "Opciones relacionadas a fetch"
 
-#: builtin/pull.c:204
+#: builtin/pull.c:209
 msgid "number of submodules pulled in parallel"
 msgstr "número de submódulos que realizan pull en paralelo"
 
-#: builtin/pull.c:299
+#: builtin/pull.c:304
 #, c-format
 msgid "Invalid value for pull.ff: %s"
 msgstr "Valor inválido para pull.ff: %s"
 
-#: builtin/pull.c:415
+#: builtin/pull.c:420
 msgid ""
 "There is no candidate for rebasing against among the refs that you just "
 "fetched."
 msgstr "No hay candidato para rebasar entre las refs que has bajado con fetch."
 
-#: builtin/pull.c:417
+#: builtin/pull.c:422
 msgid ""
 "There are no candidates for merging among the refs that you just fetched."
 msgstr ""
 "No hay candidatos para fusionar entre las refs que has bajado con fetch."
 
-#: builtin/pull.c:418
+#: builtin/pull.c:423
 msgid ""
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
@@ -11767,7 +12245,7 @@ msgstr ""
 "tiene\n"
 "concordancia en el final remoto."
 
-#: builtin/pull.c:421
+#: builtin/pull.c:426
 #, c-format
 msgid ""
 "You asked to pull from the remote '%s', but did not specify\n"
@@ -11778,44 +12256,44 @@ msgstr ""
 "una rama. Porque este no es el remoto configurado por default\n"
 "para tu rama actual, tienes que especificar una rama en la línea de comando."
 
-#: builtin/pull.c:426 git-parse-remote.sh:73
+#: builtin/pull.c:431 git-parse-remote.sh:73
 msgid "You are not currently on a branch."
 msgstr "No te encuentras actualmente en la rama."
 
-#: builtin/pull.c:428 builtin/pull.c:443 git-parse-remote.sh:79
+#: builtin/pull.c:433 builtin/pull.c:448 git-parse-remote.sh:79
 msgid "Please specify which branch you want to rebase against."
 msgstr "Por favor especifica a qué rama quieres rebasar."
 
-#: builtin/pull.c:430 builtin/pull.c:445 git-parse-remote.sh:82
+#: builtin/pull.c:435 builtin/pull.c:450 git-parse-remote.sh:82
 msgid "Please specify which branch you want to merge with."
 msgstr "Por favor especifica a qué rama quieres fusionar."
 
-#: builtin/pull.c:431 builtin/pull.c:446
+#: builtin/pull.c:436 builtin/pull.c:451
 msgid "See git-pull(1) for details."
 msgstr "Ver git-pull(1) para detalles."
 
-#: builtin/pull.c:433 builtin/pull.c:439 builtin/pull.c:448
+#: builtin/pull.c:438 builtin/pull.c:444 builtin/pull.c:453
 #: git-parse-remote.sh:64
 msgid "<remote>"
 msgstr "<remoto>"
 
-#: builtin/pull.c:433 builtin/pull.c:448 builtin/pull.c:453 git-rebase.sh:477
+#: builtin/pull.c:438 builtin/pull.c:453 builtin/pull.c:458 git-rebase.sh:523
 #: git-parse-remote.sh:65
 msgid "<branch>"
 msgstr "<rama>"
 
-#: builtin/pull.c:441 git-parse-remote.sh:75
+#: builtin/pull.c:446 git-parse-remote.sh:75
 msgid "There is no tracking information for the current branch."
 msgstr "No hay información de rastreo para la rama actual."
 
-#: builtin/pull.c:450 git-parse-remote.sh:95
+#: builtin/pull.c:455 git-parse-remote.sh:95
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:"
 msgstr ""
 "Si deseas configurar el rastreo de información para esta rama, puedes "
 "hacerlo con:"
 
-#: builtin/pull.c:455
+#: builtin/pull.c:460
 #, c-format
 msgid ""
 "Your configuration specifies to merge with the ref '%s'\n"
@@ -11824,27 +12302,27 @@ msgstr ""
 "Tu configuración especifica fusionar con la ref '%s'\n"
 "de tu remoto, pero no se pudo hacer fetch a esa ref."
 
-#: builtin/pull.c:819
+#: builtin/pull.c:826
 msgid "ignoring --verify-signatures for rebase"
 msgstr "ignorando --verify-signatures para rebase"
 
-#: builtin/pull.c:867
+#: builtin/pull.c:874
 msgid "--[no-]autostash option is only valid with --rebase."
 msgstr "La opción --[no-]autostash sólo es válida con --rebase."
 
-#: builtin/pull.c:875
+#: builtin/pull.c:882
 msgid "Updating an unborn branch with changes added to the index."
 msgstr "Actualizando una rama no nata con cambios agregados al índice."
 
-#: builtin/pull.c:878
+#: builtin/pull.c:885
 msgid "pull with rebase"
 msgstr "pull con rebase"
 
-#: builtin/pull.c:879
+#: builtin/pull.c:886
 msgid "please commit or stash them."
 msgstr "por favor realiza un commit o un stash con ellos."
 
-#: builtin/pull.c:904
+#: builtin/pull.c:911
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -11855,7 +12333,7 @@ msgstr ""
 "realizando fast-forward al árbol de trabajo\n"
 "desde commit %s."
 
-#: builtin/pull.c:909
+#: builtin/pull.c:916
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -11872,33 +12350,33 @@ msgstr ""
 "$ git reset --hard\n"
 "para recuperar."
 
-#: builtin/pull.c:924
+#: builtin/pull.c:931
 msgid "Cannot merge multiple branches into empty head."
 msgstr "No se puede fusionar múltiples ramas en un head vacío."
 
-#: builtin/pull.c:928
+#: builtin/pull.c:935
 msgid "Cannot rebase onto multiple branches."
 msgstr "No se puede rebasar en múltiples ramas."
 
-#: builtin/pull.c:935
+#: builtin/pull.c:942
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr ""
 "no se puede rebasar con modificaciones de submódulos grabadas localmente"
 
-#: builtin/push.c:17
+#: builtin/push.c:19
 msgid "git push [<options>] [<repository> [<refspec>...]]"
 msgstr ""
 "git push [<opciones>] [<repositorio> [<especificaciones-de-referencia>...]]"
 
-#: builtin/push.c:92
+#: builtin/push.c:111
 msgid "tag shorthand without <tag>"
 msgstr "taquigrafía de tag sin <tag>"
 
-#: builtin/push.c:102
+#: builtin/push.c:121
 msgid "--delete only accepts plain target ref names"
 msgstr "--delete solo acepta como objetivos nombres de ref planos"
 
-#: builtin/push.c:146
+#: builtin/push.c:165
 msgid ""
 "\n"
 "To choose either option permanently, see push.default in 'git help config'."
@@ -11907,7 +12385,7 @@ msgstr ""
 "Para elegir si la opción es permanente, mira push.default en 'git help "
 "config'."
 
-#: builtin/push.c:149
+#: builtin/push.c:168
 #, c-format
 msgid ""
 "The upstream branch of your current branch does not match\n"
@@ -11932,7 +12410,7 @@ msgstr ""
 "\tgit push %s %s\n"
 "%s"
 
-#: builtin/push.c:164
+#: builtin/push.c:183
 #, c-format
 msgid ""
 "You are not currently on a branch.\n"
@@ -11947,7 +12425,7 @@ msgstr ""
 "\n"
 "\tgit push %s HEAD:<nombre-de-rama-remota>\n"
 
-#: builtin/push.c:178
+#: builtin/push.c:197
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -11961,12 +12439,12 @@ msgstr ""
 "\n"
 "\tgit push --set-upstream %s %s\n"
 
-#: builtin/push.c:186
+#: builtin/push.c:205
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
 msgstr "La rama actual %s tiene múltiples ramas upstream, rechazando el push."
 
-#: builtin/push.c:189
+#: builtin/push.c:208
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -11977,13 +12455,13 @@ msgstr ""
 "su rama actual '%s', sin decirme qué poner en el push\n"
 "para actualizar en qué rama de remoto."
 
-#: builtin/push.c:248
+#: builtin/push.c:267
 msgid ""
 "You didn't specify any refspecs to push, and push.default is \"nothing\"."
 msgstr ""
 "No se especificó ningún refspecs para hacer push, y push.default es \"nada\"."
 
-#: builtin/push.c:255
+#: builtin/push.c:274
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
@@ -11995,7 +12473,7 @@ msgstr ""
 "'git pull ...') antes de hacer push de nuevo.\n"
 "Mira 'Note about fast-forwards' en 'git push --help' para mas detalles."
 
-#: builtin/push.c:261
+#: builtin/push.c:280
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. Check out this branch and integrate the remote changes\n"
@@ -12008,7 +12486,7 @@ msgstr ""
 "(ejem. 'git pull ...') antes de volver a hacer push.\n"
 "Vea las 'Notes about fast-forwards' en 'git push --help' para más detalles."
 
-#: builtin/push.c:267
+#: builtin/push.c:286
 msgid ""
 "Updates were rejected because the remote contains work that you do\n"
 "not have locally. This is usually caused by another repository pushing\n"
@@ -12022,12 +12500,12 @@ msgstr ""
 "remotos (ej. 'git pull ...') antes de volver a hacer push.\n"
 "Vea 'Notes about fast-forwards0 en 'git push --help' para detalles."
 
-#: builtin/push.c:274
+#: builtin/push.c:293
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr ""
 "Actualizaciones fueron rechazadas porque el tag ya existe en el remoto."
 
-#: builtin/push.c:277
+#: builtin/push.c:296
 msgid ""
 "You cannot update a remote ref that points at a non-commit object,\n"
 "or update a remote ref to make it point at a non-commit object,\n"
@@ -12037,22 +12515,22 @@ msgstr ""
 "o actualizar un ref remoto para hacer que  apunte a un objeto no-commit,\n"
 "sin usar la opción '--force'.\n"
 
-#: builtin/push.c:337
+#: builtin/push.c:357
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "Haciendo push a %s\n"
 
-#: builtin/push.c:341
+#: builtin/push.c:361
 #, c-format
 msgid "failed to push some refs to '%s'"
-msgstr "fallo el push de algunas referencias a '%s'"
+msgstr "falló el push de algunas referencias a '%s'"
 
-#: builtin/push.c:372
+#: builtin/push.c:395
 #, c-format
 msgid "bad repository '%s'"
 msgstr "mal repositorio '%s'"
 
-#: builtin/push.c:373
+#: builtin/push.c:396
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -12074,112 +12552,104 @@ msgstr ""
 "\n"
 "    git push <nombre>\n"
 
-#: builtin/push.c:391
-msgid "--all and --tags are incompatible"
-msgstr "--all y --tags son incompatibles"
-
-#: builtin/push.c:392
-msgid "--all can't be combined with refspecs"
-msgstr "--all no puede ser combinada con refspecs"
-
-#: builtin/push.c:397
-msgid "--mirror and --tags are incompatible"
-msgstr "--mirror y --tags son incompatibles"
-
-#: builtin/push.c:398
-msgid "--mirror can't be combined with refspecs"
-msgstr "--mirror no puede ser combinado con refspecs"
-
-#: builtin/push.c:403
-msgid "--all and --mirror are incompatible"
-msgstr "--all y --mirror son incompatibles"
-
-#: builtin/push.c:535
+#: builtin/push.c:551
 msgid "repository"
 msgstr "repositorio"
 
-#: builtin/push.c:536 builtin/send-pack.c:163
+#: builtin/push.c:552 builtin/send-pack.c:164
 msgid "push all refs"
 msgstr "realizar push a todas las refs"
 
-#: builtin/push.c:537 builtin/send-pack.c:165
+#: builtin/push.c:553 builtin/send-pack.c:166
 msgid "mirror all refs"
 msgstr "realizar mirror a todas las refs"
 
-#: builtin/push.c:539
+#: builtin/push.c:555
 msgid "delete refs"
 msgstr "borrar refs"
 
-#: builtin/push.c:540
+#: builtin/push.c:556
 msgid "push tags (can't be used with --all or --mirror)"
 msgstr "realizar push a tags (no puede ser usado con --all o --mirror)"
 
-#: builtin/push.c:543 builtin/send-pack.c:166
+#: builtin/push.c:559 builtin/send-pack.c:167
 msgid "force updates"
 msgstr "forzar actualizaciones"
 
-#: builtin/push.c:545 builtin/send-pack.c:180
+#: builtin/push.c:561 builtin/send-pack.c:181
 msgid "refname>:<expect"
 msgstr "refname>:<expect"
 
-#: builtin/push.c:546 builtin/send-pack.c:181
+#: builtin/push.c:562 builtin/send-pack.c:182
 msgid "require old value of ref to be at this value"
 msgstr "requiere haber valor viejo de ref en este valor"
 
-#: builtin/push.c:549
+#: builtin/push.c:565
 msgid "control recursive pushing of submodules"
 msgstr "controlar push recursivo de submódulos"
 
-#: builtin/push.c:551 builtin/send-pack.c:174
+#: builtin/push.c:567 builtin/send-pack.c:175
 msgid "use thin pack"
 msgstr "usar empaquetado delgado"
 
-#: builtin/push.c:552 builtin/push.c:553 builtin/send-pack.c:160
-#: builtin/send-pack.c:161
+#: builtin/push.c:568 builtin/push.c:569 builtin/send-pack.c:161
+#: builtin/send-pack.c:162
 msgid "receive pack program"
 msgstr "recibir programa de paquete"
 
-#: builtin/push.c:554
+#: builtin/push.c:570
 msgid "set upstream for git pull/status"
 msgstr "configurar upstream para git pulll/status"
 
-#: builtin/push.c:557
+#: builtin/push.c:573
 msgid "prune locally removed refs"
 msgstr "recortando refs removidas localmente"
 
-#: builtin/push.c:559
+#: builtin/push.c:575
 msgid "bypass pre-push hook"
 msgstr "hacer un bypass al hook pre-push"
 
-#: builtin/push.c:560
+#: builtin/push.c:576
 msgid "push missing but relevant tags"
 msgstr "realizar push de tags faltantes pero relevantes"
 
-#: builtin/push.c:563 builtin/send-pack.c:168
+#: builtin/push.c:579 builtin/send-pack.c:169
 msgid "GPG sign the push"
 msgstr "Firmar con GPG el push"
 
-#: builtin/push.c:565 builtin/send-pack.c:175
+#: builtin/push.c:581 builtin/send-pack.c:176
 msgid "request atomic transaction on remote side"
 msgstr "solicitar transacción atómica en el lado remoto"
 
-#: builtin/push.c:566 builtin/send-pack.c:171
-msgid "server-specific"
-msgstr "especifico-de-servidor"
-
-#: builtin/push.c:566 builtin/send-pack.c:172
-msgid "option to transmit"
-msgstr "opción para trasmitir"
-
-#: builtin/push.c:583
+#: builtin/push.c:599
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr "--delete es incompatible con --all, --mirror y --tags"
 
-#: builtin/push.c:585
+#: builtin/push.c:601
 msgid "--delete doesn't make sense without any refs"
 msgstr "--delete no tiene sentido sin ninguna referencia"
 
 #: builtin/push.c:604
+msgid "--all and --tags are incompatible"
+msgstr "--all y --tags son incompatibles"
+
+#: builtin/push.c:606
+msgid "--all can't be combined with refspecs"
+msgstr "--all no puede ser combinada con refspecs"
+
+#: builtin/push.c:610
+msgid "--mirror and --tags are incompatible"
+msgstr "--mirror y --tags son incompatibles"
+
+#: builtin/push.c:612
+msgid "--mirror can't be combined with refspecs"
+msgstr "--mirror no puede ser combinado con refspecs"
+
+#: builtin/push.c:615
+msgid "--all and --mirror are incompatible"
+msgstr "--all y --mirror son incompatibles"
+
+#: builtin/push.c:634
 msgid "push options must not have new line characters"
 msgstr "opciones de push no pueden tener caracteres de línea nueva"
 
@@ -12194,67 +12664,67 @@ msgstr ""
 "sparse-checkout] [--index-output=<archivo>] (--empty | <árbol-ismo1> [<árbol-"
 "ismo2> [<árbol-ismo3>]])"
 
-#: builtin/read-tree.c:121
+#: builtin/read-tree.c:120
 msgid "write resulting index to <file>"
 msgstr "escribir índice resultante en <archivo>"
 
-#: builtin/read-tree.c:124
+#: builtin/read-tree.c:123
 msgid "only empty the index"
 msgstr "solo vaciar el índice"
 
-#: builtin/read-tree.c:126
+#: builtin/read-tree.c:125
 msgid "Merging"
 msgstr "Fusionando"
 
-#: builtin/read-tree.c:128
+#: builtin/read-tree.c:127
 msgid "perform a merge in addition to a read"
 msgstr "realizar un merge en adición a una lectura"
 
-#: builtin/read-tree.c:130
+#: builtin/read-tree.c:129
 msgid "3-way merge if no file level merging required"
 msgstr "fusión de 3-vías si no se requiere ninguna fusión a nivel de archivo"
 
-#: builtin/read-tree.c:132
+#: builtin/read-tree.c:131
 msgid "3-way merge in presence of adds and removes"
 msgstr "fusión en 3-vías en presencia de adiciones y remociones"
 
-#: builtin/read-tree.c:134
+#: builtin/read-tree.c:133
 msgid "same as -m, but discard unmerged entries"
 msgstr "igual que -m, pero descarta entradas sin fusionar"
 
-#: builtin/read-tree.c:135
+#: builtin/read-tree.c:134
 msgid "<subdirectory>/"
 msgstr "<subdirectorio>/"
 
-#: builtin/read-tree.c:136
+#: builtin/read-tree.c:135
 msgid "read the tree into the index under <subdirectory>/"
 msgstr "lea el árbol en el índice bajo <subdirectorio>/"
 
-#: builtin/read-tree.c:139
+#: builtin/read-tree.c:138
 msgid "update working tree with merge result"
 msgstr "actualiza el árbol de trabajo con el resultado de la fusión"
 
-#: builtin/read-tree.c:141
+#: builtin/read-tree.c:140
 msgid "gitignore"
 msgstr "gitignore"
 
-#: builtin/read-tree.c:142
+#: builtin/read-tree.c:141
 msgid "allow explicitly ignored files to be overwritten"
 msgstr "permitir sobrescritura de archivos explícitamente ignorados"
 
-#: builtin/read-tree.c:145
+#: builtin/read-tree.c:144
 msgid "don't check the working tree after merging"
 msgstr "no revisar el árbol de trabajo tras fusionar"
 
-#: builtin/read-tree.c:146
+#: builtin/read-tree.c:145
 msgid "don't update the index or the work tree"
 msgstr "no actualizar el índice o el árbol de trabajo"
 
-#: builtin/read-tree.c:148
+#: builtin/read-tree.c:147
 msgid "skip applying sparse checkout filter"
 msgstr "saltar aplicado de filtro de sparse checkout"
 
-#: builtin/read-tree.c:150
+#: builtin/read-tree.c:149
 msgid "debug unpack-trees"
 msgstr "debug de árboles-desempacados"
 
@@ -12271,46 +12741,58 @@ msgid "allow commits with empty messages"
 msgstr "permitir commits con mensajes vacíos"
 
 #: builtin/rebase--helper.c:27
+msgid "rebase merge commits"
+msgstr "rebasando commits de fusión"
+
+#: builtin/rebase--helper.c:29
+msgid "keep original branch points of cousins"
+msgstr "mantener puntos originales de la rama de sus primos"
+
+#: builtin/rebase--helper.c:30
 msgid "continue rebase"
 msgstr "continuar rebase"
 
-#: builtin/rebase--helper.c:29
+#: builtin/rebase--helper.c:32
 msgid "abort rebase"
 msgstr "abortar rebase"
 
-#: builtin/rebase--helper.c:32
+#: builtin/rebase--helper.c:35
 msgid "make rebase script"
 msgstr "generar script de rebase"
 
-#: builtin/rebase--helper.c:34
+#: builtin/rebase--helper.c:37
 msgid "shorten commit ids in the todo list"
 msgstr "ids de commits cortos en la lista de pendientes"
 
-#: builtin/rebase--helper.c:36
+#: builtin/rebase--helper.c:39
 msgid "expand commit ids in the todo list"
 msgstr "expandir ids de commits en la lista de pendientes"
 
-#: builtin/rebase--helper.c:38
+#: builtin/rebase--helper.c:41
 msgid "check the todo list"
 msgstr "revisar la lista de pendientes"
 
-#: builtin/rebase--helper.c:40
+#: builtin/rebase--helper.c:43
 msgid "skip unnecessary picks"
 msgstr "saltar los picks innecesarios"
 
-#: builtin/rebase--helper.c:42
+#: builtin/rebase--helper.c:45
 msgid "rearrange fixup/squash lines"
 msgstr "reorganizar líneas fixup/squash"
 
-#: builtin/rebase--helper.c:44
+#: builtin/rebase--helper.c:47
 msgid "insert exec commands in todo list"
 msgstr "insertar comando exec en la lista de pendientes"
 
-#: builtin/receive-pack.c:30
+#: builtin/rebase--helper.c:68
+msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
+msgstr "--[no-]rebase-cousins no tiene efecto sin --rebase-merges"
+
+#: builtin/receive-pack.c:31
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <git-dir>"
 
-#: builtin/receive-pack.c:841
+#: builtin/receive-pack.c:842
 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"
@@ -12343,7 +12825,7 @@ msgstr ""
 "Para suprimir este mensaje y mantener el comportamiento predeterminado,\n"
 "configure 'receive.denyCurrentBranch' a 'refuse'."
 
-#: builtin/receive-pack.c:861
+#: builtin/receive-pack.c:862
 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"
@@ -12364,11 +12846,11 @@ msgstr ""
 "\n"
 "Para suprimir este mensaje, puede configurarlo en 'refuse'."
 
-#: builtin/receive-pack.c:1934
+#: builtin/receive-pack.c:1935
 msgid "quiet"
 msgstr "tranquilo"
 
-#: builtin/receive-pack.c:1948
+#: builtin/receive-pack.c:1949
 msgid "You must specify a directory."
 msgstr "Se tiene que especificar un directorio."
 
@@ -12377,11 +12859,11 @@ msgstr "Se tiene que especificar un directorio."
 msgid "'%s' is not a valid timestamp"
 msgstr "'%s' no es una marca de tiempo válida"
 
-#: builtin/remote.c:13
+#: builtin/remote.c:14
 msgid "git remote [-v | --verbose]"
 msgstr "git remote [-v | --verbose]"
 
-#: builtin/remote.c:14
+#: builtin/remote.c:15
 msgid ""
 "git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
 "mirror=<fetch|push>] <name> <url>"
@@ -12389,82 +12871,82 @@ msgstr ""
 "git remote add [-t <rama>] [-m <master>] [-f] [--tags | --no-tags] [--"
 "mirror=<fetch|push>] <nombre> <url>"
 
-#: builtin/remote.c:15 builtin/remote.c:35
+#: builtin/remote.c:16 builtin/remote.c:36
 msgid "git remote rename <old> <new>"
 msgstr "git remote rename <viejo> <nuevo>"
 
-#: builtin/remote.c:16 builtin/remote.c:40
+#: builtin/remote.c:17 builtin/remote.c:41
 msgid "git remote remove <name>"
 msgstr "git remote remove <nombre>"
 
-#: builtin/remote.c:17 builtin/remote.c:45
+#: builtin/remote.c:18 builtin/remote.c:46
 msgid "git remote set-head <name> (-a | --auto | -d | --delete | <branch>)"
 msgstr "git remote set-head <nombre> (-a | --auto | -d | --delete | <rama>)"
 
-#: builtin/remote.c:18
+#: builtin/remote.c:19
 msgid "git remote [-v | --verbose] show [-n] <name>"
 msgstr "git remote [-v | --verbose] show [-n] <nombre>"
 
-#: builtin/remote.c:19
+#: builtin/remote.c:20
 msgid "git remote prune [-n | --dry-run] <name>"
 msgstr "git remote prune [-n | --dry-run] <nombre>"
 
-#: builtin/remote.c:20
+#: builtin/remote.c:21
 msgid ""
 "git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]"
 msgstr ""
 "git remote [-v | --verbose] update [-p | --prune] [(<grupo> | <remoto>)...]"
 
-#: builtin/remote.c:21
+#: builtin/remote.c:22
 msgid "git remote set-branches [--add] <name> <branch>..."
 msgstr "git remote set-branches [--add] <nombre> <rama>..."
 
-#: builtin/remote.c:22 builtin/remote.c:71
+#: builtin/remote.c:23 builtin/remote.c:72
 msgid "git remote get-url [--push] [--all] <name>"
 msgstr "git remote get-url [--push] [--all] <nombre>"
 
-#: builtin/remote.c:23 builtin/remote.c:76
+#: builtin/remote.c:24 builtin/remote.c:77
 msgid "git remote set-url [--push] <name> <newurl> [<oldurl>]"
 msgstr "git remote set-url [--push] <nombre> <nuevo-url> [<viejo-url>]"
 
-#: builtin/remote.c:24 builtin/remote.c:77
+#: builtin/remote.c:25 builtin/remote.c:78
 msgid "git remote set-url --add <name> <newurl>"
 msgstr "git remote set-url --add <nombre> <nuevo-url>"
 
-#: builtin/remote.c:25 builtin/remote.c:78
+#: builtin/remote.c:26 builtin/remote.c:79
 msgid "git remote set-url --delete <name> <url>"
 msgstr "git remote set-url --delete <nombre> <url>"
 
-#: builtin/remote.c:30
+#: builtin/remote.c:31
 msgid "git remote add [<options>] <name> <url>"
 msgstr "git remote add [<opciones>] <nombre> <url>"
 
-#: builtin/remote.c:50
+#: builtin/remote.c:51
 msgid "git remote set-branches <name> <branch>..."
 msgstr "git remote set-branches <nombre> <rama>..."
 
-#: builtin/remote.c:51
+#: builtin/remote.c:52
 msgid "git remote set-branches --add <name> <branch>..."
 msgstr "git remote set-branches --add <nombre> <rama>..."
 
-#: builtin/remote.c:56
+#: builtin/remote.c:57
 msgid "git remote show [<options>] <name>"
 msgstr "git remote show [<opciones>] <nombre>"
 
-#: builtin/remote.c:61
+#: builtin/remote.c:62
 msgid "git remote prune [<options>] <name>"
 msgstr "git remote prune [<opciones>] <nombre>"
 
-#: builtin/remote.c:66
+#: builtin/remote.c:67
 msgid "git remote update [<options>] [<group> | <remote>]..."
 msgstr "git remote update [<opciones>] [<grupo> | <remoto>]..."
 
-#: builtin/remote.c:95
+#: builtin/remote.c:96
 #, c-format
 msgid "Updating %s"
 msgstr "Actualizando %s"
 
-#: builtin/remote.c:127
+#: builtin/remote.c:128
 msgid ""
 "--mirror is dangerous and deprecated; please\n"
 "\t use --mirror=fetch or --mirror=push instead"
@@ -12472,88 +12954,88 @@ msgstr ""
 "Usar --mirror es peligroso y está desaprobado;\n"
 "\t usa más bien --mirror=fetch o --mirror=push"
 
-#: builtin/remote.c:144
+#: builtin/remote.c:145
 #, c-format
 msgid "unknown mirror argument: %s"
 msgstr "argumento mirror desconocido: %s"
 
-#: builtin/remote.c:160
+#: builtin/remote.c:161
 msgid "fetch the remote branches"
 msgstr "realizar fetch a las ramas remotas"
 
-#: builtin/remote.c:162
+#: builtin/remote.c:163
 msgid "import all tags and associated objects when fetching"
 msgstr "importar todos los tags y objetos asociados cuando realiza el fetch"
 
-#: builtin/remote.c:165
+#: builtin/remote.c:166
 msgid "or do not fetch any tag at all (--no-tags)"
 msgstr "o no realziar fetch a ningún tag (--no-tags)"
 
-#: builtin/remote.c:167
+#: builtin/remote.c:168
 msgid "branch(es) to track"
 msgstr "rama(s) para rastrear"
 
-#: builtin/remote.c:168
+#: builtin/remote.c:169
 msgid "master branch"
 msgstr "rama master"
 
-#: builtin/remote.c:169
+#: builtin/remote.c:170
 msgid "push|fetch"
 msgstr "push|fetch"
 
-#: builtin/remote.c:170
+#: builtin/remote.c:171
 msgid "set up remote as a mirror to push to or fetch from"
 msgstr ""
 "configurar remote como mirror para realizar push o desde el cual realizar "
 "fetch"
 
-#: builtin/remote.c:182
+#: builtin/remote.c:183
 msgid "specifying a master branch makes no sense with --mirror"
 msgstr "especificar una rama master no tiene sentido con --mirror"
 
-#: builtin/remote.c:184
+#: builtin/remote.c:185
 msgid "specifying branches to track makes sense only with fetch mirrors"
 msgstr "especificar ramas para rastrear solo tiene sentido con fetch mirrors"
 
-#: builtin/remote.c:191 builtin/remote.c:631
+#: builtin/remote.c:192 builtin/remote.c:634
 #, c-format
 msgid "remote %s already exists."
 msgstr "remoto %s ya existe."
 
-#: builtin/remote.c:195 builtin/remote.c:635
+#: builtin/remote.c:196 builtin/remote.c:638
 #, c-format
 msgid "'%s' is not a valid remote name"
 msgstr "'%s' no es un nombre remoto válido"
 
-#: builtin/remote.c:235
+#: builtin/remote.c:236
 #, c-format
 msgid "Could not setup master '%s'"
 msgstr "No se pudo configurar master '%s'"
 
-#: builtin/remote.c:337
+#: builtin/remote.c:342
 #, c-format
 msgid "Could not get fetch map for refspec %s"
 msgstr "No se pudo realizar el fetch al mapa para refspec %s"
 
-#: builtin/remote.c:438 builtin/remote.c:446
+#: builtin/remote.c:441 builtin/remote.c:449
 msgid "(matching)"
 msgstr "(concordando)"
 
-#: builtin/remote.c:450
+#: builtin/remote.c:453
 msgid "(delete)"
 msgstr "(eliminar)"
 
-#: builtin/remote.c:624 builtin/remote.c:759 builtin/remote.c:858
+#: builtin/remote.c:627 builtin/remote.c:762 builtin/remote.c:861
 #, c-format
 msgid "No such remote: %s"
 msgstr "No existe el remoto: %s"
 
-#: builtin/remote.c:641
+#: builtin/remote.c:644
 #, c-format
 msgid "Could not rename config section '%s' to '%s'"
 msgstr "No se pudo renombrar la sección de configuración '%s' a '%s'"
 
-#: builtin/remote.c:661
+#: builtin/remote.c:664
 #, c-format
 msgid ""
 "Not updating non-default fetch refspec\n"
@@ -12564,17 +13046,17 @@ msgstr ""
 "\t%s\n"
 "\tPor favor actualice la configuración manualmente si es necesario."
 
-#: builtin/remote.c:697
+#: builtin/remote.c:700
 #, c-format
 msgid "deleting '%s' failed"
 msgstr "borrando '%s' falló"
 
-#: builtin/remote.c:731
+#: builtin/remote.c:734
 #, c-format
 msgid "creating '%s' failed"
 msgstr "creando '%s' falló"
 
-#: builtin/remote.c:796
+#: builtin/remote.c:799
 msgid ""
 "Note: A branch outside the refs/remotes/ hierarchy was not removed;\n"
 "to delete it, use:"
@@ -12589,113 +13071,118 @@ msgstr[1] ""
 "removidas;\n"
 "para borrarlas, use:"
 
-#: builtin/remote.c:810
+#: builtin/remote.c:813
 #, c-format
 msgid "Could not remove config section '%s'"
 msgstr "No se pudo borrar la sección de configuración '%s'"
 
-#: builtin/remote.c:911
+#: builtin/remote.c:914
 #, c-format
 msgid " new (next fetch will store in remotes/%s)"
 msgstr " nuevo (siguiente fetch se guardará en remotes/%s)"
 
-#: builtin/remote.c:914
+#: builtin/remote.c:917
 msgid " tracked"
 msgstr " rastreada"
 
-#: builtin/remote.c:916
+#: builtin/remote.c:919
 msgid " stale (use 'git remote prune' to remove)"
 msgstr " viejo ( use 'git remote prune' para remover)"
 
-#: builtin/remote.c:918
+#: builtin/remote.c:921
 msgid " ???"
 msgstr " ???"
 
-#: builtin/remote.c:959
+#: builtin/remote.c:962
 #, c-format
 msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch"
 msgstr "invalido branch.%s.merge; no se puede rebasar en > 1 rama"
 
-#: builtin/remote.c:967
+#: builtin/remote.c:971
 #, c-format
 msgid "rebases interactively onto remote %s"
 msgstr "rebasa interactivamente en remoto %s"
 
-#: builtin/remote.c:968
+#: builtin/remote.c:973
+#, c-format
+msgid "rebases interactively (with merges) onto remote %s"
+msgstr "rebasa interactivamente (con fusiones) en remoto %s"
+
+#: builtin/remote.c:976
 #, c-format
 msgid "rebases onto remote %s"
 msgstr "rebasa sobre el remoto %s"
 
-#: builtin/remote.c:971
+#: builtin/remote.c:980
 #, c-format
 msgid " merges with remote %s"
 msgstr " se fusiona con remoto %s"
 
-#: builtin/remote.c:974
+#: builtin/remote.c:983
 #, c-format
 msgid "merges with remote %s"
 msgstr "fusiona con remoto %s"
 
-#: builtin/remote.c:977
+#: builtin/remote.c:986
 #, c-format
 msgid "%-*s    and with remote %s\n"
 msgstr "%-*s y con el remoto %s\n"
 
-#: builtin/remote.c:1020
+#: builtin/remote.c:1029
 msgid "create"
 msgstr "crear"
 
-#: builtin/remote.c:1023
+#: builtin/remote.c:1032
 msgid "delete"
 msgstr "borrar"
 
-#: builtin/remote.c:1027
+#: builtin/remote.c:1036
 msgid "up to date"
 msgstr "actualizado"
 
-#: builtin/remote.c:1030
+#: builtin/remote.c:1039
 msgid "fast-forwardable"
 msgstr "puede realizar fast-forward"
 
-#: builtin/remote.c:1033
+#: builtin/remote.c:1042
 msgid "local out of date"
 msgstr "desactualizado local"
 
-#: builtin/remote.c:1040
+#: builtin/remote.c:1049
 #, c-format
 msgid "    %-*s forces to %-*s (%s)"
 msgstr "    %-*s fuerza a %-*s (%s)"
 
-#: builtin/remote.c:1043
+#: builtin/remote.c:1052
 #, c-format
 msgid "    %-*s pushes to %-*s (%s)"
 msgstr "    %-*s publica a %-*s (%s)"
 
-#: builtin/remote.c:1047
+#: builtin/remote.c:1056
 #, c-format
 msgid "    %-*s forces to %s"
 msgstr "    %-*s fuerza a %s"
 
-#: builtin/remote.c:1050
+#: builtin/remote.c:1059
 #, c-format
 msgid "    %-*s pushes to %s"
 msgstr "    %-*s publica a %s"
 
-#: builtin/remote.c:1118
+#: builtin/remote.c:1127
 msgid "do not query remotes"
 msgstr "no consultar remotos"
 
-#: builtin/remote.c:1145
+#: builtin/remote.c:1154
 #, c-format
 msgid "* remote %s"
 msgstr "* remoto %s"
 
-#: builtin/remote.c:1146
+#: builtin/remote.c:1155
 #, c-format
 msgid "  Fetch URL: %s"
 msgstr "  URL  para obtener: %s"
 
-#: builtin/remote.c:1147 builtin/remote.c:1163 builtin/remote.c:1302
+#: builtin/remote.c:1156 builtin/remote.c:1172 builtin/remote.c:1311
 msgid "(no URL)"
 msgstr "(sin URL)"
 
@@ -12703,185 +13190,185 @@ msgstr "(sin URL)"
 #. with the one in " Fetch URL: %s"
 #. translation.
 #.
-#: builtin/remote.c:1161 builtin/remote.c:1163
+#: builtin/remote.c:1170 builtin/remote.c:1172
 #, c-format
 msgid "  Push  URL: %s"
 msgstr "  URL para publicar: %s"
 
-#: builtin/remote.c:1165 builtin/remote.c:1167 builtin/remote.c:1169
+#: builtin/remote.c:1174 builtin/remote.c:1176 builtin/remote.c:1178
 #, c-format
 msgid "  HEAD branch: %s"
 msgstr "  Rama HEAD: %s"
 
-#: builtin/remote.c:1165
+#: builtin/remote.c:1174
 msgid "(not queried)"
 msgstr "(no consultado)"
 
-#: builtin/remote.c:1167
+#: builtin/remote.c:1176
 msgid "(unknown)"
 msgstr "(desconocido)"
 
-#: builtin/remote.c:1171
+#: builtin/remote.c:1180
 #, c-format
 msgid ""
 "  HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
 msgstr ""
 "  HEAD en rama ( HEAD remoto es ambiguo, puede ser uno de los siguientes):\n"
 
-#: builtin/remote.c:1183
+#: builtin/remote.c:1192
 #, c-format
 msgid "  Remote branch:%s"
 msgid_plural "  Remote branches:%s"
 msgstr[0] "  Rama remota:%s"
 msgstr[1] "  Ramas remotas:%s"
 
-#: builtin/remote.c:1186 builtin/remote.c:1212
+#: builtin/remote.c:1195 builtin/remote.c:1221
 msgid " (status not queried)"
 msgstr " (estado no consultado)"
 
-#: builtin/remote.c:1195
+#: builtin/remote.c:1204
 msgid "  Local branch configured for 'git pull':"
 msgid_plural "  Local branches configured for 'git pull':"
 msgstr[0] "  Rama local configurada para 'git pull':"
 msgstr[1] "  Ramas locales configuradas para 'git pull':"
 
-#: builtin/remote.c:1203
+#: builtin/remote.c:1212
 msgid "  Local refs will be mirrored by 'git push'"
 msgstr "  Las referencias locales serán reflejadas por 'git push'"
 
-#: builtin/remote.c:1209
+#: builtin/remote.c:1218
 #, c-format
 msgid "  Local ref configured for 'git push'%s:"
 msgid_plural "  Local refs configured for 'git push'%s:"
 msgstr[0] "  Referencia local configurada para 'git push'%s:"
 msgstr[1] "  Referencias locales configuradas para 'git push'%s:"
 
-#: builtin/remote.c:1230
+#: builtin/remote.c:1239
 msgid "set refs/remotes/<name>/HEAD according to remote"
 msgstr "configurar refs/remotes/<nombre>/HEAD de acuerdo al remoto"
 
-#: builtin/remote.c:1232
+#: builtin/remote.c:1241
 msgid "delete refs/remotes/<name>/HEAD"
 msgstr "borrar refs/remotos/<nombre>/HEAD"
 
-#: builtin/remote.c:1247
+#: builtin/remote.c:1256
 msgid "Cannot determine remote HEAD"
 msgstr "No se puede determinar el HEAD remoto"
 
-#: builtin/remote.c:1249
+#: builtin/remote.c:1258
 msgid "Multiple remote HEAD branches. Please choose one explicitly with:"
 msgstr "Múltiples ramas HEAD remotas. Por favor escoja una explícitamente con:"
 
-#: builtin/remote.c:1259
+#: builtin/remote.c:1268
 #, c-format
 msgid "Could not delete %s"
 msgstr "No se pudo borrar %s"
 
-#: builtin/remote.c:1267
+#: builtin/remote.c:1276
 #, c-format
 msgid "Not a valid ref: %s"
 msgstr "No es un ref válido: %s"
 
-#: builtin/remote.c:1269
+#: builtin/remote.c:1278
 #, c-format
 msgid "Could not setup %s"
 msgstr "No se pudo configurar %s"
 
-#: builtin/remote.c:1287
+#: builtin/remote.c:1296
 #, c-format
 msgid " %s will become dangling!"
 msgstr " %s será colgado!"
 
-#: builtin/remote.c:1288
+#: builtin/remote.c:1297
 #, c-format
 msgid " %s has become dangling!"
 msgstr " %s ha sido colgado!"
 
-#: builtin/remote.c:1298
+#: builtin/remote.c:1307
 #, c-format
 msgid "Pruning %s"
 msgstr "Recortando %s"
 
-#: builtin/remote.c:1299
+#: builtin/remote.c:1308
 #, c-format
 msgid "URL: %s"
 msgstr "URL: %s"
 
-#: builtin/remote.c:1315
+#: builtin/remote.c:1324
 #, c-format
 msgid " * [would prune] %s"
 msgstr " * [ejecutará prune] %s"
 
-#: builtin/remote.c:1318
+#: builtin/remote.c:1327
 #, c-format
 msgid " * [pruned] %s"
 msgstr " * [prune realizado] %s"
 
-#: builtin/remote.c:1363
+#: builtin/remote.c:1372
 msgid "prune remotes after fetching"
 msgstr "recortar remotos tras realizar fetch"
 
-#: builtin/remote.c:1426 builtin/remote.c:1480 builtin/remote.c:1548
+#: builtin/remote.c:1435 builtin/remote.c:1489 builtin/remote.c:1557
 #, c-format
 msgid "No such remote '%s'"
 msgstr "No existe el remoto '%s'"
 
-#: builtin/remote.c:1442
+#: builtin/remote.c:1451
 msgid "add branch"
 msgstr "agregar rama"
 
-#: builtin/remote.c:1449
+#: builtin/remote.c:1458
 msgid "no remote specified"
 msgstr "no hay remotos especificados"
 
-#: builtin/remote.c:1466
+#: builtin/remote.c:1475
 msgid "query push URLs rather than fetch URLs"
 msgstr "consultar URLs de push en lugar de URLs de fetch"
 
-#: builtin/remote.c:1468
+#: builtin/remote.c:1477
 msgid "return all URLs"
 msgstr "retornar todos los URLs"
 
-#: builtin/remote.c:1496
+#: builtin/remote.c:1505
 #, c-format
 msgid "no URLs configured for remote '%s'"
 msgstr "no hay URLs configurados para remoto '%s'"
 
-#: builtin/remote.c:1522
+#: builtin/remote.c:1531
 msgid "manipulate push URLs"
 msgstr "manipular URLs de push"
 
-#: builtin/remote.c:1524
+#: builtin/remote.c:1533
 msgid "add URL"
 msgstr "agregar URL"
 
-#: builtin/remote.c:1526
+#: builtin/remote.c:1535
 msgid "delete URLs"
 msgstr "borrar URLs"
 
-#: builtin/remote.c:1533
+#: builtin/remote.c:1542
 msgid "--add --delete doesn't make sense"
 msgstr "--add --delete no tiene sentido"
 
-#: builtin/remote.c:1572
+#: builtin/remote.c:1581
 #, c-format
 msgid "Invalid old URL pattern: %s"
 msgstr "Patrón de URL viejo inválido: %s"
 
-#: builtin/remote.c:1580
+#: builtin/remote.c:1589
 #, c-format
 msgid "No such URL found: %s"
 msgstr "No se encontró URL: %s"
 
-#: builtin/remote.c:1582
+#: builtin/remote.c:1591
 msgid "Will not delete all non-push URLs"
 msgstr "No borrará todos los URLs de no-push"
 
-#: builtin/remote.c:1598
+#: builtin/remote.c:1607
 msgid "be verbose; must be placed before a subcommand"
 msgstr "ser verboso; tiene que ser agregado antes de un subcomando"
 
-#: builtin/remote.c:1629
+#: builtin/remote.c:1638
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr "Sub-comando desconocido: %s"
@@ -12898,129 +13385,137 @@ msgstr ""
 "Re empaquetados incrementales son incompatibles con índices bitmap. Use \n"
 "--no-write-bitmap-index o deshabilite la configuración pack.writebitmaps."
 
-#: builtin/repack.c:170
+#: builtin/repack.c:180
 msgid "pack everything in a single pack"
 msgstr "empaquetar todo en un único paquete"
 
-#: builtin/repack.c:172
+#: builtin/repack.c:182
 msgid "same as -a, and turn unreachable objects loose"
 msgstr "lo mismo que -a, y pierde objetos inaccesibles"
 
-#: builtin/repack.c:175
+#: builtin/repack.c:185
 msgid "remove redundant packs, and run git-prune-packed"
 msgstr "remover paquetes redundantes, y ejecutar git-prune-packed"
 
-#: builtin/repack.c:177
+#: builtin/repack.c:187
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr "pasar --no-reuse-delta a git-pack-objects"
 
-#: builtin/repack.c:179
+#: builtin/repack.c:189
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr "pasar --no-reuse-object a git-pack-objects"
 
-#: builtin/repack.c:181
+#: builtin/repack.c:191
 msgid "do not run git-update-server-info"
 msgstr "no ejecutar git-update-server-info"
 
-#: builtin/repack.c:184
+#: builtin/repack.c:194
 msgid "pass --local to git-pack-objects"
 msgstr "pasar --local a git-pack-objects"
 
-#: builtin/repack.c:186
+#: builtin/repack.c:196
 msgid "write bitmap index"
 msgstr "escribir un índice de bitmap"
 
-#: builtin/repack.c:187
+#: builtin/repack.c:197
 msgid "approxidate"
 msgstr "aproxime"
 
-#: builtin/repack.c:188
+#: builtin/repack.c:198
 msgid "with -A, do not loosen objects older than this"
 msgstr "con -A, no perder objetos más antiguos que este"
 
-#: builtin/repack.c:190
+#: builtin/repack.c:200
 msgid "with -a, repack unreachable objects"
 msgstr "con -a, re empaquetar objetos inalcanzables"
 
-#: builtin/repack.c:192
+#: builtin/repack.c:202
 msgid "size of the window used for delta compression"
 msgstr "tamaño de la ventana usado para la compresión delta"
 
-#: builtin/repack.c:193 builtin/repack.c:199
+#: builtin/repack.c:203 builtin/repack.c:209
 msgid "bytes"
 msgstr "bytes"
 
-#: builtin/repack.c:194
+#: builtin/repack.c:204
 msgid "same as the above, but limit memory size instead of entries count"
 msgstr ""
 "lo mismo que arriba, pero limita el tamaño de memoria en lugar de contar "
 "entradas"
 
-#: builtin/repack.c:196
+#: builtin/repack.c:206
 msgid "limits the maximum delta depth"
 msgstr "limita la profundidad máxima del delta"
 
-#: builtin/repack.c:198
+#: builtin/repack.c:208
 msgid "limits the maximum number of threads"
 msgstr "limita el número máximo de hilos"
 
-#: builtin/repack.c:200
+#: builtin/repack.c:210
 msgid "maximum size of each packfile"
 msgstr "tamaño máximo de cada paquete"
 
-#: builtin/repack.c:202
+#: builtin/repack.c:212
 msgid "repack objects in packs marked with .keep"
 msgstr "re-empaquetar objetos en paquetes marcados con .keep"
 
-#: builtin/repack.c:212
+#: builtin/repack.c:214
+msgid "do not repack this pack"
+msgstr "no reempaquetar este paquete"
+
+#: builtin/repack.c:224
 msgid "cannot delete packs in a precious-objects repo"
 msgstr "no se pueden borrar paquetes en un repositorio de objetos-preciosos"
 
-#: builtin/repack.c:216
+#: builtin/repack.c:228
 msgid "--keep-unreachable and -A are incompatible"
 msgstr "--keep-unreachable y -A son incompatibles"
 
-#: builtin/repack.c:410 builtin/worktree.c:148
+#: builtin/repack.c:425 builtin/worktree.c:139
 #, c-format
 msgid "failed to remove '%s'"
 msgstr "falló al remover '%s'"
 
-#: builtin/replace.c:20
+#: builtin/replace.c:22
 msgid "git replace [-f] <object> <replacement>"
 msgstr "git replace [-f] <objeto> <remplazo>"
 
-#: builtin/replace.c:21
+#: builtin/replace.c:23
 msgid "git replace [-f] --edit <object>"
 msgstr "git replace [-f] --edit <objeto>"
 
-#: builtin/replace.c:22
+#: builtin/replace.c:24
 msgid "git replace [-f] --graft <commit> [<parent>...]"
 msgstr "git replace [-f] --graft <commit> [<padre>...]"
 
-#: builtin/replace.c:23
+#: builtin/replace.c:25
+msgid "git replace [-f] --convert-graft-file"
+msgstr "git replace [-f] --convert-graft-file"
+
+#: builtin/replace.c:26
 msgid "git replace -d <object>..."
 msgstr "git replace -d <objeto>..."
 
-#: builtin/replace.c:24
+#: builtin/replace.c:27
 msgid "git replace [--format=<format>] [-l [<pattern>]]"
 msgstr "git replace [--format=<formato>] [-l [<patrón>]]"
 
-#: builtin/replace.c:331 builtin/replace.c:369 builtin/replace.c:397
+#: builtin/replace.c:371 builtin/replace.c:415 builtin/replace.c:445
 #, c-format
 msgid "Not a valid object name: '%s'"
 msgstr "Nombre de objeto no válido: '%s'"
 
-#: builtin/replace.c:361
+#: builtin/replace.c:407
 #, c-format
 msgid "bad mergetag in commit '%s'"
 msgstr "mal mergetag en commit '%s'"
 
-#: builtin/replace.c:363
+#: builtin/replace.c:409
 #, c-format
 msgid "malformed mergetag in commit '%s'"
 msgstr "mergetag mal formado en commit '%s'"
 
-#: builtin/replace.c:374
+#: builtin/replace.c:421
 #, c-format
 msgid ""
 "original commit '%s' contains mergetag '%s' that is discarded; use --edit "
@@ -13029,45 +13524,58 @@ msgstr ""
 "commit original '%s' contiene un mergetag '%s' que es descartado; use --edit "
 "en lugar de --graft"
 
-#: builtin/replace.c:407
+#: builtin/replace.c:460
 #, c-format
 msgid "the original commit '%s' has a gpg signature."
 msgstr "el commit original '%s' tiene una firma gpg."
 
-#: builtin/replace.c:408
+#: builtin/replace.c:461
 msgid "the signature will be removed in the replacement commit!"
 msgstr "la firma será removida en el commit de reemplazo!"
 
-#: builtin/replace.c:414
+#: builtin/replace.c:471
 #, c-format
 msgid "could not write replacement commit for: '%s'"
 msgstr "no se pudo escribir el commit de reemplazo: '%s'"
 
-#: builtin/replace.c:438
+#: builtin/replace.c:514
+#, c-format
+msgid ""
+"could not convert the following graft(s):\n"
+"%s"
+msgstr ""
+"no se pudo convertir el siguiente graft(s):\n"
+"%s"
+
+#: builtin/replace.c:535
 msgid "list replace refs"
 msgstr "listar replace refs"
 
-#: builtin/replace.c:439
+#: builtin/replace.c:536
 msgid "delete replace refs"
 msgstr "borrar replace refs"
 
-#: builtin/replace.c:440
+#: builtin/replace.c:537
 msgid "edit existing object"
 msgstr "editar objeto existente"
 
-#: builtin/replace.c:441
+#: builtin/replace.c:538
 msgid "change a commit's parents"
 msgstr "cambiar un padre de commit"
 
-#: builtin/replace.c:442
+#: builtin/replace.c:539
+msgid "convert existing graft file"
+msgstr "convertir archivo graft existente"
+
+#: builtin/replace.c:540
 msgid "replace the ref if it exists"
 msgstr "reemplazar el ref si este existe"
 
-#: builtin/replace.c:444
+#: builtin/replace.c:542
 msgid "do not pretty-print contents for --edit"
 msgstr "no se puede imprimir contenidos para --edit"
 
-#: builtin/replace.c:445
+#: builtin/replace.c:543
 msgid "use this format"
 msgstr "usar este formato"
 
@@ -13228,23 +13736,23 @@ msgstr "rev-list no soporta mostrar notas"
 msgid "cannot combine --use-bitmap-index with object filtering"
 msgstr "no se puede combinar --use-bitmap-index con objetos de filtrado"
 
-#: builtin/rev-parse.c:402
+#: builtin/rev-parse.c:406
 msgid "git rev-parse --parseopt [<options>] -- [<args>...]"
 msgstr "git rev-parse --parseopt [<opciones>] -- [<args>...]"
 
-#: builtin/rev-parse.c:407
+#: builtin/rev-parse.c:411
 msgid "keep the `--` passed as an arg"
 msgstr "mantener el `--` pasado como un arg"
 
-#: builtin/rev-parse.c:409
+#: builtin/rev-parse.c:413
 msgid "stop parsing after the first non-option argument"
 msgstr "detener análisis tras el primer argumento que no es opción"
 
-#: builtin/rev-parse.c:412
+#: builtin/rev-parse.c:416
 msgid "output in stuck long form"
 msgstr "salida en formulario largo de atasco"
 
-#: builtin/rev-parse.c:545
+#: builtin/rev-parse.c:549
 msgid ""
 "git rev-parse --parseopt [<options>] -- [<args>...]\n"
 "   or: git rev-parse --sq-quote [<arg>...]\n"
@@ -13386,42 +13894,42 @@ msgid_plural "the following files have local modifications:"
 msgstr[0] "el siguiente archivo tiene modificaciones locales:"
 msgstr[1] "los siguientes archivos tienen modificaciones locales:"
 
-#: builtin/rm.c:243
+#: builtin/rm.c:241
 msgid "do not list removed files"
 msgstr "no listar archivos removidos"
 
-#: builtin/rm.c:244
+#: builtin/rm.c:242
 msgid "only remove from the index"
 msgstr "solo remover del índice"
 
-#: builtin/rm.c:245
+#: builtin/rm.c:243
 msgid "override the up-to-date check"
 msgstr "sobrescribir el check de actualizado"
 
-#: builtin/rm.c:246
+#: builtin/rm.c:244
 msgid "allow recursive removal"
 msgstr "permitir remover de forma recursiva"
 
-#: builtin/rm.c:248
+#: builtin/rm.c:246
 msgid "exit with a zero status even if nothing matched"
 msgstr "salir con estado cero incluso si nada coincide"
 
-#: builtin/rm.c:307
+#: builtin/rm.c:306
 #, c-format
 msgid "not removing '%s' recursively without -r"
 msgstr "no removiendo '%s' de manera recursiva sin -r"
 
-#: builtin/rm.c:346
+#: builtin/rm.c:345
 #, c-format
 msgid "git rm: unable to remove %s"
 msgstr "git rm: no es posible remover %s"
 
-#: builtin/rm.c:369
+#: builtin/rm.c:368
 #, c-format
 msgid "could not remove '%s'"
 msgstr "no se pudo remover '%s'"
 
-#: builtin/send-pack.c:19
+#: builtin/send-pack.c:20
 msgid ""
 "git send-pack [--all | --mirror] [--dry-run] [--force] [--receive-pack=<git-"
 "receive-pack>] [--verbose] [--thin] [--atomic] [<host>:]<directory> "
@@ -13433,50 +13941,70 @@ msgstr ""
 "[<ref>...]\n"
 "  --all y especificaciones <ref> explícitas son mutuamente exclusivas."
 
-#: builtin/send-pack.c:162
+#: builtin/send-pack.c:163
 msgid "remote name"
 msgstr "nombre remoto"
 
-#: builtin/send-pack.c:176
+#: builtin/send-pack.c:177
 msgid "use stateless RPC protocol"
 msgstr "usar protocolo RPC sin estado"
 
-#: builtin/send-pack.c:177
+#: builtin/send-pack.c:178
 msgid "read refs from stdin"
 msgstr "leer refs de stdin"
 
-#: builtin/send-pack.c:178
+#: builtin/send-pack.c:179
 msgid "print status from remote helper"
 msgstr "mostrar status del remote helper"
 
+#: builtin/serve.c:7
+msgid "git serve [<options>]"
+msgstr "git serve [<opciones>]"
+
+#: builtin/serve.c:17 builtin/upload-pack.c:23
+msgid "quit after a single request/response exchange"
+msgstr "sale después de un intercambio petición/respuesta único"
+
+#: builtin/serve.c:19
+msgid "exit immediately after advertising capabilities"
+msgstr "salir inmediatamente tras anunciar capacidades"
+
 #: builtin/shortlog.c:14
-msgid "git shortlog [<options>] [<revision-range>] [[--] [<path>...]]"
-msgstr "git shortlog [<opciones>] [<rango-de-revisión>] [[--] [<ruta>...]]"
+msgid "git shortlog [<options>] [<revision-range>] [[--] <path>...]"
+msgstr "git shortlog [<opciones>] [<rango-de-revisión>] [[--] <ruta>...]"
+
+#: builtin/shortlog.c:15
+msgid "git log --pretty=short | git shortlog [<options>]"
+msgstr "git log --pretty=short | git shorlog [<opciones>]"
 
-#: builtin/shortlog.c:263
+#: builtin/shortlog.c:264
 msgid "Group by committer rather than author"
 msgstr "Agrupar por committer en lugar de autor"
 
-#: builtin/shortlog.c:265
+#: builtin/shortlog.c:266
 msgid "sort output according to the number of commits per author"
 msgstr "ordenar salida de acuerdo al número de commits por autor"
 
-#: builtin/shortlog.c:267
+#: builtin/shortlog.c:268
 msgid "Suppress commit descriptions, only provides commit count"
 msgstr "Suprimir descripción de commits, solo proveer cuenta de commits"
 
-#: builtin/shortlog.c:269
+#: builtin/shortlog.c:270
 msgid "Show the email address of each author"
 msgstr "Mostrar la dirección de correo de cada autor"
 
-#: builtin/shortlog.c:270
+#: builtin/shortlog.c:271
 msgid "w[,i1[,i2]]"
 msgstr "w[,i1[,i2]]"
 
-#: builtin/shortlog.c:271
+#: builtin/shortlog.c:272
 msgid "Linewrap output"
 msgstr "Salida de línea"
 
+#: builtin/shortlog.c:298
+msgid "too many arguments given outside repository"
+msgstr "demasiados argumentos dados fuera del repositorio"
+
 #: builtin/show-branch.c:12
 msgid ""
 "git show-branch [-a | --all] [-r | --remotes] [--topo-order | --date-order]\n"
@@ -13673,39 +14201,39 @@ msgstr ""
 msgid "prepend comment character and space to each line"
 msgstr "anteponer carácter de comentario y espacio a cada línea"
 
-#: builtin/submodule--helper.c:35 builtin/submodule--helper.c:1669
+#: builtin/submodule--helper.c:37 builtin/submodule--helper.c:1688
 #, c-format
 msgid "No such ref: %s"
 msgstr "No existe ref: %s"
 
-#: builtin/submodule--helper.c:42 builtin/submodule--helper.c:1678
+#: builtin/submodule--helper.c:44 builtin/submodule--helper.c:1697
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr "Se esperaba un nombre de ref completo, se obtuvo %s"
 
-#: builtin/submodule--helper.c:59
+#: builtin/submodule--helper.c:61
 msgid "submodule--helper print-default-remote takes no arguments"
 msgstr "subomdule--helper print-default-remote no toma argumentos"
 
-#: builtin/submodule--helper.c:96
+#: builtin/submodule--helper.c:98
 #, c-format
 msgid "cannot strip one component off url '%s'"
 msgstr "no se puede quitar un componente del url '%s'"
 
-#: builtin/submodule--helper.c:404 builtin/submodule--helper.c:1198
+#: builtin/submodule--helper.c:406 builtin/submodule--helper.c:1211
 msgid "alternative anchor for relative paths"
 msgstr "ancho alternativo para rutas relativas"
 
-#: builtin/submodule--helper.c:409
+#: builtin/submodule--helper.c:411
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper list [--prefix=<ruta>] [<ruta>...]"
 
-#: builtin/submodule--helper.c:460 builtin/submodule--helper.c:483
+#: builtin/submodule--helper.c:462 builtin/submodule--helper.c:485
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr "No se encontró url para la ruta del submódulo '%s' en .gitmodules"
 
-#: builtin/submodule--helper.c:498
+#: builtin/submodule--helper.c:500
 #, c-format
 msgid ""
 "could not lookup configuration '%s'. Assuming this repository is its own "
@@ -13714,57 +14242,57 @@ msgstr ""
 "no se pudo encontrar configuración '%s'. Asumiendo que este repositorio es "
 "su propio upstream autoritativo."
 
-#: builtin/submodule--helper.c:509
+#: builtin/submodule--helper.c:511
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr "Falló al registrar el url para la ruta del submódulo '%s'"
 
-#: builtin/submodule--helper.c:513
+#: builtin/submodule--helper.c:515
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr "Submódulo '%s' (%s) registrado para ruta '%s'\n"
 
-#: builtin/submodule--helper.c:523
+#: builtin/submodule--helper.c:525
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
 msgstr ""
 "peligro: modo de actualización de comandos sugerido para el submódulo '%s'\n"
 
-#: builtin/submodule--helper.c:530
+#: builtin/submodule--helper.c:532
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
 msgstr ""
 "Error al registrar el modo de actualización para la ruta del submódulo '%s'"
 
-#: builtin/submodule--helper.c:552
+#: builtin/submodule--helper.c:554
 msgid "Suppress output for initializing a submodule"
 msgstr "Suprime la salida para inicializar un submódulo"
 
-#: builtin/submodule--helper.c:557
+#: builtin/submodule--helper.c:559
 msgid "git submodule--helper init [<path>]"
 msgstr "git submodule--helper init [<ruta>]"
 
-#: builtin/submodule--helper.c:625 builtin/submodule--helper.c:747
+#: builtin/submodule--helper.c:631 builtin/submodule--helper.c:757
 #, c-format
 msgid "no submodule mapping found in .gitmodules for path '%s'"
 msgstr ""
 "no se ha encontrado mapeo de submódulos en .gitmodules para la ruta '%s'"
 
-#: builtin/submodule--helper.c:660
+#: builtin/submodule--helper.c:670
 #, c-format
 msgid "could not resolve HEAD ref inside the submodule '%s'"
 msgstr "no pudo resolver ref de HEAD dentro del submódulo '%s'"
 
-#: builtin/submodule--helper.c:687 builtin/submodule--helper.c:856
+#: builtin/submodule--helper.c:697 builtin/submodule--helper.c:866
 #, c-format
 msgid "failed to recurse into submodule '%s'"
 msgstr "falló al recursar en el submódulo '%s'"
 
-#: builtin/submodule--helper.c:711 builtin/submodule--helper.c:1021
+#: builtin/submodule--helper.c:721 builtin/submodule--helper.c:1031
 msgid "Suppress submodule status output"
 msgstr "Suprimir output del estado del submódulo"
 
-#: builtin/submodule--helper.c:712
+#: builtin/submodule--helper.c:722
 msgid ""
 "Use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
@@ -13772,51 +14300,51 @@ msgstr ""
 "Usar el commit guardado en el índice en lugar del guardado en el submódulo "
 "HEAD"
 
-#: builtin/submodule--helper.c:713
+#: builtin/submodule--helper.c:723
 msgid "recurse into nested submodules"
 msgstr "recursar en submódulos anidados"
 
-#: builtin/submodule--helper.c:718
+#: builtin/submodule--helper.c:728
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quiet] [--cached] [--recursive] [<ruta>...]"
 
-#: builtin/submodule--helper.c:742
+#: builtin/submodule--helper.c:752
 msgid "git submodule--helper name <path>"
 msgstr "git submodule--helper name <ruta>"
 
-#: builtin/submodule--helper.c:806
+#: builtin/submodule--helper.c:816
 #, c-format
 msgid "Synchronizing submodule url for '%s'\n"
 msgstr "Sincronizando url del submódulo para '%s'\n"
 
-#: builtin/submodule--helper.c:812
+#: builtin/submodule--helper.c:822
 #, c-format
 msgid "failed to register url for submodule path '%s'"
 msgstr "falló al registrar el url para la ruta del submódulo '%s'"
 
-#: builtin/submodule--helper.c:826
+#: builtin/submodule--helper.c:836
 #, c-format
 msgid "failed to get the default remote for submodule '%s'"
 msgstr "error al conseguir el remoto por defecto para el submódulo '%s'"
 
-#: builtin/submodule--helper.c:837
+#: builtin/submodule--helper.c:847
 #, c-format
 msgid "failed to update remote for submodule '%s'"
 msgstr "error al actualizar el remoto para el submódulo '%s'"
 
-#: builtin/submodule--helper.c:885
+#: builtin/submodule--helper.c:895
 msgid "Suppress output of synchronizing submodule url"
 msgstr "Suprime la salida del url del submódulo que se sincroniza"
 
-#: builtin/submodule--helper.c:887
+#: builtin/submodule--helper.c:897
 msgid "Recurse into nested submodules"
 msgstr "Recursar en submódulos anidados"
 
-#: builtin/submodule--helper.c:892
+#: builtin/submodule--helper.c:902
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
 msgstr "git submodule--helper sync [--quiet] [--recursive] [<ruta>]"
 
-#: builtin/submodule--helper.c:946
+#: builtin/submodule--helper.c:956
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
@@ -13825,7 +14353,7 @@ msgstr ""
 "El árbol de trabajo del submódulo '%s' contiene un directorio .git (use 'rm -"
 "rf' si realmente quiere removerlo incluyendo todo en su historia)"
 
-#: builtin/submodule--helper.c:958
+#: builtin/submodule--helper.c:968
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains local modifications; use '-f' to discard "
@@ -13834,81 +14362,81 @@ msgstr ""
 "El árbol de trabajo del submódulo '%s' contiene modificaciones locales; usa "
 "'-f' para descartarlas"
 
-#: builtin/submodule--helper.c:966
+#: builtin/submodule--helper.c:976
 #, c-format
 msgid "Cleared directory '%s'\n"
 msgstr "Directorio '%s' limpiado\n"
 
-#: builtin/submodule--helper.c:968
+#: builtin/submodule--helper.c:978
 #, c-format
 msgid "Could not remove submodule work tree '%s'\n"
 msgstr "No se pudo eliminar el árbol de trabajo del submódulo '%s'\n"
 
-#: builtin/submodule--helper.c:977
+#: builtin/submodule--helper.c:987
 #, c-format
 msgid "could not create empty submodule directory %s"
 msgstr "no se pudo crear directorio vacío de submódulo %s"
 
-#: builtin/submodule--helper.c:993
+#: builtin/submodule--helper.c:1003
 #, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "Submódulo '%s' (%s) no registrado para ruta '%s'\n"
 
-#: builtin/submodule--helper.c:1022
+#: builtin/submodule--helper.c:1032
 msgid "Remove submodule working trees even if they contain local changes"
 msgstr ""
 "Remover arboles de trabajo de submódulos incluso si contienen cambios locales"
 
-#: builtin/submodule--helper.c:1023
+#: builtin/submodule--helper.c:1033
 msgid "Unregister all submodules"
 msgstr "Quitar todos los submódulos"
 
-#: builtin/submodule--helper.c:1028
+#: builtin/submodule--helper.c:1038
 msgid ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
 msgstr ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<ruta>...]]"
 
-#: builtin/submodule--helper.c:1042
+#: builtin/submodule--helper.c:1052
 msgid "Use '--all' if you really want to deinitialize all submodules"
 msgstr "Usa '--all' si realmente quieres des-inicializar todos los submódulos"
 
-#: builtin/submodule--helper.c:1133 builtin/submodule--helper.c:1136
+#: builtin/submodule--helper.c:1145 builtin/submodule--helper.c:1148
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
 msgstr "submódulo '%s' no puede agregar alterno: %s"
 
-#: builtin/submodule--helper.c:1172
+#: builtin/submodule--helper.c:1184
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
 msgstr "Valor '%s' para submodule.alternateErrorStrategy no es reconocido"
 
-#: builtin/submodule--helper.c:1179
+#: builtin/submodule--helper.c:1191
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
 msgstr "Valor '%s' para submodule.alternateLocation no es reconocido"
 
-#: builtin/submodule--helper.c:1201
+#: builtin/submodule--helper.c:1214
 msgid "where the new submodule will be cloned to"
 msgstr "a donde el nuevo submódulo será clonado"
 
-#: builtin/submodule--helper.c:1204
+#: builtin/submodule--helper.c:1217
 msgid "name of the new submodule"
 msgstr "nombre del nuevo submódulo"
 
-#: builtin/submodule--helper.c:1207
+#: builtin/submodule--helper.c:1220
 msgid "url where to clone the submodule from"
 msgstr "url de dónde clonar el submódulo"
 
-#: builtin/submodule--helper.c:1213
+#: builtin/submodule--helper.c:1228
 msgid "depth for shallow clones"
 msgstr "profundidad para clones superficiales"
 
-#: builtin/submodule--helper.c:1216 builtin/submodule--helper.c:1587
+#: builtin/submodule--helper.c:1231 builtin/submodule--helper.c:1606
 msgid "force cloning progress"
 msgstr "forzar el proceso de clonado"
 
-#: builtin/submodule--helper.c:1221
+#: builtin/submodule--helper.c:1236
 msgid ""
 "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
 "<repository>] [--name <name>] [--depth <depth>] --url <url> --path <path>"
@@ -13917,83 +14445,83 @@ msgstr ""
 "<repositorio>] [--name <nombre>] [--depth <profundidad>] --url <url> --path "
 "<ruta>"
 
-#: builtin/submodule--helper.c:1252
+#: builtin/submodule--helper.c:1267
 #, c-format
 msgid "clone of '%s' into submodule path '%s' failed"
 msgstr "clon de '%s' en la ruta de submódulo '%s' falló"
 
-#: builtin/submodule--helper.c:1267
+#: builtin/submodule--helper.c:1281
 #, c-format
 msgid "could not get submodule directory for '%s'"
 msgstr "no se pudo obtener el directorio de submódulo para '%s'"
 
-#: builtin/submodule--helper.c:1332
+#: builtin/submodule--helper.c:1347
 #, c-format
 msgid "Submodule path '%s' not initialized"
 msgstr "Ruta de submódulo '%s' no inicializada"
 
-#: builtin/submodule--helper.c:1336
+#: builtin/submodule--helper.c:1351
 msgid "Maybe you want to use 'update --init'?"
 msgstr "Tal vez quiere usar 'update --init'?"
 
-#: builtin/submodule--helper.c:1365
+#: builtin/submodule--helper.c:1380
 #, c-format
 msgid "Skipping unmerged submodule %s"
 msgstr "Saltando submódulo %s no fusionado"
 
-#: builtin/submodule--helper.c:1394
+#: builtin/submodule--helper.c:1409
 #, c-format
 msgid "Skipping submodule '%s'"
 msgstr "Saltando submódulo '%s'"
 
-#: builtin/submodule--helper.c:1527
+#: builtin/submodule--helper.c:1544
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
 msgstr "Falló al clonar '%s'. Reintento programado"
 
-#: builtin/submodule--helper.c:1538
+#: builtin/submodule--helper.c:1555
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
 msgstr "Falló al clonar '%s' una segunda vez, abortando"
 
-#: builtin/submodule--helper.c:1568 builtin/submodule--helper.c:1788
+#: builtin/submodule--helper.c:1585 builtin/submodule--helper.c:1808
 msgid "path into the working tree"
 msgstr "ruta hacia el árbol de trabajo"
 
-#: builtin/submodule--helper.c:1571
+#: builtin/submodule--helper.c:1588
 msgid "path into the working tree, across nested submodule boundaries"
 msgstr ""
 "ruta hacia el árbol de trabajo, a través de extremos de submódulos anidados"
 
-#: builtin/submodule--helper.c:1575
+#: builtin/submodule--helper.c:1592
 msgid "rebase, merge, checkout or none"
 msgstr "rebase, merge, checkout o none"
 
-#: builtin/submodule--helper.c:1579
+#: builtin/submodule--helper.c:1598
 msgid "Create a shallow clone truncated to the specified number of revisions"
 msgstr "Crea un clon superficial truncado al número especificado de revisión"
 
-#: builtin/submodule--helper.c:1582
+#: builtin/submodule--helper.c:1601
 msgid "parallel jobs"
 msgstr "trabajos paralelos"
 
-#: builtin/submodule--helper.c:1584
+#: builtin/submodule--helper.c:1603
 msgid "whether the initial clone should follow the shallow recommendation"
 msgstr "si el clon inicial debe seguir la recomendación superficial"
 
-#: builtin/submodule--helper.c:1585
+#: builtin/submodule--helper.c:1604
 msgid "don't print cloning progress"
 msgstr "no mostrar el progreso de clonado"
 
-#: builtin/submodule--helper.c:1592
+#: builtin/submodule--helper.c:1611
 msgid "git submodule--helper update_clone [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper update_clone [--prefix=<ruta>] [<ruta>...]"
 
-#: builtin/submodule--helper.c:1605
+#: builtin/submodule--helper.c:1624
 msgid "bad value for update parameter"
 msgstr "mal valor para parámetro update"
 
-#: builtin/submodule--helper.c:1673
+#: builtin/submodule--helper.c:1692
 #, c-format
 msgid ""
 "Submodule (%s) branch configured to inherit branch from superproject, but "
@@ -14002,20 +14530,20 @@ msgstr ""
 "Rama de submódulo (%s)  configurada para heredar rama del superproyecto, "
 "pero el superproyecto no está en ninguna rama"
 
-#: builtin/submodule--helper.c:1789
+#: builtin/submodule--helper.c:1809
 msgid "recurse into submodules"
 msgstr "recurrir a submódulos"
 
-#: builtin/submodule--helper.c:1795
+#: builtin/submodule--helper.c:1815
 msgid "git submodule--helper embed-git-dir [<path>...]"
 msgstr "git submodule--helper embed-git-dir [<ruta>...]"
 
-#: builtin/submodule--helper.c:1857
+#: builtin/submodule--helper.c:1901
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s no soporta --super-prefix"
 
-#: builtin/submodule--helper.c:1863
+#: builtin/submodule--helper.c:1907
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "'%s' no es un comando submodule--helper valido"
@@ -14084,7 +14612,7 @@ msgstr "tag '%s' no encontrado."
 msgid "Deleted tag '%s' (was %s)\n"
 msgstr "Etiqueta '%s' eliminada (era %s)\n"
 
-#: builtin/tag.c:131
+#: builtin/tag.c:132
 #, c-format
 msgid ""
 "\n"
@@ -14097,7 +14625,7 @@ msgstr ""
 "  %s\n"
 "Las líneas que comienzan con '%c' serán ignoradas.\n"
 
-#: builtin/tag.c:135
+#: builtin/tag.c:136
 #, c-format
 msgid ""
 "\n"
@@ -14112,146 +14640,146 @@ msgstr ""
 "Las líneas que comienzan con '%c' serán conservadas; puedes eliminarlas por "
 "ti mismo si quieres hacerlo.\n"
 
-#: builtin/tag.c:189
+#: builtin/tag.c:190
 msgid "unable to sign the tag"
 msgstr "incapaz de firmar tag"
 
-#: builtin/tag.c:191
+#: builtin/tag.c:192
 msgid "unable to write tag file"
 msgstr "incapaz de escribir el archivo de tag"
 
-#: builtin/tag.c:216
+#: builtin/tag.c:217
 msgid "bad object type."
 msgstr "tipo de objeto erróneo."
 
-#: builtin/tag.c:265
+#: builtin/tag.c:266
 msgid "no tag message?"
 msgstr "¿Sin mensaje de tag?"
 
-#: builtin/tag.c:272
+#: builtin/tag.c:273
 #, c-format
 msgid "The tag message has been left in %s\n"
 msgstr "El mensaje del tag ha sido dejado en %s\n"
 
-#: builtin/tag.c:381
+#: builtin/tag.c:382
 msgid "list tag names"
 msgstr "listar nombres de tags"
 
-#: builtin/tag.c:383
+#: builtin/tag.c:384
 msgid "print <n> lines of each tag message"
 msgstr "imprimir <n> líneas de cada mensaje de tag"
 
-#: builtin/tag.c:385
+#: builtin/tag.c:386
 msgid "delete tags"
 msgstr "eliminar tags"
 
-#: builtin/tag.c:386
+#: builtin/tag.c:387
 msgid "verify tags"
 msgstr "verificar tags"
 
-#: builtin/tag.c:388
+#: builtin/tag.c:389
 msgid "Tag creation options"
 msgstr "Opciones de creación de tags"
 
-#: builtin/tag.c:390
+#: builtin/tag.c:391
 msgid "annotated tag, needs a message"
 msgstr "tags anotadas necesitan un mensaje"
 
-#: builtin/tag.c:392
+#: builtin/tag.c:393
 msgid "tag message"
 msgstr "mensaje de tag"
 
-#: builtin/tag.c:394
+#: builtin/tag.c:395
 msgid "force edit of tag message"
 msgstr "forzar la edición del mensaje de tag"
 
-#: builtin/tag.c:395
+#: builtin/tag.c:396
 msgid "annotated and GPG-signed tag"
 msgstr "tag anotado y firmado con GPG"
 
-#: builtin/tag.c:399
+#: builtin/tag.c:400
 msgid "use another key to sign the tag"
 msgstr "usar otra clave para firmar el tag"
 
-#: builtin/tag.c:400
+#: builtin/tag.c:401
 msgid "replace the tag if exists"
 msgstr "remplazar tag si existe"
 
-#: builtin/tag.c:401 builtin/update-ref.c:368
+#: builtin/tag.c:402 builtin/update-ref.c:368
 msgid "create a reflog"
 msgstr "crear un reflog"
 
-#: builtin/tag.c:403
+#: builtin/tag.c:404
 msgid "Tag listing options"
 msgstr "Opciones de listado de tag"
 
-#: builtin/tag.c:404
+#: builtin/tag.c:405
 msgid "show tag list in columns"
 msgstr "mostrar lista de tags en columnas"
 
-#: builtin/tag.c:405 builtin/tag.c:407
+#: builtin/tag.c:406 builtin/tag.c:408
 msgid "print only tags that contain the commit"
 msgstr "mostrar solo tags que contienen el commit"
 
-#: builtin/tag.c:406 builtin/tag.c:408
+#: builtin/tag.c:407 builtin/tag.c:409
 msgid "print only tags that don't contain the commit"
 msgstr "mostrar solo tags que no contienen el commit"
 
-#: builtin/tag.c:409
+#: builtin/tag.c:410
 msgid "print only tags that are merged"
 msgstr "sólo imprimir las tags que están fusionadas"
 
-#: builtin/tag.c:410
+#: builtin/tag.c:411
 msgid "print only tags that are not merged"
 msgstr "sólo imprimir las tags que no están fusionadas"
 
-#: builtin/tag.c:415
+#: builtin/tag.c:416
 msgid "print only tags of the object"
 msgstr "sólo imprimir tags de el objeto"
 
-#: builtin/tag.c:459
+#: builtin/tag.c:460
 msgid "--column and -n are incompatible"
 msgstr "--column y -n son incompatibles"
 
-#: builtin/tag.c:481
+#: builtin/tag.c:482
 msgid "-n option is only allowed in list mode"
 msgstr "opción -n solo es permitida en modo lista"
 
-#: builtin/tag.c:483
+#: builtin/tag.c:484
 msgid "--contains option is only allowed in list mode"
 msgstr "opción --contains solo es permitido en modo lista"
 
-#: builtin/tag.c:485
+#: builtin/tag.c:486
 msgid "--no-contains option is only allowed in list mode"
 msgstr "opción --no-contains solo es permitida en modo lista"
 
-#: builtin/tag.c:487
+#: builtin/tag.c:488
 msgid "--points-at option is only allowed in list mode"
 msgstr "opción --points-at solo es permitida en modo lista"
 
-#: builtin/tag.c:489
+#: builtin/tag.c:490
 msgid "--merged and --no-merged options are only allowed in list mode"
 msgstr "opciones --merged y --no-merged  solo están permitidas en modo lista"
 
-#: builtin/tag.c:500
+#: builtin/tag.c:501
 msgid "only one -F or -m option is allowed."
 msgstr "sólo se permite una de las opciones, -m ó -F."
 
-#: builtin/tag.c:519
+#: builtin/tag.c:520
 msgid "too many params"
 msgstr "demasiados parámetros"
 
-#: builtin/tag.c:525
+#: builtin/tag.c:526
 #, c-format
 msgid "'%s' is not a valid tag name."
 msgstr "'%s' no es un nombre de tag válido."
 
-#: builtin/tag.c:530
+#: builtin/tag.c:531
 #, c-format
 msgid "tag '%s' already exists"
 msgstr "el tag '%s' ya existe"
 
-#: builtin/tag.c:561
+#: builtin/tag.c:562
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
 msgstr "Etiqueta '%s' actualizada (era %s)\n"
@@ -14263,27 +14791,27 @@ msgstr "Desempaquetando objetos"
 #: builtin/update-index.c:82
 #, c-format
 msgid "failed to create directory %s"
-msgstr "fallo al crear directorio %s"
+msgstr "falló al crear directorio %s"
 
 #: builtin/update-index.c:88
 #, c-format
 msgid "failed to stat %s"
-msgstr "fallo al iniciar %s"
+msgstr "falló al iniciar %s"
 
 #: builtin/update-index.c:98
 #, c-format
 msgid "failed to create file %s"
-msgstr "fallo al crear el archivo %s"
+msgstr "falló al crear el archivo %s"
 
 #: builtin/update-index.c:106
 #, c-format
 msgid "failed to delete file %s"
-msgstr "fallo al eliminar el archivo %s"
+msgstr "falló al eliminar el archivo %s"
 
 #: builtin/update-index.c:113 builtin/update-index.c:219
 #, c-format
 msgid "failed to delete directory %s"
-msgstr "fallo al eliminar directorio %s"
+msgstr "falló al eliminar directorio %s"
 
 #: builtin/update-index.c:138
 #, c-format
@@ -14321,147 +14849,147 @@ msgstr "info de estado del directorio no cambia tras borrar un directorio"
 msgid " OK"
 msgstr " OK"
 
-#: builtin/update-index.c:579
+#: builtin/update-index.c:589
 msgid "git update-index [<options>] [--] [<file>...]"
 msgstr "git update-index [<opciones>] [--] [<archivo>...]"
 
-#: builtin/update-index.c:936
+#: builtin/update-index.c:946
 msgid "continue refresh even when index needs update"
 msgstr ""
 "continuar refresh (Actualización) incluso cuando el índice necesita "
 "actualización"
 
-#: builtin/update-index.c:939
+#: builtin/update-index.c:949
 msgid "refresh: ignore submodules"
 msgstr "refresh: ignora submódulos"
 
-#: builtin/update-index.c:942
+#: builtin/update-index.c:952
 msgid "do not ignore new files"
 msgstr "no ignorar archivos nuevos"
 
-#: builtin/update-index.c:944
+#: builtin/update-index.c:954
 msgid "let files replace directories and vice-versa"
 msgstr "permitir que archivos remplacen directorios y vice-versa"
 
-#: builtin/update-index.c:946
+#: builtin/update-index.c:956
 msgid "notice files missing from worktree"
 msgstr "avisar de archivos faltando en el árbol de trabajo"
 
-#: builtin/update-index.c:948
+#: builtin/update-index.c:958
 msgid "refresh even if index contains unmerged entries"
 msgstr "ejecutar refresh incluso si el índice contiene entradas sin cambios"
 
-#: builtin/update-index.c:951
+#: builtin/update-index.c:961
 msgid "refresh stat information"
 msgstr "refresh información de estado"
 
-#: builtin/update-index.c:955
+#: builtin/update-index.c:965
 msgid "like --refresh, but ignore assume-unchanged setting"
 msgstr "como --refresh, pero ignora configuración assume-unchanged"
 
-#: builtin/update-index.c:959
+#: builtin/update-index.c:969
 msgid "<mode>,<object>,<path>"
 msgstr "<modo>,<objeto>,<ruta>"
 
-#: builtin/update-index.c:960
+#: builtin/update-index.c:970
 msgid "add the specified entry to the index"
 msgstr "agregar la entrada especificada al índice"
 
-#: builtin/update-index.c:969
+#: builtin/update-index.c:979
 msgid "mark files as \"not changing\""
 msgstr "marcar archivos como \"not changing\""
 
-#: builtin/update-index.c:972
+#: builtin/update-index.c:982
 msgid "clear assumed-unchanged bit"
 msgstr "limpiar bit assumed-unchanged"
 
-#: builtin/update-index.c:975
+#: builtin/update-index.c:985
 msgid "mark files as \"index-only\""
 msgstr "marcar archivos como \"index-only\""
 
-#: builtin/update-index.c:978
+#: builtin/update-index.c:988
 msgid "clear skip-worktree bit"
 msgstr "limpiar bit skip-worktree"
 
-#: builtin/update-index.c:981
+#: builtin/update-index.c:991
 msgid "add to index only; do not add content to object database"
 msgstr ""
 "agregar solo al índice; no agregar contenido a la base de datos de objetos"
 
-#: builtin/update-index.c:983
+#: builtin/update-index.c:993
 msgid "remove named paths even if present in worktree"
 msgstr ""
 "remover rutas nombradas incluso si están presentes en el árbol de trabajo"
 
-#: builtin/update-index.c:985
+#: builtin/update-index.c:995
 msgid "with --stdin: input lines are terminated by null bytes"
 msgstr "con --stdin: las lineas de entrada son terminadas con bytes nulos"
 
-#: builtin/update-index.c:987
+#: builtin/update-index.c:997
 msgid "read list of paths to be updated from standard input"
 msgstr "leer la lista de rutas para ser actualizada desde standard input"
 
-#: builtin/update-index.c:991
+#: builtin/update-index.c:1001
 msgid "add entries from standard input to the index"
 msgstr "agregar entradas de standard input al índice"
 
-#: builtin/update-index.c:995
+#: builtin/update-index.c:1005
 msgid "repopulate stages #2 and #3 for the listed paths"
 msgstr "repoblar stages #2 y #3 para las rutas listadas"
 
-#: builtin/update-index.c:999
+#: builtin/update-index.c:1009
 msgid "only update entries that differ from HEAD"
 msgstr "solo actualizar entradas que difieren de HEAD"
 
-#: builtin/update-index.c:1003
+#: builtin/update-index.c:1013
 msgid "ignore files missing from worktree"
 msgstr "ignorar archivos faltantes en el árbol de trabajo"
 
-#: builtin/update-index.c:1006
+#: builtin/update-index.c:1016
 msgid "report actions to standard output"
 msgstr "reportar acciones por standard output"
 
-#: builtin/update-index.c:1008
+#: builtin/update-index.c:1018
 msgid "(for porcelains) forget saved unresolved conflicts"
 msgstr "(para porcelanas) olvidar conflictos sin resolver guardados"
 
-#: builtin/update-index.c:1012
+#: builtin/update-index.c:1022
 msgid "write index in this format"
 msgstr "escribir índice en este formato"
 
-#: builtin/update-index.c:1014
+#: builtin/update-index.c:1024
 msgid "enable or disable split index"
 msgstr "activar o desactivar índice dividido"
 
-#: builtin/update-index.c:1016
+#: builtin/update-index.c:1026
 msgid "enable/disable untracked cache"
 msgstr "habilitar o deshabilitar caché no rastreado"
 
-#: builtin/update-index.c:1018
+#: builtin/update-index.c:1028
 msgid "test if the filesystem supports untracked cache"
 msgstr "probar si el filesystem soporta caché no rastreado"
 
-#: builtin/update-index.c:1020
+#: builtin/update-index.c:1030
 msgid "enable untracked cache without testing the filesystem"
 msgstr "habilitar caché no rastreado sin probar el filesystem"
 
-#: builtin/update-index.c:1022
+#: builtin/update-index.c:1032
 msgid "write out the index even if is not flagged as changed"
 msgstr "escribir el índice incluso si no está marcado como cambiado"
 
-#: builtin/update-index.c:1024
+#: builtin/update-index.c:1034
 msgid "enable or disable file system monitor"
 msgstr "activar o desactivar monitor de sistema de archivos"
 
-#: builtin/update-index.c:1026
+#: builtin/update-index.c:1036
 msgid "mark files as fsmonitor valid"
 msgstr "marcar archivos como válidos para fsmonitor"
 
-#: builtin/update-index.c:1029
+#: builtin/update-index.c:1039
 msgid "clear fsmonitor valid bit"
 msgstr "limpia el bit de validación fsmonitor"
 
-#: builtin/update-index.c:1127
+#: builtin/update-index.c:1138
 msgid ""
 "core.splitIndex is set to false; remove or change it, if you really want to "
 "enable split index"
@@ -14469,7 +14997,7 @@ msgstr ""
 "core.splitIndex está configurado en false; remuévelo o cámbialo, si "
 "realmente quieres habilitar el índice partido"
 
-#: builtin/update-index.c:1136
+#: builtin/update-index.c:1147
 msgid ""
 "core.splitIndex is set to true; remove or change it, if you really want to "
 "disable split index"
@@ -14477,7 +15005,7 @@ msgstr ""
 "core.splitIndex está configurado en true; remuévelo o cámbialo, si realmente "
 "quieres deshabilitar el índice partido"
 
-#: builtin/update-index.c:1147
+#: builtin/update-index.c:1158
 msgid ""
 "core.untrackedCache is set to true; remove or change it, if you really want "
 "to disable the untracked cache"
@@ -14485,11 +15013,11 @@ msgstr ""
 "core.untrackedCache está configurado en true; remuévelo o cámbialo, si "
 "realmente quieres deshabilitar el chaché no rastreado"
 
-#: builtin/update-index.c:1151
+#: builtin/update-index.c:1162
 msgid "Untracked cache disabled"
 msgstr "Caché no rastreado deshabilitado"
 
-#: builtin/update-index.c:1159
+#: builtin/update-index.c:1170
 msgid ""
 "core.untrackedCache is set to false; remove or change it, if you really want "
 "to enable the untracked cache"
@@ -14497,29 +15025,29 @@ msgstr ""
 "core.untrackedCache está configurado en false; remuévelo o cámbialo, si "
 "realmente quieres habilitar el caché no rastreado"
 
-#: builtin/update-index.c:1163
+#: builtin/update-index.c:1174
 #, c-format
 msgid "Untracked cache enabled for '%s'"
 msgstr "Caché no rastreado habilitado para '%s'"
 
-#: builtin/update-index.c:1171
+#: builtin/update-index.c:1182
 msgid "core.fsmonitor is unset; set it if you really want to enable fsmonitor"
 msgstr ""
 "core.fsmonitor no está configurado; actívalo si realmente quieres habilitar "
 "fsmonitor"
 
-#: builtin/update-index.c:1175
+#: builtin/update-index.c:1186
 msgid "fsmonitor enabled"
 msgstr "fsmonitor activado"
 
-#: builtin/update-index.c:1178
+#: builtin/update-index.c:1189
 msgid ""
 "core.fsmonitor is set; remove it if you really want to disable fsmonitor"
 msgstr ""
 "core.fsmonitor está configurado; remuévelo si realmente quieres deshabilitar "
 "el fsmonitor"
 
-#: builtin/update-index.c:1182
+#: builtin/update-index.c:1193
 msgid "fsmonitor disabled"
 msgstr "fsmonitor desactivado"
 
@@ -14561,13 +15089,29 @@ msgstr "git update-server-info [--force]"
 msgid "update the info files from scratch"
 msgstr "actualiza los archivos info desde cero"
 
-#: builtin/verify-commit.c:18
-msgid "git verify-commit [-v | --verbose] <commit>..."
-msgstr "git verify-commit [-v | --verbose] <commit>..."
+#: builtin/upload-pack.c:11
+msgid "git upload-pack [<options>] <dir>"
+msgstr "git upload-pack [<opciones>] <directorio>"
 
-#: builtin/verify-commit.c:73
-msgid "print commit contents"
-msgstr "imprimir contenido del commit"
+#: builtin/upload-pack.c:25
+msgid "exit immediately after initial ref advertisement"
+msgstr "salir inmediatamente tras el anuncio inicial de ref"
+
+#: builtin/upload-pack.c:27
+msgid "do not try <directory>/.git/ if <directory> is no Git directory"
+msgstr "no intente <directorio>/.git/ si <directorio> no es un directorio Git"
+
+#: builtin/upload-pack.c:29
+msgid "interrupt transfer after <n> seconds of inactivity"
+msgstr "interrumpir transferencia tras <n> segundos de inactividad"
+
+#: builtin/verify-commit.c:18
+msgid "git verify-commit [-v | --verbose] <commit>..."
+msgstr "git verify-commit [-v | --verbose] <commit>..."
+
+#: builtin/verify-commit.c:73
+msgid "print commit contents"
+msgstr "imprimir contenido del commit"
 
 #: builtin/verify-commit.c:74 builtin/verify-tag.c:38
 msgid "print raw gpg status output"
@@ -14621,22 +15165,22 @@ msgstr "git worktree remove [<opciones>] <worktree>"
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <ruta>"
 
-#: builtin/worktree.c:60
+#: builtin/worktree.c:58
 #, c-format
 msgid "Removing worktrees/%s: not a valid directory"
 msgstr "Removiendo el worktrees/%s: no es un directorio válido"
 
-#: builtin/worktree.c:66
+#: builtin/worktree.c:64
 #, c-format
 msgid "Removing worktrees/%s: gitdir file does not exist"
 msgstr "Removiendo worktrees/%s: archivo gitdir no existe"
 
-#: builtin/worktree.c:71 builtin/worktree.c:80
+#: builtin/worktree.c:69 builtin/worktree.c:78
 #, 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:90
+#: builtin/worktree.c:88
 #, c-format
 msgid ""
 "Removing worktrees/%s: short read (expected %<PRIuMAX> bytes, read "
@@ -14645,183 +15189,198 @@ msgstr ""
 "Removiendo árboles de trabajo/%s: lectura corta (se esperan %<PRIuMAX> "
 "bytes, %<PRIuMAX> leídos)"
 
-#: builtin/worktree.c:98
+#: builtin/worktree.c:96
 #, c-format
 msgid "Removing worktrees/%s: invalid gitdir file"
 msgstr "Removiendo worktrees/%s: archivo gitdir inválido"
 
-#: builtin/worktree.c:114
+#: builtin/worktree.c:105
 #, 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"
 
-#: builtin/worktree.c:161
+#: builtin/worktree.c:152
 msgid "report pruned working trees"
 msgstr "reporta árboles de trabajo recortados"
 
-#: builtin/worktree.c:163
+#: builtin/worktree.c:154
 msgid "expire working trees older than <time>"
 msgstr "expirar árboles de trabajo más viejos a <tiempo>"
 
-#: builtin/worktree.c:238
+#: builtin/worktree.c:229
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' ya existe"
 
-#: builtin/worktree.c:269
+#: builtin/worktree.c:260
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "no se pudo crear directorio de '%s'"
 
-#: builtin/worktree.c:308
+#: builtin/worktree.c:373 builtin/worktree.c:379
+#, c-format
+msgid "Preparing worktree (new branch '%s')"
+msgstr "Preparando árbol de trabajo (nueva rama '%s')"
+
+#: builtin/worktree.c:375
+#, 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:384
 #, c-format
-msgid "Preparing %s (identifier %s)"
-msgstr "Preparando %s (identificador %s)"
+msgid "Preparing worktree (checking out '%s')"
+msgstr "Preparando árbol de trabajo (haciendo checkout a '%s')"
 
-#: builtin/worktree.c:385
+#: builtin/worktree.c:390
+#, c-format
+msgid "Preparing worktree (detached HEAD %s)"
+msgstr "Preparando árbol de trabajo (HEAD desacoplado %s)"
+
+#: builtin/worktree.c:431
 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:388
+#: builtin/worktree.c:434
 msgid "create a new branch"
 msgstr "crear una nueva rama"
 
-#: builtin/worktree.c:390
+#: builtin/worktree.c:436
 msgid "create or reset a branch"
 msgstr "crear o restablecer una rama"
 
-#: builtin/worktree.c:392
+#: builtin/worktree.c:438
 msgid "populate the new working tree"
 msgstr "popular el nuevo árbol de trabajo"
 
-#: builtin/worktree.c:393
+#: builtin/worktree.c:439
 msgid "keep the new working tree locked"
 msgstr "mantener el nuevo árbol de trabajo bloqueado"
 
-#: builtin/worktree.c:395
+#: builtin/worktree.c:441
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "configurando modo tracking (mirar git-branch(1))"
 
-#: builtin/worktree.c:398
+#: builtin/worktree.c:444
 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:406
+#: builtin/worktree.c:452
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b, -B, y --detach son mutuamente exclusivas"
 
-#: builtin/worktree.c:471
+#: builtin/worktree.c:511
 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:571
+#: builtin/worktree.c:611
 msgid "reason for locking"
 msgstr "razón para bloquear"
 
-#: builtin/worktree.c:583 builtin/worktree.c:616 builtin/worktree.c:670
-#: builtin/worktree.c:809
+#: builtin/worktree.c:623 builtin/worktree.c:656 builtin/worktree.c:710
+#: builtin/worktree.c:850
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' no es un árbol de trabajo"
 
-#: builtin/worktree.c:585 builtin/worktree.c:618
+#: builtin/worktree.c:625 builtin/worktree.c:658
 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:590
+#: builtin/worktree.c:630
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' ya está bloqueado; razón: %s"
 
-#: builtin/worktree.c:592
+#: builtin/worktree.c:632
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' ya está bloqueado"
 
-#: builtin/worktree.c:620
+#: builtin/worktree.c:660
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' no está bloqueado"
 
-#: builtin/worktree.c:645
+#: builtin/worktree.c:685
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr ""
 "árboles de trabajo conteniendo submódulos no puede ser movidos o removidos"
 
-#: builtin/worktree.c:672 builtin/worktree.c:811
+#: builtin/worktree.c:712 builtin/worktree.c:852
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' es un árbol de trabajo principal"
 
-#: builtin/worktree.c:677
+#: builtin/worktree.c:717
 #, 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:683
+#: builtin/worktree.c:723
 #, c-format
 msgid "target '%s' already exists"
 msgstr "el objetivo '%s' ya existe"
 
-#: builtin/worktree.c:690
+#: builtin/worktree.c:730
 #, c-format
 msgid "cannot move a locked working tree, lock reason: %s"
 msgstr ""
 "no se puede mover un árbol de trabajo encerrado, motivo del encierro: %s"
 
-#: builtin/worktree.c:692
+#: builtin/worktree.c:732
 msgid "cannot move a locked working tree"
 msgstr "no se puede mover un árbol de trabajo encerrado"
 
-#: builtin/worktree.c:695
+#: builtin/worktree.c:735
 #, 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:700
+#: builtin/worktree.c:740
 #, c-format
 msgid "failed to move '%s' to '%s'"
-msgstr "fallo al mover '%s' a '%s'"
+msgstr "falló al mover '%s' a '%s'"
 
-#: builtin/worktree.c:748
+#: builtin/worktree.c:788
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "falló al ejecutar 'git status' en '%s'"
 
-#: builtin/worktree.c:752
+#: builtin/worktree.c:792
 #, c-format
 msgid "'%s' is dirty, use --force to delete it"
 msgstr "'%s' está sucio, use --force para borrarlo"
 
-#: builtin/worktree.c:757
+#: builtin/worktree.c:797
 #, 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:768 builtin/worktree.c:782
+#: builtin/worktree.c:808 builtin/worktree.c:822
 #, c-format
 msgid "failed to delete '%s'"
-msgstr "fallo al borrar '%s'"
+msgstr "falló al borrar '%s'"
 
-#: builtin/worktree.c:794
+#: builtin/worktree.c:834
 msgid "force removing even if the worktree is dirty"
 msgstr "forzar remoción incluso si el árbol de trabajo está sucio"
 
-#: builtin/worktree.c:815
+#: builtin/worktree.c:856
 #, c-format
 msgid "cannot remove a locked working tree, lock reason: %s"
 msgstr ""
 "no se pueden remover árbol de trabajo encerrado, razón del encierro: %s"
 
-#: builtin/worktree.c:817
+#: builtin/worktree.c:858
 msgid "cannot remove a locked working tree"
 msgstr "no se puede remover árbol de trabajo encerrado"
 
-#: builtin/worktree.c:820
+#: builtin/worktree.c:861
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "falló validación, no se puede remover árbol de trabajo: %s"
@@ -14842,26 +15401,6 @@ msgstr "escribir objeto de  árbol para un subdirectorio <prefijo>"
 msgid "only useful for debugging"
 msgstr "sólo útil para depurar"
 
-#: upload-pack.c:27
-msgid "git upload-pack [<options>] <dir>"
-msgstr "git upload-pack [<opciones>] <directorio>"
-
-#: upload-pack.c:1070
-msgid "quit after a single request/response exchange"
-msgstr "sale después de un intercambio petición/respuesta único"
-
-#: upload-pack.c:1072
-msgid "exit immediately after initial ref advertisement"
-msgstr "salir inmediatamente tras el anuncio inicial de ref"
-
-#: upload-pack.c:1074
-msgid "do not try <directory>/.git/ if <directory> is no Git directory"
-msgstr "no intente <directorio>/.git/ si <directorio> no es un directorio Git"
-
-#: upload-pack.c:1076
-msgid "interrupt transfer after <n> seconds of inactivity"
-msgstr "interrumpir transferencia tras <n> segundos de inactividad"
-
 #: credential-cache--daemon.c:222
 #, c-format
 msgid ""
@@ -14880,21 +15419,23 @@ msgstr ""
 msgid "print debugging messages to stderr"
 msgstr "mostrar mensajes de debug en stderr"
 
-#: git.c:8
+#: git.c:27
 msgid ""
 "git [--version] [--help] [-C <path>] [-c <name>=<value>]\n"
 "           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
-"           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]\n"
+"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
+"bare]\n"
 "           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
 "           <command> [<args>]"
 msgstr ""
 "git [--version] [--help] [-C <ruta>] [-c <nombre>=<valor>]\n"
 "           [--exec-path[=<ruta>]] [--html-path] [--man-path] [--info-path]\n"
-"           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]\n"
+"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
+"bare]\n"
 "           [--git-dir=<ruta>] [--work-tree=<ruta>] [--namespace=<nombre>]\n"
 "           <comando> [<args>]"
 
-#: git.c:15
+#: git.c:34
 msgid ""
 "'git help -a' and 'git help -g' list available subcommands and some\n"
 "concept guides. See 'git help <command>' or 'git help <concept>'\n"
@@ -14904,65 +15445,65 @@ msgstr ""
 "guías de concepto. Consulte 'git help <command>' o 'git help <concepto>'\n"
 "para leer sobre un subcomando o concepto específico."
 
-#: git.c:95
+#: git.c:173
 #, c-format
 msgid "no directory given for --git-dir\n"
 msgstr "no se entregó directorio para --git-dir\n"
 
-#: git.c:109
+#: git.c:187
 #, c-format
 msgid "no namespace given for --namespace\n"
 msgstr "no se entregó namespace para --namespace\n"
 
-#: git.c:123
+#: git.c:201
 #, c-format
 msgid "no directory given for --work-tree\n"
 msgstr "no se entregó directorio para --work-tree\n"
 
-#: git.c:137
+#: git.c:215
 #, c-format
 msgid "no prefix given for --super-prefix\n"
 msgstr "no se entregó prefijo para --super-prefix\n"
 
-#: git.c:159
+#: git.c:237
 #, c-format
 msgid "-c expects a configuration string\n"
 msgstr "-c espera un string de configuración\n"
 
-#: git.c:197
+#: git.c:275
 #, c-format
 msgid "no directory given for -C\n"
 msgstr "no se entregó directorio para -C\n"
 
-#: git.c:212
+#: git.c:300
 #, c-format
 msgid "unknown option: %s\n"
 msgstr "opción %s desconocida\n"
 
-#: git.c:687
+#: git.c:765
 #, c-format
 msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
 msgstr "expansión del alias '%s' falló; '%s' no es un comando de git\n"
 
-#: git.c:699
+#: git.c:777
 #, c-format
 msgid "failed to run command '%s': %s\n"
-msgstr "fallo al ejecutar comando '%s': %s\n"
+msgstr "falló al ejecutar comando '%s': %s\n"
 
-#: http.c:342
+#: http.c:348
 #, c-format
 msgid "negative value for http.postbuffer; defaulting to %d"
 msgstr "valor negativo para http.postbuffer; poniendo el default a %d"
 
-#: http.c:363
+#: http.c:369
 msgid "Delegation control is not supported with cURL < 7.22.0"
 msgstr "Delegación de control no es soportada con cURL < 7.22.0"
 
-#: http.c:372
+#: http.c:378
 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:1857
+#: http.c:1854
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -14973,7 +15514,7 @@ msgstr ""
 "  preguntaba por: %s\n"
 "   redireccionamiento: %s"
 
-#: remote-curl.c:345
+#: remote-curl.c:401
 #, c-format
 msgid "redirecting to %s"
 msgstr "redirigiendo a %s"
@@ -14986,129 +15527,669 @@ msgstr "args"
 msgid "object filtering"
 msgstr "filtrado de objeto"
 
-#: common-cmds.h:9
-msgid "start a working area (see also: git help tutorial)"
-msgstr "comienza un área de trabajo (ver también: git help tutorial)"
+#: parse-options.h:157
+msgid "expiry-date"
+msgstr "fecha de expiración"
 
-#: common-cmds.h:10
-msgid "work on the current change (see also: git help everyday)"
-msgstr "trabaja en los cambios actuales (ver también: git help everyday)"
+#: parse-options.h:172
+msgid "no-op (backward compatibility)"
+msgstr "no-op (compatibilidad con versiones anteriores)"
 
-#: common-cmds.h:11
-msgid "examine the history and state (see also: git help revisions)"
-msgstr "examina el historial y el estado (ver también: git help revisions)"
+#: parse-options.h:251
+msgid "be more verbose"
+msgstr "ser mas verboso"
 
-#: common-cmds.h:12
-msgid "grow, mark and tweak your common history"
-msgstr "crece, marca y ajusta tu historial común"
+#: parse-options.h:253
+msgid "be more quiet"
+msgstr "ser mas discreto"
 
-#: common-cmds.h:13
-msgid "collaborate (see also: git help workflows)"
-msgstr "colabora (mira también: git help workflows)"
+#: parse-options.h:259
+msgid "use <n> digits to display SHA-1s"
+msgstr "usa <n> dígitos para mostrar SHA-1s"
 
-#: common-cmds.h:17
+#: command-list.h:50
 msgid "Add file contents to the index"
 msgstr "Agrega contenido de carpetas al índice"
 
-#: common-cmds.h:18
+#: command-list.h:51
+msgid "Apply a series of patches from a mailbox"
+msgstr "Aplicar una serie de parches de un mailbox"
+
+#: command-list.h:52
+msgid "Annotate file lines with commit information"
+msgstr "Anotar líneas de archivo con información de commit"
+
+#: command-list.h:53
+msgid "Apply a patch to files and/or to the index"
+msgstr "Aplicar un parche a archivos y/o  el índice"
+
+#: command-list.h:54
+msgid "Import an Arch repository into Git"
+msgstr "Importar un repositorio Arch en Git"
+
+#: command-list.h:55
+msgid "Create an archive of files from a named tree"
+msgstr "Crear un archivo o archivos de un árbol nombrado"
+
+#: command-list.h:56
 msgid "Use binary search to find the commit that introduced a bug"
 msgstr "Use la búsqueda binaria para encontrar el commit que introdujo el bug"
 
-#: common-cmds.h:19
+#: command-list.h:57
+msgid "Show what revision and author last modified each line of a file"
+msgstr ""
+"Mostrar qué revisión y autor modificaron al último cada línea de un archivo"
+
+#: command-list.h:58
 msgid "List, create, or delete branches"
 msgstr "Lista, crea, o borra ramas"
 
-#: common-cmds.h:20
+#: command-list.h:59
+msgid "Move objects and refs by archive"
+msgstr "Mover objetos y referencias por archivo"
+
+#: command-list.h:60
+msgid "Provide content or type and size information for repository objects"
+msgstr ""
+"Proveer contenido o tipo y tamaño de información para objetos de repositorio"
+
+#: command-list.h:61
+msgid "Display gitattributes information"
+msgstr "Mostrar información de gitattributes"
+
+#: command-list.h:62
+msgid "Debug gitignore / exclude files"
+msgstr "Debug a gitignore / excluir archivos"
+
+#: command-list.h:63
+msgid "Show canonical names and email addresses of contacts"
+msgstr "Mostrar nombres canónicos y direcciones de correo de contactos"
+
+#: command-list.h:64
 msgid "Switch branches or restore working tree files"
 msgstr "Cambia ramas o restaura los archivos de tu árbol de trabajo"
 
-#: common-cmds.h:21
+#: command-list.h:65
+msgid "Copy files from the index to the working tree"
+msgstr "Copiar archivos del índice al árbol de trabajo"
+
+#: command-list.h:66
+msgid "Ensures that a reference name is well formed"
+msgstr "Asegura que un nombre de referencia esté bien formado"
+
+#: command-list.h:67
+msgid "Find commits yet to be applied to upstream"
+msgstr "Encuentra commits que faltan aplicar en upstream"
+
+#: command-list.h:68
+msgid "Apply the changes introduced by some existing commits"
+msgstr "Aplica los cambios introducidos por algunos commits existentes"
+
+#: command-list.h:69
+msgid "Graphical alternative to git-commit"
+msgstr "Opción gráfica a git-commit"
+
+#: command-list.h:70
+msgid "Remove untracked files from the working tree"
+msgstr "Remueve archivos del árbol de trabajo no rastreados"
+
+#: command-list.h:71
 msgid "Clone a repository into a new directory"
 msgstr "Clona un repositorio dentro de un nuevo directorio"
 
-#: common-cmds.h:22
+#: command-list.h:72
+msgid "Display data in columns"
+msgstr "Mostrar data en columnas"
+
+#: command-list.h:73
 msgid "Record changes to the repository"
 msgstr "Graba los cambios en tu repositorio"
 
-#: common-cmds.h:23
+#: command-list.h:74
+msgid "Write and verify Git commit graph files"
+msgstr "Escribe y verifica los archivos de Git commit graph"
+
+#: command-list.h:75
+msgid "Create a new commit object"
+msgstr "Crea un nuevo objeto commit"
+
+#: command-list.h:76
+msgid "Get and set repository or global options"
+msgstr "Configurar repositorio u opciones globales"
+
+#: command-list.h:77
+msgid "Count unpacked number of objects and their disk consumption"
+msgstr "Contar número de objetos no empaquetados y su consumo en disco"
+
+#: command-list.h:78
+msgid "Retrieve and store user credentials"
+msgstr "Obtener y guardar credenciales de usuario"
+
+#: command-list.h:79
+msgid "Helper to temporarily store passwords in memory"
+msgstr "Auxiliar para almacenar temporalmente claves en memoria"
+
+#: command-list.h:80
+msgid "Helper to store credentials on disk"
+msgstr "Auxiliar para guardar credenciales en disco"
+
+#: command-list.h:81
+msgid "Export a single commit to a CVS checkout"
+msgstr "Exporta un commit único a CVS checkout"
+
+#: command-list.h:82
+msgid "Salvage your data out of another SCM people love to hate"
+msgstr "Salva tus datos de otro SCM que la gente adora odiar"
+
+#: command-list.h:83
+msgid "A CVS server emulator for Git"
+msgstr "Un servidor emulador de CVS para Git"
+
+#: command-list.h:84
+msgid "A really simple server for Git repositories"
+msgstr "Un servidor realmente simple para repositorios Git"
+
+#: command-list.h:85
+msgid "Give an object a human readable name based on an available ref"
+msgstr ""
+"Dar a un objeto un nombre legible por humanos basado en una referencia "
+"disponible"
+
+#: command-list.h:86
 msgid "Show changes between commits, commit and working tree, etc"
 msgstr "Muestra los cambios entre commits, commit y árbol de trabajo, etc"
 
-#: common-cmds.h:24
+#: command-list.h:87
+msgid "Compares files in the working tree and the index"
+msgstr "Compara archivos del árbol de trabajo y del índice"
+
+#: command-list.h:88
+msgid "Compare a tree to the working tree or index"
+msgstr "Compara un árbol con el árbol de trabajo o índice"
+
+#: command-list.h:89
+msgid "Compares the content and mode of blobs found via two tree objects"
+msgstr ""
+"Compara el contenido y el modo de blobs encontrados a través de dos objetos "
+"de árbol"
+
+#: command-list.h:90
+msgid "Show changes using common diff tools"
+msgstr "Mostrar cambios usando herramientas de diff comunes"
+
+#: command-list.h:91
+msgid "Git data exporter"
+msgstr "Exportador de data Git"
+
+#: command-list.h:92
+msgid "Backend for fast Git data importers"
+msgstr "Backend para importadores de data de Git rápidos"
+
+#: command-list.h:93
 msgid "Download objects and refs from another repository"
 msgstr "Descarga objetos y referencias de otro repositorio"
 
-#: common-cmds.h:25
+#: command-list.h:94
+msgid "Receive missing objects from another repository"
+msgstr "Descarga objetos faltantes de otro repositorio"
+
+#: command-list.h:95
+msgid "Rewrite branches"
+msgstr "Reescribir ramas"
+
+#: command-list.h:96
+msgid "Produce a merge commit message"
+msgstr "Produce un mensaje de commit para fusión"
+
+#: command-list.h:97
+msgid "Output information on each ref"
+msgstr "Información de output en cada ref"
+
+#: command-list.h:98
+msgid "Prepare patches for e-mail submission"
+msgstr "Prepara parches para ser enviados por e-mail"
+
+#: command-list.h:99
+msgid "Verifies the connectivity and validity of the objects in the database"
+msgstr ""
+"Verifica la conectividad y disponibilidad de los objetos en la base de datos"
+
+#: command-list.h:100
+msgid "Cleanup unnecessary files and optimize the local repository"
+msgstr "Limpia archivos innecesarios y optimiza el repositorio local"
+
+#: command-list.h:101
+msgid "Extract commit ID from an archive created using git-archive"
+msgstr "Extrae el ID de commit de un archivo creado usando git-archive"
+
+#: command-list.h:102
 msgid "Print lines matching a pattern"
 msgstr "Imprime las líneas que concuerdan con el patron"
 
-#: common-cmds.h:26
+#: command-list.h:103
+msgid "A portable graphical interface to Git"
+msgstr "Una interfaz gráfica portátil para Git"
+
+#: command-list.h:104
+msgid "Compute object ID and optionally creates a blob from a file"
+msgstr "Computa ID de objeto y, opcionalmente, crea un blob de un archivo"
+
+#: command-list.h:105
+msgid "Display help information about Git"
+msgstr "Mostrar información sobre Git"
+
+#: command-list.h:106
+msgid "Server side implementation of Git over HTTP"
+msgstr "Implementación de lado de servidor de Git por HTTP"
+
+#: command-list.h:107
+msgid "Download from a remote Git repository via HTTP"
+msgstr "Descarga de un repositorio Git remoto vía HTTP"
+
+#: command-list.h:108
+msgid "Push objects over HTTP/DAV to another repository"
+msgstr "Empuja objetos por HTTP/DAV a otro repositorio"
+
+#: command-list.h:109
+msgid "Send a collection of patches from stdin to an IMAP folder"
+msgstr "Enviar una colección de parches de stdin a una carpeta IMAP"
+
+#: command-list.h:110
+msgid "Build pack index file for an existing packed archive"
+msgstr "Constuye un archivo de índice para un archivo empaquetado existente"
+
+#: command-list.h:111
 msgid "Create an empty Git repository or reinitialize an existing one"
 msgstr "Crea un repositorio de Git vacío o reinicia el que ya existe"
 
-#: common-cmds.h:27
+#: command-list.h:112
+msgid "Instantly browse your working repository in gitweb"
+msgstr "Buscar instantáneamente tu repositorio de trabajo en gitweb"
+
+#: command-list.h:113
+msgid "add or parse structured information in commit messages"
+msgstr "agregar o analizar información estructurada en mensajes de commit"
+
+#: command-list.h:114
+msgid "The Git repository browser"
+msgstr "El navegador de repositorio Git"
+
+#: command-list.h:115
 msgid "Show commit logs"
 msgstr "Muestra los logs de los commits"
 
-#: common-cmds.h:28
+#: command-list.h:116
+msgid "Show information about files in the index and the working tree"
+msgstr "Muestra información sobre archivos in el índice y el árbol de trabajo"
+
+#: command-list.h:117
+msgid "List references in a remote repository"
+msgstr "Lista referencias en un repositorio remoto"
+
+#: command-list.h:118
+msgid "List the contents of a tree object"
+msgstr "Lista los contenidos de un objeto árbol"
+
+#: command-list.h:119
+msgid "Extracts patch and authorship from a single e-mail message"
+msgstr "Extraer parche y autoría de un único mensaje de e-mail"
+
+#: command-list.h:120
+msgid "Simple UNIX mbox splitter program"
+msgstr "Programa divisor de mbox simple de UNIX"
+
+#: command-list.h:121
 msgid "Join two or more development histories together"
 msgstr "Junta dos o mas historiales de desarrollo juntos"
 
-#: common-cmds.h:29
+#: command-list.h:122
+msgid "Find as good common ancestors as possible for a merge"
+msgstr "Encuentra un ancestro común bueno para una posible fusión"
+
+#: command-list.h:123
+msgid "Run a three-way file merge"
+msgstr "Ejecuta una fusión de tres vías en un archivo"
+
+#: command-list.h:124
+msgid "Run a merge for files needing merging"
+msgstr "Ejecuta una fusión para archivos que la necesitan"
+
+#: command-list.h:125
+msgid "The standard helper program to use with git-merge-index"
+msgstr "El programa de ayuda estándar para usar con git-merge-index"
+
+#: command-list.h:126
+msgid "Run merge conflict resolution tools to resolve merge conflicts"
+msgstr ""
+"Ejecuta las herramientas de fusión de resolución de conflictos para resolver "
+"conflictos de fusión"
+
+#: command-list.h:127
+msgid "Show three-way merge without touching index"
+msgstr "Mostrar fusión de tres vías sin tocar el índice"
+
+#: command-list.h:128
+msgid "Creates a tag object"
+msgstr "Crea un objeto tag"
+
+#: command-list.h:129
+msgid "Build a tree-object from ls-tree formatted text"
+msgstr "Construir un objeto árbol de un texto en formato ls-tree"
+
+#: command-list.h:130
 msgid "Move or rename a file, a directory, or a symlink"
 msgstr "Mueve o cambia el nombre a archivos, directorios o enlaces simbólicos"
 
-#: common-cmds.h:30
+#: command-list.h:131
+msgid "Find symbolic names for given revs"
+msgstr "Encontrar nombres simbólicos para revs dados"
+
+#: command-list.h:132
+msgid "Add or inspect object notes"
+msgstr "Agrega o inspecciona objetos nota"
+
+#: command-list.h:133
+msgid "Import from and submit to Perforce repositories"
+msgstr "Importar desde y enviar a repositorios Perforce"
+
+#: command-list.h:134
+msgid "Create a packed archive of objects"
+msgstr "Crea un archivo de objetos empaquetados"
+
+#: command-list.h:135
+msgid "Find redundant pack files"
+msgstr "Encuentra archivos empaquetados de manera redundante"
+
+#: command-list.h:136
+msgid "Pack heads and tags for efficient repository access"
+msgstr "Empaqueta heads y tags para un acceso eficiente al repositorio"
+
+#: command-list.h:137
+msgid "Routines to help parsing remote repository access parameters"
+msgstr ""
+"Rutinas para ayudar a analizar los parámetros de acceso del repositorio "
+"remoto"
+
+#: command-list.h:138
+msgid "Compute unique ID for a patch"
+msgstr "Calcular ID único para un parche"
+
+#: command-list.h:139
+msgid "Prune all unreachable objects from the object database"
+msgstr "Limpia todos los objetos no alcanzables de la base de datos de objetos"
+
+#: command-list.h:140
+msgid "Remove extra objects that are already in pack files"
+msgstr "Remover objetos extra que ya están en archivos empaquetados"
+
+#: command-list.h:141
 msgid "Fetch from and integrate with another repository or a local branch"
 msgstr "Realiza un fetch e integra con otro repositorio o rama local"
 
-#: common-cmds.h:31
+#: command-list.h:142
 msgid "Update remote refs along with associated objects"
 msgstr "Actualiza referencias remotas junto con sus objetos asociados"
 
-#: common-cmds.h:32
+#: command-list.h:143
+msgid "Applies a quilt patchset onto the current branch"
+msgstr "Aplica un parche quilt en la rama actual"
+
+#: command-list.h:144
+msgid "Reads tree information into the index"
+msgstr "Lee información del ábol en el índice"
+
+#: command-list.h:145
 msgid "Reapply commits on top of another base tip"
 msgstr "Vuelve a aplicar commits en la punta de otra rama"
 
-#: common-cmds.h:33
+#: command-list.h:146
+msgid "Receive what is pushed into the repository"
+msgstr "Recibir lo que es empujado en el respositorio"
+
+#: command-list.h:147
+msgid "Manage reflog information"
+msgstr "Gestionar información de reflog"
+
+#: command-list.h:148
+msgid "Manage set of tracked repositories"
+msgstr "Gestiona un conjunto de repositorios rastreados"
+
+#: command-list.h:149
+msgid "Pack unpacked objects in a repository"
+msgstr "empaquetar objetos no empaquetados en un repositorio"
+
+#: command-list.h:150
+msgid "Create, list, delete refs to replace objects"
+msgstr "Crea, lista, borra referencias para reemplazar objetos"
+
+#: command-list.h:151
+msgid "Generates a summary of pending changes"
+msgstr "Genera un resumen de cambios pendientes"
+
+#: command-list.h:152
+msgid "Reuse recorded resolution of conflicted merges"
+msgstr "Reutilizar la resolución registrada de fusiones conflictivas"
+
+#: command-list.h:153
 msgid "Reset current HEAD to the specified state"
 msgstr "Reinicia el HEAD actual a un estado especifico"
 
-#: common-cmds.h:34
+#: command-list.h:154
+msgid "Revert some existing commits"
+msgstr "Revierte algunos commits existentes"
+
+#: command-list.h:155
+msgid "Lists commit objects in reverse chronological order"
+msgstr "Lista objetos commit en orden cronológico inverso"
+
+#: command-list.h:156
+msgid "Pick out and massage parameters"
+msgstr "Seleccionar y masajear los parámetros"
+
+#: command-list.h:157
 msgid "Remove files from the working tree and from the index"
 msgstr "Borra archivos del árbol de trabajo y del índice"
 
-#: common-cmds.h:35
+#: command-list.h:158
+msgid "Send a collection of patches as emails"
+msgstr "Envía una colección de parches como e-mails"
+
+#: command-list.h:159
+msgid "Push objects over Git protocol to another repository"
+msgstr "Empujar objetos por protocolo Git a otro repositorio"
+
+#: command-list.h:160
+msgid "Restricted login shell for Git-only SSH access"
+msgstr "Shell de inicio de sesión restringido para acceso SSH exclusivo de Git"
+
+#: command-list.h:161
+msgid "Summarize 'git log' output"
+msgstr "Resumir la salida 'git log'"
+
+#: command-list.h:162
 msgid "Show various types of objects"
 msgstr "Muestra varios tipos de objetos"
 
-#: common-cmds.h:36
+#: command-list.h:163
+msgid "Show branches and their commits"
+msgstr "Mostrar ramas y sus commits"
+
+#: command-list.h:164
+msgid "Show packed archive index"
+msgstr "Mostrar el índice de archivo empaquetado"
+
+#: command-list.h:165
+msgid "List references in a local repository"
+msgstr "Listar referencias en el repositorio local"
+
+#: command-list.h:166
+msgid "Git's i18n setup code for shell scripts"
+msgstr "El código de configuración i18n de Git para scripts de shell"
+
+#: command-list.h:167
+msgid "Common Git shell script setup code"
+msgstr "Código de configuración de script de shell común de Git"
+
+#: command-list.h:168
+msgid "Stash the changes in a dirty working directory away"
+msgstr ""
+"Poner en un stash los cambios en un directorio de trabajo sucio de todas "
+"maneras"
+
+#: command-list.h:169
+msgid "Add file contents to the staging area"
+msgstr "Agrega contenidos de un archivo al área de staging"
+
+#: command-list.h:170
 msgid "Show the working tree status"
 msgstr "Muestra el estado del árbol de trabajo"
 
-#: common-cmds.h:37
+#: command-list.h:171
+msgid "Remove unnecessary whitespace"
+msgstr "Eliminar el espacio en blanco innecesario"
+
+#: command-list.h:172
+msgid "Initialize, update or inspect submodules"
+msgstr "Inicializa, actualiza o inspecciona submódulos"
+
+#: command-list.h:173
+msgid "Bidirectional operation between a Subversion repository and Git"
+msgstr "Operación bidireccional entre un repositorio Subversion y Git"
+
+#: command-list.h:174
+msgid "Read, modify and delete symbolic refs"
+msgstr "Lee, modifica y borra referencias simbólicas"
+
+#: command-list.h:175
 msgid "Create, list, delete or verify a tag object signed with GPG"
 msgstr "Crea, lista, borra o verifica un tag de objeto firmado con GPG"
 
-#: parse-options.h:157
-msgid "expiry-date"
-msgstr "fecha de expiración"
+#: command-list.h:176
+msgid "Creates a temporary file with a blob's contents"
+msgstr "Crea un archivo temporal con contenidos de un blob"
 
-#: parse-options.h:172
-msgid "no-op (backward compatibility)"
-msgstr "no-op (compatibilidad con versiones anteriores)"
+#: command-list.h:177
+msgid "Unpack objects from a packed archive"
+msgstr "Desempaqueta objetos de un archivo empaquetado"
 
-#: parse-options.h:250
-msgid "be more verbose"
-msgstr "ser mas verboso"
+#: command-list.h:178
+msgid "Register file contents in the working tree to the index"
+msgstr "Registra contenidos de archivos en el árbol de trabajo al índice"
 
-#: parse-options.h:252
-msgid "be more quiet"
-msgstr "ser mas discreto"
+#: command-list.h:179
+msgid "Update the object name stored in a ref safely"
+msgstr ""
+"Actualiza el nombre del objeto almacenado en una referencia de forma segura"
 
-#: parse-options.h:258
-msgid "use <n> digits to display SHA-1s"
-msgstr "usa <n> dígitos para mostrar SHA-1s"
+#: command-list.h:180
+msgid "Update auxiliary info file to help dumb servers"
+msgstr ""
+"Actualiza el archivo de información auxiliar para ayudar a los servidores "
+"dumb"
+
+#: command-list.h:181
+msgid "Send archive back to git-archive"
+msgstr "Enviar archivo a git-archive"
+
+#: command-list.h:182
+msgid "Send objects packed back to git-fetch-pack"
+msgstr "Enviar objetos empaquetados a git-fetch-pack"
+
+#: command-list.h:183
+msgid "Show a Git logical variable"
+msgstr "Mostrar una variable lógica de Git"
+
+#: command-list.h:184
+msgid "Check the GPG signature of commits"
+msgstr "Verificar firma GPG de commits"
+
+#: command-list.h:185
+msgid "Validate packed Git archive files"
+msgstr "Valida archivos Git empaquetados"
+
+#: command-list.h:186
+msgid "Check the GPG signature of tags"
+msgstr "Verifica la firma GPG de etiquetas"
+
+#: command-list.h:187
+msgid "Git web interface (web frontend to Git repositories)"
+msgstr "Interfaz web Git (interfaz web para repositorios Git)"
+
+#: command-list.h:188
+msgid "Show logs with difference each commit introduces"
+msgstr "Muestra logs con las diferencias que cada commit introduce"
+
+#: command-list.h:189
+msgid "Manage multiple working trees"
+msgstr "Gestiona múltiples árboles de trabajo"
+
+#: command-list.h:190
+msgid "Create a tree object from the current index"
+msgstr "Crea un objeto árbol del índice actual"
+
+#: command-list.h:191
+msgid "Defining attributes per path"
+msgstr "Definiendo atributos por ruta"
+
+#: command-list.h:192
+msgid "Git command-line interface and conventions"
+msgstr "Interfaz y convenciones de línea de comandos de Git"
+
+#: command-list.h:193
+msgid "A Git core tutorial for developers"
+msgstr "Un tutorial básico de Git para desarrolladores"
+
+#: command-list.h:194
+msgid "Git for CVS users"
+msgstr "Git para usuarios CVS"
+
+#: command-list.h:195
+msgid "Tweaking diff output"
+msgstr "Afinar la salida de diff"
+
+#: command-list.h:196
+msgid "A useful minimum set of commands for Everyday Git"
+msgstr "Un conjunto mínimo útil de comandos diarios de Git"
+
+#: command-list.h:197
+msgid "A Git Glossary"
+msgstr "Un Glosario de Git"
+
+#: command-list.h:198
+msgid "Hooks used by Git"
+msgstr "Hooks utilizados por Git"
+
+#: command-list.h:199
+msgid "Specifies intentionally untracked files to ignore"
+msgstr "Especifica de forma intencional archivos sin seguimiento a ignorar"
+
+#: command-list.h:200
+msgid "Defining submodule properties"
+msgstr "Definiendo las propiedades del submódulo"
+
+#: command-list.h:201
+msgid "Git namespaces"
+msgstr "namespaces de Git"
+
+#: command-list.h:202
+msgid "Git Repository Layout"
+msgstr "Disposición del repositorio Git"
+
+#: command-list.h:203
+msgid "Specifying revisions and ranges for Git"
+msgstr "Especificando revisiones y rangos para Git"
+
+#: command-list.h:204
+msgid "A tutorial introduction to Git: part two"
+msgstr "Un tutorial de introducción a Git: parte dos"
+
+#: command-list.h:205
+msgid "A tutorial introduction to Git"
+msgstr "Un tutorial de introducción para Git"
+
+#: command-list.h:206
+msgid "An overview of recommended workflows with Git"
+msgstr "Una visión general de flujos de trabajo recomendados con Git"
 
 #: rerere.h:40
 msgid "update the index with reused conflict resolution if possible"
@@ -15339,7 +16420,7 @@ msgstr "Intentando fusión simple con $pretty_name"
 msgid "Simple merge did not work, trying automatic merge."
 msgstr "Fusión simple no funcionó, intentando fusión automática."
 
-#: git-rebase.sh:60
+#: git-rebase.sh:61
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
@@ -15354,42 +16435,42 @@ msgstr ""
 "Para abortar y regresar al estado previo al \"git rebase\", ejecute \"git "
 "rebase --abort\"."
 
-#: git-rebase.sh:163 git-rebase.sh:409
+#: git-rebase.sh:173 git-rebase.sh:442
 #, sh-format
 msgid "Could not move back to $head_name"
 msgstr "No se puede regresar a $head_name"
 
-#: git-rebase.sh:174
+#: git-rebase.sh:184
 msgid "Applied autostash."
 msgstr "Autostash aplicado."
 
-#: git-rebase.sh:177
+#: git-rebase.sh:187
 #, sh-format
 msgid "Cannot store $stash_sha1"
 msgstr "No se puede almacenar $stash_sha1"
 
-#: git-rebase.sh:218
+#: git-rebase.sh:229
 msgid "The pre-rebase hook refused to rebase."
 msgstr "El hook pre-rebase rechazó el rebase."
 
-#: git-rebase.sh:223
+#: git-rebase.sh:234
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr "Parece que 'git am' está en progreso. No se puede rebasar."
 
-#: git-rebase.sh:370
+#: git-rebase.sh:403
 msgid "No rebase in progress?"
 msgstr "No hay rebase en progreso?"
 
-#: git-rebase.sh:381
+#: git-rebase.sh:414
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr ""
 "La acción --edit-todo sólo puede ser usada al rebasar interactivamente."
 
-#: git-rebase.sh:388
+#: git-rebase.sh:421
 msgid "Cannot read HEAD"
 msgstr "No se puede leer el HEAD"
 
-#: git-rebase.sh:391
+#: git-rebase.sh:424
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
@@ -15397,7 +16478,7 @@ msgstr ""
 "Tienes que editar todos los conflictos de fusión y luego\n"
 "marcarlos como resueltos usando git add"
 
-#: git-rebase.sh:435
+#: git-rebase.sh:468
 #, sh-format
 msgid ""
 "It seems that there is already a $state_dir_base directory, and\n"
@@ -15418,76 +16499,80 @@ msgstr ""
 "y ejecúteme nuevamente.  Me estoy deteniendo en caso de que tenga\n"
 "algo de valor ahí."
 
-#: git-rebase.sh:491
+#: git-rebase.sh:509
+msgid "error: cannot combine '--signoff' with '--preserve-merges'"
+msgstr "error: no se puede combinar '--signoff' con '--preserve-merges'"
+
+#: git-rebase.sh:537
 #, sh-format
 msgid "invalid upstream '$upstream_name'"
 msgstr "upstream inválido '$upstream_name'"
 
-#: git-rebase.sh:515
+#: git-rebase.sh:561
 #, sh-format
 msgid "$onto_name: there are more than one merge bases"
 msgstr "$onto_name: hay más de una base de fusión"
 
-#: git-rebase.sh:518 git-rebase.sh:522
+#: git-rebase.sh:564 git-rebase.sh:568
 #, sh-format
 msgid "$onto_name: there is no merge base"
 msgstr "$onto_name: no hay base de fusión"
 
-#: git-rebase.sh:527
+#: git-rebase.sh:573
 #, sh-format
 msgid "Does not point to a valid commit: $onto_name"
 msgstr "No apunta a un commit válido: $onto_name"
 
-#: git-rebase.sh:553
+#: git-rebase.sh:599
 #, sh-format
 msgid "fatal: no such branch/commit '$branch_name'"
 msgstr "fatal: no existe la rama/commit: '$branch_name'"
 
-#: git-rebase.sh:586
+#: git-rebase.sh:632
 msgid "Cannot autostash"
 msgstr "No se puede ejecutar autostash"
 
-#: git-rebase.sh:591
+#: git-rebase.sh:637
 #, sh-format
 msgid "Created autostash: $stash_abbrev"
 msgstr "Autostash creado: $stash_abbrev"
 
-#: git-rebase.sh:595
+#: git-rebase.sh:641
 msgid "Please commit or stash them."
 msgstr "Por favor, confírmalos o guárdalos."
 
-#: git-rebase.sh:618
+#: git-rebase.sh:664
 #, sh-format
 msgid "HEAD is up to date."
 msgstr "HEAD está actualizado."
 
-#: git-rebase.sh:620
+#: git-rebase.sh:666
 #, sh-format
 msgid "Current branch $branch_name is up to date."
 msgstr "La rama actual $branch_name está actualizada."
 
-#: git-rebase.sh:628
+#: git-rebase.sh:674
 #, sh-format
 msgid "HEAD is up to date, rebase forced."
 msgstr "HEAD está actualizado, rebase forzado."
 
-#: git-rebase.sh:630
+#: git-rebase.sh:676
 #, sh-format
 msgid "Current branch $branch_name is up to date, rebase forced."
 msgstr "Rama actual $branch_name está actualizada, rebase forzado."
 
-#: git-rebase.sh:642
+#: git-rebase.sh:688
 #, sh-format
 msgid "Changes from $mb to $onto:"
 msgstr "Cambios desde $mb a $onto:"
 
-#: git-rebase.sh:651
+#: git-rebase.sh:697
 msgid "First, rewinding head to replay your work on top of it..."
 msgstr ""
 "En primer lugar, rebobinando HEAD para después reproducir tus cambios encima "
 "de ésta..."
 
-#: git-rebase.sh:661
+#: git-rebase.sh:707
 #, sh-format
 msgid "Fast-forwarded $branch_name to $onto_name."
 msgstr "Avance rápido de $branch_name a $onto_name."
@@ -15555,111 +16640,111 @@ msgstr "No se puede guardar el estado actual"
 msgid "Saved working directory and index state $stash_msg"
 msgstr "Directorio de trabajo guardado y estado de índice $stash_msg"
 
-#: git-stash.sh:340
+#: git-stash.sh:342
 msgid "Cannot remove worktree changes"
 msgstr "No se pueden remover cambios del árbol de trabajo"
 
-#: git-stash.sh:488
+#: git-stash.sh:490
 #, sh-format
 msgid "unknown option: $opt"
 msgstr "opción desconocida: $opt"
 
-#: git-stash.sh:501
+#: git-stash.sh:503
 msgid "No stash entries found."
 msgstr "No se encontraron entradas de stash."
 
-#: git-stash.sh:508
+#: git-stash.sh:510
 #, sh-format
 msgid "Too many revisions specified: $REV"
 msgstr "Se especificaron demasiadas revisiones: $REV"
 
-#: git-stash.sh:523
+#: git-stash.sh:525
 #, sh-format
 msgid "$reference is not a valid reference"
 msgstr "$reference no es una referencia válida"
 
-#: git-stash.sh:551
+#: git-stash.sh:553
 #, sh-format
 msgid "'$args' is not a stash-like commit"
 msgstr "'$args' no es un commit estilo stash"
 
-#: git-stash.sh:562
+#: git-stash.sh:564
 #, sh-format
 msgid "'$args' is not a stash reference"
 msgstr "'$args' no es una referencia stash"
 
-#: git-stash.sh:570
+#: git-stash.sh:572
 msgid "unable to refresh index"
 msgstr "incapaz de refrescar el índice"
 
-#: git-stash.sh:574
+#: git-stash.sh:576
 msgid "Cannot apply a stash in the middle of a merge"
 msgstr "No se puede aplicar un stash en medio de una fusión"
 
-#: git-stash.sh:582
+#: git-stash.sh:584
 msgid "Conflicts in index. Try without --index."
 msgstr "Conflictos en índice. Intente sin --index."
 
-#: git-stash.sh:584
+#: git-stash.sh:586
 msgid "Could not save index tree"
 msgstr "No se puede guardar el índice del árbol"
 
-#: git-stash.sh:593
+#: git-stash.sh:595
 msgid "Could not restore untracked files from stash entry"
 msgstr "No se pueden restaurar archivos no rastreados de la entrada stash"
 
-#: git-stash.sh:618
+#: git-stash.sh:620
 msgid "Cannot unstage modified files"
 msgstr "No se puede sacar de stage archivos modificados"
 
-#: git-stash.sh:633
+#: git-stash.sh:635
 msgid "Index was not unstashed."
 msgstr "El índice no fue sacado de stash."
 
-#: git-stash.sh:647
+#: git-stash.sh:649
 msgid "The stash entry is kept in case you need it again."
 msgstr "La entrada de stash se guardó en caso de ser necesario nuevamente."
 
-#: git-stash.sh:656
+#: git-stash.sh:658
 #, sh-format
 msgid "Dropped ${REV} ($s)"
 msgstr "Botado ${REV} ($s)"
 
-#: git-stash.sh:657
+#: git-stash.sh:659
 #, sh-format
 msgid "${REV}: Could not drop stash entry"
 msgstr "${REV}: No se pudo borrar entrada stash"
 
-#: git-stash.sh:665
+#: git-stash.sh:667
 msgid "No branch name specified"
 msgstr "No se especificó el nombre de la rama"
 
-#: git-stash.sh:744
+#: git-stash.sh:746
 msgid "(To restore them type \"git stash apply\")"
 msgstr "(Para restaurarlos, escribe \"git stash apply\")"
 
-#: git-submodule.sh:181
+#: git-submodule.sh:188
 msgid "Relative path can only be used from the toplevel of the working tree"
 msgstr ""
 "La ruta relativa sólo se puede usar desde el nivel superior del árbol de "
 "trabajo"
 
-#: git-submodule.sh:191
+#: git-submodule.sh:198
 #, sh-format
 msgid "repo URL: '$repo' must be absolute or begin with ./|../"
 msgstr "repo URL: '$repo' debe ser absoluta o iniciar con ./|../"
 
-#: git-submodule.sh:210
+#: git-submodule.sh:217
 #, sh-format
 msgid "'$sm_path' already exists in the index"
 msgstr "'$sm_path' ya existe en el índice"
 
-#: git-submodule.sh:213
+#: git-submodule.sh:220
 #, sh-format
 msgid "'$sm_path' already exists in the index and is not a submodule"
 msgstr "'$sm_path' ya existe en el índice y no es un submódulo"
 
-#: git-submodule.sh:219
+#: git-submodule.sh:226
 #, sh-format
 msgid ""
 "The following path is ignored by one of your .gitignore files:\n"
@@ -15670,24 +16755,24 @@ msgstr ""
 "$sm_path\n"
 "Usa -f si en verdad quieres agregarlo."
 
-#: git-submodule.sh:237
+#: git-submodule.sh:249
 #, sh-format
 msgid "Adding existing repo at '$sm_path' to the index"
 msgstr "Agregando el repositorio existente en '$sm_path' al índice"
 
-#: git-submodule.sh:239
+#: git-submodule.sh:251
 #, sh-format
 msgid "'$sm_path' already exists and is not a valid git repo"
 msgstr "'$sm_path' ya existe y no es un repositorio git válido"
 
-#: git-submodule.sh:247
+#: git-submodule.sh:259
 #, sh-format
 msgid "A git directory for '$sm_name' is found locally with remote(s):"
 msgstr ""
 "Se encontró localmente un directorio git para '$sm_name' con el(los) "
 "remoto(s):"
 
-#: git-submodule.sh:249
+#: git-submodule.sh:261
 #, sh-format
 msgid ""
 "If you want to reuse this local git directory instead of cloning again from\n"
@@ -15704,50 +16789,50 @@ msgstr ""
 "o no está seguro de lo que esto significa, escoja otro nombre con la opción "
 "'--name'."
 
-#: git-submodule.sh:255
+#: git-submodule.sh:267
 #, sh-format
 msgid "Reactivating local git directory for submodule '$sm_name'."
 msgstr "Reactivar directorio git local para el submódulo '$sm_name'."
 
-#: git-submodule.sh:267
+#: git-submodule.sh:279
 #, sh-format
 msgid "Unable to checkout submodule '$sm_path'"
 msgstr "No es posible hacer checkout al submódulo '$sm_path'"
 
-#: git-submodule.sh:272
+#: git-submodule.sh:284
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
-msgstr "Fallo al agregar el submódulo '$sm_path'"
+msgstr "Falló al agregar el submódulo '$sm_path'"
 
-#: git-submodule.sh:281
+#: git-submodule.sh:293
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
-msgstr "Fallo al registrar el submódulo '$sm_path'"
+msgstr "Falló al registrar el submódulo '$sm_path'"
 
-#: git-submodule.sh:342
+#: git-submodule.sh:354
 #, sh-format
 msgid "Entering '$displaypath'"
 msgstr "Entrando a '$displaypath'"
 
-#: git-submodule.sh:362
+#: git-submodule.sh:374
 #, sh-format
 msgid "Stopping at '$displaypath'; script returned non-zero status."
 msgstr ""
 "Deteniendo en '$displaypath'; script retornó un status distinto de cero."
 
-#: git-submodule.sh:584
+#: git-submodule.sh:600
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
 msgstr ""
 "No se pudo encontrar la revisión actual en la ruta de submódulo "
 "'$displaypath'"
 
-#: git-submodule.sh:594
+#: git-submodule.sh:610
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr "No es posible realizar fetch en la ruta de submódulo '$sm_path'"
 
-#: git-submodule.sh:599
+#: git-submodule.sh:615
 #, sh-format
 msgid ""
 "Unable to find current ${remote_name}/${branch} revision in submodule path "
@@ -15756,12 +16841,12 @@ msgstr ""
 "No es posible encontrar revisión actual ${remote_name}/${branch} en la ruta "
 "de submódulo  '$sm_path'"
 
-#: git-submodule.sh:617
+#: git-submodule.sh:633
 #, sh-format
 msgid "Unable to fetch in submodule path '$displaypath'"
 msgstr "No es posible realizar fetch en la ruta de submódulo '$displaypath'"
 
-#: git-submodule.sh:623
+#: git-submodule.sh:639
 #, sh-format
 msgid ""
 "Fetched in submodule path '$displaypath', but it did not contain $sha1. "
@@ -15770,75 +16855,75 @@ msgstr ""
 "Fetch realizado en ruta de submódulo '$displaypath', pero no contenía $sha1. "
 "Fetch directo del commit falló."
 
-#: git-submodule.sh:630
+#: git-submodule.sh:646
 #, sh-format
 msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
 msgstr "No es posible revisar '$sha1' en la ruta de submódulo '$displaypath'"
 
-#: git-submodule.sh:631
+#: git-submodule.sh:647
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
 msgstr "Ruta de submódulo '$displaypath': check out realizado a '$sha1'"
 
-#: git-submodule.sh:635
+#: git-submodule.sh:651
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
 msgstr ""
 "No se posible ejecutar rebase a '$sha1' en la ruta de submódulo "
 "'$displaypath'"
 
-#: git-submodule.sh:636
+#: git-submodule.sh:652
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
 msgstr "Ruta de submódulo '$displaypath': rebasada en '$sha1'"
 
-#: git-submodule.sh:641
+#: git-submodule.sh:657
 #, sh-format
 msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
 msgstr "Incapaz de fusionar '$sha1' en la ruta del submódulo '$displaypath'"
 
-#: git-submodule.sh:642
+#: git-submodule.sh:658
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
 msgstr "Ruta de submódulo '$displaypath': fusionada en '$sha1'"
 
-#: git-submodule.sh:647
+#: git-submodule.sh:663
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
 msgstr ""
 "Falló la ejecución  de  '$command $sha1' en la ruta de submódulo "
 "'$displaypath'"
 
-#: git-submodule.sh:648
+#: git-submodule.sh:664
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr "Ruta de submódulo '$displaypath': '$command $sha1'"
 
-#: git-submodule.sh:679
+#: git-submodule.sh:695
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "Falló al recurrir en la ruta de submódulo '$displaypath'"
 
-#: git-submodule.sh:775
+#: git-submodule.sh:791
 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:827
+#: git-submodule.sh:843
 #, sh-format
 msgid "unexpected mode $mod_dst"
 msgstr "modo $mod_dst inesperado"
 
-#: git-submodule.sh:847
+#: git-submodule.sh:863
 #, 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:850
+#: git-submodule.sh:866
 #, 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:853
+#: git-submodule.sh:869
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
 msgstr ""
@@ -15849,39 +16934,52 @@ msgstr ""
 msgid "See git-${cmd}(1) for details."
 msgstr "Véase git-${cmd}(1) para más detalles."
 
-#: git-rebase--interactive.sh:140
+#: git-rebase--interactive.sh:142
 #, sh-format
 msgid "Rebasing ($new_count/$total)"
 msgstr "Rebasando ($new_count/$total)"
 
-#: git-rebase--interactive.sh:156
+#: git-rebase--interactive.sh:158
 msgid ""
 "\n"
 "Commands:\n"
-"p, pick = use commit\n"
-"r, reword = use commit, but edit the commit message\n"
-"e, edit = use commit, but stop for amending\n"
-"s, squash = use commit, but meld into previous commit\n"
-"f, fixup = like \"squash\", but discard this commit's log message\n"
-"x, exec = run command (the rest of the line) using shell\n"
-"d, drop = remove commit\n"
+"p, pick <commit> = use commit\n"
+"r, reword <commit> = use commit, but edit the commit message\n"
+"e, edit <commit> = use commit, but stop for amending\n"
+"s, squash <commit> = use commit, but meld into previous commit\n"
+"f, fixup <commit> = like \"squash\", but discard this commit's log message\n"
+"x, exec <command> = run command (the rest of the line) using shell\n"
+"d, drop <commit> = remove commit\n"
+"l, label <label> = label current HEAD with a name\n"
+"t, reset <label> = reset HEAD to a label\n"
+"m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]\n"
+".       create a merge commit using the original merge commit's\n"
+".       message (or the oneline, if no original merge commit was\n"
+".       specified). Use -c <commit> to reword the commit message.\n"
 "\n"
 "These lines can be re-ordered; they are executed from top to bottom.\n"
 msgstr ""
 "\n"
 "Comandos:\n"
-" p, pick = usar commit\n"
-" r, reword = usar commit, pero editar el mensaje\n"
-" e, edit = usar commit, pero detener para enmendar\n"
-" s, squash = usar commit, pero unirlo al commit previo\n"
-" f, fixup = como \"squash\", pero descartar el mensaje del commit en el log\n"
-" x, exec = ejecutar comando (el resto de la línea) usando un shell\n"
-" d, drop = borrar commit\n"
+"p, pick <commit> = usar commit\n"
+"r, reword <commit> = usar commit, pero editar el mensaje de commit\n"
+"e, edit <commit> = usar commit, pero parar para un amend\n"
+"s, squash <commit> = usar commit, pero fusionarlo en el commit previo\n"
+"f, fixup <commit> = como \"squash\", pero descarta el mensaje del log de "
+"este commit\n"
+"x, exec <commit> = ejecuta comando ( el resto de la línea) usando un shell\n"
+"d, drop <commit> = remover commit\n"
+"l, label <label> = poner label al HEAD actual con un nombre\n"
+"t, reset <label> = reiniciar HEAD a el label\n"
+"m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]\n"
+".       crea un commit de fusión usando el mensaje original de\n"
+".       fusión (o la línea de oneline, si no se especifica un mensaje\n"
+".       de commit). Use -c <commit> para reescribir el mensaje del commit.\n"
 "\n"
-"Estas líneas pueden ser re-ordenadas; son ejecutadas desde arriba hacia "
+"Estas líneas pueden ser reordenadas; son ejecutadas desde arriba hacia "
 "abajo.\n"
 
-#: git-rebase--interactive.sh:171
+#: git-rebase--interactive.sh:179
 msgid ""
 "\n"
 "Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
@@ -15889,7 +16987,7 @@ msgstr ""
 "\n"
 "No eliminar ninguna línea. Usa 'drop' explícitamente para borrar un commit \n"
 
-#: git-rebase--interactive.sh:175
+#: git-rebase--interactive.sh:183
 msgid ""
 "\n"
 "If you remove a line here THAT COMMIT WILL BE LOST.\n"
@@ -15897,7 +16995,7 @@ msgstr ""
 "\n"
 "Si remueves una línea aquí EL COMMIT SE PERDERÁ.\n"
 
-#: git-rebase--interactive.sh:213
+#: git-rebase--interactive.sh:221
 #, sh-format
 msgid ""
 "You can amend the commit now, with\n"
@@ -15916,83 +17014,83 @@ msgstr ""
 "\n"
 "\tgit rebase --continue"
 
-#: git-rebase--interactive.sh:238
+#: git-rebase--interactive.sh:246
 #, sh-format
 msgid "$sha1: not a commit that can be picked"
 msgstr "$sha1: no es un commit que pueda ser cogido"
 
-#: git-rebase--interactive.sh:277
+#: git-rebase--interactive.sh:285
 #, sh-format
 msgid "Invalid commit name: $sha1"
 msgstr "Nombre de commit inválido: $sha1"
 
-#: git-rebase--interactive.sh:319
+#: git-rebase--interactive.sh:325
 msgid "Cannot write current commit's replacement sha1"
 msgstr "No se puede escribir el remplazo sha1 del commit actual"
 
-#: git-rebase--interactive.sh:371
+#: git-rebase--interactive.sh:376
 #, sh-format
 msgid "Fast-forward to $sha1"
 msgstr "Avance rápido a $sha1"
 
-#: git-rebase--interactive.sh:373
+#: git-rebase--interactive.sh:378
 #, sh-format
 msgid "Cannot fast-forward to $sha1"
 msgstr "No se puede realizar avance rápido a $sha1"
 
-#: git-rebase--interactive.sh:382
+#: git-rebase--interactive.sh:387
 #, sh-format
 msgid "Cannot move HEAD to $first_parent"
 msgstr "No se puede mover HEAD a $first_parent"
 
-#: git-rebase--interactive.sh:387
+#: git-rebase--interactive.sh:392
 #, sh-format
 msgid "Refusing to squash a merge: $sha1"
 msgstr "Rehusando a ejecutar squash en fusión: $sha1"
 
-#: git-rebase--interactive.sh:405
+#: git-rebase--interactive.sh:410
 #, sh-format
 msgid "Error redoing merge $sha1"
 msgstr "Error rehaciendo fusión $sha1"
 
-#: git-rebase--interactive.sh:414
+#: git-rebase--interactive.sh:419
 #, sh-format
 msgid "Could not pick $sha1"
 msgstr "No se pudo coger $sha1"
 
-#: git-rebase--interactive.sh:423
+#: git-rebase--interactive.sh:428
 #, sh-format
 msgid "This is the commit message #${n}:"
 msgstr "Este es el mensaje del commit #${n}:"
 
-#: git-rebase--interactive.sh:428
+#: git-rebase--interactive.sh:433
 #, sh-format
 msgid "The commit message #${n} will be skipped:"
 msgstr "El mensaje del commit  #${n} será ignorado:"
 
-#: git-rebase--interactive.sh:439
+#: git-rebase--interactive.sh:444
 #, sh-format
 msgid "This is a combination of $count commit."
 msgid_plural "This is a combination of $count commits."
 msgstr[0] "Esta es una combinación de $count commit."
 msgstr[1] "Esta es la combinación de $count commits."
 
-#: git-rebase--interactive.sh:448
+#: git-rebase--interactive.sh:453
 #, sh-format
 msgid "Cannot write $fixup_msg"
 msgstr "No se puede escribir $fixup_msg"
 
-#: git-rebase--interactive.sh:451
+#: git-rebase--interactive.sh:456
 msgid "This is a combination of 2 commits."
 msgstr "Esto es una combinación de 2 commits."
 
-#: git-rebase--interactive.sh:492 git-rebase--interactive.sh:535
-#: git-rebase--interactive.sh:538
+#: git-rebase--interactive.sh:497 git-rebase--interactive.sh:540
+#: git-rebase--interactive.sh:543
 #, sh-format
 msgid "Could not apply $sha1... $rest"
 msgstr "No se puede aplicar $sha1... $rest"
 
-#: git-rebase--interactive.sh:567
+#: git-rebase--interactive.sh:572
 #, sh-format
 msgid ""
 "Could not amend commit after successfully picking $sha1... $rest\n"
@@ -16009,31 +17107,31 @@ msgstr ""
 "problema antes\n"
 "de que sea capaz de reformular el commit."
 
-#: git-rebase--interactive.sh:582
+#: git-rebase--interactive.sh:587
 #, sh-format
 msgid "Stopped at $sha1_abbrev... $rest"
 msgstr "Detenido en $sha1_abbrev... $rest"
 
-#: git-rebase--interactive.sh:597
+#: git-rebase--interactive.sh:602
 #, sh-format
 msgid "Cannot '$squash_style' without a previous commit"
 msgstr "No se puede '$squash_style' sin un commit previo"
 
-#: git-rebase--interactive.sh:639
+#: git-rebase--interactive.sh:644
 #, sh-format
 msgid "Executing: $rest"
 msgstr "Ejecutando: $rest"
 
-#: git-rebase--interactive.sh:647
+#: git-rebase--interactive.sh:652
 #, sh-format
 msgid "Execution failed: $rest"
 msgstr "Ejecución fallida: $rest"
 
-#: git-rebase--interactive.sh:649
+#: git-rebase--interactive.sh:654
 msgid "and made changes to the index and/or the working tree"
 msgstr "y hizo cambios al índice y/o al árbol de trabajo"
 
-#: git-rebase--interactive.sh:651
+#: git-rebase--interactive.sh:656
 msgid ""
 "You can fix the problem, and then run\n"
 "\n"
@@ -16044,7 +17142,7 @@ msgstr ""
 "\tgit rebase --continue"
 
 #. TRANSLATORS: after these lines is a command to be issued by the user
-#: git-rebase--interactive.sh:664
+#: git-rebase--interactive.sh:669
 #, sh-format
 msgid ""
 "Execution succeeded: $rest\n"
@@ -16059,29 +17157,29 @@ msgstr ""
 "\n"
 "\tgit rebase --continue"
 
-#: git-rebase--interactive.sh:675
+#: git-rebase--interactive.sh:680
 #, sh-format
 msgid "Unknown command: $command $sha1 $rest"
 msgstr "Comando desconocido: $command $sha1 $rest"
 
-#: git-rebase--interactive.sh:676
+#: git-rebase--interactive.sh:681
 msgid "Please fix this using 'git rebase --edit-todo'."
 msgstr "Por favor, corrige esto usando 'git rebase --edit-todo'."
 
-#: git-rebase--interactive.sh:711
+#: git-rebase--interactive.sh:716
 #, sh-format
 msgid "Successfully rebased and updated $head_name."
 msgstr "$head_name rebasado y actualizado satisfactoriamente."
 
-#: git-rebase--interactive.sh:735
+#: git-rebase--interactive.sh:740
 msgid "could not detach HEAD"
 msgstr "no se puede desacoplar HEAD"
 
-#: git-rebase--interactive.sh:771
+#: git-rebase--interactive.sh:778
 msgid "Could not remove CHERRY_PICK_HEAD"
 msgstr "No se pudo remover CHERRY_PICK_HEAD"
 
-#: git-rebase--interactive.sh:776
+#: git-rebase--interactive.sh:783
 #, sh-format
 msgid ""
 "You have staged changes in your working tree.\n"
@@ -16112,12 +17210,12 @@ msgstr ""
 "\n"
 "  git rebase --continue\n"
 
-#: git-rebase--interactive.sh:793
+#: git-rebase--interactive.sh:800
 msgid "Error trying to find the author identity to amend commit"
 msgstr ""
 "Error tratando de encontrar la identidad del autor para remediar el commit"
 
-#: git-rebase--interactive.sh:798
+#: git-rebase--interactive.sh:805
 msgid ""
 "You have uncommitted changes in your working tree. Please commit them\n"
 "first and then run 'git rebase --continue' again."
@@ -16125,11 +17223,11 @@ msgstr ""
 "Tienes cambios sin confirmar en tu árbol de trabajo. Por favor, confírmalos\n"
 "primero y entonces ejecuta 'git rebase --continue' de nuevo."
 
-#: git-rebase--interactive.sh:803 git-rebase--interactive.sh:807
+#: git-rebase--interactive.sh:810 git-rebase--interactive.sh:814
 msgid "Could not commit staged changes."
 msgstr "No se pudo realizar el commit con los cambios en el área de stage."
 
-#: git-rebase--interactive.sh:836
+#: git-rebase--interactive.sh:843
 msgid ""
 "\n"
 "You are editing the todo file of an ongoing interactive rebase.\n"
@@ -16143,57 +17241,59 @@ msgstr ""
 "    git rebase --continue\n"
 "\n"
 
-#: git-rebase--interactive.sh:844 git-rebase--interactive.sh:1008
+#: git-rebase--interactive.sh:851 git-rebase--interactive.sh:937
 msgid "Could not execute editor"
 msgstr "No se pudo ejecutar el editor"
 
-#: git-rebase--interactive.sh:860
+#: git-rebase--interactive.sh:872
 #, sh-format
 msgid "Could not checkout $switch_to"
 msgstr "No se pudo actualizar el árbol de trabajo a $switch_to"
 
-#: git-rebase--interactive.sh:865
+#: git-rebase--interactive.sh:879
 msgid "No HEAD?"
 msgstr "¿Sin HEAD?"
 
-#: git-rebase--interactive.sh:866
+#: git-rebase--interactive.sh:880
 #, sh-format
 msgid "Could not create temporary $state_dir"
 msgstr "No se pudo crear $state_dir temporalmente"
 
-#: git-rebase--interactive.sh:869
+#: git-rebase--interactive.sh:883
 msgid "Could not mark as interactive"
 msgstr "No se pudo marcar como interactivo"
 
-#: git-rebase--interactive.sh:879 git-rebase--interactive.sh:884
-msgid "Could not init rewritten commits"
-msgstr "No se puede inicializar los commits reescritos"
-
-#: git-rebase--interactive.sh:910
-msgid "Could not generate todo list"
-msgstr "No se pudo generar lista de pendientes"
-
-#: git-rebase--interactive.sh:986
+#: git-rebase--interactive.sh:915
 #, sh-format
 msgid "Rebase $shortrevisions onto $shortonto ($todocount command)"
 msgid_plural "Rebase $shortrevisions onto $shortonto ($todocount commands)"
 msgstr[0] "Rebase $shortrevisions en $shortonto ($todocount comando)"
 msgstr[1] "Rebase $shortrevisions en $shortonto ($todocount comandos)"
 
-#: git-rebase--interactive.sh:991
+#: git-rebase--interactive.sh:920
 msgid ""
 "\n"
-"However, if you remove everything, the rebase will be aborted.\n"
+"\tHowever, if you remove everything, the rebase will be aborted.\n"
 "\n"
+"\t"
 msgstr ""
 "\n"
-"Como sea, si se remueve todo, el rebase sera abortado.\n"
+"\tComo sea, si quieres borrar todo, el rebase será abortado.\n"
 "\n"
+"\t"
 
-#: git-rebase--interactive.sh:998
+#: git-rebase--interactive.sh:927
 msgid "Note that empty commits are commented out"
 msgstr "Tenga en cuenta que los commits vacíos están comentados"
 
+#: git-rebase--interactive.sh:980
+msgid "Could not generate todo list"
+msgstr "No se pudo generar lista de pendientes"
+
+#: git-rebase--interactive.sh:1001 git-rebase--interactive.sh:1006
+msgid "Could not init rewritten commits"
+msgstr "No se puede inicializar los commits reescritos"
+
 #: git-sh-setup.sh:89 git-sh-setup.sh:94
 #, sh-format
 msgid "usage: $dashless $USAGE"
@@ -16277,68 +17377,68 @@ msgstr "rastreado"
 msgid "unstaged"
 msgstr "no rastreado"
 
-#: git-add--interactive.perl:246 git-add--interactive.perl:271
+#: git-add--interactive.perl:253 git-add--interactive.perl:278
 msgid "binary"
 msgstr "binario"
 
-#: git-add--interactive.perl:255 git-add--interactive.perl:309
+#: git-add--interactive.perl:262 git-add--interactive.perl:316
 msgid "nothing"
 msgstr "nada"
 
-#: git-add--interactive.perl:291 git-add--interactive.perl:306
+#: git-add--interactive.perl:298 git-add--interactive.perl:313
 msgid "unchanged"
 msgstr "sin cambios"
 
-#: git-add--interactive.perl:602
+#: git-add--interactive.perl:609
 #, perl-format
 msgid "added %d path\n"
 msgid_plural "added %d paths\n"
 msgstr[0] "agregada %d ruta\n"
 msgstr[1] "agregadas %d rutas\n"
 
-#: git-add--interactive.perl:605
+#: git-add--interactive.perl:612
 #, perl-format
 msgid "updated %d path\n"
 msgid_plural "updated %d paths\n"
 msgstr[0] "actualizada %d ruta\n"
 msgstr[1] "actualizadas %d rutas\n"
 
-#: git-add--interactive.perl:608
+#: git-add--interactive.perl:615
 #, perl-format
 msgid "reverted %d path\n"
 msgid_plural "reverted %d paths\n"
 msgstr[0] "revertida %d ruta\n"
 msgstr[1] "revertidas %d rutas\n"
 
-#: git-add--interactive.perl:611
+#: git-add--interactive.perl:618
 #, perl-format
 msgid "touched %d path\n"
 msgid_plural "touched %d paths\n"
 msgstr[0] "touch hecho a %d ruta\n"
 msgstr[1] "touch hecho a %d rutas\n"
 
-#: git-add--interactive.perl:620
+#: git-add--interactive.perl:627
 msgid "Update"
 msgstr "Actualizar"
 
-#: git-add--interactive.perl:632
+#: git-add--interactive.perl:639
 msgid "Revert"
 msgstr "Revertir"
 
-#: git-add--interactive.perl:655
+#: git-add--interactive.perl:662
 #, perl-format
 msgid "note: %s is untracked now.\n"
 msgstr "nota: %s no es rastreado ahora.\n"
 
-#: git-add--interactive.perl:666
+#: git-add--interactive.perl:673
 msgid "Add untracked"
 msgstr "Agregar no rastreados"
 
-#: git-add--interactive.perl:672
+#: git-add--interactive.perl:679
 msgid "No untracked files.\n"
 msgstr "No hay archivos sin rastrear.\n"
 
-#: git-add--interactive.perl:1026
+#: git-add--interactive.perl:1033
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
@@ -16346,7 +17446,7 @@ msgstr ""
 "Si el parche aplica limpiamente, el hunk editado sera marcado\n"
 "inmediatamente para el área de stage."
 
-#: git-add--interactive.perl:1029
+#: git-add--interactive.perl:1036
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
@@ -16354,7 +17454,7 @@ msgstr ""
 "Si el parche aplica limpiamente, el hunk editado sera marcado\n"
 "inmediatamente para aplicar stash."
 
-#: git-add--interactive.perl:1032
+#: git-add--interactive.perl:1039
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
@@ -16362,7 +17462,7 @@ msgstr ""
 "Si el parche aplica limpiamente, el hunk editado sera marcado\n"
 "inmediatamente para sacar del área de stage."
 
-#: git-add--interactive.perl:1035 git-add--interactive.perl:1044
+#: git-add--interactive.perl:1042 git-add--interactive.perl:1051
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
@@ -16370,7 +17470,7 @@ msgstr ""
 "Si el parche aplica de forma limpia, el hunk editado sera marcado \n"
 "inmediatamente para aplicar."
 
-#: git-add--interactive.perl:1038 git-add--interactive.perl:1041
+#: git-add--interactive.perl:1045 git-add--interactive.perl:1048
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
@@ -16378,16 +17478,16 @@ msgstr ""
 "Si el parche aplica de forma limpia, el hunk editado sera marcado\n"
 "inmediatamente para descarte."
 
-#: git-add--interactive.perl:1078
+#: git-add--interactive.perl:1085
 #, perl-format
 msgid "failed to open hunk edit file for writing: %s"
-msgstr "fallo al abrir el archivo de adición del hunk para escritura: %s"
+msgstr "falló al abrir el archivo de adición del hunk para escritura: %s"
 
-#: git-add--interactive.perl:1079
+#: git-add--interactive.perl:1086
 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"
 
-#: git-add--interactive.perl:1085
+#: git-add--interactive.perl:1092
 #, perl-format
 msgid ""
 "---\n"
@@ -16401,7 +17501,7 @@ msgstr ""
 "Lineas comenzando con  %s serán removidas.\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: git-add--interactive.perl:1093
+#: git-add--interactive.perl:1100
 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"
@@ -16411,10 +17511,10 @@ msgstr ""
 "editar nuevamente. Si todas las líneas del hunk son removidas, entonces \n"
 "la edición es abortada y el hunk queda sin cambios.\n"
 
-#: git-add--interactive.perl:1107
+#: git-add--interactive.perl:1114
 #, perl-format
 msgid "failed to open hunk edit file for reading: %s"
-msgstr "fallo al abrir el archivo de edición del hunk para lectura: %s"
+msgstr "falló al abrir el archivo de edición del hunk para lectura: %s"
 
 #. TRANSLATORS: do not translate [y/n]
 #. The program will only accept that input
@@ -16422,13 +17522,13 @@ msgstr "fallo al abrir el archivo de edición del hunk para lectura: %s"
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: git-add--interactive.perl:1206
+#: git-add--interactive.perl:1213
 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]? "
 
-#: git-add--interactive.perl:1215
+#: git-add--interactive.perl:1222
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -16443,7 +17543,7 @@ msgstr ""
 "d - no aplicar stage a este hunk o a ninguno de los posteriores en este "
 "archivo"
 
-#: git-add--interactive.perl:1221
+#: git-add--interactive.perl:1228
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -16457,7 +17557,7 @@ msgstr ""
 "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:1227
+#: git-add--interactive.perl:1234
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -16472,7 +17572,7 @@ msgstr ""
 "d - no sacar del area de stage este hunk o ninguno de los posteriores en el "
 "archivo"
 
-#: git-add--interactive.perl:1233
+#: git-add--interactive.perl:1240
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -16486,7 +17586,7 @@ msgstr ""
 "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:1239
+#: git-add--interactive.perl:1246
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -16500,7 +17600,7 @@ msgstr ""
 "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:1245
+#: git-add--interactive.perl:1252
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -16514,7 +17614,7 @@ msgstr ""
 "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:1251
+#: git-add--interactive.perl:1258
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -16528,7 +17628,7 @@ msgstr ""
 "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:1266
+#: git-add--interactive.perl:1273
 msgid ""
 "g - select a hunk to go to\n"
 "/ - search for a hunk matching the given regex\n"
@@ -16550,213 +17650,213 @@ msgstr ""
 "e - editar manualmente el hunk actual\n"
 "? - imprimir ayuda\n"
 
-#: git-add--interactive.perl:1297
+#: git-add--interactive.perl:1304
 msgid "The selected hunks do not apply to the index!\n"
 msgstr "Los hunks seleccionados no aplican al índice!\n"
 
-#: git-add--interactive.perl:1298
+#: git-add--interactive.perl:1305
 msgid "Apply them to the worktree anyway? "
 msgstr "Aplicarlos al árbol de trabajo de todas maneras? "
 
-#: git-add--interactive.perl:1301
+#: git-add--interactive.perl:1308
 msgid "Nothing was applied.\n"
 msgstr "Nada fue aplicado.\n"
 
-#: git-add--interactive.perl:1312
+#: git-add--interactive.perl:1319
 #, perl-format
 msgid "ignoring unmerged: %s\n"
 msgstr "ignorando lo no fusionado: %s\n"
 
-#: git-add--interactive.perl:1321
+#: git-add--interactive.perl:1328
 msgid "Only binary files changed.\n"
 msgstr "Solo cambiaron archivos binarios.\n"
 
-#: git-add--interactive.perl:1323
+#: git-add--interactive.perl:1330
 msgid "No changes.\n"
 msgstr "Sin cambios.\n"
 
-#: git-add--interactive.perl:1331
+#: git-add--interactive.perl:1338
 msgid "Patch update"
 msgstr "Actualización del parche"
 
-#: git-add--interactive.perl:1383
+#: git-add--interactive.perl:1390
 #, perl-format
 msgid "Stage mode change [y,n,q,a,d%s,?]? "
 msgstr "Cambio de modo de stage [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1384
+#: git-add--interactive.perl:1391
 #, perl-format
 msgid "Stage deletion [y,n,q,a,d%s,?]? "
 msgstr "Aplicar stage al borrado [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1385
+#: git-add--interactive.perl:1392
 #, perl-format
 msgid "Stage this hunk [y,n,q,a,d%s,?]? "
 msgstr "Aplicar stage a este hunk [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1388
+#: git-add--interactive.perl:1395
 #, 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,?]? "
 
-#: git-add--interactive.perl:1389
+#: git-add--interactive.perl:1396
 #, perl-format
 msgid "Stash deletion [y,n,q,a,d%s,?]? "
 msgstr "Aplicar stash al borrado [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1390
+#: git-add--interactive.perl:1397
 #, perl-format
 msgid "Stash this hunk [y,n,q,a,d%s,?]? "
 msgstr "Aplicar stash a este hunk [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1393
+#: git-add--interactive.perl:1400
 #, 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,?]? "
 
-#: git-add--interactive.perl:1394
+#: git-add--interactive.perl:1401
 #, perl-format
 msgid "Unstage deletion [y,n,q,a,d%s,?]? "
 msgstr "Sacar borrado del stage [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1395
+#: git-add--interactive.perl:1402
 #, perl-format
 msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
 msgstr "Sacar este hunk del stage [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1398
+#: git-add--interactive.perl:1405
 #, 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,?]? "
 
-#: git-add--interactive.perl:1399
+#: git-add--interactive.perl:1406
 #, perl-format
 msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
 msgstr "Aplicar borrado al índice [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1400
+#: git-add--interactive.perl:1407
 #, 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,?]? "
 
-#: git-add--interactive.perl:1403
+#: git-add--interactive.perl:1410
 #, 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,?]? "
 
-#: git-add--interactive.perl:1404
+#: git-add--interactive.perl:1411
 #, 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,?]? "
 
-#: git-add--interactive.perl:1405
+#: git-add--interactive.perl:1412
 #, 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,?]? "
 
-#: git-add--interactive.perl:1408
+#: git-add--interactive.perl:1415
 #, 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,?]? "
 
-#: git-add--interactive.perl:1409
+#: git-add--interactive.perl:1416
 #, 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,?]? "
 
-#: git-add--interactive.perl:1410
+#: git-add--interactive.perl:1417
 #, 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,?]? "
 
-#: git-add--interactive.perl:1413
+#: git-add--interactive.perl:1420
 #, 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,?]? "
 
-#: git-add--interactive.perl:1414
+#: git-add--interactive.perl:1421
 #, 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,?]? "
 
-#: git-add--interactive.perl:1415
+#: git-add--interactive.perl:1422
 #, 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,?]? "
 
-#: git-add--interactive.perl:1515
+#: git-add--interactive.perl:1522
 msgid "No other hunks to goto\n"
 msgstr "No hay más pedazos para el ir\n"
 
-#: git-add--interactive.perl:1522
+#: git-add--interactive.perl:1529
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "a que hunk ir (<enter> para ver mas)? "
 
-#: git-add--interactive.perl:1524
+#: git-add--interactive.perl:1531
 msgid "go to which hunk? "
 msgstr "a que hunk ir? "
 
-#: git-add--interactive.perl:1533
+#: git-add--interactive.perl:1540
 #, perl-format
 msgid "Invalid number: '%s'\n"
 msgstr "Numero invalido: '%s'\n"
 
-#: git-add--interactive.perl:1538
+#: git-add--interactive.perl:1545
 #, 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:1564
+#: git-add--interactive.perl:1571
 msgid "No other hunks to search\n"
 msgstr "No hay más pedazos para buscar\n"
 
-#: git-add--interactive.perl:1568
+#: git-add--interactive.perl:1575
 msgid "search for regex? "
 msgstr "buscar para regexp? "
 
-#: git-add--interactive.perl:1581
+#: git-add--interactive.perl:1588
 #, perl-format
 msgid "Malformed search regexp %s: %s\n"
 msgstr "Regexp para la búsqueda mal formado %s: %s\n"
 
-#: git-add--interactive.perl:1591
+#: git-add--interactive.perl:1598
 msgid "No hunk matches the given pattern\n"
 msgstr "No hay hunks que concuerden con el patrón entregado.\n"
 
-#: git-add--interactive.perl:1603 git-add--interactive.perl:1625
+#: git-add--interactive.perl:1610 git-add--interactive.perl:1632
 msgid "No previous hunk\n"
 msgstr "No el anterior hunk\n"
 
-#: git-add--interactive.perl:1612 git-add--interactive.perl:1631
+#: git-add--interactive.perl:1619 git-add--interactive.perl:1638
 msgid "No next hunk\n"
 msgstr "No el siguiente hunk\n"
 
-#: git-add--interactive.perl:1637
+#: git-add--interactive.perl:1644
 msgid "Sorry, cannot split this hunk\n"
 msgstr "Perdón, no se puede dividir este pedazo\n"
 
-#: git-add--interactive.perl:1643
+#: git-add--interactive.perl:1650
 #, 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:1653
+#: git-add--interactive.perl:1660
 msgid "Sorry, cannot edit this hunk\n"
 msgstr "Perdón, no se puede editar este pedazo\n"
 
-#: git-add--interactive.perl:1699
+#: git-add--interactive.perl:1706
 msgid "Review diff"
 msgstr "Revisión de  diff"
 
 #. TRANSLATORS: please do not translate the command names
 #. 'status', 'update', 'revert', etc.
-#: git-add--interactive.perl:1718
+#: git-add--interactive.perl:1725
 msgid ""
 "status        - show paths with changes\n"
 "update        - add working tree state to the staged set of changes\n"
@@ -16776,18 +17876,18 @@ msgstr ""
 "add untracked - agrega contenidos de archivos no rastreados al grupo de "
 "cambios del area de stage\n"
 
-#: git-add--interactive.perl:1735 git-add--interactive.perl:1740
-#: git-add--interactive.perl:1743 git-add--interactive.perl:1750
-#: git-add--interactive.perl:1754 git-add--interactive.perl:1760
+#: git-add--interactive.perl:1742 git-add--interactive.perl:1747
+#: git-add--interactive.perl:1750 git-add--interactive.perl:1757
+#: git-add--interactive.perl:1761 git-add--interactive.perl:1767
 msgid "missing --"
 msgstr "falta --"
 
-#: git-add--interactive.perl:1756
+#: git-add--interactive.perl:1763
 #, perl-format
 msgid "unknown --patch mode: %s"
 msgstr "modo --patch desconocido: %s"
 
-#: git-add--interactive.perl:1762 git-add--interactive.perl:1768
+#: git-add--interactive.perl:1769 git-add--interactive.perl:1775
 #, perl-format
 msgid "invalid argument %s, expecting --"
 msgstr "argumento invalido %s, se esperaba --"
@@ -16880,7 +17980,7 @@ msgstr ""
 #: git-send-email.perl:625
 #, perl-format
 msgid "Failed to opendir %s: %s"
-msgstr "Fallo al abrir directorio %s: %s"
+msgstr "Falló al abrir directorio %s: %s"
 
 #: git-send-email.perl:649
 #, perl-format
@@ -16909,7 +18009,7 @@ msgstr "No hay línea de subject en %s?"
 #: git-send-email.perl:683
 #, perl-format
 msgid "Failed to open for writing %s: %s"
-msgstr "Fallo al abrir para escritura %s: %s"
+msgstr "Falló al abrir para escritura %s: %s"
 
 #: git-send-email.perl:694
 msgid ""
@@ -16928,12 +18028,12 @@ msgstr ""
 #: git-send-email.perl:718
 #, perl-format
 msgid "Failed to open %s: %s"
-msgstr "Fallo al abrir %s: %s"
+msgstr "Falló al abrir %s: %s"
 
 #: git-send-email.perl:735
 #, perl-format
 msgid "Failed to open %s.final: %s"
-msgstr "Fallo al abrir %s.final: %s"
+msgstr "Falló al abrir %s.final: %s"
 
 #: git-send-email.perl:778
 msgid "Summary email is empty, skipping it\n"
@@ -17002,7 +18102,7 @@ msgstr "Que hacer con esta dirección? ([q]salir|[d]botar|[e]ditar): "
 msgid "CA path \"%s\" does not exist"
 msgstr "Ruta CA \"%s\" no existe"
 
-#: git-send-email.perl:1395
+#: git-send-email.perl:1400
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -17027,137 +18127,167 @@ msgstr ""
 "    ejecuta 'git config --global sendemail.confirm auto'.\n"
 "\n"
 
-#. TRANSLATORS: Make sure to include [y] [n] [q] [a] in your
+#. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1410
-msgid "Send this email? ([y]es|[n]o|[q]uit|[a]ll): "
-msgstr "Mandar este email? ([y]si||[n]o|[q]salir|[a]todo): "
+#: git-send-email.perl:1415
+msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
+msgstr "Mandar este email? ([y]si||[n]o|[e]editar|[q]salir|[a]todo): "
 
-#: git-send-email.perl:1413
+#: git-send-email.perl:1418
 msgid "Send this email reply required"
 msgstr "Necesitas mandar esta respuesta de email"
 
-#: git-send-email.perl:1439
+#: git-send-email.perl:1446
 msgid "The required SMTP server is not properly defined."
 msgstr "El servidor SMTP no esta definido adecuadamente."
 
-#: git-send-email.perl:1486
+#: git-send-email.perl:1493
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
 msgstr "Servidor no soporta STARTTLS! %s"
 
-#: git-send-email.perl:1491 git-send-email.perl:1495
+#: git-send-email.perl:1498 git-send-email.perl:1502
 #, perl-format
 msgid "STARTTLS failed! %s"
 msgstr "Falló STARTTLS! %s"
 
-#: git-send-email.perl:1505
+#: git-send-email.perl:1512
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
 msgstr ""
 "No es posible inicializar SMTP adecuadamente. Verificar config y usar ---"
 "smtp-debug."
 
-#: git-send-email.perl:1523
+#: git-send-email.perl:1530
 #, perl-format
 msgid "Failed to send %s\n"
-msgstr "Fallo al enviar %s\n"
+msgstr "Falló al enviar %s\n"
 
-#: git-send-email.perl:1526
+#: git-send-email.perl:1533
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr "Dry-Sent %s\n"
 
-#: git-send-email.perl:1526
+#: git-send-email.perl:1533
 #, perl-format
 msgid "Sent %s\n"
 msgstr "Enviado %s\n"
 
-#: git-send-email.perl:1528
+#: git-send-email.perl:1535
 msgid "Dry-OK. Log says:\n"
 msgstr "Dry-OK. Log dice:\n"
 
-#: git-send-email.perl:1528
+#: git-send-email.perl:1535
 msgid "OK. Log says:\n"
 msgstr "OK. Log dice:\n"
 
-#: git-send-email.perl:1540
+#: git-send-email.perl:1547
 msgid "Result: "
 msgstr "Resultado: "
 
-#: git-send-email.perl:1543
+#: git-send-email.perl:1550
 msgid "Result: OK\n"
 msgstr "Resultado: OK\n"
 
-#: git-send-email.perl:1556
+#: git-send-email.perl:1568
 #, perl-format
 msgid "can't open file %s"
 msgstr "no se puede abrir el archivo %s"
 
-#: git-send-email.perl:1603 git-send-email.perl:1623
+#: git-send-email.perl:1615 git-send-email.perl:1635
 #, perl-format
 msgid "(mbox) Adding cc: %s from line '%s'\n"
 msgstr "(mbox) Agregando cc: %s de línea '%s'\n"
 
-#: git-send-email.perl:1609
+#: git-send-email.perl:1621
 #, perl-format
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) Agregando para: %s de la línea '%s'\n"
 
-#: git-send-email.perl:1657
+#: git-send-email.perl:1674
 #, 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:1682
+#: git-send-email.perl:1699
 #, 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:1788
+#: git-send-email.perl:1817
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) no se pudo ejecutar '%s'"
 
-#: git-send-email.perl:1795
+#: git-send-email.perl:1824
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) Agregando %s: %s de: '%s'\n"
 
-#: git-send-email.perl:1799
+#: git-send-email.perl:1828
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
-msgstr "(%s) fallo al cerrar el pipe para '%s'"
+msgstr "(%s) falló al cerrar el pipe para '%s'"
 
-#: git-send-email.perl:1826
+#: git-send-email.perl:1855
 msgid "cannot send message as 7bit"
 msgstr "no se puede mandar mensaje como 7bit"
 
-#: git-send-email.perl:1834
+#: git-send-email.perl:1863
 msgid "invalid transfer encoding"
 msgstr "codificación de transferencia invalida"
 
-#: git-send-email.perl:1872 git-send-email.perl:1923 git-send-email.perl:1933
+#: git-send-email.perl:1901 git-send-email.perl:1952 git-send-email.perl:1962
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "no es posible abrir %s: %s\n"
 
-#: git-send-email.perl:1875
+#: git-send-email.perl:1904
 #, perl-format
 msgid "%s: patch contains a line longer than 998 characters"
 msgstr "%s: el parche contiene una línea con mas de 998 caracteres"
 
-#: git-send-email.perl:1891
+#: git-send-email.perl:1920
 #, 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:1895
+#: git-send-email.perl:1924
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "Realmente deseas mandar %s?[y|N]: "
 
+#~ msgid "Everyday Git With 20 Commands Or So"
+#~ msgstr "Git diario con 20 comandos o algo así"
+
+#~ msgid "Could not open '%s' for writing"
+#~ msgstr "No se pudo abrir '%s' para escritura"
+
+#~ msgid ""
+#~ "unexpected 1st line of squash message:\n"
+#~ "\n"
+#~ "\t%.*s"
+#~ msgstr ""
+#~ "1ra línea del mensaje squash no esperada:\n"
+#~ "\n"
+#~ "\t%.*s"
+
+#~ msgid ""
+#~ "invalid 1st line of squash message:\n"
+#~ "\n"
+#~ "\t%.*s"
+#~ msgstr ""
+#~ "1ra línea del mensaje squash inválida:\n"
+#~ "\n"
+#~ "\t%.*s"
+
+#~ msgid "BUG: returned path string doesn't match cwd?"
+#~ msgstr "BUG: string de ruta recibido no concuerda con cwd?"
+
+#~ msgid "Error in object"
+#~ msgstr "Error en el objeto"
+
 #~ msgid "git fetch-pack: expected ACK/NAK, got EOF"
 #~ msgstr "git getch-pack: se esperaba ACK/NAK, se obtuvo EOF"
 
index d45ee87b0c7ecb7b899552cd48b7faa4ee92d66f..2bae7536042ed949fb5ae83b4a7679597c2888ac 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -74,8 +74,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2018-03-16 07:29+0800\n"
-"PO-Revision-Date: 2018-03-23 23:03+0100\n"
+"POT-Creation-Date: 2018-06-16 22:06+0800\n"
+"PO-Revision-Date: 2018-06-16 20:42+0200\n"
 "Last-Translator: Jean-Noël Avila <jn.avila@free.fr>\n"
 "Language-Team: Jean-Noël Avila <jn.avila@free.fr>\n"
 "Language: fr\n"
@@ -84,37 +84,37 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n<=1 ?0 : 1;\n"
 
-#: advice.c:62
+#: advice.c:92
 #, c-format
-msgid "hint: %.*s\n"
-msgstr "astuce: %.*s\n"
+msgid "%shint: %.*s%s\n"
+msgstr "%sastuce: %.*s%s\n"
 
-#: advice.c:90
+#: advice.c:137
 msgid "Cherry-picking is not possible because you have unmerged files."
 msgstr "Impossible de picorer car vous avez des fichiers non fusionnés."
 
-#: advice.c:92
+#: advice.c:139
 msgid "Committing is not possible because you have unmerged files."
 msgstr "Impossible de valider car vous avez des fichiers non fusionnés."
 
-#: advice.c:94
+#: advice.c:141
 msgid "Merging is not possible because you have unmerged files."
 msgstr "Impossible de fusionner car vous avez des fichiers non fusionnés."
 
-#: advice.c:96
+#: advice.c:143
 msgid "Pulling is not possible because you have unmerged files."
 msgstr "Impossible de tirer car vous avez des fichiers non fusionnés."
 
-#: advice.c:98
+#: advice.c:145
 msgid "Reverting is not possible because you have unmerged files."
 msgstr "Impossible d'annuler car vous avez des fichiers non fusionnés."
 
-#: advice.c:100
+#: advice.c:147
 #, c-format
 msgid "It is not possible to %s because you have unmerged files."
 msgstr "%s n'est pas possible car vous avez des fichiers non fusionnés."
 
-#: advice.c:108
+#: advice.c:155
 msgid ""
 "Fix them up in the work tree, and then use 'git add/rm <file>'\n"
 "as appropriate to mark resolution and make a commit."
@@ -122,23 +122,23 @@ msgstr ""
 "Corrigez-les puis lancez 'git add/rm <fichier>'\n"
 "si nécessaire pour marquer la résolution et valider."
 
-#: advice.c:116
+#: advice.c:163
 msgid "Exiting because of an unresolved conflict."
 msgstr "Abandon à cause de conflit non résolu."
 
-#: advice.c:121 builtin/merge.c:1251
+#: advice.c:168 builtin/merge.c:1250
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "Vous n'avez pas terminé votre fusion (MERGE_HEAD existe)."
 
-#: advice.c:123
+#: advice.c:170
 msgid "Please, commit your changes before merging."
 msgstr "Veuillez valider vos changements avant de fusionner."
 
-#: advice.c:124
+#: advice.c:171
 msgid "Exiting because of unfinished merge."
 msgstr "Abandon à cause d'une fusion non terminée."
 
-#: advice.c:130
+#: advice.c:177
 #, c-format
 msgid ""
 "Note: checking out '%s'.\n"
@@ -419,7 +419,7 @@ msgstr "le patch a échoué : %s:%ld"
 msgid "cannot checkout %s"
 msgstr "extraction de %s impossible"
 
-#: apply.c:3396 apply.c:3407 apply.c:3453 setup.c:277
+#: apply.c:3396 apply.c:3407 apply.c:3453 setup.c:278
 #, c-format
 msgid "failed to read %s"
 msgstr "échec de la lecture de %s"
@@ -624,7 +624,7 @@ msgstr[1] "Application du patch %%s avec %d rejets..."
 msgid "truncating .rej filename to %.*s.rej"
 msgstr "troncature du nom de fichier .rej en %.*s.rej"
 
-#: apply.c:4545 builtin/fetch.c:775 builtin/fetch.c:1025
+#: apply.c:4545 builtin/fetch.c:786 builtin/fetch.c:1036
 #, c-format
 msgid "cannot open %s"
 msgstr "impossible d'ouvrir %s"
@@ -678,15 +678,15 @@ msgid_plural "%d lines applied after fixing whitespace errors."
 msgstr[0] "%d ligne ajoutée après correction des erreurs d'espace."
 msgstr[1] "%d lignes ajoutées après correction des erreurs d'espace."
 
-#: apply.c:4894 builtin/add.c:539 builtin/mv.c:298 builtin/rm.c:390
+#: apply.c:4894 builtin/add.c:538 builtin/mv.c:300 builtin/rm.c:389
 msgid "Unable to write new index file"
 msgstr "Impossible d'écrire le nouveau fichier d'index"
 
 #: apply.c:4921 apply.c:4924 builtin/am.c:2254 builtin/am.c:2257
-#: builtin/clone.c:118 builtin/fetch.c:127 builtin/pull.c:193
-#: builtin/submodule--helper.c:403 builtin/submodule--helper.c:1197
-#: builtin/submodule--helper.c:1200 builtin/submodule--helper.c:1567
-#: builtin/submodule--helper.c:1570 builtin/submodule--helper.c:1787
+#: builtin/clone.c:120 builtin/fetch.c:126 builtin/pull.c:198
+#: builtin/submodule--helper.c:405 builtin/submodule--helper.c:1210
+#: builtin/submodule--helper.c:1213 builtin/submodule--helper.c:1584
+#: builtin/submodule--helper.c:1587 builtin/submodule--helper.c:1807
 #: git-add--interactive.perl:197
 msgid "path"
 msgstr "chemin"
@@ -763,7 +763,7 @@ msgstr "s'assurer d'au moins <n> lignes de correspondance de contexte"
 
 #: apply.c:4960 builtin/am.c:2242 builtin/interpret-trailers.c:95
 #: builtin/interpret-trailers.c:97 builtin/interpret-trailers.c:99
-#: builtin/pack-objects.c:3035
+#: builtin/pack-objects.c:3177
 msgid "action"
 msgstr "action"
 
@@ -793,9 +793,9 @@ msgstr "laisser les sections rejetées dans les fichiers *.rej correspondants"
 msgid "allow overlapping hunks"
 msgstr "accepter les recouvrements de sections"
 
-#: apply.c:4977 builtin/add.c:292 builtin/check-ignore.c:21
-#: builtin/commit.c:1276 builtin/count-objects.c:96 builtin/fsck.c:665
-#: builtin/log.c:1901 builtin/mv.c:123 builtin/read-tree.c:125
+#: apply.c:4977 builtin/add.c:290 builtin/check-ignore.c:21
+#: builtin/commit.c:1301 builtin/count-objects.c:98 builtin/fsck.c:666
+#: builtin/log.c:1901 builtin/mv.c:122 builtin/read-tree.c:124
 msgid "be verbose"
 msgstr "mode verbeux"
 
@@ -836,98 +836,98 @@ msgstr ""
 msgid "git archive --remote <repo> [--exec <cmd>] --list"
 msgstr "git archive --remote <dépôt> [--exec <commande>] --list"
 
-#: archive.c:351 builtin/add.c:176 builtin/add.c:515 builtin/rm.c:299
+#: archive.c:351 builtin/add.c:176 builtin/add.c:514 builtin/rm.c:298
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "le chemin '%s' ne correspond à aucun fichier"
 
-#: archive.c:436
+#: archive.c:434
 msgid "fmt"
 msgstr "fmt"
 
-#: archive.c:436
+#: archive.c:434
 msgid "archive format"
 msgstr "format d'archive"
 
-#: archive.c:437 builtin/log.c:1462
+#: archive.c:435 builtin/log.c:1462
 msgid "prefix"
 msgstr "préfixe"
 
-#: archive.c:438
+#: archive.c:436
 msgid "prepend prefix to each pathname in the archive"
 msgstr "préfixer chaque chemin de fichier dans l'archive"
 
-#: archive.c:439 builtin/blame.c:702 builtin/blame.c:703 builtin/config.c:62
-#: builtin/fast-export.c:1005 builtin/fast-export.c:1007 builtin/grep.c:869
+#: archive.c:437 builtin/blame.c:813 builtin/blame.c:814 builtin/config.c:127
+#: builtin/fast-export.c:1007 builtin/fast-export.c:1009 builtin/grep.c:869
 #: builtin/hash-object.c:103 builtin/ls-files.c:551 builtin/ls-files.c:554
-#: builtin/notes.c:405 builtin/notes.c:568 builtin/read-tree.c:120
+#: builtin/notes.c:405 builtin/notes.c:568 builtin/read-tree.c:119
 #: parse-options.h:165
 msgid "file"
 msgstr "fichier"
 
-#: archive.c:440 builtin/archive.c:89
+#: archive.c:438 builtin/archive.c:89
 msgid "write the archive to this file"
 msgstr "écrire l'archive dans ce fichier"
 
-#: archive.c:442
+#: archive.c:440
 msgid "read .gitattributes in working directory"
 msgstr "lire .gitattributes dans le répertoire de travail"
 
-#: archive.c:443
+#: archive.c:441
 msgid "report archived files on stderr"
 msgstr "afficher les fichiers archivés sur stderr"
 
-#: archive.c:444
+#: archive.c:442
 msgid "store only"
 msgstr "stockage seulement"
 
-#: archive.c:445
+#: archive.c:443
 msgid "compress faster"
 msgstr "compression rapide"
 
-#: archive.c:453
+#: archive.c:451
 msgid "compress better"
 msgstr "compression efficace"
 
-#: archive.c:456
+#: archive.c:454
 msgid "list supported archive formats"
 msgstr "afficher les formats d'archive supportés"
 
-#: archive.c:458 builtin/archive.c:90 builtin/clone.c:108 builtin/clone.c:111
-#: builtin/submodule--helper.c:1209 builtin/submodule--helper.c:1576
+#: archive.c:456 builtin/archive.c:90 builtin/clone.c:110 builtin/clone.c:113
+#: builtin/submodule--helper.c:1222 builtin/submodule--helper.c:1593
 msgid "repo"
 msgstr "dépôt"
 
-#: archive.c:459 builtin/archive.c:91
+#: archive.c:457 builtin/archive.c:91
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "récupérer l'archive depuis le dépôt distant <dépôt>"
 
-#: archive.c:460 builtin/archive.c:92 builtin/notes.c:489
+#: archive.c:458 builtin/archive.c:92 builtin/notes.c:489
 msgid "command"
 msgstr "commande"
 
-#: archive.c:461 builtin/archive.c:93
+#: archive.c:459 builtin/archive.c:93
 msgid "path to the remote git-upload-archive command"
 msgstr "chemin vers la commande distante git-upload-archive"
 
-#: archive.c:468
+#: archive.c:466
 msgid "Unexpected option --remote"
 msgstr "Option --remote inattendue"
 
-#: archive.c:470
+#: archive.c:468
 msgid "Option --exec can only be used together with --remote"
 msgstr "L'option --exec ne peut être utilisée qu'en complément de --remote"
 
-#: archive.c:472
+#: archive.c:470
 msgid "Unexpected option --output"
 msgstr "Option --output inattendue"
 
-#: archive.c:494
+#: archive.c:492
 #, c-format
 msgid "Unknown archive format '%s'"
 msgstr "Format d'archive inconnu '%s'"
 
-#: archive.c:501
+#: archive.c:499
 #, c-format
 msgid "Argument not supported for format '%s': -%d"
 msgstr "Argument non supporté pour le format '%s' : -%d"
@@ -945,22 +945,22 @@ msgstr ""
 "Les motifs de négation sont ignorés dans les attributs git\n"
 "Utilisez '\\!' pour un point d'exclamation littéral."
 
-#: bisect.c:460
+#: bisect.c:461
 #, c-format
 msgid "Badly quoted content in file '%s': %s"
 msgstr "Contenu mal cité dans le fichier '%s' : %s"
 
-#: bisect.c:668
+#: bisect.c:669
 #, c-format
 msgid "We cannot bisect more!\n"
 msgstr "Impossible de pousser la bissection plus loin !\n"
 
-#: bisect.c:722
+#: bisect.c:723
 #, c-format
 msgid "Not a valid commit name %s"
 msgstr "%s n'est pas un nom de commit valide"
 
-#: bisect.c:746
+#: bisect.c:747
 #, c-format
 msgid ""
 "The merge base %s is bad.\n"
@@ -969,7 +969,7 @@ msgstr ""
 "La base de fusion %s est mauvaise.\n"
 "Cela signifie que le bogue été corrigé entre %s et [%s].\n"
 
-#: bisect.c:751
+#: bisect.c:752
 #, c-format
 msgid ""
 "The merge base %s is new.\n"
@@ -978,7 +978,7 @@ msgstr ""
 "La base de fusion %s est nouvelle.\n"
 "La propriété a changé entre %s et [%s].\n"
 
-#: bisect.c:756
+#: bisect.c:757
 #, c-format
 msgid ""
 "The merge base %s is %s.\n"
@@ -987,7 +987,7 @@ msgstr ""
 "La base de fusion %s est %s.\n"
 "Ceci signifie que le premier commit '%s' est entre %s et [%s].\n"
 
-#: bisect.c:764
+#: bisect.c:765
 #, c-format
 msgid ""
 "Some %s revs are not ancestors of the %s rev.\n"
@@ -998,7 +998,7 @@ msgstr ""
 "git bisect ne peut pas fonctionner correctement dans ce cas.\n"
 "Peut-être les révisions %s et %s ne sont-elles pas les bonnes ?\n"
 
-#: bisect.c:777
+#: bisect.c:778
 #, c-format
 msgid ""
 "the merge base between %s and [%s] must be skipped.\n"
@@ -1010,36 +1010,36 @@ msgstr ""
 "et %s.\n"
 "On continue tout de même."
 
-#: bisect.c:810
+#: bisect.c:811
 #, c-format
 msgid "Bisecting: a merge base must be tested\n"
 msgstr "Bissection : une base de fusion doit être testée\n"
 
-#: bisect.c:850
+#: bisect.c:851
 #, c-format
 msgid "a %s revision is needed"
 msgstr "une révision %s est nécessaire"
 
-#: bisect.c:869 builtin/notes.c:175 builtin/tag.c:235
+#: bisect.c:870 builtin/notes.c:175 builtin/tag.c:236
 #, c-format
 msgid "could not create file '%s'"
 msgstr "impossible de créer le fichier '%s'"
 
-#: bisect.c:920
+#: bisect.c:921
 #, c-format
 msgid "could not read file '%s'"
 msgstr "impossible de lire le fichier '%s'"
 
-#: bisect.c:950
+#: bisect.c:951
 msgid "reading bisect refs failed"
 msgstr "impossible de lire les références de bissection"
 
-#: bisect.c:969
+#: bisect.c:970
 #, c-format
 msgid "%s was both %s and %s\n"
 msgstr "%s était à la fois %s et %s\n"
 
-#: bisect.c:977
+#: bisect.c:978
 #, c-format
 msgid ""
 "No testable commit found.\n"
@@ -1048,7 +1048,7 @@ msgstr ""
 "Aucun commit testable n'a été trouvé\n"
 "Peut-être avez-vous démarré avec un mauvais paramètre de chemin ?\n"
 
-#: bisect.c:996
+#: bisect.c:997
 #, c-format
 msgid "(roughly %d step)"
 msgid_plural "(roughly %d steps)"
@@ -1058,52 +1058,52 @@ msgstr[1] "(à peu près %d étapes)"
 #. TRANSLATORS: the last %s will be replaced with "(roughly %d
 #. steps)" translation.
 #.
-#: bisect.c:1002
+#: bisect.c:1003
 #, c-format
 msgid "Bisecting: %d revision left to test after this %s\n"
 msgid_plural "Bisecting: %d revisions left to test after this %s\n"
 msgstr[0] "Bissection : %d révision à tester après cette %s\n"
 msgstr[1] "Bissection : %d révisions à tester après cette %s\n"
 
-#: blame.c:1758
+#: blame.c:1756
 msgid "--contents and --reverse do not blend well."
 msgstr "--contents et --reverse ne font pas bon ménage."
 
-#: blame.c:1769
+#: blame.c:1767
 msgid "cannot use --contents with final commit object name"
 msgstr "on ne peut pas utiliser --contents avec un nom d'objet commit final"
 
-#: blame.c:1789
+#: blame.c:1787
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr ""
 "--reverse et --first-parent ensemble nécessitent la spécification d'un "
 "dernier commit"
 
-#: blame.c:1798 bundle.c:160 ref-filter.c:1978 sequencer.c:1699
-#: sequencer.c:2901 builtin/commit.c:976 builtin/log.c:366 builtin/log.c:920
-#: builtin/log.c:1371 builtin/log.c:1702 builtin/log.c:1950 builtin/merge.c:370
-#: builtin/shortlog.c:191
+#: blame.c:1796 bundle.c:160 ref-filter.c:2075 sequencer.c:1861
+#: sequencer.c:3632 builtin/commit.c:981 builtin/log.c:366 builtin/log.c:920
+#: builtin/log.c:1371 builtin/log.c:1702 builtin/log.c:1950 builtin/merge.c:372
+#: builtin/shortlog.c:192
 msgid "revision walk setup failed"
 msgstr "échec de la préparation du parcours des révisions"
 
-#: blame.c:1816
+#: blame.c:1814
 msgid ""
 "--reverse --first-parent together require range along first-parent chain"
 msgstr ""
 "--reverse --first-parent ensemble nécessitent une portée avec la chaîne de "
 "premier parent"
 
-#: blame.c:1827
+#: blame.c:1825
 #, c-format
 msgid "no such path %s in %s"
 msgstr "pas de chemin %s dans %s"
 
-#: blame.c:1838
+#: blame.c:1836
 #, c-format
 msgid "cannot read blob %s for path %s"
 msgstr "impossible de lire le blob %s  pour le chemin %s"
 
-#: branch.c:53
+#: branch.c:54
 #, c-format
 msgid ""
 "\n"
@@ -1116,97 +1116,97 @@ msgstr ""
 "l'information de suivi distant en invoquant\n"
 "\"git branch --setup-upstream-to=%s%s%s\"."
 
-#: branch.c:67
+#: branch.c:68
 #, c-format
 msgid "Not setting branch %s as its own upstream."
 msgstr "La branche %s ne peut pas être sa propre branche amont."
 
-#: branch.c:93
+#: branch.c:94
 #, c-format
 msgid "Branch '%s' set up to track remote branch '%s' from '%s' by rebasing."
 msgstr ""
 "La branche '%s' est paramétrée pour suivre la branche distante '%s' de '%s' "
 "en rebasant."
 
-#: branch.c:94
+#: branch.c:95
 #, c-format
 msgid "Branch '%s' set up to track remote branch '%s' from '%s'."
 msgstr ""
 "La branche '%s' est paramétrée pour suivre la branche distante '%s' depuis "
 "'%s'."
 
-#: branch.c:98
+#: branch.c:99
 #, c-format
 msgid "Branch '%s' set up to track local branch '%s' by rebasing."
 msgstr ""
 "La branche '%s' est paramétrée pour suivre la branche locale '%'s en "
 "rebasant."
 
-#: branch.c:99
+#: branch.c:100
 #, c-format
 msgid "Branch '%s' set up to track local branch '%s'."
 msgstr "La branche '%s' est paramétrée pour suivre la branche locale '%s'."
 
-#: branch.c:104
+#: branch.c:105
 #, c-format
 msgid "Branch '%s' set up to track remote ref '%s' by rebasing."
 msgstr ""
 "La branche '%s' est paramétrée pour suivre la référence distante '%s' en "
 "rebasant."
 
-#: branch.c:105
+#: branch.c:106
 #, c-format
 msgid "Branch '%s' set up to track remote ref '%s'."
 msgstr "La branche '%s' est paramétrée pour suivre la référence distante '%s'."
 
-#: branch.c:109
+#: branch.c:110
 #, c-format
 msgid "Branch '%s' set up to track local ref '%s' by rebasing."
 msgstr ""
 "La branche '%s' est paramétrée pour suivre la référence locale '%s' en "
 "rebasant."
 
-#: branch.c:110
+#: branch.c:111
 #, c-format
 msgid "Branch '%s' set up to track local ref '%s'."
 msgstr "La branche '%s' est paramétrée pour suivre la référence locale '%s'."
 
-#: branch.c:119
+#: branch.c:120
 msgid "Unable to write upstream branch configuration"
 msgstr "Échec de l'écriture de la configuration de branche amont"
 
-#: branch.c:156
+#: branch.c:157
 #, c-format
 msgid "Not tracking: ambiguous information for ref %s"
 msgstr "Pas de suivi : information ambiguë pour la référence %s"
 
-#: branch.c:189
+#: branch.c:190
 #, c-format
 msgid "'%s' is not a valid branch name."
 msgstr "'%s' n'est pas un nom de branche valide."
 
-#: branch.c:208
+#: branch.c:209
 #, c-format
 msgid "A branch named '%s' already exists."
 msgstr "Une branche nommée '%s' existe déjà."
 
-#: branch.c:213
+#: branch.c:214
 msgid "Cannot force update the current branch."
 msgstr "Impossible de forcer la mise à jour de la branche courante."
 
-#: branch.c:233
+#: branch.c:234
 #, c-format
 msgid "Cannot setup tracking information; starting point '%s' is not a branch."
 msgstr ""
 "Impossible de paramétrer le suivi de branche ; le point de départ '%s' n'est "
 "pas une branche."
 
-#: branch.c:235
+#: branch.c:236
 #, c-format
 msgid "the requested upstream branch '%s' does not exist"
 msgstr "la branche amont demandée '%s' n'existe pas"
 
-#: branch.c:237
+#: branch.c:238
 msgid ""
 "\n"
 "If you are planning on basing your work on an upstream\n"
@@ -1226,27 +1226,27 @@ msgstr ""
 "sa jumelle distante, vous pouvez utiliser \"git push -u\"\n"
 "pour paramétrer le suivi distant en même temps que vous poussez."
 
-#: branch.c:280
+#: branch.c:281
 #, c-format
 msgid "Not a valid object name: '%s'."
 msgstr "Nom d'objet invalide : '%s'."
 
-#: branch.c:300
+#: branch.c:301
 #, c-format
 msgid "Ambiguous object name: '%s'."
 msgstr "Nom d'objet ambigu : '%s'."
 
-#: branch.c:305
+#: branch.c:306
 #, c-format
 msgid "Not a valid branch point: '%s'."
 msgstr "Point d'embranchement invalide : '%s'."
 
-#: branch.c:359
+#: branch.c:360
 #, c-format
 msgid "'%s' is already checked out at '%s'"
 msgstr "'%s' est déjà extrait dans '%s'"
 
-#: branch.c:382
+#: branch.c:383
 #, c-format
 msgid "HEAD of working tree %s is not updated"
 msgstr "la HEAD de la copie de travail %s n'est pas mise à jour"
@@ -1261,7 +1261,7 @@ msgstr "'%s' ne semble pas être un fichier bundle v2"
 msgid "unrecognized header: %s%s (%d)"
 msgstr "en-tête non reconnu : %s%s (%d)"
 
-#: bundle.c:88 sequencer.c:1879 sequencer.c:2337 builtin/commit.c:750
+#: bundle.c:88 sequencer.c:2081 sequencer.c:2558 builtin/commit.c:755
 #, c-format
 msgid "could not open '%s'"
 msgstr "impossible d'ouvrir '%s'"
@@ -1305,7 +1305,7 @@ msgstr "rev-list a disparu"
 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:450 builtin/log.c:183 builtin/log.c:1607 builtin/shortlog.c:296
+#: bundle.c:450 builtin/log.c:183 builtin/log.c:1607 builtin/shortlog.c:303
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "argument non reconnu : %s"
@@ -1328,18 +1328,39 @@ msgstr "l'index de groupe a disparu"
 msgid "invalid color value: %.*s"
 msgstr "Valeur invalide de couleur : %.*s"
 
-#: commit.c:41 sequencer.c:2141 builtin/am.c:421 builtin/am.c:465
-#: builtin/am.c:1436 builtin/am.c:2072
+#: commit.c:43 sequencer.c:2364 builtin/am.c:421 builtin/am.c:465
+#: builtin/am.c:1436 builtin/am.c:2072 builtin/replace.c:376
+#: builtin/replace.c:448
 #, c-format
 msgid "could not parse %s"
 msgstr "impossible d'analyser %s"
 
-#: commit.c:43
+#: commit.c:45
 #, c-format
 msgid "%s %s is not a commit!"
 msgstr "%s %s n'est pas un commit !"
 
-#: commit.c:1506
+#: commit.c:182
+msgid ""
+"Support for <GIT_DIR>/info/grafts is deprecated\n"
+"and will be removed in a future Git version.\n"
+"\n"
+"Please use \"git replace --convert-graft-file\"\n"
+"to convert the grafts into replace refs.\n"
+"\n"
+"Turn this message off by running\n"
+"\"git config advice.graftFileDeprecated false\""
+msgstr ""
+"Le support de <GIT_DIR>/info/grafts est déconseillé\n"
+"et sera supprimé dans une version future de Git.\n"
+"\n"
+"Veuillez utiliser \"git replace --convert-graft-file\"\n"
+"pour convertir les grafts en référence de remplacement.\n"
+"\n"
+"Supprimez ce message en lançant\n"
+"\"git config advice.graftFileDeprecated false\""
+
+#: commit.c:1540
 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"
@@ -1351,189 +1372,203 @@ msgstr ""
 "variable de configuration i18n.commitencoding à l'encodage utilisé par votre "
 "projet.\n"
 
+#: commit-graph.c:669
+#, 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:696
+msgid "too many commits to write graph"
+msgstr "trop de commits pour écrire un graphe"
+
+#: commit-graph.c:707 builtin/init-db.c:516 builtin/init-db.c:521
+#, c-format
+msgid "cannot mkdir %s"
+msgstr "impossible de créer le répertoire (mkdir) %s"
+
 #: compat/obstack.c:405 compat/obstack.c:407
 msgid "memory exhausted"
 msgstr "plus de mémoire"
 
-#: config.c:186
+#: config.c:187
 msgid "relative config include conditionals must come from files"
 msgstr ""
 "les conditions d'inclusion de configuration relative doivent venir de "
 "fichiers"
 
-#: config.c:720
+#: config.c:788
 #, c-format
 msgid "bad config line %d in blob %s"
 msgstr "ligne %d de config incorrecte dans le blob %s"
 
-#: config.c:724
+#: config.c:792
 #, c-format
 msgid "bad config line %d in file %s"
 msgstr "ligne %d de config incorrecte dans le fichier %s"
 
-#: config.c:728
+#: config.c:796
 #, c-format
 msgid "bad config line %d in standard input"
 msgstr "ligne %d de config incorrecte dans l'entrée standard"
 
-#: config.c:732
+#: config.c:800
 #, c-format
 msgid "bad config line %d in submodule-blob %s"
 msgstr "ligne %d de config incorrecte dans le blob de sous-module %s"
 
-#: config.c:736
+#: config.c:804
 #, c-format
 msgid "bad config line %d in command line %s"
 msgstr "ligne %d de config incorrecte dans la ligne de commande %s"
 
-#: config.c:740
+#: config.c:808
 #, c-format
 msgid "bad config line %d in %s"
 msgstr "ligne %d de config incorrecte dans %s"
 
-#: config.c:868
+#: config.c:936
 msgid "out of range"
 msgstr "hors plage"
 
-#: config.c:868
+#: config.c:936
 msgid "invalid unit"
 msgstr "unité invalide"
 
-#: config.c:874
+#: config.c:942
 #, c-format
 msgid "bad numeric config value '%s' for '%s': %s"
 msgstr "valeur numérique de configuration invalide '%s' pour '%s' : %s"
 
-#: config.c:879
+#: config.c:947
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
 msgstr ""
 "valeur numérique de configuration incorrecte '%s' pour '%s' dans le blob "
 "%s : %s"
 
-#: config.c:882
+#: config.c:950
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in file %s: %s"
 msgstr ""
 "valeur numérique de configuration incorrecte '%s' pour '%s' dans le fichier "
 "%s : %s"
 
-#: config.c:885
+#: config.c:953
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
 msgstr ""
 "valeur numérique de configuration incorrecte '%s' pour '%s' dans l'entrée "
 "standard : %s"
 
-#: config.c:888
+#: config.c:956
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
 msgstr ""
 "valeur numérique de configuration incorrecte '%s' pour '%s' dans le blob de "
 "sous-module %s : %s"
 
-#: config.c:891
+#: config.c:959
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
 msgstr ""
 "valeur numérique de configuration incorrecte '%s' pour '%s' dans la ligne de "
 "commande %s : %s"
 
-#: config.c:894
+#: config.c:962
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in %s: %s"
 msgstr ""
 "valeur numérique de configuration incorrecte '%s' pour '%s' dans %s : %s"
 
-#: config.c:989
+#: config.c:1057
 #, c-format
 msgid "failed to expand user dir in: '%s'"
 msgstr "impossible d'étendre le répertoire utilisateur dans : '%s'"
 
-#: config.c:998
+#: config.c:1066
 #, c-format
 msgid "'%s' for '%s' is not a valid timestamp"
 msgstr "'%s' pour '%s' n'est pas un horodatage valide"
 
-#: config.c:1094 config.c:1105
+#: config.c:1171 config.c:1182
 #, c-format
 msgid "bad zlib compression level %d"
 msgstr "niveau de compression zlib incorrect %d"
 
-#: config.c:1225
+#: config.c:1307
 #, c-format
 msgid "invalid mode for object creation: %s"
 msgstr "mode invalide pour la création d'objet : %s"
 
-#: config.c:1386
+#: config.c:1473
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "niveau de compression du paquet %d"
 
-#: config.c:1582
+#: config.c:1681
 msgid "unable to parse command-line config"
 msgstr "lecture de la configuration de ligne de commande impossible"
 
-#: config.c:1914
+#: config.c:2013
 msgid "unknown error occurred while reading the configuration files"
 msgstr "erreur inconnue pendant la lecture des fichiers de configuration"
 
-#: config.c:2101
+#: config.c:2200
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "%s invalide : '%s'"
 
-#: config.c:2144
+#: config.c:2243
 #, c-format
 msgid "unknown core.untrackedCache value '%s'; using 'keep' default value"
 msgstr ""
 "valeur '%s' de core.untrackedCache inconnue ; utilisation de 'keep' par "
 "défaut"
 
-#: config.c:2170
+#: config.c:2269
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr ""
 "la valeur '%d' de splitIndex.maxPercentChange devrait se situer entre 0 et "
 "100"
 
-#: config.c:2195
+#: config.c:2294
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr ""
 "impossible d'analyser '%s' depuis le configuration en ligne de commande"
 
-#: config.c:2197
+#: config.c:2296
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr ""
 "variable de configuration '%s' incorrecte dans le fichier '%s' à la ligne %d"
 
-#: config.c:2256
+#: config.c:2402
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s a des valeurs multiples"
 
-#: config.c:2599 config.c:2816
+#: config.c:2766 config.c:3019
 #, c-format
 msgid "fstat on %s failed"
 msgstr "échec de fstat sur %s"
 
-#: config.c:2706
+#: config.c:2905
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "impossible de régler '%s' à '%s'"
 
-#: config.c:2708 builtin/remote.c:776
+#: config.c:2907 builtin/remote.c:779
 #, c-format
 msgid "could not unset '%s'"
 msgstr "impossible de désinitialiser '%s'"
 
-#: connect.c:52
+#: connect.c:61
 msgid "The remote end hung up upon initial contact"
 msgstr "L'hôte distant a fermé la connexion lors du contact initial"
 
-#: connect.c:54
+#: connect.c:63
 msgid ""
 "Could not read from remote repository.\n"
 "\n"
@@ -1545,7 +1580,7 @@ msgstr ""
 "Veuillez vérifier que vous avez les droits d'accès\n"
 "et que le dépôt existe."
 
-#: connected.c:66 builtin/fsck.c:198 builtin/prune.c:144
+#: connected.c:66 builtin/fsck.c:201 builtin/prune.c:145
 msgid "Checking connectivity"
 msgstr "Vérification de la connectivité"
 
@@ -1561,12 +1596,12 @@ msgstr "impossible d'écrire dans la rev-list"
 msgid "failed to close rev-list's stdin"
 msgstr "impossible de fermer l'entrée standard du rev-list"
 
-#: convert.c:205
+#: convert.c:206
 #, c-format
 msgid "CRLF would be replaced by LF in %s."
 msgstr "Les CRLF seraient remplacés par des LF dans %s."
 
-#: convert.c:207
+#: convert.c:208
 #, c-format
 msgid ""
 "CRLF will be replaced by LF in %s.\n"
@@ -1576,12 +1611,12 @@ msgstr ""
 "Le fichier conservera ses fins de ligne d'origine dans votre copie de "
 "travail."
 
-#: convert.c:215
+#: convert.c:216
 #, c-format
 msgid "LF would be replaced by CRLF in %s"
 msgstr "Les LF seraient remplacés par des CRLF dans %s"
 
-#: convert.c:217
+#: convert.c:218
 #, c-format
 msgid ""
 "LF will be replaced by CRLF in %s.\n"
@@ -1591,6 +1626,51 @@ msgstr ""
 "Le fichier conservera ses fins de ligne d'origine dans votre copie de "
 "travail."
 
+#: convert.c:279
+#, c-format
+msgid "BOM is prohibited in '%s' if encoded as %s"
+msgstr "Aucun BOM n'est permis dans '%s' s'il est encodé comme %s"
+
+#: convert.c:286
+#, c-format
+msgid ""
+"The file '%s' contains a byte order mark (BOM). Please use UTF-%s as working-"
+"tree-encoding."
+msgstr ""
+"Le fichier '%s' contient un marqueur d'ordre d'octets (BOM). Veuillez "
+"utiliser UTF-%s comme encodage d'arbre de travail."
+
+#: convert.c:304
+#, c-format
+msgid "BOM is required in '%s' if encoded as %s"
+msgstr "Un BOM est obligatoire dans '%s' s'il est encodé comme %s"
+
+#: convert.c:306
+#, c-format
+msgid ""
+"The file '%s' is missing a byte order mark (BOM). Please use UTF-%sBE or UTF-"
+"%sLE (depending on the byte order) as working-tree-encoding."
+msgstr ""
+"Il manque un marqueur d'ordre d'octets (BOM) au fichier '%s'. Veuillez "
+"utiliser UTF-%sBE ou UTF-%sLE (selon l'ordre désiré) comme encodage d'arbre "
+"de travail."
+
+#: convert.c:424
+#, c-format
+msgid "failed to encode '%s' from %s to %s"
+msgstr "échec de l'encodage de '%s' de %s vers %s"
+
+#: convert.c:467
+#, c-format
+msgid "encoding '%s' from %s to %s and back is not the same"
+msgstr ""
+"encoder '%s' depuis %s vers %s puis inversement ne produit pas le même "
+"contenu"
+
+#: convert.c:1225
+msgid "true/false are no valid working-tree-encodings"
+msgstr "true/false ne sont pas des encodages d'arbre de travail valides"
+
 #: date.c:116
 msgid "in the future"
 msgstr "dans le futur"
@@ -1707,24 +1787,24 @@ msgstr ""
 "Erreurs dans la variable de configuration 'diff.dirstat' :\n"
 "%s"
 
-#: diff.c:3822
+#: diff.c:3823
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "l'application de diff externe a disparu, arrêt à %s"
 
-#: diff.c:4146
+#: diff.c:4153
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only, --name-status, --check et -s sont mutuellement exclusifs"
 
-#: diff.c:4149
+#: diff.c:4156
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S et --find-object sont mutuellement exclusifs"
 
-#: diff.c:4237
+#: diff.c:4244
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow a besoin d'une spécification de chemin unique"
 
-#: diff.c:4403
+#: diff.c:4410
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -1733,24 +1813,24 @@ msgstr ""
 "Impossible d'analyser le paramètre de l'option --dirstat/-X :\n"
 "%s"
 
-#: diff.c:4417
+#: diff.c:4424
 #, c-format
 msgid "Failed to parse --submodule option parameter: '%s'"
 msgstr "Impossible d'analyser le paramètre de l'option --submodule : '%s'"
 
-#: diff.c:5493
+#: diff.c:5500
 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:5496
+#: diff.c:5503
 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:5499
+#: diff.c:5506
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -1758,25 +1838,25 @@ msgstr ""
 "vous souhaitez peut-être régler la variable %s à au moins %d et réessayer le "
 "commande."
 
-#: dir.c:1866
+#: dir.c:1867
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "impossible d'ouvrir le répertoire '%s'"
 
-#: dir.c:2108
+#: dir.c:2109
 msgid "failed to get kernel name and information"
 msgstr "echec de l'obtention d'information de kernel"
 
-#: dir.c:2232
+#: dir.c:2233
 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:3024 dir.c:3029
+#: dir.c:3075 dir.c:3080
 #, c-format
 msgid "could not create directories for %s"
 msgstr "impossible de créer les répertoires pour %s"
 
-#: dir.c:3054
+#: dir.c:3109
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "impossible de migrer le répertoire git de '%s' vers '%s'"
@@ -1801,201 +1881,205 @@ msgstr "impossible de stat le fichier '%s'"
 msgid "Remote with no URL"
 msgstr "Dépôt distant sans URL"
 
-#: fetch-pack.c:253
+#: fetch-pack.c:254
 msgid "git fetch-pack: expected shallow list"
 msgstr "git fetch-pack : list courte attendue"
 
-#: fetch-pack.c:265
+#: fetch-pack.c:266
 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:284 builtin/archive.c:63
+#: fetch-pack.c:285 builtin/archive.c:63
 #, c-format
 msgid "remote error: %s"
 msgstr "erreur distante : %s"
 
-#: fetch-pack.c:285
+#: fetch-pack.c:286
 #, c-format
 msgid "git fetch-pack: expected ACK/NAK, got '%s'"
 msgstr "git fetch-pack : ACK/NACK attendu, '%s' reçu"
 
-#: fetch-pack.c:337
+#: fetch-pack.c:338
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc nécessite multi_ack_detailed"
 
-#: fetch-pack.c:428
+#: fetch-pack.c:429 fetch-pack.c:1310
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "ligne de superficiel invalide : %s"
 
-#: fetch-pack.c:434
+#: fetch-pack.c:435 fetch-pack.c:1316
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "ligne de fin de superficiel invalide : %s"
 
-#: fetch-pack.c:436
+#: fetch-pack.c:437 fetch-pack.c:1318
 #, c-format
 msgid "object not found: %s"
 msgstr "objet non trouvé : %s"
 
-#: fetch-pack.c:439
+#: fetch-pack.c:440 fetch-pack.c:1321
 #, c-format
 msgid "error in object: %s"
 msgstr "Erreur dans l'objet : %s"
 
-#: fetch-pack.c:441
+#: fetch-pack.c:442 fetch-pack.c:1323
 #, c-format
 msgid "no shallow found: %s"
 msgstr "Pas de superficiel trouvé : %s"
 
-#: fetch-pack.c:444
+#: fetch-pack.c:445 fetch-pack.c:1326
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "superficiel/non superficiel attendu, %s trouvé"
 
-#: fetch-pack.c:485
+#: fetch-pack.c:486
 #, c-format
 msgid "got %s %d %s"
 msgstr "réponse %s %d %s"
 
-#: fetch-pack.c:499
+#: fetch-pack.c:500
 #, c-format
 msgid "invalid commit %s"
 msgstr "commit invalide %s"
 
-#: fetch-pack.c:532
+#: fetch-pack.c:533
 msgid "giving up"
 msgstr "abandon"
 
-#: fetch-pack.c:542 progress.c:229
+#: fetch-pack.c:543 progress.c:229
 msgid "done"
 msgstr "fait"
 
-#: fetch-pack.c:554
+#: fetch-pack.c:555
 #, c-format
 msgid "got %s (%d) %s"
 msgstr "%s trouvé (%d) %s"
 
-#: fetch-pack.c:600
+#: fetch-pack.c:601
 #, c-format
 msgid "Marking %s as complete"
 msgstr "Marquage de %s comme terminé"
 
-#: fetch-pack.c:788
+#: fetch-pack.c:828
 #, c-format
 msgid "already have %s (%s)"
 msgstr "%s déjà possédé (%s)"
 
-#: fetch-pack.c:829
+#: fetch-pack.c:869
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack : impossible de dupliquer le démultiplexeur latéral"
 
-#: fetch-pack.c:837
+#: fetch-pack.c:877
 msgid "protocol error: bad pack header"
 msgstr "erreur de protocole : mauvais entête de paquet"
 
-#: fetch-pack.c:895
+#: fetch-pack.c:944
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack : impossible de dupliquer %s"
 
-#: fetch-pack.c:911
+#: fetch-pack.c:960
 #, c-format
 msgid "%s failed"
 msgstr "échec de %s"
 
-#: fetch-pack.c:913
+#: fetch-pack.c:962
 msgid "error in sideband demultiplexer"
 msgstr "erreur dans le démultiplexer latéral"
 
-#: fetch-pack.c:940
+#: fetch-pack.c:989
 msgid "Server does not support shallow clients"
 msgstr "Le serveur ne supporte les clients superficiels"
 
-#: fetch-pack.c:944
+#: fetch-pack.c:993
 msgid "Server supports multi_ack_detailed"
 msgstr "Le serveur supporte multi_ack_detailed"
 
-#: fetch-pack.c:947
+#: fetch-pack.c:996
 msgid "Server supports no-done"
 msgstr "Le serveur support no-done"
 
-#: fetch-pack.c:953
+#: fetch-pack.c:1002
 msgid "Server supports multi_ack"
 msgstr "Le serveur supporte multi_ack"
 
-#: fetch-pack.c:957
+#: fetch-pack.c:1006
 msgid "Server supports side-band-64k"
 msgstr "Le serveur supporte side-band-64k"
 
-#: fetch-pack.c:961
+#: fetch-pack.c:1010
 msgid "Server supports side-band"
 msgstr "Le serveru supporte side-band"
 
-#: fetch-pack.c:965
+#: fetch-pack.c:1014
 msgid "Server supports allow-tip-sha1-in-want"
 msgstr "Le serveur supporte allow-tip-sha1-in-want"
 
-#: fetch-pack.c:969
+#: fetch-pack.c:1018
 msgid "Server supports allow-reachable-sha1-in-want"
 msgstr "Le serveur supporte allow-reachable-sha1-in-want"
 
-#: fetch-pack.c:979
+#: fetch-pack.c:1028
 msgid "Server supports ofs-delta"
 msgstr "Le serveur supporte ofs-delta"
 
-#: fetch-pack.c:985
+#: fetch-pack.c:1034 fetch-pack.c:1204
 msgid "Server supports filter"
 msgstr "Le serveur supporte filter"
 
-#: fetch-pack.c:993
+#: fetch-pack.c:1042
 #, c-format
 msgid "Server version is %.*s"
 msgstr "La version du serveur est %.*s"
 
-#: fetch-pack.c:999
+#: fetch-pack.c:1048
 msgid "Server does not support --shallow-since"
 msgstr "Le receveur ne gère pas --shallow-since"
 
-#: fetch-pack.c:1003
+#: fetch-pack.c:1052
 msgid "Server does not support --shallow-exclude"
 msgstr "Le receveur ne gère pas --shallow-exclude"
 
-#: fetch-pack.c:1005
+#: fetch-pack.c:1054
 msgid "Server does not support --deepen"
 msgstr "Le receveur ne gère pas --deepen"
 
-#: fetch-pack.c:1016
+#: fetch-pack.c:1065
 msgid "no common commits"
 msgstr "pas de commit commun"
 
-#: fetch-pack.c:1028
+#: fetch-pack.c:1077 fetch-pack.c:1414
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack : échec de le récupération."
 
-#: fetch-pack.c:1190
+#: fetch-pack.c:1199
+msgid "Server does not support shallow requests"
+msgstr "Le serveur ne supporte les requêtes superficielles"
+
+#: fetch-pack.c:1584
 msgid "no matching remote head"
 msgstr "pas de HEAD distante correspondante"
 
-#: fetch-pack.c:1212
+#: fetch-pack.c:1610
 #, c-format
 msgid "no such remote ref %s"
 msgstr "référence distante inconnue %s"
 
-#: fetch-pack.c:1215
+#: fetch-pack.c:1613
 #, 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é"
 
-#: gpg-interface.c:181
+#: gpg-interface.c:185
 msgid "gpg failed to sign the data"
 msgstr "gpg n'a pas pu signer les données"
 
-#: gpg-interface.c:211
+#: gpg-interface.c:210
 msgid "could not create temporary file"
 msgstr "impossible de créer un fichier temporaire"
 
-#: gpg-interface.c:214
+#: gpg-interface.c:213
 #, c-format
 msgid "failed writing detached signature to '%s'"
 msgstr "impossible d'écrire la signature détachée dans '%s'"
@@ -2005,36 +2089,98 @@ msgstr "impossible d'écrire la signature détachée dans '%s'"
 msgid "ignore invalid color '%.*s' in log.graphColors"
 msgstr "couleur invalide '%.*s' ignorée dans log.graphColors"
 
-#: grep.c:2022
+#: grep.c:2020
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "'%s' : lecture de %s impossible"
 
-#: grep.c:2039 setup.c:163 builtin/clone.c:407 builtin/diff.c:81
+#: grep.c:2037 setup.c:164 builtin/clone.c:409 builtin/diff.c:81
 #: builtin/rm.c:134
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "échec du stat de '%s'"
 
-#: grep.c:2050
+#: grep.c:2048
 #, c-format
 msgid "'%s': short read"
 msgstr "'%s' : lecture tronquée"
 
-#: help.c:179
+#: help.c:23
+msgid "start a working area (see also: git help tutorial)"
+msgstr "démarrer une zone de travail (voir aussi : git help tutorial)"
+
+#: help.c:24
+msgid "work on the current change (see also: git help everyday)"
+msgstr ""
+"travailler sur la modification actuelle (voir aussi : git help revisions)"
+
+#: help.c:25
+msgid "examine the history and state (see also: git help revisions)"
+msgstr "examiner l'historique et l'état (voir aussi : git help revisions)"
+
+#: help.c:26
+msgid "grow, mark and tweak your common history"
+msgstr "agrandir, marquer et modifier votre historique"
+
+#: help.c:27
+msgid "collaborate (see also: git help workflows)"
+msgstr "collaborer (voir aussi : git help workflows)"
+
+#: help.c:31
+msgid "Main Porcelain Commands"
+msgstr "Commandes Porcelaine Principales"
+
+#: help.c:32
+msgid "Ancillary Commands / Manipulators"
+msgstr "Commandes Auxiliaires / Manipulateurs"
+
+#: help.c:33
+msgid "Ancillary Commands / Interrogators"
+msgstr "Commandes Auxiliaires / Interrogateurs"
+
+#: help.c:34
+msgid "Interacting with Others"
+msgstr "Interaction avec d'autres développeurs"
+
+#: help.c:35
+msgid "Low-level Commands / Manipulators"
+msgstr "Commandes bas-niveau / Manipulateurs"
+
+#: help.c:36
+msgid "Low-level Commands / Interrogators"
+msgstr "Commandes bas niveau / Interrogateurs"
+
+#: help.c:37
+msgid "Low-level Commands / Synching Repositories"
+msgstr "Commandes bas niveau / Synchronisation de dépôts"
+
+#: help.c:38
+msgid "Low-level Commands / Internal Helpers"
+msgstr "Commandes bas niveau / Assistants internes"
+
+#: help.c:293
 #, c-format
 msgid "available git commands in '%s'"
 msgstr "commandes git disponibles dans '%s'"
 
-#: help.c:186
+#: help.c:300
 msgid "git commands available from elsewhere on your $PATH"
 msgstr "commandes git disponibles depuis un autre endroit de votre $PATH"
 
-#: help.c:217
+#: help.c:309
 msgid "These are common Git commands used in various situations:"
 msgstr "Ci-dessous les commandes Git habituelles dans diverses situations :"
 
-#: help.c:281
+#: help.c:358 git.c:90
+#, c-format
+msgid "unsupported command listing type '%s'"
+msgstr "type de liste de commandes non supporté '%s'"
+
+#: help.c:405
+msgid "The common Git guides are:"
+msgstr "Les guides Git populaires sont :"
+
+#: help.c:467
 #, c-format
 msgid ""
 "'%s' appears to be a git command, but we were not\n"
@@ -2043,33 +2189,33 @@ msgstr ""
 "'%s' semble être une commande git, mais elle n'a pas pu\n"
 "être exécutée. Peut-être git-%s est-elle cassée ?"
 
-#: help.c:336
+#: help.c:526
 msgid "Uh oh. Your system reports no Git commands at all."
 msgstr "Ahem. Votre système n'indique aucune commande Git."
 
-#: help.c:358
+#: help.c:548
 #, c-format
 msgid "WARNING: You called a Git command named '%s', which does not exist."
 msgstr ""
 "ATTENTION : vous avez invoqué une commande Git nommée '%s' qui n'existe pas."
 
-#: help.c:363
+#: help.c:553
 #, c-format
 msgid "Continuing under the assumption that you meant '%s'."
 msgstr "Continuons en supposant que vous avez voulu dire '%s'."
 
-#: help.c:368
+#: help.c:558
 #, c-format
 msgid "Continuing in %0.1f seconds, assuming that you meant '%s'."
 msgstr ""
 "Continuons dans %0.1f secondes en supposant que vous avez voulu dire '%s'."
 
-#: help.c:376
+#: help.c:566
 #, c-format
 msgid "git: '%s' is not a git command. See 'git --help'."
 msgstr "git : '%s' n'est pas une commande git. Voir 'git --help'."
 
-#: help.c:380
+#: help.c:570
 msgid ""
 "\n"
 "The most similar command is"
@@ -2083,16 +2229,16 @@ msgstr[1] ""
 "\n"
 "Les commandes les plus ressemblantes sont"
 
-#: help.c:395
+#: help.c:585
 msgid "git version [<options>]"
 msgstr "git version [<options>]"
 
-#: help.c:462
+#: help.c:652
 #, c-format
 msgid "%s: %s - %s"
 msgstr "%s: %s - %s"
 
-#: help.c:466
+#: help.c:656
 msgid ""
 "\n"
 "Did you mean this?"
@@ -2160,7 +2306,7 @@ msgstr "nom d'identifiant vide (pour <%s>) non permis"
 msgid "name consists only of disallowed characters: %s"
 msgstr "le nom n'est constitué que de caractères interdits : %s"
 
-#: ident.c:416 builtin/commit.c:582
+#: ident.c:416 builtin/commit.c:587
 #, c-format
 msgid "invalid date format: %s"
 msgstr "format de date invalide : %s"
@@ -2197,82 +2343,163 @@ msgstr ""
 msgid "Unable to create '%s.lock': %s"
 msgstr "Impossible de créer '%s.lock' : %s"
 
-#: merge.c:74
+#: merge.c:71
 msgid "failed to read the cache"
 msgstr "impossible de lire le cache"
 
-#: merge.c:134 builtin/am.c:1946 builtin/am.c:1980 builtin/checkout.c:378
-#: builtin/checkout.c:599 builtin/clone.c:759
+#: merge.c:136 builtin/am.c:1946 builtin/am.c:1980 builtin/checkout.c:378
+#: builtin/checkout.c:606 builtin/clone.c:761
 msgid "unable to write new index file"
 msgstr "impossible d'écrire le nouveau fichier d'index"
 
-#: merge-recursive.c:235
+#: merge-recursive.c:298
 msgid "(bad commit)\n"
 msgstr "(mauvais commit)\n"
 
-#: merge-recursive.c:257 merge-recursive.c:265
+#: merge-recursive.c:320
+#, c-format
+msgid "add_cacheinfo failed for path '%s'; merge aborting."
+msgstr "échec de addinfo_cache pour le chemin '%s' ; abandon de la fusion."
+
+#: merge-recursive.c:328
 #, c-format
-msgid "addinfo_cache failed for path '%s'"
-msgstr "échec de addinfo_cache pour le chemin '%s'"
+msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+msgstr "échec de addinfo_cache pour le chemin '%s' ; abandon de la fusion."
 
-#: merge-recursive.c:329
+#: merge-recursive.c:410
 msgid "error building trees"
 msgstr "erreur de construction des arbres"
 
-#: merge-recursive.c:771
+#: merge-recursive.c:881
 #, c-format
 msgid "failed to create path '%s'%s"
 msgstr "impossible de créer le chemin '%s' %s"
 
-#: merge-recursive.c:782
+#: merge-recursive.c:892
 #, c-format
 msgid "Removing %s to make room for subdirectory\n"
 msgstr "Suppression de %s pour faire de la place pour le sous-répertoire\n"
 
-#: merge-recursive.c:796 merge-recursive.c:815
+#: merge-recursive.c:906 merge-recursive.c:925
 msgid ": perhaps a D/F conflict?"
 msgstr ": peut-être un conflit D/F ?"
 
-#: merge-recursive.c:805
+#: merge-recursive.c:915
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
 msgstr "refus de perdre le fichier non suivi '%s'"
 
-#: merge-recursive.c:847 builtin/cat-file.c:37
+#: merge-recursive.c:957 builtin/cat-file.c:37
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr "impossible de lire l'objet %s '%s'"
 
-#: merge-recursive.c:849
+#: merge-recursive.c:959
 #, c-format
 msgid "blob expected for %s '%s'"
 msgstr "blob attendu pour %s '%s'"
 
-#: merge-recursive.c:873
+#: merge-recursive.c:983
 #, c-format
 msgid "failed to open '%s': %s"
 msgstr "échec à l'ouverture de '%s' : %s"
 
-#: merge-recursive.c:884
+#: merge-recursive.c:994
 #, c-format
 msgid "failed to symlink '%s': %s"
 msgstr "échec à la création du lien symbolique '%s' : %s"
 
-#: merge-recursive.c:889
+#: merge-recursive.c:999
 #, c-format
 msgid "do not know what to do with %06o %s '%s'"
 msgstr "ne sait pas traiter %06o %s '%s'"
 
-#: merge-recursive.c:1029
+#: merge-recursive.c:1186
+#, c-format
+msgid "Failed to merge submodule %s (not checked out)"
+msgstr "Échec de la fusion du sous-module %s (non extrait)"
+
+#: merge-recursive.c:1193
+#, c-format
+msgid "Failed to merge submodule %s (commits not present)"
+msgstr "Échec de fusion du sous-module %s (commits non présents)"
+
+#: merge-recursive.c:1200
+#, c-format
+msgid "Failed to merge submodule %s (commits don't follow merge-base)"
+msgstr ""
+"Échec de la fusion du sous-module %s (les commits ne descendent pas de la "
+"base de fusion)"
+
+#: merge-recursive.c:1208 merge-recursive.c:1220
+#, c-format
+msgid "Fast-forwarding submodule %s to the following commit:"
+msgstr "Avance rapide du sous-module %s au commit suivant :"
+
+#: merge-recursive.c:1211 merge-recursive.c:1223
+#, c-format
+msgid "Fast-forwarding submodule %s"
+msgstr "Avance rapide du sous-module %s"
+
+#: merge-recursive.c:1245
+#, c-format
+msgid "Failed to merge submodule %s (merge following commits not found)"
+msgstr ""
+"Échec de fusion du sous-module %s (fusion suivant les commits non trouvée)"
+
+#: merge-recursive.c:1249
+#, c-format
+msgid "Failed to merge submodule %s (not fast-forward)"
+msgstr "Échec de fusion du sous-module %s (pas en avance rapide)"
+
+#: merge-recursive.c:1250
+msgid "Found a possible merge resolution for the submodule:\n"
+msgstr "Résolution possible de fusion trouvée pour le sous-module :\n"
+
+#: merge-recursive.c:1253
+#, c-format
+msgid ""
+"If this is correct simply add it to the index for example\n"
+"by using:\n"
+"\n"
+"  git update-index --cacheinfo 160000 %s \"%s\"\n"
+"\n"
+"which will accept this suggestion.\n"
+msgstr ""
+"Si c'est correct, ajoutez le simplement à l'index\n"
+"en utilisant par exemple :\n"
+"\n"
+"  git update-index --cacheinfo 160000 %s \"%s\"\n"
+"\n"
+"qui acceptera cette suggestion.\n"
+
+#: merge-recursive.c:1262
+#, c-format
+msgid "Failed to merge submodule %s (multiple merges found)"
+msgstr "Échec de fusion du sous-module %s (plusieurs fusions trouvées)"
+
+#: merge-recursive.c:1321
 msgid "Failed to execute internal merge"
 msgstr "Échec à l'exécution de la fusion interne"
 
-#: merge-recursive.c:1034
+#: merge-recursive.c:1326
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "Impossible d'ajouter %s à la base de données"
 
-#: merge-recursive.c:1146
+#: merge-recursive.c:1358
+#, c-format
+msgid "Auto-merging %s"
+msgstr "Fusion automatique de %s"
+
+#: merge-recursive.c:1423
+#, c-format
+msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+msgstr ""
+"Erreur : refus de perdre le fichier non suivi %s ; écriture dans %s à la "
+"place."
+
+#: merge-recursive.c:1475
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -2281,7 +2508,7 @@ msgstr ""
 "CONFLIT (%s/suppression) : %s supprimé dans %s et %s dans %s. Version %s de "
 "%s laissée dans l'arbre."
 
-#: merge-recursive.c:1151
+#: merge-recursive.c:1480
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -2290,7 +2517,7 @@ msgstr ""
 "CONFLIT (%s/suppression) : %s supprimé dans %s et %s à %s dans %s. Version "
 "%s de %s laissée dans l'arbre."
 
-#: merge-recursive.c:1158
+#: merge-recursive.c:1487
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -2299,7 +2526,7 @@ msgstr ""
 "CONFLIT (%s/suppression) : %s supprimé dans %s et %s dans %s. Version %s de "
 "%s laissée dans l'arbre dans le fichier %s."
 
-#: merge-recursive.c:1163
+#: merge-recursive.c:1492
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -2308,20 +2535,31 @@ msgstr ""
 "CONFLIT (%s/suppression) : %s supprimé dans %s et %s à %s dans %s. Version "
 "%s de %s laissée dans l'arbre dans le fichier %s."
 
-#: merge-recursive.c:1197
+#: merge-recursive.c:1526
 msgid "rename"
 msgstr "renommage"
 
-#: merge-recursive.c:1197
+#: merge-recursive.c:1526
 msgid "renamed"
 msgstr "renommé"
 
-#: merge-recursive.c:1254
+#: merge-recursive.c:1580 merge-recursive.c:1736 merge-recursive.c:2368
+#: merge-recursive.c:3086
+#, c-format
+msgid "Refusing to lose dirty file at %s"
+msgstr "Refus de perdre le fichier modifié %s"
+
+#: merge-recursive.c:1594
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr "%s est un répertoire dans %s ajouté plutôt comme %s"
 
-#: merge-recursive.c:1279
+#: merge-recursive.c:1599
+#, c-format
+msgid "Refusing to lose untracked file at %s; adding as %s instead"
+msgstr "Refus de perdre le fichier non suivi %s ; ajout comme %s à la place"
+
+#: merge-recursive.c:1625
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
@@ -2330,142 +2568,189 @@ msgstr ""
 "CONFLIT (renommage/renommage) : Renommage de \"%s\"->\"%s\" dans la branche "
 "\"%s\" et renommage \"%s\"->\"%s\" dans \"%s\"%s"
 
-#: merge-recursive.c:1284
+#: merge-recursive.c:1630
 msgid " (left unresolved)"
 msgstr " (laissé non résolu)"
 
-#: merge-recursive.c:1346
+#: merge-recursive.c:1694
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
 msgstr ""
 "CONFLIT (renommage/renommage) : renommage '%s'->'%s' dans %s. Renommage '%s'-"
 ">'%s' dans %s"
 
-#: merge-recursive.c:1379
+#: merge-recursive.c:1733
 #, c-format
 msgid "Renaming %s to %s and %s to %s instead"
 msgstr "Renommage de %s en %s et de %s en %s à la place"
 
-#: merge-recursive.c:1582
+#: merge-recursive.c:1745
+#, c-format
+msgid "Refusing to lose untracked file at %s, even though it's in the way."
+msgstr "Refus de perdre le fichier non suivi %s, même s'il gêne."
+
+#: merge-recursive.c:1951
+#, c-format
+msgid ""
+"CONFLICT (directory rename split): Unclear where to place %s because "
+"directory %s was renamed to multiple other directories, with no destination "
+"getting a majority of the files."
+msgstr ""
+"CONFLIT (renommage de répertoire coupé) : la place de %s n'est pas claire "
+"parce que le répertoire %s a été renommé en plusieurs autres répertoires, "
+"sans aucune destination récupérant la majorité des fichiers."
+
+#: merge-recursive.c:1983
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
+"implicit directory rename(s) putting the following path(s) there: %s."
+msgstr ""
+"CONFLIT (renommage implicite de répertoire) : le répertoire/fichier %s gêne "
+"des renommages implicites de répertoire déplaçant les chemins suivants : %s."
+
+#: merge-recursive.c:1993
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
+"implicit directory renames tried to put these paths there: %s"
+msgstr ""
+"CONFLIT (renommage implicite de répertoire) : impossible de transformer "
+"plusieurs chemins sur %s ; les chemins concernés sont : %s"
+
+#: merge-recursive.c:2085
+#, c-format
+msgid ""
+"CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
+">%s in %s"
+msgstr ""
+"CONFLIT (renommage/renommage) : renommage du répertoire %s->%s dans %s. "
+"Renommage de répertoire %s->%s dans %s"
+
+#: merge-recursive.c:2330
+#, c-format
+msgid ""
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
+msgstr ""
+"AVERTISSEMENT : ne renomme pas %s->%s dans %s, parce que %s lui-même a été "
+"renommé."
+
+#: merge-recursive.c:2736
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s. %s added in %s"
 msgstr ""
 "CONFLIT (renommage/ajout) : Renommage de %s->%s dans %s. %s ajouté dans %s"
 
-#: merge-recursive.c:1597
+#: merge-recursive.c:2751
 #, c-format
 msgid "Adding merged %s"
 msgstr "Ajout de %s fusionné"
 
-#: merge-recursive.c:1604 merge-recursive.c:1834
+#: merge-recursive.c:2758 merge-recursive.c:3089
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Ajout plutôt comme %s"
 
-#: merge-recursive.c:1661
+#: merge-recursive.c:2914
 #, c-format
 msgid "cannot read object %s"
 msgstr "impossible de lire l'objet %s"
 
-#: merge-recursive.c:1664
+#: merge-recursive.c:2917
 #, c-format
 msgid "object %s is not a blob"
 msgstr "l'objet %s n'est pas un blob"
 
-#: merge-recursive.c:1733
+#: merge-recursive.c:2986
 msgid "modify"
 msgstr "modification"
 
-#: merge-recursive.c:1733
+#: merge-recursive.c:2986
 msgid "modified"
 msgstr "modifié"
 
-#: merge-recursive.c:1743
+#: merge-recursive.c:2997
 msgid "content"
 msgstr "contenu"
 
-#: merge-recursive.c:1750
+#: merge-recursive.c:3004
 msgid "add/add"
 msgstr "ajout/ajout"
 
-#: merge-recursive.c:1786
+#: merge-recursive.c:3046
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "%s sauté (fusion identique à l'existant)"
 
-#: merge-recursive.c:1800
-#, c-format
-msgid "Auto-merging %s"
-msgstr "Fusion automatique de %s"
-
-#: merge-recursive.c:1804 git-submodule.sh:879
+#: merge-recursive.c:3055 git-submodule.sh:895
 msgid "submodule"
 msgstr "sous-module"
 
-#: merge-recursive.c:1805
+#: merge-recursive.c:3056
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr "CONFLIT (%s) : Conflit de fusion dans %s"
 
-#: merge-recursive.c:1899
+#: merge-recursive.c:3178
 #, c-format
 msgid "Removing %s"
 msgstr "Suppression de %s"
 
-#: merge-recursive.c:1925
+#: merge-recursive.c:3204
 msgid "file/directory"
 msgstr "fichier/répertoire"
 
-#: merge-recursive.c:1931
+#: merge-recursive.c:3210
 msgid "directory/file"
 msgstr "répertoire/fichier"
 
-#: merge-recursive.c:1938
+#: merge-recursive.c:3217
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
 msgstr ""
 "CONFLIT (%s) : Il y a un répertoire nommé %s dans %s. Ajout de %s comme %s"
 
-#: merge-recursive.c:1947
+#: merge-recursive.c:3226
 #, c-format
 msgid "Adding %s"
 msgstr "Ajout de %s"
 
-#: merge-recursive.c:1987
+#: merge-recursive.c:3267
 #, c-format
 msgid "Dirty index: cannot merge (dirty: %s)"
 msgstr "Index sale : fusion impossible (sales : %s)"
 
-#: merge-recursive.c:1991
+#: merge-recursive.c:3271
 msgid "Already up to date!"
 msgstr "Déjà à jour !"
 
-#: merge-recursive.c:2000
+#: merge-recursive.c:3280
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr "échec de fusion des arbres %s et %s"
 
-#: merge-recursive.c:2097
+#: merge-recursive.c:3379
 msgid "Merging:"
 msgstr "Fusion :"
 
-#: merge-recursive.c:2110
+#: merge-recursive.c:3392
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] "%u ancêtre commun trouvé :"
 msgstr[1] "%u ancêtres communs trouvés :"
 
-#: merge-recursive.c:2149
+#: merge-recursive.c:3431
 msgid "merge returned no commit"
 msgstr "la fusion n'a pas retourné de commit"
 
-#: merge-recursive.c:2212
+#: merge-recursive.c:3495
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "Impossible d'analyser l'objet '%s'"
 
-#: merge-recursive.c:2228 builtin/merge.c:657 builtin/merge.c:816
+#: merge-recursive.c:3511 builtin/merge.c:659 builtin/merge.c:816
 msgid "Unable to write index."
 msgstr "Impossible d'écrire l'index."
 
@@ -2508,31 +2793,31 @@ msgstr "Refus de réécrire des notes dans %s (hors de refs/notes/)"
 msgid "Bad %s value: '%s'"
 msgstr "Mauvaise valeur de %s : '%s'"
 
-#: object.c:239
+#: object.c:242
 #, c-format
 msgid "unable to parse object: %s"
 msgstr "impossible d'analyser l'objet : %s"
 
-#: packfile.c:561
+#: packfile.c:563
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "offset avant la fin du fichier paquet (.idx cassé ?)"
 
-#: packfile.c:1694
+#: packfile.c:1742
 #, 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:1698
+#: packfile.c:1746
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr ""
 "offset au delà de la fin de l'index de paquet pour %s (index tronqué ?)"
 
-#: parse-options.c:619
+#: parse-options.c:621
 msgid "..."
 msgstr "..."
 
-#: parse-options.c:638
+#: parse-options.c:640
 #, c-format
 msgid "usage: %s"
 msgstr "usage : %s"
@@ -2540,26 +2825,31 @@ msgstr "usage : %s"
 #. TRANSLATORS: the colon here should align with the
 #. one in "usage: %s" translation.
 #.
-#: parse-options.c:644
+#: parse-options.c:646
 #, c-format
 msgid "   or: %s"
 msgstr "   ou : %s"
 
-#: parse-options.c:647
+#: parse-options.c:649
 #, c-format
 msgid "    %s"
 msgstr "    %s"
 
-#: parse-options.c:686
+#: parse-options.c:688
 msgid "-NUM"
 msgstr "-NUM"
 
-#: parse-options-cb.c:108
+#: parse-options-cb.c:44
+#, c-format
+msgid "malformed expiration date '%s'"
+msgstr "date d'expiration malformée : '%s'"
+
+#: parse-options-cb.c:112
 #, c-format
 msgid "malformed object name '%s'"
 msgstr "nom d'objet malformé '%s'"
 
-#: path.c:891
+#: path.c:892
 #, c-format
 msgid "Could not make %s writable by group"
 msgstr "Impossible de rendre %s inscriptible pour le groupe"
@@ -2647,7 +2937,7 @@ msgstr "le chemin '%s' est au-delà d'un lien symbolique"
 msgid "unable to parse --pretty format"
 msgstr "impossible d'analyser le format --pretty"
 
-#: read-cache.c:1473
+#: read-cache.c:1500
 #, c-format
 msgid ""
 "index.version set, but the value is invalid.\n"
@@ -2656,7 +2946,7 @@ msgstr ""
 "version d'index renseignée, mais la valeur est invalide.\n"
 "Utilisation de la version %i"
 
-#: read-cache.c:1483
+#: read-cache.c:1510
 #, c-format
 msgid ""
 "GIT_INDEX_VERSION set, but the value is invalid.\n"
@@ -2665,53 +2955,54 @@ msgstr ""
 "GIT_INDEX_VERSION est renseigné, mais la valeur est invalide.\n"
 "Utilisation de la version %i"
 
-#: read-cache.c:2375 sequencer.c:3248 wrapper.c:658 builtin/merge.c:1049
+#: read-cache.c:2404 sequencer.c:4338 wrapper.c:658 builtin/merge.c:1048
 #, c-format
 msgid "could not close '%s'"
 msgstr "impossible de fermer '%s'"
 
-#: read-cache.c:2448 sequencer.c:1900 sequencer.c:2627
+#: read-cache.c:2477 sequencer.c:2102 sequencer.c:3234
 #, c-format
 msgid "could not stat '%s'"
 msgstr "stat impossible de '%s'"
 
-#: read-cache.c:2461
+#: read-cache.c:2490
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr "impossible d'ouvrir le répertoire git : %s"
 
-#: read-cache.c:2473
+#: read-cache.c:2502
 #, c-format
 msgid "unable to unlink: %s"
 msgstr "échec lors de l'unlink : %s"
 
-#: refs.c:706
+#: refs.c:732 sequencer.c:4334 sequencer.c:4393 wrapper.c:225 wrapper.c:395
+#: builtin/am.c:779
 #, c-format
-msgid "Could not open '%s' for writing"
-msgstr "Impossible d'ouvrir '%s' en écriture"
+msgid "could not open '%s' for writing"
+msgstr "impossible d'ouvrir '%s' en écriture"
 
-#: refs.c:1850
+#: refs.c:1880
 msgid "ref updates forbidden inside quarantine environment"
 msgstr "mises à jour des références interdites en environnement de quarantaine"
 
-#: refs/files-backend.c:1189
+#: refs/files-backend.c:1191
 #, c-format
 msgid "could not remove reference %s"
 msgstr "impossible de supprimer la référence %s"
 
-#: refs/files-backend.c:1203 refs/packed-backend.c:1528
-#: refs/packed-backend.c:1538
+#: refs/files-backend.c:1205 refs/packed-backend.c:1531
+#: refs/packed-backend.c:1541
 #, c-format
 msgid "could not delete reference %s: %s"
 msgstr "Impossible de supprimer la référence %s : %s"
 
-#: refs/files-backend.c:1206 refs/packed-backend.c:1541
+#: refs/files-backend.c:1208 refs/packed-backend.c:1544
 #, c-format
 msgid "could not delete references: %s"
 msgstr "impossible de supprimer les références : %s"
 
 # à priori on parle d'une branche ici
-#: ref-filter.c:35 wt-status.c:1842
+#: ref-filter.c:35 wt-status.c:1850
 msgid "gone"
 msgstr "disparue"
 
@@ -2730,157 +3021,162 @@ msgstr "en retard de %d"
 msgid "ahead %d, behind %d"
 msgstr "en avance de %d, en retard de %d"
 
-#: ref-filter.c:107
+#: ref-filter.c:121
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr "format attendu : %%(color:<couleur>)"
 
-#: ref-filter.c:109
+#: ref-filter.c:123
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr "couleur non reconnue : %%(color:%s)"
 
-#: ref-filter.c:129
+#: ref-filter.c:145
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr "Valeur entière attendue refname:lstrip=%s"
 
-#: ref-filter.c:133
+#: ref-filter.c:149
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr "Valeur entière attendue refname:rstrip=%s"
 
-#: ref-filter.c:135
+#: ref-filter.c:151
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr "argument %%(%s) non reconnu : %s"
 
-#: ref-filter.c:184
+#: ref-filter.c:206
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr "%%(body) n'accepte pas d'argument"
 
-#: ref-filter.c:191
+#: ref-filter.c:215
 #, c-format
 msgid "%%(subject) does not take arguments"
 msgstr "%%(subject) n'accepte pas d'argument"
 
-#: ref-filter.c:209
+#: ref-filter.c:235
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr "argument %%(trailers) inconnu : %s"
 
-#: ref-filter.c:232
+#: ref-filter.c:264
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr "valeur positive attendue contents:lines=%s"
 
-#: ref-filter.c:234
+#: ref-filter.c:266
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr "argument %%(contents) non reconnu : %s"
 
-#: ref-filter.c:247
+#: ref-filter.c:281
 #, c-format
 msgid "positive value expected objectname:short=%s"
 msgstr "valeur positive attendue objectname:short=%s"
 
-#: ref-filter.c:251
+#: ref-filter.c:285
 #, c-format
 msgid "unrecognized %%(objectname) argument: %s"
 msgstr "argument %%(objectname) non reconnu : %s"
 
-#: ref-filter.c:278
+#: ref-filter.c:315
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr "format attendu : %%(align:<largeur>,<position>)"
 
-#: ref-filter.c:290
+#: ref-filter.c:327
 #, c-format
 msgid "unrecognized position:%s"
 msgstr "position non reconnue : %s"
 
-#: ref-filter.c:294
+#: ref-filter.c:334
 #, c-format
 msgid "unrecognized width:%s"
 msgstr "largeur non reconnue : %s"
 
-#: ref-filter.c:300
+#: ref-filter.c:343
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr "argument %%(align) non reconnu : %s"
 
-#: ref-filter.c:304
+#: ref-filter.c:351
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr "valeur positive attendue avec l'atome %%(align)"
 
-#: ref-filter.c:319
+#: ref-filter.c:369
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
 msgstr "argument %%(if) non reconnu : %s"
 
-#: ref-filter.c:409
+#: ref-filter.c:464
 #, c-format
 msgid "malformed field name: %.*s"
 msgstr "nom de champ malformé %.*s"
 
-#: ref-filter.c:435
+#: ref-filter.c:491
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr "nom de champ inconnu : %.*s"
 
-#: ref-filter.c:547
+#: ref-filter.c:608
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr "format : atome %%(if) utilisé sans un atome %%(then)"
 
-#: ref-filter.c:607
+#: ref-filter.c:671
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr "format : atome %%(then) utilisé sans un atome %%(if)"
 
-#: ref-filter.c:609
+#: ref-filter.c:673
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr "format : atome %%(then) utilisé plus d'une fois"
 
-#: ref-filter.c:611
+#: ref-filter.c:675
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr "format: atome %%(then) utilisé après %%(else)"
 
-#: ref-filter.c:637
+#: ref-filter.c:703
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr "format : atome %%(else) utilisé sans un atome %%(if)"
 
-#: ref-filter.c:639
+#: ref-filter.c:705
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr "format : atome %%(else) utilisé sans un atome %%(then)"
 
-#: ref-filter.c:641
+#: ref-filter.c:707
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr "format : atome %%(else) utilisé plus d'une fois"
 
-#: ref-filter.c:654
+#: ref-filter.c:722
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr "format : atome %%(end) utilisé sans atome correspondant"
 
-#: ref-filter.c:709
+#: ref-filter.c:779
 #, c-format
 msgid "malformed format string %s"
 msgstr "Chaîne de formatage mal formée %s"
 
-#: ref-filter.c:1313
+#: ref-filter.c:1387
 #, c-format
 msgid "(no branch, rebasing %s)"
 msgstr "(aucune branche, rebasage de %s)"
 
-#: ref-filter.c:1316
+#: ref-filter.c:1390
+#, c-format
+msgid "(no branch, rebasing detached HEAD %s)"
+msgstr "(aucune branche, rebasage de la HEAD détachée %s)"
+
+#: ref-filter.c:1393
 #, c-format
 msgid "(no branch, bisect started on %s)"
 msgstr "(aucune branche, bisect a démarré sur %s)"
@@ -2888,7 +3184,7 @@ msgstr "(aucune branche, bisect a démarré sur %s)"
 #. TRANSLATORS: make sure this matches "HEAD
 #. detached at " in wt-status.c
 #.
-#: ref-filter.c:1324
+#: ref-filter.c:1401
 #, c-format
 msgid "(HEAD detached at %s)"
 msgstr "(HEAD détachée sur %s)"
@@ -2896,150 +3192,150 @@ msgstr "(HEAD détachée sur %s)"
 #. TRANSLATORS: make sure this matches "HEAD
 #. detached from " in wt-status.c
 #.
-#: ref-filter.c:1331
+#: ref-filter.c:1408
 #, c-format
 msgid "(HEAD detached from %s)"
 msgstr "(HEAD détachée depuis %s)"
 
-#: ref-filter.c:1335
+#: ref-filter.c:1412
 msgid "(no branch)"
 msgstr "(aucune branche)"
 
-#: ref-filter.c:1364
+#: ref-filter.c:1442
 #, c-format
 msgid "missing object %s for %s"
 msgstr "objet manquant %s pour %s"
 
-#: ref-filter.c:1367
+#: ref-filter.c:1445
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr "echec de parse_object_buffer sur %s pour %s"
 
-#: ref-filter.c:1819
+#: ref-filter.c:1902
 #, c-format
 msgid "malformed object at '%s'"
 msgstr "objet malformé à '%s'"
 
-#: ref-filter.c:1886
+#: ref-filter.c:1984
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr "réf avec un nom cassé %s ignoré"
 
-#: ref-filter.c:1891
+#: ref-filter.c:1989
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "réf cassé %s ignoré"
 
-#: ref-filter.c:2152
+#: ref-filter.c:2261
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr "format: atome %%(end) manquant"
 
-#: ref-filter.c:2246
+#: ref-filter.c:2365
 #, c-format
 msgid "malformed object name %s"
 msgstr "nom d'objet malformé %s"
 
-#: remote.c:795
+#: remote.c:605
 #, c-format
 msgid "Cannot fetch both %s and %s to %s"
 msgstr "Impossible de récupérer à la fois %s et %s pour %s"
 
-#: remote.c:799
+#: remote.c:609
 #, c-format
 msgid "%s usually tracks %s, not %s"
 msgstr "%s suit habituellement %s, pas %s"
 
-#: remote.c:803
+#: remote.c:613
 #, c-format
 msgid "%s tracks both %s and %s"
 msgstr "%s suit à la fois %s et %s"
 
-#: remote.c:811
+#: remote.c:621
 msgid "Internal error"
 msgstr "Erreur interne"
 
-#: remote.c:1726 remote.c:1828
+#: remote.c:1534 remote.c:1635
 msgid "HEAD does not point to a branch"
 msgstr "HEAD ne pointe pas sur une branche"
 
-#: remote.c:1735
+#: remote.c:1543
 #, c-format
 msgid "no such branch: '%s'"
 msgstr "pas de branche '%s'"
 
-#: remote.c:1738
+#: remote.c:1546
 #, c-format
 msgid "no upstream configured for branch '%s'"
 msgstr "aucune branche amont configurée pour la branche '%s'"
 
-#: remote.c:1744
+#: remote.c:1552
 #, c-format
 msgid "upstream branch '%s' not stored as a remote-tracking branch"
 msgstr "la branche amont '%s' n'est pas stockée comme branche de suivi"
 
-#: remote.c:1759
+#: remote.c:1567
 #, c-format
 msgid "push destination '%s' on remote '%s' has no local tracking branch"
 msgstr ""
 "la destination de poussée '%s' sur le serveur distant '%s' n'a pas de "
 "branche locale de suivi"
 
-#: remote.c:1771
+#: remote.c:1579
 #, c-format
 msgid "branch '%s' has no remote for pushing"
 msgstr "la branche '%s' n'a aucune branche distante de poussée"
 
-#: remote.c:1782
+#: remote.c:1589
 #, c-format
 msgid "push refspecs for '%s' do not include '%s'"
 msgstr "les références de spec pour '%s' n'incluent pas '%s'"
 
-#: remote.c:1795
+#: remote.c:1602
 msgid "push has no destination (push.default is 'nothing')"
 msgstr "la poussée n'a pas de destination (push.default vaut 'nothing')"
 
-#: remote.c:1817
+#: remote.c:1624
 msgid "cannot resolve 'simple' push to a single destination"
 msgstr ""
 "impossible de résoudre une poussée 'simple' pour une destination unique"
 
-#: remote.c:2132
+#: remote.c:1939
 #, c-format
 msgid "Your branch is based on '%s', but the upstream is gone.\n"
 msgstr "Votre branche est basée sur '%s', mais la branche amont a disparu.\n"
 
-#: remote.c:2136
+#: remote.c:1943
 msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
 msgstr "  (utilisez \"git branch --unset-upstream\" pour corriger)\n"
 
-#: remote.c:2139
+#: remote.c:1946
 #, c-format
 msgid "Your branch is up to date with '%s'.\n"
 msgstr "Votre branche est à jour avec '%s'.\n"
 
-#: remote.c:2143
+#: remote.c:1950
 #, c-format
 msgid "Your branch and '%s' refer to different commits.\n"
 msgstr "Votre branche et '%s' font référence à des commits différents.\n"
 
-#: remote.c:2146
+#: remote.c:1953
 #, c-format
 msgid "  (use \"%s\" for details)\n"
 msgstr "  (utilisez \"%s\" pour plus de détails)\n"
 
-#: remote.c:2150
+#: remote.c:1957
 #, c-format
 msgid "Your branch is ahead of '%s' by %d commit.\n"
 msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
 msgstr[0] "Votre branche est en avance sur '%s' de %d commit.\n"
 msgstr[1] "Votre branche est en avance sur '%s' de %d commits.\n"
 
-#: remote.c:2156
+#: remote.c:1963
 msgid "  (use \"git push\" to publish your local commits)\n"
 msgstr "  (utilisez \"git push\" pour publier vos commits locaux)\n"
 
-#: remote.c:2159
+#: remote.c:1966
 #, c-format
 msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
 msgid_plural ""
@@ -3051,11 +3347,11 @@ msgstr[1] ""
 "Votre branche est en retard sur '%s' de %d commits, et peut être mise à jour "
 "en avance rapide.\n"
 
-#: remote.c:2167
+#: remote.c:1974
 msgid "  (use \"git pull\" to update your local branch)\n"
 msgstr "  (utilisez \"git pull\" pour mettre à jour votre branche locale)\n"
 
-#: remote.c:2170
+#: remote.c:1977
 #, c-format
 msgid ""
 "Your branch and '%s' have diverged,\n"
@@ -3070,29 +3366,29 @@ msgstr[1] ""
 "Votre branche et '%s' ont divergé,\n"
 "et ont %d et %d commits différents chacune respectivement.\n"
 
-#: remote.c:2180
+#: remote.c:1987
 msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
 msgstr ""
 "  (utilisez \"git pull\" pour fusionner la branche distante dans la vôtre)\n"
 
-#: revision.c:2277
+#: revision.c:2289
 msgid "your current branch appears to be broken"
 msgstr "votre branche actuelle semble cassée"
 
-#: revision.c:2280
+#: revision.c:2292
 #, 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:2477
+#: revision.c:2489
 msgid "--first-parent is incompatible with --bisect"
 msgstr "--first-parent est incompatible avec --bisect"
 
-#: run-command.c:731
+#: run-command.c:728
 msgid "open /dev/null failed"
 msgstr "échec de l'ouverture de /dev/null"
 
-#: run-command.c:1274
+#: run-command.c:1271
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
@@ -3104,7 +3400,9 @@ msgstr ""
 
 #: send-pack.c:141
 msgid "unexpected flush packet while reading remote unpack status"
-msgstr "paquet de nettoyage inattendu pendant la lecture de l'état de dépaquetage distant"
+msgstr ""
+"paquet de nettoyage inattendu pendant la lecture de l'état de dépaquetage "
+"distant"
 
 #: send-pack.c:143
 #, c-format
@@ -3140,29 +3438,34 @@ msgstr "Le receveur ne gère pas les poussées avec --atomic"
 msgid "the receiving end does not support push options"
 msgstr "Le receveur ne gère pas les options de poussées"
 
-#: sequencer.c:158
+#: sequencer.c:175
 #, c-format
 msgid "invalid commit message cleanup mode '%s'"
 msgstr "mode de nettoyage invalide de message de validation '%s'"
 
-#: sequencer.c:267
+#: sequencer.c:275
+#, c-format
+msgid "could not delete '%s'"
+msgstr "Impossible de supprimer '%s'"
+
+#: sequencer.c:301
 msgid "revert"
 msgstr "revert"
 
-#: sequencer.c:269
+#: sequencer.c:303
 msgid "cherry-pick"
 msgstr "cherry-pick"
 
-#: sequencer.c:271
+#: sequencer.c:305
 msgid "rebase -i"
 msgstr "rebase -i"
 
-#: sequencer.c:273
+#: sequencer.c:307
 #, c-format
 msgid "Unknown action: %d"
 msgstr "Action inconnue : %d"
 
-#: sequencer.c:330
+#: sequencer.c:364
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'"
@@ -3170,7 +3473,7 @@ msgstr ""
 "après résolution des conflits, marquez les chemins corrigés\n"
 "avec 'git add <chemins>' ou 'git rm <chemins>'"
 
-#: sequencer.c:333
+#: sequencer.c:367
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'\n"
@@ -3180,43 +3483,45 @@ msgstr ""
 "avec 'git add <chemins>' ou 'git rm <chemins>'\n"
 "puis validez le résultat avec 'git commit'"
 
-#: sequencer.c:346 sequencer.c:2245
+#: sequencer.c:380 sequencer.c:2468
 #, c-format
 msgid "could not lock '%s'"
 msgstr "impossible de verrouiller '%s'"
 
-#: sequencer.c:349 sequencer.c:2124 sequencer.c:2250 sequencer.c:2264
-#: sequencer.c:3246 sequencer.c:3310 wrapper.c:656
+#: sequencer.c:382 sequencer.c:2346 sequencer.c:2472 sequencer.c:2486
+#: sequencer.c:2694 sequencer.c:4336 sequencer.c:4399 wrapper.c:656
 #, c-format
 msgid "could not write to '%s'"
 msgstr "impossible d'écrire dans '%s'"
 
-#: sequencer.c:353
+#: sequencer.c:387
 #, c-format
 msgid "could not write eol to '%s'"
 msgstr "impossible d'écrire la fin de ligne dans '%s'"
 
-#: sequencer.c:356 sequencer.c:2128 sequencer.c:2252
+#: sequencer.c:392 sequencer.c:2351 sequencer.c:2474 sequencer.c:2488
+#: sequencer.c:2702
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr "échec lors de la finalisation de '%s'"
 
-#: sequencer.c:379 sequencer.c:1340 sequencer.c:2148 builtin/am.c:259
-#: builtin/commit.c:722 builtin/merge.c:1047
+#: sequencer.c:415 sequencer.c:804 sequencer.c:1493 sequencer.c:2371
+#: sequencer.c:2684 sequencer.c:2788 builtin/am.c:259 builtin/commit.c:727
+#: builtin/merge.c:1046
 #, c-format
 msgid "could not read '%s'"
 msgstr "impossible de lire '%s'"
 
-#: sequencer.c:405
+#: sequencer.c:441
 #, c-format
 msgid "your local changes would be overwritten by %s."
 msgstr "vos modifications locales seraient écrasées par %s."
 
-#: sequencer.c:409
+#: sequencer.c:445
 msgid "commit your changes or stash them to proceed."
 msgstr "validez vos modifications ou les remiser pour continuer."
 
-#: sequencer.c:438
+#: sequencer.c:474
 #, c-format
 msgid "%s: fast-forward"
 msgstr "%s : avance rapide"
@@ -3224,20 +3529,20 @@ msgstr "%s : avance rapide"
 #. TRANSLATORS: %s will be "revert", "cherry-pick" or
 #. "rebase -i".
 #.
-#: sequencer.c:526
+#: sequencer.c:563
 #, c-format
 msgid "%s: Unable to write new index file"
 msgstr "%s: Impossible d'écrire le nouveau fichier index"
 
-#: sequencer.c:542
-msgid "could not resolve HEAD commit"
-msgstr "impossible de résoudre le commit HEAD"
-
-#: sequencer.c:562
+#: sequencer.c:579
 msgid "unable to update cache tree"
 msgstr "impossible de mettre à jour l'arbre de cache"
 
-#: sequencer.c:658
+#: sequencer.c:592
+msgid "could not resolve HEAD commit"
+msgstr "impossible de résoudre le commit HEAD"
+
+#: sequencer.c:749
 #, c-format
 msgid ""
 "you have staged changes in your working tree\n"
@@ -3266,11 +3571,15 @@ msgstr ""
 "\n"
 "  git rebase --continue\n"
 
-#: sequencer.c:915
+#: sequencer.c:818
+msgid "writing root commit"
+msgstr "écriture du commit racine"
+
+#: sequencer.c:1043
 msgid "'prepare-commit-msg' hook failed"
 msgstr "échec du crochet 'prepare-commit-msg'"
 
-#: sequencer.c:922
+#: sequencer.c:1050
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -3298,7 +3607,7 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:935
+#: sequencer.c:1063
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -3324,330 +3633,316 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:975
+#: sequencer.c:1103
 msgid "couldn't look up newly created commit"
 msgstr "impossible de retrouver le commit nouvellement créé"
 
-#: sequencer.c:977
+#: sequencer.c:1105
 msgid "could not parse newly created commit"
 msgstr "impossible d'analyser le commit nouvellement créé"
 
-#: sequencer.c:1023
+#: sequencer.c:1151
 msgid "unable to resolve HEAD after creating commit"
 msgstr "impossible de résoudre HEAD après création du commit"
 
-#: sequencer.c:1025
+#: sequencer.c:1153
 msgid "detached HEAD"
 msgstr "HEAD détachée"
 
-#: sequencer.c:1029
+#: sequencer.c:1157
 msgid " (root-commit)"
 msgstr " (commit racine)"
 
-#: sequencer.c:1050
+#: sequencer.c:1178
 msgid "could not parse HEAD"
 msgstr "impossible de lire HEAD"
 
-#: sequencer.c:1052
+#: sequencer.c:1180
 #, c-format
 msgid "HEAD %s is not a commit!"
 msgstr "HEAD %s n'est pas un commit !"
 
-#: sequencer.c:1056 builtin/commit.c:1491
+#: sequencer.c:1184 builtin/commit.c:1528
 msgid "could not parse HEAD commit"
 msgstr "impossible d'analyser le commit HEAD"
 
-#: sequencer.c:1107 sequencer.c:1673
+#: sequencer.c:1235 sequencer.c:1832
 msgid "unable to parse commit author"
 msgstr "impossible d'analyser l'auteur du commit"
 
-#: sequencer.c:1117 builtin/am.c:1630 builtin/merge.c:643
+#: sequencer.c:1245 builtin/am.c:1630 builtin/merge.c:645
 msgid "git write-tree failed to write a tree"
 msgstr "git write-tree a échoué à écrire un arbre"
 
-#: sequencer.c:1134 sequencer.c:1186
+#: sequencer.c:1262 sequencer.c:1317
 #, c-format
 msgid "unable to read commit message from '%s'"
 msgstr "impossible de lire le message de validation de '%s'"
 
-#: sequencer.c:1154 builtin/am.c:1650 builtin/commit.c:1594 builtin/merge.c:826
-#: builtin/merge.c:851
+#: sequencer.c:1284 builtin/am.c:1650 builtin/commit.c:1631 builtin/merge.c:825
+#: builtin/merge.c:850
 msgid "failed to write commit object"
 msgstr "échec de l'écriture de l'objet commit"
 
-#: sequencer.c:1213
+#: sequencer.c:1344
 #, c-format
 msgid "could not parse commit %s"
 msgstr "impossible d'analyser le commit %s"
 
-#: sequencer.c:1218
+#: sequencer.c:1349
 #, c-format
 msgid "could not parse parent commit %s"
 msgstr "impossible d'analyser le commit parent %s"
 
-#: sequencer.c:1347
-#, c-format
-msgid ""
-"unexpected 1st line of squash message:\n"
-"\n"
-"\t%.*s"
-msgstr ""
-"première ligne de message de compression inattendue :\n"
-"\n"
-"\t%.*s"
-
-#: sequencer.c:1353
-#, c-format
-msgid ""
-"invalid 1st line of squash message:\n"
-"\n"
-"\t%.*s"
-msgstr ""
-"première ligne de message de compression invalide :\n"
-"\n"
-"\t%.*s"
-
-#: sequencer.c:1359 sequencer.c:1384
+#: sequencer.c:1500 sequencer.c:1525
 #, c-format
 msgid "This is a combination of %d commits."
 msgstr "Ceci est la combinaison de %d commits."
 
-#: sequencer.c:1368 sequencer.c:3265
+#: sequencer.c:1510 sequencer.c:4355
 msgid "need a HEAD to fixup"
 msgstr "une HEAD est nécessaire à la correction"
 
-#: sequencer.c:1370
+#: sequencer.c:1512 sequencer.c:2729
 msgid "could not read HEAD"
 msgstr "Impossible de lire HEAD"
 
-#: sequencer.c:1372
+#: sequencer.c:1514
 msgid "could not read HEAD's commit message"
 msgstr "impossible de lire le message de validation de HEAD"
 
-#: sequencer.c:1378
+#: sequencer.c:1520
 #, c-format
 msgid "cannot write '%s'"
 msgstr "impossible d'écrire '%s'"
 
-#: sequencer.c:1387 git-rebase--interactive.sh:452
+#: sequencer.c:1527 git-rebase--interactive.sh:457
 msgid "This is the 1st commit message:"
 msgstr "Ceci est le premier message de validation :"
 
-#: sequencer.c:1395
+#: sequencer.c:1535
 #, c-format
 msgid "could not read commit message of %s"
 msgstr "impossible de lire le message de validation de %s"
 
-#: sequencer.c:1402
+#: sequencer.c:1542
 #, c-format
 msgid "This is the commit message #%d:"
 msgstr "Ceci est le message de validation numéro %d :"
 
-#: sequencer.c:1407
+#: sequencer.c:1548
 #, c-format
 msgid "The commit message #%d will be skipped:"
 msgstr "Le message de validation %d sera ignoré :"
 
-#: sequencer.c:1412
+#: sequencer.c:1553
 #, c-format
 msgid "unknown command: %d"
 msgstr "commande inconnue : %d"
 
-#: sequencer.c:1479
+#: sequencer.c:1631
 msgid "your index file is unmerged."
 msgstr "votre fichier d'index n'est pas fusionné."
 
-#: sequencer.c:1498
+#: sequencer.c:1638
+msgid "cannot fixup root commit"
+msgstr "impossible de réparer le commit racine"
+
+#: sequencer.c:1657
 #, c-format
 msgid "commit %s is a merge but no -m option was given."
 msgstr "le commit %s est une fusion mais l'option -m n'a pas été spécifiée."
 
-#: sequencer.c:1506
+#: sequencer.c:1665
 #, c-format
 msgid "commit %s does not have parent %d"
 msgstr "le commit %s n'a pas de parent %d"
 
-#: sequencer.c:1510
+#: sequencer.c:1669
 #, c-format
 msgid "mainline was specified but commit %s is not a merge."
 msgstr ""
 "une branche principale a été spécifiée mais le commit %s n'est pas une "
 "fusion."
 
-#: sequencer.c:1516
+#: sequencer.c:1675
 #, c-format
 msgid "cannot get commit message for %s"
 msgstr "impossible d'obtenir un message de validation pour %s"
 
 #. TRANSLATORS: The first %s will be a "todo" command like
 #. "revert" or "pick", the second %s a SHA1.
-#: sequencer.c:1535
+#: sequencer.c:1694
 #, c-format
 msgid "%s: cannot parse parent commit %s"
 msgstr "%s : impossible d'analyser le commit parent %s"
 
-#: sequencer.c:1600 sequencer.c:2397
+#: sequencer.c:1759
 #, c-format
 msgid "could not rename '%s' to '%s'"
 msgstr "impossible de renommer '%s' en '%s'"
 
-#: sequencer.c:1654
+#: sequencer.c:1813
 #, c-format
 msgid "could not revert %s... %s"
 msgstr "impossible d'annuler %s... %s"
 
-#: sequencer.c:1655
+#: sequencer.c:1814
 #, c-format
 msgid "could not apply %s... %s"
 msgstr "impossible d'appliquer %s... %s"
 
-#: sequencer.c:1702
+#: sequencer.c:1864
 msgid "empty commit set passed"
 msgstr "l'ensemble de commits spécifié est vide"
 
-#: sequencer.c:1712
+#: sequencer.c:1874
 #, c-format
 msgid "git %s: failed to read the index"
 msgstr "git %s : échec à la lecture de l'index"
 
-#: sequencer.c:1718
+#: sequencer.c:1881
 #, c-format
 msgid "git %s: failed to refresh the index"
 msgstr "git %s : échec du rafraîchissement de l'index"
 
-#: sequencer.c:1792
+#: sequencer.c:1961
 #, c-format
 msgid "%s does not accept arguments: '%s'"
 msgstr "%s n'accepte pas d'argument : '%s'"
 
-#: sequencer.c:1801
+#: sequencer.c:1970
 #, c-format
 msgid "missing arguments for %s"
 msgstr "argument manquant pour %s"
 
-#: sequencer.c:1844
+#: sequencer.c:2029
 #, c-format
 msgid "invalid line %d: %.*s"
 msgstr "ligne %d invalide : %.*s"
 
-#: sequencer.c:1852
+#: sequencer.c:2037
 #, c-format
 msgid "cannot '%s' without a previous commit"
 msgstr "'%s' impossible avec le commit précédent"
 
-#: sequencer.c:1883 sequencer.c:3056 sequencer.c:3091
+#: sequencer.c:2085 sequencer.c:4138 sequencer.c:4173
 #, c-format
 msgid "could not read '%s'."
 msgstr "impossible de lire '%s'."
 
-#: sequencer.c:1906
+#: sequencer.c:2108
 msgid "please fix this using 'git rebase --edit-todo'."
 msgstr "veuillez corriger ceci en utilisant 'git rebase --edit-todo'."
 
-#: sequencer.c:1908
+#: sequencer.c:2110
 #, c-format
 msgid "unusable instruction sheet: '%s'"
 msgstr "feuille d'instruction inutilisable : '%s'"
 
-#: sequencer.c:1913
+#: sequencer.c:2115
 msgid "no commits parsed."
 msgstr "aucun commit analysé."
 
-#: sequencer.c:1924
+#: sequencer.c:2126
 msgid "cannot cherry-pick during a revert."
 msgstr "impossible de picorer pendant l'annulation d'un commit."
 
-#: sequencer.c:1926
+#: sequencer.c:2128
 msgid "cannot revert during a cherry-pick."
 msgstr "impossible d'annuler un commit pendant un picorage."
 
-#: sequencer.c:1993
+#: sequencer.c:2195
 #, c-format
 msgid "invalid key: %s"
 msgstr "clé invalide : %s"
 
-#: sequencer.c:1996
+#: sequencer.c:2198
 #, c-format
 msgid "invalid value for %s: %s"
 msgstr "valeur invalide pour %s : %s"
 
-#: sequencer.c:2062
+#: sequencer.c:2269
+msgid "unusable squash-onto"
+msgstr "\"écrase-sur\" inutilisable"
+
+#: sequencer.c:2285
 #, c-format
 msgid "malformed options sheet: '%s'"
 msgstr "feuille d'options malformée : %s"
 
-#: sequencer.c:2100
+#: sequencer.c:2323
 msgid "a cherry-pick or revert is already in progress"
 msgstr "un picorage ou un retour est déjà en cours"
 
-#: sequencer.c:2101
+#: sequencer.c:2324
 msgid "try \"git cherry-pick (--continue | --quit | --abort)\""
 msgstr "essayez \"git cherry-pick (--continue|--quit|-- abort)\""
 
-#: sequencer.c:2104
+#: sequencer.c:2327
 #, c-format
 msgid "could not create sequencer directory '%s'"
 msgstr "impossible de créer le répertoire de séquenceur '%s'"
 
-#: sequencer.c:2118
+#: sequencer.c:2341
 msgid "could not lock HEAD"
 msgstr "impossible de verrouiller HEAD"
 
-#: sequencer.c:2173 sequencer.c:2761
+#: sequencer.c:2396 sequencer.c:3403
 msgid "no cherry-pick or revert in progress"
 msgstr "aucun picorage ou retour en cours"
 
-#: sequencer.c:2175
+#: sequencer.c:2398
 msgid "cannot resolve HEAD"
 msgstr "impossible de résoudre HEAD"
 
-#: sequencer.c:2177 sequencer.c:2212
+#: sequencer.c:2400 sequencer.c:2435
 msgid "cannot abort from a branch yet to be born"
 msgstr "impossible d'abandonner depuis une branche non encore créée"
 
-#: sequencer.c:2198 builtin/grep.c:720
+#: sequencer.c:2421 builtin/grep.c:720
 #, c-format
 msgid "cannot open '%s'"
 msgstr "impossible d'ouvrir '%s'"
 
-#: sequencer.c:2200
+#: sequencer.c:2423
 #, c-format
 msgid "cannot read '%s': %s"
 msgstr "impossible de lire '%s' : %s"
 
-#: sequencer.c:2201
+#: sequencer.c:2424
 msgid "unexpected end of file"
 msgstr "fin de fichier inattendue"
 
-#: sequencer.c:2207
+#: sequencer.c:2430
 #, c-format
 msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
 msgstr "le fichier HEAD de préparation de picorage '%s' est corrompu"
 
-#: sequencer.c:2218
+#: sequencer.c:2441
 msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
 msgstr ""
 "Vous semblez avoir déplacé la HEAD. Pas de rembobinage, vérifiez votre HEAD !"
 
-#: sequencer.c:2324 sequencer.c:2679
+#: sequencer.c:2545 sequencer.c:3321
 #, c-format
 msgid "could not update %s"
 msgstr "impossible de mettre à jour %s"
 
-#: sequencer.c:2362 sequencer.c:2659
+#: sequencer.c:2583 sequencer.c:3301
 msgid "cannot read HEAD"
 msgstr "impossible de lire HEAD"
 
-#: sequencer.c:2402 builtin/difftool.c:639
+#: sequencer.c:2618 sequencer.c:2622 builtin/difftool.c:639
 #, c-format
 msgid "could not copy '%s' to '%s'"
 msgstr "impossible de copier '%s' vers '%s'"
 
-#: sequencer.c:2421
+#: sequencer.c:2641
 msgid "could not read index"
 msgstr "impossible de lire l'index"
 
-#: sequencer.c:2426
+#: sequencer.c:2646
 #, c-format
 msgid ""
 "execution failed: %s\n"
@@ -3662,11 +3957,11 @@ msgstr ""
 "git rebase --continue\n"
 "\n"
 
-#: sequencer.c:2432
+#: sequencer.c:2652
 msgid "and made changes to the index and/or the working tree\n"
 msgstr "et a mis à jour l'index ou l'arbre de travail\n"
 
-#: sequencer.c:2438
+#: sequencer.c:2658
 #, c-format
 msgid ""
 "execution succeeded: %s\n"
@@ -3683,17 +3978,62 @@ msgstr ""
 "  git rebase --continue\n"
 "\n"
 
-#: sequencer.c:2497
+#: sequencer.c:2771
+msgid "writing fake root commit"
+msgstr "écriture d'un commit racine bidon"
+
+#: sequencer.c:2776
+msgid "writing squash-onto"
+msgstr "écriture de 'écraser-sur'"
+
+#: sequencer.c:2811
+#, c-format
+msgid "failed to find tree of %s"
+msgstr "impossible de trouver l'arbre de %s"
+
+#: sequencer.c:2829
+msgid "could not write index"
+msgstr "impossible d'écrire l'index"
+
+#: sequencer.c:2861
+msgid "cannot merge without a current revision"
+msgstr "impossible de fusionner avec une révision courante"
+
+#: sequencer.c:2884
+#, c-format
+msgid "could not resolve '%s'"
+msgstr "impossible de résoudre '%s'"
+
+#: sequencer.c:2906
+#, c-format
+msgid "could not get commit message of '%s'"
+msgstr "impossible de lire le message de validation de '%s'"
+
+#: sequencer.c:2916 sequencer.c:2941
+#, c-format
+msgid "could not write '%s'"
+msgstr "impossible d'écrire '%s'"
+
+#: sequencer.c:3005
+#, c-format
+msgid "could not even attempt to merge '%.*s'"
+msgstr "impossible de seulement essayer de fusionner '%.*s'"
+
+#: sequencer.c:3021
+msgid "merge: Unable to write new index file"
+msgstr "fusion : Impossible d'écrire le nouveau fichier index"
+
+#: sequencer.c:3088
 #, c-format
 msgid "Applied autostash.\n"
 msgstr "Autoremisage appliqué.\n"
 
-#: sequencer.c:2509
+#: sequencer.c:3100
 #, c-format
 msgid "cannot store %s"
 msgstr "impossible de stocker %s"
 
-#: sequencer.c:2512 git-rebase.sh:178
+#: sequencer.c:3103 git-rebase.sh:188
 #, c-format
 msgid ""
 "Applying autostash resulted in conflicts.\n"
@@ -3704,52 +4044,69 @@ msgstr ""
 "Vos  modifications sont à l'abri dans la remise.\n"
 "Vous pouvez lancer \"git stash pop\" ou \"git stash drop\" à tout moment.\n"
 
-#: sequencer.c:2595
+#: sequencer.c:3134
+#, c-format
+msgid ""
+"Could not execute the todo command\n"
+"\n"
+"    %.*s\n"
+"It has been rescheduled; To edit the command before continuing, please\n"
+"edit the todo list first:\n"
+"\n"
+"    git rebase --edit-todo\n"
+"    git rebase --continue\n"
+msgstr ""
+"Impossible d'exécuter la commande\n"
+"\n"
+"    %.*s\n"
+"Elle a été reprogrammée ; pour éditer la commande avant de poursuivre,\n"
+"veuillez éditer la liste de commandes en premier :\n"
+"\n"
+"    git rebase --edit-todo\n"
+"    git rebase --continue\n"
+
+#: sequencer.c:3202
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
 msgstr "arrêt à %s... %.*s\n"
 
-#: sequencer.c:2637
+#: sequencer.c:3264
 #, c-format
 msgid "unknown command %d"
 msgstr "commande inconnue %d"
 
-#: sequencer.c:2667
+#: sequencer.c:3309
 msgid "could not read orig-head"
 msgstr "impossible de lire orig-head"
 
-#: sequencer.c:2672 sequencer.c:3262
+#: sequencer.c:3314 sequencer.c:4352
 msgid "could not read 'onto'"
 msgstr "impossible de lire 'onto'"
 
-#: sequencer.c:2686
+#: sequencer.c:3328
 #, c-format
 msgid "could not update HEAD to %s"
 msgstr "impossible de mettre à jour HEAD sur %s"
 
-#: sequencer.c:2770
+#: sequencer.c:3414
 msgid "cannot rebase: You have unstaged changes."
 msgstr "impossible de rebaser : vous avez des modifications non indexées."
 
-#: sequencer.c:2775
-msgid "could not remove CHERRY_PICK_HEAD"
-msgstr "impossible de supprimer CHERRY_PICK_HEAD"
-
-#: sequencer.c:2784
+#: sequencer.c:3423
 msgid "cannot amend non-existing commit"
 msgstr "impossible de corriger un commit non-existant"
 
-#: sequencer.c:2786
+#: sequencer.c:3425
 #, c-format
 msgid "invalid file: '%s'"
 msgstr "fichier invalide : '%s'"
 
-#: sequencer.c:2788
+#: sequencer.c:3427
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr "contenu invalide : '%s'"
 
-#: sequencer.c:2791
+#: sequencer.c:3430
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
@@ -3759,45 +4116,54 @@ msgstr ""
 "Vous avez des modifications non validées dans votre copie de travail.\n"
 "Veuillez les valider d'abord, puis relancer 'git rebase --continue'."
 
-#: sequencer.c:2801
+#: sequencer.c:3455 sequencer.c:3493
+#, c-format
+msgid "could not write file: '%s'"
+msgstr "impossible d'écrire le fichier : '%s'"
+
+#: sequencer.c:3508
+msgid "could not remove CHERRY_PICK_HEAD"
+msgstr "impossible de supprimer CHERRY_PICK_HEAD"
+
+#: sequencer.c:3515
 msgid "could not commit staged changes."
 msgstr "impossible de valider les modifications indexées."
 
-#: sequencer.c:2881
+#: sequencer.c:3612
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr "%s : impossible de picorer un %s"
 
-#: sequencer.c:2885
+#: sequencer.c:3616
 #, c-format
 msgid "%s: bad revision"
 msgstr "%s : mauvaise révision"
 
-#: sequencer.c:2918
+#: sequencer.c:3649
 msgid "can't revert as initial commit"
 msgstr "impossible d'annuler en tant que commit initial"
 
-#: sequencer.c:3023
+#: sequencer.c:4098
 msgid "make_script: unhandled options"
 msgstr "make_script : options non gérées"
 
-#: sequencer.c:3026
+#: sequencer.c:4101
 msgid "make_script: error preparing revisions"
 msgstr "make_script : erreur lors de la préparation des révisions"
 
-#: sequencer.c:3060 sequencer.c:3095
+#: sequencer.c:4142 sequencer.c:4177
 #, c-format
 msgid "unusable todo list: '%s'"
 msgstr "liste à faire inutilisable : '%s'"
 
-#: sequencer.c:3146
+#: sequencer.c:4236
 #, c-format
 msgid ""
 "unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
 msgstr ""
 "paramètre non reconnu %s pour l'option rebase.missingCommitsCheck. Ignoré."
 
-#: sequencer.c:3212
+#: sequencer.c:4302
 #, c-format
 msgid ""
 "Warning: some commits may have been dropped accidentally.\n"
@@ -3806,7 +4172,7 @@ msgstr ""
 "Attention : certains commits ont pu être accidentellement supprimés.\n"
 "Commits supprimés (du plus jeune au plus vieux) :\n"
 
-#: sequencer.c:3219
+#: sequencer.c:4309
 #, c-format
 msgid ""
 "To avoid this message, use \"drop\" to explicitly remove a commit.\n"
@@ -3824,7 +4190,7 @@ msgstr ""
 "Les comportements disponibles sont : ignore, warn, error.\n"
 "\n"
 
-#: sequencer.c:3231
+#: sequencer.c:4321
 #, c-format
 msgid ""
 "You can fix this with 'git rebase --edit-todo' and then run 'git rebase --"
@@ -3835,27 +4201,21 @@ msgstr ""
 "rebase --continue'.\n"
 "Ou vous pouvez abandonner le rebasage avec 'git rebase --abort'.\n"
 
-#: sequencer.c:3244 sequencer.c:3304 wrapper.c:225 wrapper.c:395
-#: builtin/am.c:779
-#, c-format
-msgid "could not open '%s' for writing"
-msgstr "impossible d'ouvrir '%s' en écriture"
-
-#: sequencer.c:3285
+#: sequencer.c:4375
 #, c-format
 msgid "could not parse commit '%s'"
 msgstr "impossible d'analyser le commit '%s'"
 
-#: sequencer.c:3401
+#: sequencer.c:4490
 msgid "the script was already rearranged."
 msgstr "le script a déjà été réarrangé."
 
-#: setup.c:122
+#: setup.c:123
 #, c-format
 msgid "'%s' is outside repository"
 msgstr "'%s' est hors du dépôt"
 
-#: setup.c:171
+#: setup.c:172
 #, c-format
 msgid ""
 "%s: no such path in the working tree.\n"
@@ -3865,7 +4225,7 @@ msgstr ""
 "Utilisez 'git <commande> -- <chemin>...' pour spécifier des chemins qui "
 "n'existent pas localement."
 
-#: setup.c:184
+#: setup.c:185
 #, c-format
 msgid ""
 "ambiguous argument '%s': unknown revision or path not in the working tree.\n"
@@ -3876,12 +4236,14 @@ msgstr ""
 "Utilisez '--' pour séparer les chemins des révisions, comme ceci :\n"
 "'git <commande> [<révision>...] -- [<chemin>...]'"
 
-#: setup.c:233
+#: setup.c:234
 #, c-format
 msgid "option '%s' must come before non-option arguments"
-msgstr "l'option '%s' doit être présente avant les arguments qui ne sont pas des options"
+msgstr ""
+"l'option '%s' doit être présente avant les arguments qui ne sont pas des "
+"options"
 
-#: setup.c:252
+#: setup.c:253
 #, c-format
 msgid ""
 "ambiguous argument '%s': both revision and filename\n"
@@ -3892,158 +4254,163 @@ msgstr ""
 "Utilisez '--' pour séparer les chemins des révisions, comme ceci :\n"
 "'git <commande> [<révision>...] -- [<chemin>...]'"
 
-#: setup.c:388
+#: setup.c:389
 msgid "unable to set up work tree using invalid config"
-msgstr "impossible de mettre en place le répertoire de travail en utilisant une configuration invalide"
+msgstr ""
+"impossible de mettre en place le répertoire de travail en utilisant une "
+"configuration invalide"
 
-#: setup.c:395
+#: setup.c:393
 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:506
+#: setup.c:503
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "Version attendue du dépôt git <= %d, %d trouvée"
 
-#: setup.c:514
+#: setup.c:511
 msgid "unknown repository extensions found:"
 msgstr "extensions de dépôt inconnues trouvées :"
 
-#: setup.c:533
+#: setup.c:530
 #, c-format
 msgid "error opening '%s'"
 msgstr "erreur à l'ouverture de '%s'"
 
-#: setup.c:535
+#: setup.c:532
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr "trop gros pour être une fichier .git : '%s'"
 
-#: setup.c:537
+#: setup.c:534
 #, c-format
 msgid "error reading %s"
 msgstr "erreur à la lecture de %s"
 
-#: setup.c:539
+#: setup.c:536
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "format de fichier git invalide : %s"
 
-#: setup.c:541
+#: setup.c:538
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "aucun chemin dans le fichier git : %s"
 
-#: setup.c:543
+#: setup.c:540
 #, c-format
 msgid "not a git repository: %s"
 msgstr "ce n'est pas un dépôt git : %s"
 
-#: setup.c:642
+#: setup.c:639
 #, c-format
 msgid "'$%s' too big"
 msgstr "'$%s' trop gros"
 
-#: setup.c:656
+#: setup.c:653
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "ce n'est pas un dépôt git : '%s'"
 
-#: setup.c:685 setup.c:687 setup.c:718
+#: setup.c:682 setup.c:684 setup.c:715
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "impossible de se déplacer vers le répertoire (chdir) '%s'"
 
-#: setup.c:690 setup.c:746 setup.c:756 setup.c:795 setup.c:803 setup.c:818
+#: setup.c:687 setup.c:743 setup.c:753 setup.c:792 setup.c:800 setup.c:815
 msgid "cannot come back to cwd"
 msgstr "impossible de revenir au répertoire de travail courant"
 
-#: setup.c:816
+#: setup.c:813
 #, 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:827
+#: setup.c:824
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "échec du stat de '%*s%s%s'"
 
-#: setup.c:1057
+#: setup.c:1054
 msgid "Unable to read current working directory"
 msgstr "Impossible d'accéder au répertoire de travail courant"
 
-#: setup.c:1069 setup.c:1075
+#: setup.c:1066 setup.c:1072
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "impossible de modifier en '%s'"
 
-#: setup.c:1088
+#: setup.c:1085
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
 "Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
 msgstr ""
-"ni ceci ni aucun de ses répertoires parents (jusqu'au point de montage %s) n'est un dépôt git\n"
-"Arrêt à la limite du système de fichiers (GIT_DISCOVERY_ACROSS_FILESYSTEM n'est pas défini)."
+"ni ceci ni aucun de ses répertoires parents (jusqu'au point de montage %s) "
+"n'est un dépôt git\n"
+"Arrêt à la limite du système de fichiers (GIT_DISCOVERY_ACROSS_FILESYSTEM "
+"n'est pas défini)."
 
-#: setup.c:1172
+#: setup.c:1168
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
 "The owner of files must always have read and write permissions."
 msgstr ""
 "problème avec la valeur de core.sharedRepository (0%.3o).\n"
-"Le propriétaire des fichiers doit toujours avoir les droits en lecture et écriture."
+"Le propriétaire des fichiers doit toujours avoir les droits en lecture et "
+"écriture."
 
-#: setup.c:1215
+#: setup.c:1211
 msgid "open /dev/null or dup failed"
 msgstr "échec de l'ouverture ou au dup de /dev/null"
 
-#: setup.c:1230
+#: setup.c:1226
 msgid "fork failed"
 msgstr "échec de la bifurcation"
 
-#: setup.c:1235
+#: setup.c:1231
 msgid "setsid failed"
 msgstr "échec du setsid"
 
-#: sha1_file.c:592
+#: sha1-file.c:625
 #, c-format
 msgid "path '%s' does not exist"
 msgstr "le chemin '%s' n'existe pas"
 
-#: sha1_file.c:618
+#: sha1-file.c:651
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr ""
 "extraire le dépôt de référence '%s' comme une extraction liée n'est pas "
 "encore supporté."
 
-#: sha1_file.c:624
+#: sha1-file.c:657
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr "le dépôt de référence '%s' n'est pas un dépôt local."
 
-#: sha1_file.c:630
+#: sha1-file.c:663
 #, c-format
 msgid "reference repository '%s' is shallow"
 msgstr "le dépôt de référence '%s' est superficiel"
 
-#: sha1_file.c:638
+#: sha1-file.c:671
 #, c-format
 msgid "reference repository '%s' is grafted"
 msgstr "le dépôt de référence '%s' est greffé"
 
-#: sha1_name.c:422
+#: sha1-name.c:442
 #, c-format
 msgid "short SHA1 %s is ambiguous"
 msgstr "le SHA1 court %s est ambigu"
 
-#: sha1_name.c:433
+#: sha1-name.c:453
 msgid "The candidates are:"
 msgstr "Les candidats sont :"
 
-#: sha1_name.c:693
+#: sha1-name.c:695
 msgid ""
 "Git normally never creates a ref that ends with 40 hex characters\n"
 "because it will be ignored when you just specify 40-hex. These refs\n"
@@ -4068,72 +4435,72 @@ msgstr ""
 "message\n"
 "en lançant \"git config advice.objectNameWarning false\""
 
-#: submodule.c:96 submodule.c:130
+#: submodule.c:97 submodule.c:131
 msgid "Cannot change unmerged .gitmodules, resolve merge conflicts first"
 msgstr ""
 "Modification impossible de .gitmodules non fusionné, résolvez les conflits "
 "d'abord"
 
-#: submodule.c:100 submodule.c:134
+#: submodule.c:101 submodule.c:135
 #, c-format
 msgid "Could not find section in .gitmodules where path=%s"
 msgstr "Impossible de trouver une section où path=%s dans .gitmodules"
 
-#: submodule.c:108
+#: submodule.c:109
 #, c-format
 msgid "Could not update .gitmodules entry %s"
 msgstr "Impossible de mettre à jour l'élément %s de .gitmodules"
 
 # ici %s est un chemin
-#: submodule.c:141
+#: submodule.c:142
 #, c-format
 msgid "Could not remove .gitmodules entry for %s"
 msgstr "Impossible de supprimer l'élément de .gitmodules pour %s"
 
-#: submodule.c:152
+#: submodule.c:153
 msgid "staging updated .gitmodules failed"
 msgstr "échec de la mise en index du .gitmodules mis à jour"
 
-#: submodule.c:312
+#: submodule.c:315
 #, c-format
 msgid "in unpopulated submodule '%s'"
 msgstr "dans le sous-module '%s' non populé"
 
-#: submodule.c:343
+#: submodule.c:346
 #, c-format
 msgid "Pathspec '%s' is in submodule '%.*s'"
 msgstr "Le chemin '%s' est dans le sous-module '%.*s'"
 
-#: submodule.c:833
+#: submodule.c:837
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "l'entrée de sous-module '%s' (%s) est un %s, pas un commit"
 
-#: submodule.c:1065 builtin/branch.c:648 builtin/submodule--helper.c:1724
+#: submodule.c:1069 builtin/branch.c:651 builtin/submodule--helper.c:1743
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "Échec de résolution de HEAD comme référence valide."
 
-#: submodule.c:1370
+#: submodule.c:1375
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "'%s' n'est pas reconnu comme dépôt git"
 
-#: submodule.c:1508
+#: submodule.c:1513
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "impossible de démarrer 'git status' dans le sous-module '%s'"
 
-#: submodule.c:1521
+#: submodule.c:1526
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "impossible de lancer 'git status' dans le sous-module '%s'"
 
-#: submodule.c:1614
+#: submodule.c:1619
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "le sous-module '%s' a un index sale"
 
-#: submodule.c:1878
+#: submodule.c:1718
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
@@ -4141,18 +4508,18 @@ msgstr ""
 "relocate_gitdir pour le sous-module '%s' avec plus d'un arbre de travail "
 "n'est pas supporté"
 
-#: submodule.c:1890 submodule.c:1946
+#: submodule.c:1730 submodule.c:1786
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "impossible de trouve le nom pour le sous-module '%s'"
 
-#: submodule.c:1894 builtin/submodule--helper.c:1246
-#: builtin/submodule--helper.c:1256
+#: submodule.c:1734 builtin/submodule--helper.c:1261
+#: builtin/submodule--helper.c:1271
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "impossible de créer le répertoire '%s'"
 
-#: submodule.c:1897
+#: submodule.c:1737
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -4163,29 +4530,30 @@ msgstr ""
 "'%s' sur\n"
 "'%s'\n"
 
-#: submodule.c:1981
+#: submodule.c:1821
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "récursion impossible dans le sous-module '%s'"
 
-#: submodule.c:2025
+#: submodule.c:1865
 msgid "could not start ls-files in .."
 msgstr "impossible de démarrer ls-files dans .."
 
-#: submodule.c:2045
-msgid "BUG: returned path string doesn't match cwd?"
-msgstr "BUG : le chemin renvoyé ne correspond pas à cwd ?"
-
-#: submodule.c:2064
+#: submodule.c:1904
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree a renvoyé un code de retour inattendu %d"
 
-#: submodule-config.c:263
+#: submodule-config.c:230
+#, c-format
+msgid "ignoring suspicious submodule name: %s"
+msgstr "nom de sous-module suspicieux %s ignoré"
+
+#: submodule-config.c:294
 msgid "negative values not allowed for submodule.fetchjobs"
 msgstr "les valeurs négatives ne sont pas permises pour submodule.fetchJobs"
 
-#: submodule-config.c:436
+#: submodule-config.c:467
 #, c-format
 msgid "invalid value for %s"
 msgstr "Valeur invalide pour %s"
@@ -4201,7 +4569,7 @@ msgstr "échec de la commande trailer '%s'"
 msgid "unknown value '%s' for key '%s'"
 msgstr "valeur inconnue '%s' pour la clé '%s'"
 
-#: trailer.c:539 trailer.c:544 builtin/remote.c:290
+#: trailer.c:539 trailer.c:544 builtin/remote.c:293
 #, c-format
 msgid "more than one %s"
 msgstr "plus d'un %s"
@@ -4244,17 +4612,21 @@ msgstr "impossible de créer un fichier temporaire"
 msgid "could not rename temporary file to %s"
 msgstr "impossible de renommer un fichier temporaire en %s"
 
-#: transport.c:63
+#: transport.c:116
 #, c-format
 msgid "Would set upstream of '%s' to '%s' of '%s'\n"
 msgstr "Positionnerait la branche amont de '%s' sur '%s' de '%s'\n"
 
-#: transport.c:152
+#: transport.c:208
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "transport : option de profondeur invalide '%s'"
 
-#: transport.c:916
+#: transport.c:584
+msgid "could not parse transport.color.* config"
+msgstr "impossible d'analyser la configuration transport.color.*"
+
+#: transport.c:996
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -4263,7 +4635,7 @@ msgstr ""
 "Les chemins suivant de sous-module contiennent des modifications\n"
 "qui ne peuvent être trouvées sur aucun distant :\n"
 
-#: transport.c:920
+#: transport.c:1000
 #, c-format
 msgid ""
 "\n"
@@ -4290,11 +4662,11 @@ msgstr ""
 "pour les pousser vers un serveur distant.\n"
 "\n"
 
-#: transport.c:928
+#: transport.c:1008
 msgid "Aborting."
 msgstr "Abandon."
 
-#: transport-helper.c:1079
+#: transport-helper.c:1087
 #, c-format
 msgid "Could not read ref %s"
 msgstr "impossible de lire la réf %s"
@@ -4311,11 +4683,11 @@ msgstr "mode invalide dans l'entrée d'arbre"
 msgid "empty filename in tree entry"
 msgstr "nom de fichier vide dans une entrée de l'arbre"
 
-#: tree-walk.c:114
+#: tree-walk.c:113
 msgid "too-short tree file"
 msgstr "fichier arbre trop court"
 
-#: unpack-trees.c:108
+#: unpack-trees.c:111
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by checkout:\n"
@@ -4326,7 +4698,7 @@ msgstr ""
 "%%sVeuillez valider ou remiser vos modifications avant de basculer de "
 "branche."
 
-#: unpack-trees.c:110
+#: unpack-trees.c:113
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by checkout:\n"
@@ -4336,7 +4708,7 @@ msgstr ""
 "l'extraction :\n"
 "%%s"
 
-#: unpack-trees.c:113
+#: unpack-trees.c:116
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -4346,7 +4718,7 @@ msgstr ""
 "fusion :\n"
 "%%sVeuillez valider ou remiser vos modifications avant la fusion."
 
-#: unpack-trees.c:115
+#: unpack-trees.c:118
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -4356,7 +4728,7 @@ msgstr ""
 "fusion :\n"
 "%%s"
 
-#: unpack-trees.c:118
+#: unpack-trees.c:121
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by %s:\n"
@@ -4365,7 +4737,7 @@ msgstr ""
 "Vos modifications locales aux fichiers suivants seraient écrasées par %s :\n"
 "%%sVeuillez valider ou remiser vos modifications avant %s."
 
-#: unpack-trees.c:120
+#: unpack-trees.c:123
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by %s:\n"
@@ -4374,7 +4746,7 @@ msgstr ""
 "Vos modifications locales aux fichiers suivants seraient écrasées par %s :\n"
 "%%s"
 
-#: unpack-trees.c:125
+#: unpack-trees.c:128
 #, c-format
 msgid ""
 "Updating the following directories would lose untracked files in them:\n"
@@ -4384,7 +4756,7 @@ msgstr ""
 "contenus :\n"
 "%s"
 
-#: unpack-trees.c:129
+#: unpack-trees.c:132
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by checkout:\n"
@@ -4394,7 +4766,7 @@ msgstr ""
 "l'extraction :\n"
 "%%sVeuillez renommer ou effacer ces fichiers avant de basculer de branche."
 
-#: unpack-trees.c:131
+#: unpack-trees.c:134
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by checkout:\n"
@@ -4403,7 +4775,7 @@ msgstr ""
 "Les fichiers suivants non suivis seraient effacés par l'extraction :\n"
 "%%s"
 
-#: unpack-trees.c:134
+#: unpack-trees.c:137
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by merge:\n"
@@ -4413,7 +4785,7 @@ msgstr ""
 "la fusion :\n"
 "%%sVeuillez renommer ou effacer ces fichiers avant la fusion."
 
-#: unpack-trees.c:136
+#: unpack-trees.c:139
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by merge:\n"
@@ -4422,7 +4794,7 @@ msgstr ""
 "Les fichiers suivants non suivis seraient effacés par la fusion :\n"
 "%%s"
 
-#: unpack-trees.c:139
+#: unpack-trees.c:142
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by %s:\n"
@@ -4432,7 +4804,7 @@ msgstr ""
 "%s :\n"
 "%%sVeuillez renommer ou effacer ces fichiers avant %s."
 
-#: unpack-trees.c:141
+#: unpack-trees.c:144
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by %s:\n"
@@ -4441,7 +4813,7 @@ msgstr ""
 "Les fichiers suivants non suivis seraient effacés par %s :\n"
 "%%s"
 
-#: unpack-trees.c:146
+#: unpack-trees.c:150
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by "
@@ -4452,7 +4824,7 @@ msgstr ""
 "l'extraction :\n"
 "%%sVeuillez renommer ou effacer ces fichiers avant de basculer de branche."
 
-#: unpack-trees.c:148
+#: unpack-trees.c:152
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by "
@@ -4462,7 +4834,7 @@ msgstr ""
 "Les fichiers suivants non suivis seraient écrasés par l'extraction :\n"
 "%%s"
 
-#: unpack-trees.c:151
+#: unpack-trees.c:155
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by merge:\n"
@@ -4472,7 +4844,7 @@ msgstr ""
 "la fusion :\n"
 "%%sVeuillez renommer ou effacer ces fichiers avant la fusion."
 
-#: unpack-trees.c:153
+#: unpack-trees.c:157
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by merge:\n"
@@ -4481,7 +4853,7 @@ msgstr ""
 "Les fichiers suivants non suivis seraient écrasés par la fusion :\n"
 "%%s"
 
-#: unpack-trees.c:156
+#: unpack-trees.c:160
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by %s:\n"
@@ -4491,7 +4863,7 @@ msgstr ""
 "%s :\n"
 "%%sVeuillez renommer ou effacer ces fichiers avant %s."
 
-#: unpack-trees.c:158
+#: unpack-trees.c:162
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by %s:\n"
@@ -4500,12 +4872,12 @@ msgstr ""
 "Les fichiers suivants non suivis seraient écrasés par %s :\n"
 "%%s"
 
-#: unpack-trees.c:165
+#: unpack-trees.c:170
 #, c-format
 msgid "Entry '%s' overlaps with '%s'.  Cannot bind."
 msgstr "L'entrée '%s' surcharge avec '%s'. Affectation impossible."
 
-#: unpack-trees.c:168
+#: unpack-trees.c:173
 #, c-format
 msgid ""
 "Cannot update sparse checkout: the following entries are not up to date:\n"
@@ -4515,7 +4887,7 @@ msgstr ""
 "pas à jour :\n"
 "%s"
 
-#: unpack-trees.c:170
+#: unpack-trees.c:175
 #, c-format
 msgid ""
 "The following working tree files would be overwritten by sparse checkout "
@@ -4526,7 +4898,7 @@ msgstr ""
 "jour par l'extraction creuse :\n"
 "%s"
 
-#: unpack-trees.c:172
+#: unpack-trees.c:177
 #, c-format
 msgid ""
 "The following working tree files would be removed by sparse checkout "
@@ -4537,7 +4909,7 @@ msgstr ""
 "à jour par extraction creuse :\n"
 "%s"
 
-#: unpack-trees.c:174
+#: unpack-trees.c:179
 #, c-format
 msgid ""
 "Cannot update submodule:\n"
@@ -4546,12 +4918,12 @@ msgstr ""
 "Mise à jour impossible pour le sous-module :\n"
 "%s"
 
-#: unpack-trees.c:251
+#: unpack-trees.c:262
 #, c-format
 msgid "Aborting\n"
 msgstr "Abandon\n"
 
-#: unpack-trees.c:333
+#: unpack-trees.c:344
 msgid "Checking out files"
 msgstr "Extraction des fichiers"
 
@@ -4592,12 +4964,15 @@ msgstr "échec de la lecture de '%s'"
 #: worktree.c:291
 #, c-format
 msgid "'%s' at main working tree is not the repository directory"
-msgstr "'%s' dans l'arbre de travail principal n'est pas le répertoire de dépôt"
+msgstr ""
+"'%s' dans l'arbre de travail principal n'est pas le répertoire de dépôt"
 
 #: worktree.c:302
 #, c-format
 msgid "'%s' file does not contain absolute path to the working tree location"
-msgstr "le fichier '%s' ne contient pas de chemin absolu à l'emplacement de l'arbre de travail"
+msgstr ""
+"le fichier '%s' ne contient pas de chemin absolu à l'emplacement de l'arbre "
+"de travail"
 
 #: worktree.c:314
 #, c-format
@@ -4620,7 +4995,7 @@ msgid "could not open '%s' for reading and writing"
 msgstr "impossible d'ouvrir '%s' en lecture/écriture"
 
 #: wrapper.c:227 wrapper.c:397 builtin/am.c:320 builtin/am.c:770
-#: builtin/am.c:862 builtin/merge.c:1044
+#: builtin/am.c:862 builtin/merge.c:1043
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "impossible d'ouvrir '%s' en lecture"
@@ -4634,158 +5009,158 @@ msgstr "impossible d'accéder à '%s'"
 msgid "unable to get current working directory"
 msgstr "impossible d'accéder au répertoire de travail courant"
 
-#: wt-status.c:151
+#: wt-status.c:154
 msgid "Unmerged paths:"
 msgstr "Chemins non fusionnés :"
 
-#: wt-status.c:178 wt-status.c:205
+#: wt-status.c:181 wt-status.c:208
 #, c-format
 msgid "  (use \"git reset %s <file>...\" to unstage)"
 msgstr "  (utilisez \"git reset %s <fichier>...\" pour désindexer)"
 
-#: wt-status.c:180 wt-status.c:207
+#: wt-status.c:183 wt-status.c:210
 msgid "  (use \"git rm --cached <file>...\" to unstage)"
 msgstr "  (utilisez \"git rm --cached <fichier>...\" pour désindexer)"
 
-#: wt-status.c:184
+#: wt-status.c:187
 msgid "  (use \"git add <file>...\" to mark resolution)"
 msgstr "  (utilisez \"git add <fichier>...\" pour marquer comme résolu)"
 
-#: wt-status.c:186 wt-status.c:190
+#: wt-status.c:189 wt-status.c:193
 msgid "  (use \"git add/rm <file>...\" as appropriate to mark resolution)"
 msgstr ""
 "  (utilisez \"git add/rm <fichier>...\" si nécessaire pour marquer comme "
 "résolu)"
 
-#: wt-status.c:188
+#: wt-status.c:191
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (utilisez \"git rm <fichier>...\" pour marquer comme résolu)"
 
-#: wt-status.c:199 wt-status.c:1007
+#: wt-status.c:202 wt-status.c:1015
 msgid "Changes to be committed:"
 msgstr "Modifications qui seront validées :"
 
-#: wt-status.c:217 wt-status.c:1016
+#: wt-status.c:220 wt-status.c:1024
 msgid "Changes not staged for commit:"
 msgstr "Modifications qui ne seront pas validées :"
 
-#: wt-status.c:221
+#: wt-status.c:224
 msgid "  (use \"git add <file>...\" to update what will be committed)"
 msgstr ""
 "  (utilisez \"git add <fichier>...\" pour mettre à jour ce qui sera validé)"
 
-#: wt-status.c:223
+#: wt-status.c:226
 msgid "  (use \"git add/rm <file>...\" to update what will be committed)"
 msgstr ""
 "  (utilisez \"git add/rm <fichier>...\" pour mettre à jour ce qui sera "
 "validé)"
 
-#: wt-status.c:224
+#: wt-status.c:227
 msgid ""
 "  (use \"git checkout -- <file>...\" to discard changes in working directory)"
 msgstr ""
 "  (utilisez \"git checkout -- <fichier>...\" pour annuler les modifications "
 "dans la copie de travail)"
 
-#: wt-status.c:226
+#: wt-status.c:229
 msgid "  (commit or discard the untracked or modified content in submodules)"
 msgstr ""
 "  (valider ou annuler le contenu non suivi ou modifié dans les sous-modules)"
 
-#: wt-status.c:238
+#: wt-status.c:241
 #, c-format
 msgid "  (use \"git %s <file>...\" to include in what will be committed)"
 msgstr ""
 "  (utilisez \"git %s <fichier>...\" pour inclure dans ce qui sera validé)"
 
-#: wt-status.c:253
+#: wt-status.c:256
 msgid "both deleted:"
 msgstr "supprimé des deux côtés :"
 
-#: wt-status.c:255
+#: wt-status.c:258
 msgid "added by us:"
 msgstr "ajouté par nous :"
 
-#: wt-status.c:257
+#: wt-status.c:260
 msgid "deleted by them:"
 msgstr "supprimé par eux :"
 
-#: wt-status.c:259
+#: wt-status.c:262
 msgid "added by them:"
 msgstr "ajouté par eux :"
 
-#: wt-status.c:261
+#: wt-status.c:264
 msgid "deleted by us:"
 msgstr "supprimé par nous :"
 
-#: wt-status.c:263
+#: wt-status.c:266
 msgid "both added:"
 msgstr "ajouté de deux côtés :"
 
-#: wt-status.c:265
+#: wt-status.c:268
 msgid "both modified:"
 msgstr "modifié des deux côtés :"
 
-#: wt-status.c:275
+#: wt-status.c:278
 msgid "new file:"
 msgstr "nouveau fichier :"
 
-#: wt-status.c:277
+#: wt-status.c:280
 msgid "copied:"
 msgstr "copié :"
 
-#: wt-status.c:279
+#: wt-status.c:282
 msgid "deleted:"
 msgstr "supprimé :"
 
-#: wt-status.c:281
+#: wt-status.c:284
 msgid "modified:"
 msgstr "modifié :"
 
-#: wt-status.c:283
+#: wt-status.c:286
 msgid "renamed:"
 msgstr "renommé :"
 
-#: wt-status.c:285
+#: wt-status.c:288
 msgid "typechange:"
 msgstr "modif. type :"
 
-#: wt-status.c:287
+#: wt-status.c:290
 msgid "unknown:"
 msgstr "inconnu :"
 
-#: wt-status.c:289
+#: wt-status.c:292
 msgid "unmerged:"
 msgstr "non fusionné :"
 
-#: wt-status.c:369
+#: wt-status.c:372
 msgid "new commits, "
 msgstr "nouveaux commits, "
 
-#: wt-status.c:371
+#: wt-status.c:374
 msgid "modified content, "
 msgstr "contenu modifié, "
 
-#: wt-status.c:373
+#: wt-status.c:376
 msgid "untracked content, "
 msgstr "contenu non suivi, "
 
-#: wt-status.c:847
+#: wt-status.c:853
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] "Votre remisage contient actuellement %d entrée"
 msgstr[1] "Votre remisage contient actuellement %d entrées"
 
-#: wt-status.c:879
+#: wt-status.c:885
 msgid "Submodules changed but not updated:"
 msgstr "Sous-modules modifiés mais non mis à jour :"
 
-#: wt-status.c:881
+#: wt-status.c:887
 msgid "Submodule changes to be committed:"
 msgstr "Changements du sous-module à valider :"
 
-#: wt-status.c:963
+#: wt-status.c:969
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -4793,107 +5168,107 @@ msgstr ""
 "Ne touchez pas à la ligne ci-dessus.\n"
 "Tout ce qui suit sera éliminé."
 
-#: wt-status.c:1076
+#: wt-status.c:1084
 msgid "You have unmerged paths."
 msgstr "Vous avez des chemins non fusionnés."
 
-#: wt-status.c:1079
+#: wt-status.c:1087
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (réglez les conflits puis lancez \"git commit\")"
 
-#: wt-status.c:1081
+#: wt-status.c:1089
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (utilisez \"git merge --abort\" pour annuler la fusion)"
 
-#: wt-status.c:1086
+#: wt-status.c:1094
 msgid "All conflicts fixed but you are still merging."
 msgstr "Tous les conflits sont réglés mais la fusion n'est pas terminée."
 
-#: wt-status.c:1089
+#: wt-status.c:1097
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (utilisez \"git commit\" pour terminer la fusion)"
 
-#: wt-status.c:1099
+#: wt-status.c:1107
 msgid "You are in the middle of an am session."
 msgstr "Vous êtes au milieu d'une session am."
 
-#: wt-status.c:1102
+#: wt-status.c:1110
 msgid "The current patch is empty."
 msgstr "Le patch actuel est vide."
 
-#: wt-status.c:1106
+#: wt-status.c:1114
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (réglez les conflits puis lancez \"git am --continue\")"
 
-#: wt-status.c:1108
+#: wt-status.c:1116
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (utilisez \"git am --skip\" pour sauter ce patch)"
 
-#: wt-status.c:1110
+#: wt-status.c:1118
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr "  (utilisez \"git am --abort\" pour restaurer la branche d'origine)"
 
-#: wt-status.c:1242
+#: wt-status.c:1250
 msgid "git-rebase-todo is missing."
 msgstr "git-rebase-todo est manquant."
 
-#: wt-status.c:1244
+#: wt-status.c:1252
 msgid "No commands done."
 msgstr "Aucune commande réalisée."
 
-#: wt-status.c:1247
+#: wt-status.c:1255
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] "Dernière commande effectuée (%d commande effectuée) :"
 msgstr[1] "Dernières commandes effectuées (%d commandes effectuées) :"
 
-#: wt-status.c:1258
+#: wt-status.c:1266
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (voir plus dans le fichier %s)"
 
-#: wt-status.c:1263
+#: wt-status.c:1271
 msgid "No commands remaining."
 msgstr "Aucune commande restante."
 
-#: wt-status.c:1266
+#: wt-status.c:1274
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
 msgstr[0] "Prochaine commande à effectuer (%d commande restante) :"
 msgstr[1] "Prochaines commandes à effectuer (%d commandes restantes) :"
 
-#: wt-status.c:1274
+#: wt-status.c:1282
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (utilisez \"git rebase --edit-todo\" pour voir et éditer)"
 
-#: wt-status.c:1287
+#: wt-status.c:1295
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "Vous êtes en train de rebaser la branche '%s' sur '%s'."
 
-#: wt-status.c:1292
+#: wt-status.c:1300
 msgid "You are currently rebasing."
 msgstr "Vous êtes en train de rebaser."
 
-#: wt-status.c:1306
+#: wt-status.c:1314
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (réglez les conflits puis lancez \"git rebase --continue\")"
 
-#: wt-status.c:1308
+#: wt-status.c:1316
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (utilisez \"git rebase --skip\" pour sauter ce patch)"
 
-#: wt-status.c:1310
+#: wt-status.c:1318
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr "  (utilisez \"git rebase --abort\" pour extraire la branche d'origine)"
 
-#: wt-status.c:1316
+#: wt-status.c:1324
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (tous les conflits sont réglés : lancez \"git rebase --continue\")"
 
-#: wt-status.c:1320
+#: wt-status.c:1328
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
@@ -4901,128 +5276,128 @@ msgstr ""
 "Vous êtes actuellement en train de fractionner un commit pendant un rebasage "
 "de la branche '%s' sur '%s'."
 
-#: wt-status.c:1325
+#: wt-status.c:1333
 msgid "You are currently splitting a commit during a rebase."
 msgstr ""
 "Vous êtes actuellement en train de fractionner un commit pendant un rebasage."
 
-#: wt-status.c:1328
+#: wt-status.c:1336
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr ""
 "  (Une fois la copie de travail nettoyée, lancez \"git rebase --continue\")"
 
-#: wt-status.c:1332
+#: wt-status.c:1340
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 "Vous êtes actuellement en train d'éditer un commit pendant un rebasage de la "
 "branche '%s' sur '%s'."
 
-#: wt-status.c:1337
+#: wt-status.c:1345
 msgid "You are currently editing a commit during a rebase."
 msgstr ""
 "Vous êtes actuellement en train d'éditer un commit pendant un rebasage."
 
-#: wt-status.c:1340
+#: wt-status.c:1348
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr "  (utilisez \"git commit --amend\" pour corriger le commit actuel)"
 
-#: wt-status.c:1342
+#: wt-status.c:1350
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr ""
 "  (utilisez \"git rebase --continue\" quand vous avez effectué toutes vos "
 "modifications)"
 
-#: wt-status.c:1352
+#: wt-status.c:1360
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "Vous êtes actuellement en train de picorer le commit %s."
 
-#: wt-status.c:1357
+#: wt-status.c:1365
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (réglez les conflits puis lancez \"git cherry-pick --continue\")"
 
-#: wt-status.c:1360
+#: wt-status.c:1368
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr ""
 "  (tous les conflits sont réglés : lancez \"git cherry-pick --continue\")"
 
-#: wt-status.c:1362
+#: wt-status.c:1370
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr "  (utilisez \"git cherry-pick --abort\" pour annuler le picorage)"
 
-#: wt-status.c:1371
+#: wt-status.c:1379
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "Vous êtes actuellement en train de rétablir le commit %s."
 
-#: wt-status.c:1376
+#: wt-status.c:1384
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (réglez les conflits puis lancez \"git revert --continue\")"
 
-#: wt-status.c:1379
+#: wt-status.c:1387
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (tous les conflits sont réglés : lancez \"git revert --continue\")"
 
-#: wt-status.c:1381
+#: wt-status.c:1389
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (utilisez \"git revert --abort\" pour annuler le rétablissement)"
 
-#: wt-status.c:1392
+#: wt-status.c:1400
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "Vous êtes en cours de bissection, depuis la branche '%s'."
 
-#: wt-status.c:1396
+#: wt-status.c:1404
 msgid "You are currently bisecting."
 msgstr "Vous êtes en cours de bissection."
 
-#: wt-status.c:1399
+#: wt-status.c:1407
 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:1596
+#: wt-status.c:1604
 msgid "On branch "
 msgstr "Sur la branche "
 
-#: wt-status.c:1602
+#: wt-status.c:1610
 msgid "interactive rebase in progress; onto "
 msgstr "rebasage interactif en cours ; sur "
 
-#: wt-status.c:1604
+#: wt-status.c:1612
 msgid "rebase in progress; onto "
 msgstr "rebasage en cours ; sur "
 
-#: wt-status.c:1609
+#: wt-status.c:1617
 msgid "HEAD detached at "
 msgstr "HEAD détachée sur "
 
-#: wt-status.c:1611
+#: wt-status.c:1619
 msgid "HEAD detached from "
 msgstr "HEAD détachée depuis "
 
-#: wt-status.c:1614
+#: wt-status.c:1622
 msgid "Not currently on any branch."
 msgstr "Actuellement sur aucun branche."
 
-#: wt-status.c:1634
+#: wt-status.c:1642
 msgid "Initial commit"
 msgstr "Validation initiale"
 
-#: wt-status.c:1635
+#: wt-status.c:1643
 msgid "No commits yet"
 msgstr "Aucun commit"
 
-#: wt-status.c:1649
+#: wt-status.c:1657
 msgid "Untracked files"
 msgstr "Fichiers non suivis"
 
-#: wt-status.c:1651
+#: wt-status.c:1659
 msgid "Ignored files"
 msgstr "Fichiers ignorés"
 
-#: wt-status.c:1655
+#: wt-status.c:1663
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -5034,32 +5409,32 @@ msgstr ""
 "oublier d'ajouter les nouveaux fichiers par vous-même (voir 'git help "
 "status')."
 
-#: wt-status.c:1661
+#: wt-status.c:1669
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Fichiers non suivis non affichés%s"
 
-#: wt-status.c:1663
+#: wt-status.c:1671
 msgid " (use -u option to show untracked files)"
 msgstr " (utilisez -u pour afficher les fichiers non suivis)"
 
-#: wt-status.c:1669
+#: wt-status.c:1677
 msgid "No changes"
 msgstr "Aucune modification"
 
-#: wt-status.c:1674
+#: wt-status.c:1682
 #, 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:1677
+#: wt-status.c:1685
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "aucune modification ajoutée à la validation\n"
 
-#: wt-status.c:1680
+#: wt-status.c:1688
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -5068,71 +5443,71 @@ msgstr ""
 "aucune modification ajoutée à la validation mais des fichiers non suivis "
 "sont présents (utilisez \"git add\" pour les suivre)\n"
 
-#: wt-status.c:1683
+#: wt-status.c:1691
 #, 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:1686
+#: wt-status.c:1694
 #, 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:1689 wt-status.c:1694
+#: wt-status.c:1697 wt-status.c:1702
 #, c-format
 msgid "nothing to commit\n"
 msgstr "rien à valider\n"
 
-#: wt-status.c:1692
+#: wt-status.c:1700
 #, 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:1696
+#: wt-status.c:1704
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "rien à valider, la copie de travail est propre\n"
 
-#: wt-status.c:1809
+#: wt-status.c:1817
 msgid "No commits yet on "
 msgstr "Encore aucun commit sur "
 
-#: wt-status.c:1813
+#: wt-status.c:1821
 msgid "HEAD (no branch)"
 msgstr "HEAD (aucune branche)"
 
-#: wt-status.c:1844
+#: wt-status.c:1852
 msgid "different"
 msgstr "différent"
 
-#: wt-status.c:1846 wt-status.c:1854
+#: wt-status.c:1854 wt-status.c:1862
 msgid "behind "
 msgstr "derrière "
 
-#: wt-status.c:1849 wt-status.c:1852
+#: wt-status.c:1857 wt-status.c:1860
 msgid "ahead "
 msgstr "devant "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2358
+#: wt-status.c:2366
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "Impossible de %s : vous avez des modifications non indexées."
 
-#: wt-status.c:2364
+#: wt-status.c:2372
 msgid "additionally, your index contains uncommitted changes."
 msgstr "de plus, votre index contient des modifications non validées."
 
-#: wt-status.c:2366
+#: wt-status.c:2374
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "%s impossible : votre index contient des modifications non validées."
 
-#: compat/precompose_utf8.c:58 builtin/clone.c:440
+#: compat/precompose_utf8.c:58 builtin/clone.c:442
 #, c-format
 msgid "failed to unlink '%s'"
 msgstr "échec lors de l'unlink de '%s'"
@@ -5146,7 +5521,7 @@ msgstr "git add [<options>] [--] <chemin>..."
 msgid "unexpected diff status %c"
 msgstr "état de diff inattendu %c"
 
-#: builtin/add.c:88 builtin/commit.c:257
+#: builtin/add.c:88 builtin/commit.c:266
 msgid "updating files failed"
 msgstr "échec de la mise à jour des fichiers"
 
@@ -5159,7 +5534,7 @@ msgstr "suppression de '%s'\n"
 msgid "Unstaged changes after refreshing the index:"
 msgstr "Modifications non indexées après rafraîchissement de l'index :"
 
-#: builtin/add.c:233 builtin/rev-parse.c:888
+#: builtin/add.c:233 builtin/rev-parse.c:892
 msgid "Could not read the index"
 msgstr "Impossible de lire l'index"
 
@@ -5190,82 +5565,82 @@ msgstr "Patch vide. Abandon."
 msgid "Could not apply '%s'"
 msgstr "Impossible d'appliquer '%s'"
 
-#: builtin/add.c:271
+#: builtin/add.c:269
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr ""
 "Les chemins suivants sont ignorés par un de vos fichiers .gitignore :\n"
 
-#: builtin/add.c:291 builtin/clean.c:911 builtin/fetch.c:146 builtin/mv.c:124
-#: builtin/prune-packed.c:55 builtin/pull.c:207 builtin/push.c:541
-#: builtin/remote.c:1333 builtin/rm.c:242 builtin/send-pack.c:164
+#: builtin/add.c:289 builtin/clean.c:911 builtin/fetch.c:145 builtin/mv.c:123
+#: builtin/prune-packed.c:55 builtin/pull.c:212 builtin/push.c:557
+#: builtin/remote.c:1342 builtin/rm.c:240 builtin/send-pack.c:165
 msgid "dry run"
 msgstr "simuler l'action"
 
-#: builtin/add.c:294
+#: builtin/add.c:292
 msgid "interactive picking"
 msgstr "sélection interactive"
 
-#: builtin/add.c:295 builtin/checkout.c:1128 builtin/reset.c:302
+#: builtin/add.c:293 builtin/checkout.c:1135 builtin/reset.c:302
 msgid "select hunks interactively"
 msgstr "sélection interactive des sections"
 
-#: builtin/add.c:296
+#: builtin/add.c:294
 msgid "edit current diff and apply"
 msgstr "édition du diff actuel et application"
 
-#: builtin/add.c:297
+#: builtin/add.c:295
 msgid "allow adding otherwise ignored files"
 msgstr "permettre l'ajout de fichiers ignorés"
 
-#: builtin/add.c:298
+#: builtin/add.c:296
 msgid "update tracked files"
 msgstr "mettre à jour les fichiers suivis"
 
-#: builtin/add.c:299
+#: builtin/add.c:297
 msgid "renormalize EOL of tracked files (implies -u)"
 msgstr ""
 "renormaliser les fins de lignes (EOL) des fichiers suivis (implique -u)"
 
-#: builtin/add.c:300
+#: builtin/add.c:298
 msgid "record only the fact that the path will be added later"
 msgstr "enregistrer seulement le fait que le chemin sera ajouté plus tard"
 
-#: builtin/add.c:301
+#: builtin/add.c:299
 msgid "add changes from all tracked and untracked files"
 msgstr "ajouter les modifications de tous les fichiers suivis et non suivis"
 
-#: builtin/add.c:304
+#: builtin/add.c:302
 msgid "ignore paths removed in the working tree (same as --no-all)"
 msgstr ""
 "ignorer les chemins effacés dans la copie de travail (identique à --no-all)"
 
-#: builtin/add.c:306
+#: builtin/add.c:304
 msgid "don't add, only refresh the index"
 msgstr "ne pas ajouter, juste rafraîchir l'index"
 
-#: builtin/add.c:307
+#: builtin/add.c:305
 msgid "just skip files which cannot be added because of errors"
 msgstr ""
 "sauter seulement les fichiers qui ne peuvent pas être ajoutés du fait "
 "d'erreurs"
 
-#: builtin/add.c:308
+#: builtin/add.c:306
 msgid "check if - even missing - files are ignored in dry run"
 msgstr "vérifier si des fichiers - même manquants - sont ignorés, à vide"
 
-#: builtin/add.c:309 builtin/update-index.c:964
+#: builtin/add.c:307 builtin/update-index.c:974
 msgid "(+/-)x"
 msgstr "(+/-)x"
 
-#: builtin/add.c:309 builtin/update-index.c:965
+#: builtin/add.c:307 builtin/update-index.c:975
 msgid "override the executable bit of the listed files"
 msgstr "outrepasser le bit exécutable pour les fichiers listés"
 
-#: builtin/add.c:311
+#: builtin/add.c:309
 msgid "warn when adding an embedded repository"
 msgstr "avertir lors de l'ajout d'un dépôt embarqué"
 
-#: builtin/add.c:326
+#: builtin/add.c:324
 #, c-format
 msgid ""
 "You've added another git repository inside your current repository.\n"
@@ -5296,48 +5671,48 @@ msgstr ""
 "\n"
 "Référez-vous à \"git help submodule\" pour plus d'information."
 
-#: builtin/add.c:354
+#: builtin/add.c:352
 #, c-format
 msgid "adding embedded git repository: %s"
 msgstr "dépôt git embarqué ajouté : %s"
 
-#: builtin/add.c:372
+#: builtin/add.c:370
 #, c-format
 msgid "Use -f if you really want to add them.\n"
 msgstr "Utilisez -f si vous voulez réellement les ajouter.\n"
 
-#: builtin/add.c:380
+#: builtin/add.c:378
 msgid "adding files failed"
 msgstr "échec de l'ajout de fichiers"
 
-#: builtin/add.c:417
+#: builtin/add.c:416
 msgid "-A and -u are mutually incompatible"
 msgstr "-A et -u sont mutuellement incompatibles"
 
-#: builtin/add.c:424
+#: builtin/add.c:423
 msgid "Option --ignore-missing can only be used together with --dry-run"
 msgstr ""
 "L'option --ignore-missing ne peut être utilisée qu'en complément de --dry-run"
 
-#: builtin/add.c:428
+#: builtin/add.c:427
 #, c-format
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "Le paramètre '%s' de --chmod doit être soit -x soit +x"
 
-#: builtin/add.c:443
+#: builtin/add.c:442
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr "Rien de spécifié, rien n'a été ajouté.\n"
 
-#: builtin/add.c:444
+#: builtin/add.c:443
 #, c-format
 msgid "Maybe you wanted to say 'git add .'?\n"
 msgstr "Vous vouliez sûrement dire 'git add .' ?\n"
 
-#: builtin/add.c:449 builtin/check-ignore.c:177 builtin/checkout.c:280
-#: builtin/checkout.c:483 builtin/clean.c:958 builtin/commit.c:316
+#: builtin/add.c:448 builtin/check-ignore.c:177 builtin/checkout.c:280
+#: builtin/checkout.c:483 builtin/clean.c:958 builtin/commit.c:325
 #: builtin/diff-tree.c:114 builtin/mv.c:144 builtin/reset.c:241
-#: builtin/rm.c:271 builtin/submodule--helper.c:326
+#: builtin/rm.c:270 builtin/submodule--helper.c:328
 msgid "index file corrupt"
 msgstr "fichier d'index corrompu"
 
@@ -5389,7 +5764,7 @@ msgstr "décalage horaire invalide"
 msgid "Patch format detection failed."
 msgstr "Échec de détection du format du patch."
 
-#: builtin/am.c:1013 builtin/clone.c:405
+#: builtin/am.c:1013 builtin/clone.c:407
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr "échec de la création du répertoire '%s'"
@@ -5398,7 +5773,7 @@ msgstr "échec de la création du répertoire '%s'"
 msgid "Failed to split patches."
 msgstr "Échec de découpage des patchs."
 
-#: builtin/am.c:1148 builtin/commit.c:342
+#: builtin/am.c:1148 builtin/commit.c:351
 msgid "unable to write index file"
 msgstr "impossible d'écrire le fichier d'index"
 
@@ -5507,7 +5882,8 @@ msgstr "le patch a échoué à %s %.*s"
 
 #: builtin/am.c:1838
 msgid "Use 'git am --show-current-patch' to see the failed patch"
-msgstr "Utilisez 'git am --show-current-patch' pour visualiser le patch en échec"
+msgstr ""
+"Utilisez 'git am --show-current-patch' pour visualiser le patch en échec"
 
 #: builtin/am.c:1882
 msgid ""
@@ -5577,7 +5953,7 @@ msgid "allow fall back on 3way merging if needed"
 msgstr "permettre de revenir à une fusion à 3 points si nécessaire"
 
 #: builtin/am.c:2222 builtin/init-db.c:484 builtin/prune-packed.c:57
-#: builtin/repack.c:182
+#: builtin/repack.c:192
 msgid "be quiet"
 msgstr "être silencieux"
 
@@ -5620,16 +5996,17 @@ msgstr "retirer tout le contenu avant la ligne des ciseaux"
 msgid "pass it through git-apply"
 msgstr "le passer jusqu'à git-apply"
 
-#: builtin/am.c:2260 builtin/fmt-merge-msg.c:665 builtin/fmt-merge-msg.c:668
-#: builtin/grep.c:853 builtin/merge.c:206 builtin/pull.c:145 builtin/pull.c:203
-#: builtin/repack.c:191 builtin/repack.c:195 builtin/repack.c:197
-#: builtin/show-branch.c:631 builtin/show-ref.c:169 builtin/tag.c:382
-#: parse-options.h:144 parse-options.h:146 parse-options.h:257
+#: builtin/am.c:2260 builtin/commit.c:1332 builtin/fmt-merge-msg.c:665
+#: builtin/fmt-merge-msg.c:668 builtin/grep.c:853 builtin/merge.c:208
+#: builtin/pull.c:150 builtin/pull.c:208 builtin/repack.c:201
+#: builtin/repack.c:205 builtin/repack.c:207 builtin/show-branch.c:631
+#: builtin/show-ref.c:169 builtin/tag.c:383 parse-options.h:144
+#: parse-options.h:146 parse-options.h:258
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2266 builtin/branch.c:629 builtin/for-each-ref.c:38
-#: builtin/replace.c:445 builtin/tag.c:418 builtin/verify-tag.c:39
+#: builtin/am.c:2266 builtin/branch.c:632 builtin/for-each-ref.c:38
+#: builtin/replace.c:543 builtin/tag.c:419 builtin/verify-tag.c:39
 msgid "format"
 msgstr "format"
 
@@ -5674,8 +6051,8 @@ msgstr "mentir sur la date de validation"
 msgid "use current timestamp for author date"
 msgstr "utiliser l'horodatage actuel pour la date d'auteur"
 
-#: builtin/am.c:2298 builtin/commit.c:1431 builtin/merge.c:237
-#: builtin/pull.c:178 builtin/revert.c:112 builtin/tag.c:398
+#: builtin/am.c:2298 builtin/commit.c:1468 builtin/merge.c:239
+#: builtin/pull.c:183 builtin/revert.c:112 builtin/tag.c:399
 msgid "key-id"
 msgstr "id-clé"
 
@@ -5817,121 +6194,148 @@ msgstr "--write-terms exige deux arguments"
 msgid "--bisect-clean-state requires no arguments"
 msgstr "--bisect-clean-state ne supporte aucun argument"
 
-#: builtin/blame.c:27
+#: builtin/blame.c:29
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
 msgstr "git blame [<options>] [<rev-opts>] [<rev>] [--] <fichier>"
 
-#: builtin/blame.c:32
+#: builtin/blame.c:34
 msgid "<rev-opts> are documented in git-rev-list(1)"
 msgstr "<options-de-révision> sont documentés dans git-rev-list(1)"
 
-#: builtin/blame.c:677
+#: builtin/blame.c:404
+#, c-format
+msgid "expecting a color: %s"
+msgstr "couleur attendue : %s"
+
+#: builtin/blame.c:411
+msgid "must end with a color"
+msgstr "doit finir avec une couleur"
+
+#: builtin/blame.c:697
+#, c-format
+msgid "invalid color '%s' in color.blame.repeatedLines"
+msgstr "couleur invalide '%s' dans color.blame.repeatedlines"
+
+#: builtin/blame.c:715
+msgid "invalid value for blame.coloring"
+msgstr "valeur invalide pour blame.coloring"
+
+#: builtin/blame.c:786
 msgid "Show blame entries as we find them, incrementally"
 msgstr ""
 "Montrer les éléments de blâme au fur et à mesure de leur découverte, de "
 "manière incrémentale"
 
-#: builtin/blame.c:678
+#: builtin/blame.c:787
 msgid "Show blank SHA-1 for boundary commits (Default: off)"
 msgstr "Montrer un SHA-1 blanc pour les commits de limite (Défaut : désactivé)"
 
-#: builtin/blame.c:679
+#: builtin/blame.c:788
 msgid "Do not treat root commits as boundaries (Default: off)"
 msgstr ""
 "Ne pas traiter les commits racine comme des limites (Défaut : désactivé)"
 
-#: builtin/blame.c:680
+#: builtin/blame.c:789
 msgid "Show work cost statistics"
 msgstr "Montrer les statistiques de coût d'activité"
 
-#: builtin/blame.c:681
+#: builtin/blame.c:790
 msgid "Force progress reporting"
 msgstr "Forcer l'affichage de l'état d'avancement"
 
-#: builtin/blame.c:682
+#: builtin/blame.c:791
 msgid "Show output score for blame entries"
 msgstr "Montrer le score de sortie pour les éléments de blâme"
 
-#: builtin/blame.c:683
+#: builtin/blame.c:792
 msgid "Show original filename (Default: auto)"
 msgstr "Montrer les noms de fichier originaux (Défaut : auto)"
 
-#: builtin/blame.c:684
+#: builtin/blame.c:793
 msgid "Show original linenumber (Default: off)"
 msgstr "Montrer les numéros de lignes originaux (Défaut : désactivé)"
 
-#: builtin/blame.c:685
+#: builtin/blame.c:794
 msgid "Show in a format designed for machine consumption"
 msgstr "Afficher dans un format propice à la consommation par machine"
 
-#: builtin/blame.c:686
+#: builtin/blame.c:795
 msgid "Show porcelain format with per-line commit information"
 msgstr "Afficher en format porcelaine avec l'information de commit par ligne"
 
-#: builtin/blame.c:687
+#: builtin/blame.c:796
 msgid "Use the same output mode as git-annotate (Default: off)"
 msgstr "Utiliser le même mode de sortie que git-annotate (Défaut : désactivé)"
 
-#: builtin/blame.c:688
+#: builtin/blame.c:797
 msgid "Show raw timestamp (Default: off)"
 msgstr "Afficher les horodatages bruts (Défaut : désactivé)"
 
-#: builtin/blame.c:689
+#: builtin/blame.c:798
 msgid "Show long commit SHA1 (Default: off)"
 msgstr "Afficher les longs SHA1 de commits (Défaut : désactivé)"
 
-#: builtin/blame.c:690
+#: builtin/blame.c:799
 msgid "Suppress author name and timestamp (Default: off)"
 msgstr "Supprimer le nom de l'auteur et l'horodatage (Défaut : désactivé)"
 
-#: builtin/blame.c:691
+#: builtin/blame.c:800
 msgid "Show author email instead of name (Default: off)"
 msgstr "Afficher le courriel de l'auteur au lieu du nom (Défaut : désactivé)"
 
-#: builtin/blame.c:692
+#: builtin/blame.c:801
 msgid "Ignore whitespace differences"
 msgstr "Ignorer les différences d'espace"
 
-#: builtin/blame.c:699
+#: builtin/blame.c:802
+msgid "color redundant metadata from previous line differently"
+msgstr ""
+"colorer différemment les métadonnées redondantes avec la ligne précédente"
+
+#: builtin/blame.c:803
+msgid "color lines by age"
+msgstr "colorier les lignes par âge"
+
+#: builtin/blame.c:810
 msgid "Use an experimental heuristic to improve diffs"
 msgstr "Utiliser une heuristique expérimentale pour améliorer les diffs"
 
-#: builtin/blame.c:701
+#: builtin/blame.c:812
 msgid "Spend extra cycles to find better match"
 msgstr ""
 "Dépenser des cycles supplémentaires pour trouver une meilleure correspondance"
 
-#: builtin/blame.c:702
+#: builtin/blame.c:813
 msgid "Use revisions from <file> instead of calling git-rev-list"
 msgstr ""
 "Utiliser les révisions du fichier <fichier> au lieu d'appeler git-rev-list"
 
-#: builtin/blame.c:703
+#: builtin/blame.c:814
 msgid "Use <file>'s contents as the final image"
 msgstr "Utiliser le contenu de <fichier> comme image finale"
 
-#: builtin/blame.c:704 builtin/blame.c:705
+#: builtin/blame.c:815 builtin/blame.c:816
 msgid "score"
 msgstr "score"
 
-#: builtin/blame.c:704
+#: builtin/blame.c:815
 msgid "Find line copies within and across files"
 msgstr "Trouver les copies de ligne dans et entre les fichiers"
 
-#: builtin/blame.c:705
+#: builtin/blame.c:816
 msgid "Find line movements within and across files"
 msgstr "Trouver les mouvements de ligne dans et entre les fichiers"
 
-#: builtin/blame.c:706
+#: builtin/blame.c:817
 msgid "n,m"
 msgstr "n,m"
 
-#: builtin/blame.c:706
+#: builtin/blame.c:817
 msgid "Process only line range n,m, counting from 1"
 msgstr ""
 "Traiter seulement l'intervalle de ligne n,m en commençant le compte à 1"
 
-#: builtin/blame.c:753
+#: builtin/blame.c:866
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr ""
 "--progress ne peut pas être utilisé avec --incremental ou les formats "
@@ -5945,18 +6349,18 @@ msgstr ""
 #. your language may need more or fewer display
 #. columns.
 #.
-#: builtin/blame.c:804
+#: builtin/blame.c:917
 msgid "4 years, 11 months ago"
 msgstr "il y a 10 ans et 11 mois"
 
-#: builtin/blame.c:890
+#: builtin/blame.c:1003
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
 msgstr[0] "le fichier %s n'a qu'%lu ligne"
 msgstr[1] "le fichier %s n'a que %lu lignes"
 
-#: builtin/blame.c:936
+#: builtin/blame.c:1049
 msgid "Blaming lines"
 msgstr "Assignation de blâme aux lignes"
 
@@ -6069,69 +6473,69 @@ msgstr "Branche de suivi %s supprimée (précédemment %s).\n"
 msgid "Deleted branch %s (was %s).\n"
 msgstr "Branche %s supprimée (précédemment %s).\n"
 
-#: builtin/branch.c:417 builtin/tag.c:58
+#: builtin/branch.c:416 builtin/tag.c:58
 msgid "unable to parse format string"
 msgstr "impossible d'analyser la chaîne de format"
 
-#: builtin/branch.c:450
+#: builtin/branch.c:453
 #, c-format
 msgid "Branch %s is being rebased at %s"
 msgstr "La branche %s est en cours de rebasage sur %s"
 
-#: builtin/branch.c:454
+#: builtin/branch.c:457
 #, c-format
 msgid "Branch %s is being bisected at %s"
 msgstr "La branche %s est en cours de bissection sur %s"
 
-#: builtin/branch.c:471
+#: builtin/branch.c:474
 msgid "cannot copy the current branch while not on any."
 msgstr "impossible de copier la branche actuelle, il n'y en a pas."
 
-#: builtin/branch.c:473
+#: builtin/branch.c:476
 msgid "cannot rename the current branch while not on any."
 msgstr "impossible de renommer la branche actuelle, il n'y en a pas."
 
-#: builtin/branch.c:484
+#: builtin/branch.c:487
 #, c-format
 msgid "Invalid branch name: '%s'"
 msgstr "Nom de branche invalide : '%s'"
 
-#: builtin/branch.c:511
+#: builtin/branch.c:514
 msgid "Branch rename failed"
 msgstr "Échec de renommage de la branche"
 
-#: builtin/branch.c:513
+#: builtin/branch.c:516
 msgid "Branch copy failed"
 msgstr "Échec de copie de la branche"
 
-#: builtin/branch.c:517
+#: builtin/branch.c:520
 #, c-format
 msgid "Created a copy of a misnamed branch '%s'"
 msgstr "Création d'une copie d'une branche mal nommée '%s'"
 
-#: builtin/branch.c:520
+#: builtin/branch.c:523
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
 msgstr "Renommage d'une branche mal nommée '%s'"
 
-#: builtin/branch.c:526
+#: builtin/branch.c:529
 #, c-format
 msgid "Branch renamed to %s, but HEAD is not updated!"
 msgstr "La branche a été renommée en %s, mais HEAD n'est pas mise à jour !"
 
-#: builtin/branch.c:535
+#: builtin/branch.c:538
 msgid "Branch is renamed, but update of config-file failed"
 msgstr ""
 "La branche est renommée, mais la mise à jour du fichier de configuration a "
 "échoué"
 
-#: builtin/branch.c:537
+#: builtin/branch.c:540
 msgid "Branch is copied, but update of config-file failed"
 msgstr ""
 "La branche est copiée, mais la mise à jour du fichier de configuration a "
 "échoué"
 
-#: builtin/branch.c:553
+#: builtin/branch.c:556
 #, c-format
 msgid ""
 "Please edit the description for the branch\n"
@@ -6142,184 +6546,186 @@ msgstr ""
 "  %s\n"
 "Les lignes commençant par '%c' seront ignorées.\n"
 
-#: builtin/branch.c:586
+#: builtin/branch.c:589
 msgid "Generic options"
 msgstr "Options génériques"
 
-#: builtin/branch.c:588
+#: builtin/branch.c:591
 msgid "show hash and subject, give twice for upstream branch"
 msgstr "afficher le hachage et le sujet, doublé pour la branche amont"
 
-#: builtin/branch.c:589
+#: builtin/branch.c:592
 msgid "suppress informational messages"
 msgstr "supprimer les messages d'information"
 
-#: builtin/branch.c:590
+#: builtin/branch.c:593
 msgid "set up tracking mode (see git-pull(1))"
 msgstr "régler le mode de suivi (voir git-pull(1))"
 
-#: builtin/branch.c:592
+#: builtin/branch.c:595
 msgid "do not use"
 msgstr "ne pas utiliser"
 
-#: builtin/branch.c:594
+#: builtin/branch.c:597
 msgid "upstream"
 msgstr "amont"
 
-#: builtin/branch.c:594
+#: builtin/branch.c:597
 msgid "change the upstream info"
 msgstr "modifier l'information amont"
 
-#: builtin/branch.c:595
+#: builtin/branch.c:598
 msgid "Unset the upstream info"
 msgstr "Désactiver l'information amont"
 
-#: builtin/branch.c:596
+#: builtin/branch.c:599
 msgid "use colored output"
 msgstr "utiliser la coloration dans la sortie"
 
-#: builtin/branch.c:597
+#: builtin/branch.c:600
 msgid "act on remote-tracking branches"
 msgstr "agir sur les branches de suivi distantes"
 
-#: builtin/branch.c:599 builtin/branch.c:601
+#: builtin/branch.c:602 builtin/branch.c:604
 msgid "print only branches that contain the commit"
 msgstr "afficher seulement les branches qui contiennent le commit"
 
-#: builtin/branch.c:600 builtin/branch.c:602
+#: builtin/branch.c:603 builtin/branch.c:605
 msgid "print only branches that don't contain the commit"
 msgstr "afficher seulement les branches qui ne contiennent pas le commit"
 
-#: builtin/branch.c:605
+#: builtin/branch.c:608
 msgid "Specific git-branch actions:"
 msgstr "Actions spécifiques à git-branch :"
 
-#: builtin/branch.c:606
+#: builtin/branch.c:609
 msgid "list both remote-tracking and local branches"
 msgstr "afficher à la fois les branches de suivi et les branches locales"
 
-#: builtin/branch.c:608
+#: builtin/branch.c:611
 msgid "delete fully merged branch"
 msgstr "supprimer une branche totalement fusionnée"
 
-#: builtin/branch.c:609
+#: builtin/branch.c:612
 msgid "delete branch (even if not merged)"
 msgstr "supprimer une branche (même non fusionnée)"
 
-#: builtin/branch.c:610
+#: builtin/branch.c:613
 msgid "move/rename a branch and its reflog"
 msgstr "déplacer/renommer une branche et son reflog"
 
-#: builtin/branch.c:611
+#: builtin/branch.c:614
 msgid "move/rename a branch, even if target exists"
 msgstr "déplacer/renommer une branche, même si la cible existe"
 
-#: builtin/branch.c:612
+#: builtin/branch.c:615
 msgid "copy a branch and its reflog"
 msgstr "copier une branche et son reflog"
 
-#: builtin/branch.c:613
+#: builtin/branch.c:616
 msgid "copy a branch, even if target exists"
 msgstr "copier une branche, même si la cible existe"
 
-#: builtin/branch.c:614
+#: builtin/branch.c:617
 msgid "list branch names"
 msgstr "afficher les noms des branches"
 
-#: builtin/branch.c:615
+#: builtin/branch.c:618
 msgid "create the branch's reflog"
 msgstr "créer le reflog de la branche"
 
-#: builtin/branch.c:617
+#: builtin/branch.c:620
 msgid "edit the description for the branch"
 msgstr "éditer la description de la branche"
 
-#: builtin/branch.c:618
+#: builtin/branch.c:621
 msgid "force creation, move/rename, deletion"
 msgstr "forcer la création, le déplacement/renommage, ou la suppression"
 
-#: builtin/branch.c:619
+#: builtin/branch.c:622
 msgid "print only branches that are merged"
 msgstr "afficher seulement les branches qui sont fusionnées"
 
-#: builtin/branch.c:620
+#: builtin/branch.c:623
 msgid "print only branches that are not merged"
 msgstr "afficher seulement les branches qui ne sont pas fusionnées"
 
-#: builtin/branch.c:621
+#: builtin/branch.c:624
 msgid "list branches in columns"
 msgstr "afficher les branches en colonnes"
 
-#: builtin/branch.c:622 builtin/for-each-ref.c:40 builtin/tag.c:411
+#: builtin/branch.c:625 builtin/for-each-ref.c:40 builtin/ls-remote.c:70
+#: builtin/tag.c:412
 msgid "key"
 msgstr "clé"
 
-#: builtin/branch.c:623 builtin/for-each-ref.c:41 builtin/tag.c:412
+#: builtin/branch.c:626 builtin/for-each-ref.c:41 builtin/ls-remote.c:71
+#: builtin/tag.c:413
 msgid "field name to sort on"
 msgstr "nom du champ servant à trier"
 
-#: builtin/branch.c:625 builtin/for-each-ref.c:43 builtin/notes.c:408
+#: builtin/branch.c:628 builtin/for-each-ref.c:43 builtin/notes.c:408
 #: builtin/notes.c:411 builtin/notes.c:571 builtin/notes.c:574
-#: builtin/tag.c:414
+#: builtin/tag.c:415
 msgid "object"
 msgstr "objet"
 
-#: builtin/branch.c:626
+#: builtin/branch.c:629
 msgid "print only branches of the object"
 msgstr "afficher seulement les branches de l'objet"
 
-#: builtin/branch.c:628 builtin/for-each-ref.c:49 builtin/tag.c:421
+#: builtin/branch.c:631 builtin/for-each-ref.c:49 builtin/tag.c:422
 msgid "sorting and filtering are case insensitive"
 msgstr "le tri et le filtrage sont non-sensibles à la casse"
 
-#: builtin/branch.c:629 builtin/for-each-ref.c:38 builtin/tag.c:419
+#: builtin/branch.c:632 builtin/for-each-ref.c:38 builtin/tag.c:420
 #: builtin/verify-tag.c:39
 msgid "format to use for the output"
 msgstr "format à utiliser pour la sortie"
 
-#: builtin/branch.c:652 builtin/clone.c:735
+#: builtin/branch.c:655 builtin/clone.c:737
 msgid "HEAD not found below refs/heads!"
 msgstr "HEAD non trouvée sous refs/heads !"
 
-#: builtin/branch.c:675
+#: builtin/branch.c:678
 msgid "--column and --verbose are incompatible"
 msgstr "--column et --verbose sont incompatibles"
 
-#: builtin/branch.c:690 builtin/branch.c:742 builtin/branch.c:751
+#: builtin/branch.c:693 builtin/branch.c:745 builtin/branch.c:754
 msgid "branch name required"
 msgstr "le nom de branche est requis"
 
-#: builtin/branch.c:718
+#: builtin/branch.c:721
 msgid "Cannot give description to detached HEAD"
 msgstr "Impossible de décrire une HEAD détachée"
 
-#: builtin/branch.c:723
+#: builtin/branch.c:726
 msgid "cannot edit description of more than one branch"
 msgstr "impossible d'éditer la description de plus d'une branche"
 
-#: builtin/branch.c:730
+#: builtin/branch.c:733
 #, c-format
 msgid "No commit on branch '%s' yet."
 msgstr "Aucun commit sur la branche '%s'."
 
-#: builtin/branch.c:733
+#: builtin/branch.c:736
 #, c-format
 msgid "No branch named '%s'."
 msgstr "Aucune branche nommée '%s'."
 
-#: builtin/branch.c:748
+#: builtin/branch.c:751
 msgid "too many branches for a copy operation"
 msgstr "trop de branches pour une opération de copie"
 
-#: builtin/branch.c:757
+#: builtin/branch.c:760
 msgid "too many arguments for a rename operation"
 msgstr "trop d'arguments pour une opération de renommage"
 
-#: builtin/branch.c:762
+#: builtin/branch.c:765
 msgid "too many arguments to set new upstream"
 msgstr "trop d'arguments pour spécifier une branche amont"
 
-#: builtin/branch.c:766
+#: builtin/branch.c:769
 #, c-format
 msgid ""
 "could not set upstream of HEAD to %s when it does not point to any branch."
@@ -6327,37 +6733,37 @@ msgstr ""
 "impossible de spécifier une branche amont de HEAD par %s qui ne pointe sur "
 "aucune branche."
 
-#: builtin/branch.c:769 builtin/branch.c:791 builtin/branch.c:807
+#: builtin/branch.c:772 builtin/branch.c:794 builtin/branch.c:810
 #, c-format
 msgid "no such branch '%s'"
 msgstr "pas de branche '%s'"
 
-#: builtin/branch.c:773
+#: builtin/branch.c:776
 #, c-format
 msgid "branch '%s' does not exist"
 msgstr "la branche '%s' n'existe pas"
 
-#: builtin/branch.c:785
+#: builtin/branch.c:788
 msgid "too many arguments to unset upstream"
 msgstr "trop d'arguments pour désactiver un amont"
 
-#: builtin/branch.c:789
+#: builtin/branch.c:792
 msgid "could not unset upstream of HEAD when it does not point to any branch."
 msgstr ""
 "impossible de désactiver une branche amont de HEAD quand elle ne pointe sur "
 "aucune branche."
 
-#: builtin/branch.c:795
+#: builtin/branch.c:798
 #, c-format
 msgid "Branch '%s' has no upstream information"
 msgstr "La branche '%s' n'a aucune information de branche amont"
 
-#: builtin/branch.c:810
+#: builtin/branch.c:813
 msgid "-a and -r options to 'git branch' do not make sense with a branch name"
 msgstr ""
 "les options -a et -r de 'git branch' n'ont pas de sens avec un nom de branche"
 
-#: builtin/branch.c:813
+#: builtin/branch.c:816
 msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
@@ -6378,7 +6784,7 @@ msgstr "La création d'un colis requiert un dépôt."
 msgid "Need a repository to unbundle."
 msgstr "Le dépaquetage d'un colis requiert un dépôt."
 
-#: builtin/cat-file.c:523
+#: builtin/cat-file.c:525
 msgid ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <type> | --textconv | --filters) [--path=<path>] <object>"
@@ -6386,7 +6792,7 @@ msgstr ""
 "git cat-file (-t [--allow-unknow-type] | -s [--allow-unknow-type] | -e | -p "
 "| <type> | --textconv | --filters) [--path=<chemin>] <objet>"
 
-#: builtin/cat-file.c:524
+#: builtin/cat-file.c:526
 msgid ""
 "git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
 "filters]"
@@ -6394,66 +6800,66 @@ msgstr ""
 "git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
 "filters]"
 
-#: builtin/cat-file.c:561
+#: builtin/cat-file.c:563
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr "<type> peut être : blob, tree, commit ou tag"
 
-#: builtin/cat-file.c:562
+#: builtin/cat-file.c:564
 msgid "show object type"
 msgstr "afficher le type de l'objet"
 
-#: builtin/cat-file.c:563
+#: builtin/cat-file.c:565
 msgid "show object size"
 msgstr "afficher la taille de l'objet"
 
-#: builtin/cat-file.c:565
+#: builtin/cat-file.c:567
 msgid "exit with zero when there's no error"
 msgstr "sortir avec un code d'erreur nul quand il n'y a aucune erreur"
 
-#: builtin/cat-file.c:566
+#: builtin/cat-file.c:568
 msgid "pretty-print object's content"
 msgstr "afficher avec mise en forme le contenu de l'objet"
 
-#: builtin/cat-file.c:568
+#: builtin/cat-file.c:570
 msgid "for blob objects, run textconv on object's content"
 msgstr "pour les objets blob, lancer textconv sur le contenu de l'objet"
 
-#: builtin/cat-file.c:570
+#: builtin/cat-file.c:572
 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:571 git-submodule.sh:878
+#: builtin/cat-file.c:573 git-submodule.sh:894
 msgid "blob"
 msgstr "blob"
 
-#: builtin/cat-file.c:572
+#: builtin/cat-file.c:574
 msgid "use a specific path for --textconv/--filters"
 msgstr "utiliser un chemin spécifique pour --textconv/--filters"
 
-#: builtin/cat-file.c:574
+#: builtin/cat-file.c:576
 msgid "allow -s and -t to work with broken/corrupt objects"
 msgstr "autoriser -s et -t à travailler sur des objets cassés/corrompus"
 
-#: builtin/cat-file.c:575
+#: builtin/cat-file.c:577
 msgid "buffer --batch output"
 msgstr "bufferiser la sortie de --batch"
 
-#: builtin/cat-file.c:577
+#: builtin/cat-file.c:579
 msgid "show info and content of objects fed from the standard input"
 msgstr ""
 "afficher l'information et le contenu des objets passés en entrée standard"
 
-#: builtin/cat-file.c:580
+#: builtin/cat-file.c:582
 msgid "show info about objects fed from the standard input"
 msgstr "afficher l'information des objets passés en entrée standard"
 
-#: builtin/cat-file.c:583
+#: builtin/cat-file.c:585
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
 msgstr ""
 "suivre les liens symbolique internes à la copie de travail (utilisé avec --"
 "batch ou --batch-check)"
 
-#: builtin/cat-file.c:585
+#: builtin/cat-file.c:587
 msgid "show all objects with --batch or --batch-check"
 msgstr "montrer tous les objets avec --batch ou --batch-check"
 
@@ -6482,7 +6888,7 @@ msgid "terminate input and output records by a NUL character"
 msgstr ""
 "terminer les enregistrements en entrée et en sortie par un caractère NUL"
 
-#: builtin/check-ignore.c:20 builtin/checkout.c:1106 builtin/gc.c:358
+#: builtin/check-ignore.c:20 builtin/checkout.c:1113 builtin/gc.c:500
 msgid "suppress progress reporting"
 msgstr "supprimer l'état d'avancement"
 
@@ -6574,9 +6980,9 @@ msgid "write the content to temporary files"
 msgstr "écrire le contenu dans des fichiers temporaires"
 
 #: builtin/checkout-index.c:173 builtin/column.c:31
-#: builtin/submodule--helper.c:1203 builtin/submodule--helper.c:1206
-#: builtin/submodule--helper.c:1212 builtin/submodule--helper.c:1574
-#: builtin/worktree.c:570
+#: builtin/submodule--helper.c:1216 builtin/submodule--helper.c:1219
+#: builtin/submodule--helper.c:1227 builtin/submodule--helper.c:1591
+#: builtin/worktree.c:610
 msgid "string"
 msgstr "chaîne"
 
@@ -6649,54 +7055,54 @@ msgstr ""
 msgid "path '%s' is unmerged"
 msgstr "le chemin '%s' n'est pas fusionné"
 
-#: builtin/checkout.c:505
+#: builtin/checkout.c:506
 msgid "you need to resolve your current index first"
 msgstr "vous devez d'abord résoudre votre index courant"
 
-#: builtin/checkout.c:636
+#: builtin/checkout.c:643
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "Impossible de faire un reflog pour '%s' : %s\n"
 
-#: builtin/checkout.c:677
+#: builtin/checkout.c:684
 msgid "HEAD is now at"
 msgstr "HEAD est maintenant sur"
 
-#: builtin/checkout.c:681 builtin/clone.c:689
+#: builtin/checkout.c:688 builtin/clone.c:691
 msgid "unable to update HEAD"
 msgstr "impossible de mettre à jour HEAD"
 
-#: builtin/checkout.c:685
+#: builtin/checkout.c:692
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Remise à zéro de la branche '%s'\n"
 
-#: builtin/checkout.c:688
+#: builtin/checkout.c:695
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Déjà sur '%s'\n"
 
-#: builtin/checkout.c:692
+#: builtin/checkout.c:699
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Basculement et remise à zéro de la branche '%s'\n"
 
-#: builtin/checkout.c:694 builtin/checkout.c:1039
+#: builtin/checkout.c:701 builtin/checkout.c:1046
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Basculement sur la nouvelle branche '%s'\n"
 
-#: builtin/checkout.c:696
+#: builtin/checkout.c:703
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Basculement sur la branche '%s'\n"
 
-#: builtin/checkout.c:747
+#: builtin/checkout.c:754
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... et %d en plus.\n"
 
-#: builtin/checkout.c:753
+#: builtin/checkout.c:760
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -6719,7 +7125,7 @@ msgstr[1] ""
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:772
+#: builtin/checkout.c:779
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -6748,162 +7154,162 @@ msgstr[1] ""
 "git branch <nouvelle-branche> %s\n"
 "\n"
 
-#: builtin/checkout.c:804
+#: builtin/checkout.c:811
 msgid "internal error in revision walk"
 msgstr "erreur interne lors du parcours des révisions"
 
-#: builtin/checkout.c:808
+#: builtin/checkout.c:815
 msgid "Previous HEAD position was"
 msgstr "La position précédente de HEAD était sur"
 
-#: builtin/checkout.c:836 builtin/checkout.c:1034
+#: builtin/checkout.c:843 builtin/checkout.c:1041
 msgid "You are on a branch yet to be born"
 msgstr "Vous êtes sur une branche qui doit encore naître"
 
-#: builtin/checkout.c:940
+#: builtin/checkout.c:947
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "une seule référence attendue, %d fournies."
 
-#: builtin/checkout.c:980 builtin/worktree.c:249
+#: builtin/checkout.c:987 builtin/worktree.c:240 builtin/worktree.c:389
 #, c-format
 msgid "invalid reference: %s"
 msgstr "référence invalide : %s"
 
-#: builtin/checkout.c:1009
+#: builtin/checkout.c:1016
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "la référence n'est pas un arbre : %s"
 
-#: builtin/checkout.c:1048
+#: builtin/checkout.c:1055
 msgid "paths cannot be used with switching branches"
 msgstr "impossible d'utiliser des chemins avec un basculement de branches"
 
-#: builtin/checkout.c:1051 builtin/checkout.c:1055
+#: builtin/checkout.c:1058 builtin/checkout.c:1062
 #, 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:1059 builtin/checkout.c:1062 builtin/checkout.c:1067
-#: builtin/checkout.c:1070
+#: builtin/checkout.c:1066 builtin/checkout.c:1069 builtin/checkout.c:1074
+#: builtin/checkout.c:1077
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' ne peut pas être utilisé avec '%s'"
 
-#: builtin/checkout.c:1075
+#: builtin/checkout.c:1082
 #, 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:1107 builtin/checkout.c:1109 builtin/clone.c:116
-#: builtin/remote.c:166 builtin/remote.c:168 builtin/worktree.c:387
-#: builtin/worktree.c:389
+#: builtin/checkout.c:1114 builtin/checkout.c:1116 builtin/clone.c:118
+#: builtin/remote.c:167 builtin/remote.c:169 builtin/worktree.c:433
+#: builtin/worktree.c:435
 msgid "branch"
 msgstr "branche"
 
-#: builtin/checkout.c:1108
+#: builtin/checkout.c:1115
 msgid "create and checkout a new branch"
 msgstr "créer et extraire une nouvelle branche"
 
-#: builtin/checkout.c:1110
+#: builtin/checkout.c:1117
 msgid "create/reset and checkout a branch"
 msgstr "créer/réinitialiser et extraire une branche"
 
-#: builtin/checkout.c:1111
+#: builtin/checkout.c:1118
 msgid "create reflog for new branch"
 msgstr "créer un reflog pour une nouvelle branche"
 
-#: builtin/checkout.c:1112 builtin/worktree.c:391
+#: builtin/checkout.c:1119 builtin/worktree.c:437
 msgid "detach HEAD at named commit"
 msgstr "détacher la HEAD au commit nommé"
 
-#: builtin/checkout.c:1113
+#: builtin/checkout.c:1120
 msgid "set upstream info for new branch"
 msgstr "paramétrer les coordonnées de branche amont pour une nouvelle branche"
 
-#: builtin/checkout.c:1115
+#: builtin/checkout.c:1122
 msgid "new-branch"
 msgstr "nouvelle branche"
 
-#: builtin/checkout.c:1115
+#: builtin/checkout.c:1122
 msgid "new unparented branch"
 msgstr "nouvelle branche sans parent"
 
-#: builtin/checkout.c:1116
+#: builtin/checkout.c:1123
 msgid "checkout our version for unmerged files"
 msgstr "extraire notre version pour les fichiers non fusionnés"
 
-#: builtin/checkout.c:1118
+#: builtin/checkout.c:1125
 msgid "checkout their version for unmerged files"
 msgstr "extraire leur version pour les fichiers non fusionnés"
 
-#: builtin/checkout.c:1120
+#: builtin/checkout.c:1127
 msgid "force checkout (throw away local modifications)"
 msgstr "forcer l'extraction (laisser tomber les modifications locales)"
 
-#: builtin/checkout.c:1122
+#: builtin/checkout.c:1129
 msgid "perform a 3-way merge with the new branch"
 msgstr "effectuer une fusion à 3 points avec la nouvelle branche"
 
-#: builtin/checkout.c:1124 builtin/merge.c:239
+#: builtin/checkout.c:1131 builtin/merge.c:241
 msgid "update ignored files (default)"
 msgstr "mettre à jour les fichiers ignorés (par défaut)"
 
-#: builtin/checkout.c:1126 builtin/log.c:1499 parse-options.h:263
+#: builtin/checkout.c:1133 builtin/log.c:1499 parse-options.h:264
 msgid "style"
 msgstr "style"
 
-#: builtin/checkout.c:1127
+#: builtin/checkout.c:1134
 msgid "conflict style (merge or diff3)"
 msgstr "style de conflit (merge (fusion) ou diff3)"
 
-#: builtin/checkout.c:1130
+#: builtin/checkout.c:1137
 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:1132
+#: builtin/checkout.c:1139
 msgid "second guess 'git checkout <no-such-branch>'"
 msgstr "réessayer d'interpréter 'git checkout <branche-inexistante>'"
 
-#: builtin/checkout.c:1134
+#: builtin/checkout.c:1141
 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:1138 builtin/clone.c:83 builtin/fetch.c:150
-#: builtin/merge.c:236 builtin/pull.c:123 builtin/push.c:556
-#: builtin/send-pack.c:173
+#: builtin/checkout.c:1145 builtin/clone.c:85 builtin/fetch.c:149
+#: builtin/merge.c:238 builtin/pull.c:128 builtin/push.c:572
+#: builtin/send-pack.c:174
 msgid "force progress reporting"
 msgstr "forcer l'affichage de l'état d'avancement"
 
-#: builtin/checkout.c:1168
+#: builtin/checkout.c:1175
 msgid "-b, -B and --orphan are mutually exclusive"
 msgstr "-b, -B et --orphan sont mutuellement exclusifs"
 
-#: builtin/checkout.c:1185
+#: builtin/checkout.c:1192
 msgid "--track needs a branch name"
 msgstr "--track requiert un nom de branche"
 
-#: builtin/checkout.c:1190
+#: builtin/checkout.c:1197
 msgid "Missing branch name; try -b"
 msgstr "Nom de branche manquant ; essayez -b"
 
-#: builtin/checkout.c:1226
+#: builtin/checkout.c:1233
 msgid "invalid path specification"
 msgstr "spécification de chemin invalide"
 
-#: builtin/checkout.c:1233
+#: builtin/checkout.c:1240
 #, 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:1237
+#: builtin/checkout.c:1244
 #, 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:1241
+#: builtin/checkout.c:1248
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -6942,7 +7348,7 @@ msgstr "Ignorerait le dépôt %s\n"
 msgid "failed to remove %s"
 msgstr "échec de la suppression de %s"
 
-#: builtin/clean.c:302 git-add--interactive.perl:572
+#: builtin/clean.c:302 git-add--interactive.perl:579
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -6955,7 +7361,7 @@ msgstr ""
 "foo         - sélectionner un élément par un préfixe unique\n"
 "            - (vide) ne rien sélectionner\n"
 
-#: builtin/clean.c:306 git-add--interactive.perl:581
+#: builtin/clean.c:306 git-add--interactive.perl:588
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -6976,8 +7382,8 @@ msgstr ""
 "*          - choisir tous les éléments\n"
 "           - (vide) terminer la sélection\n"
 
-#: builtin/clean.c:522 git-add--interactive.perl:547
-#: git-add--interactive.perl:552
+#: builtin/clean.c:522 git-add--interactive.perl:554
+#: git-add--interactive.perl:559
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "Hein (%s) ?\n"
@@ -7002,7 +7408,7 @@ msgstr "Sélectionner les éléments à supprimer"
 msgid "Remove %s [y/N]? "
 msgstr "Supprimer %s [y/N] ? "
 
-#: builtin/clean.c:788 git-add--interactive.perl:1710
+#: builtin/clean.c:788 git-add--interactive.perl:1717
 #, c-format
 msgid "Bye.\n"
 msgstr "Au revoir.\n"
@@ -7025,11 +7431,11 @@ msgstr ""
 "help                - cet écran\n"
 "?                   - aide pour la sélection en ligne"
 
-#: builtin/clean.c:823 git-add--interactive.perl:1786
+#: builtin/clean.c:823 git-add--interactive.perl:1793
 msgid "*** Commands ***"
 msgstr "*** Commandes ***"
 
-#: builtin/clean.c:824 git-add--interactive.perl:1783
+#: builtin/clean.c:824 git-add--interactive.perl:1790
 msgid "What now"
 msgstr "Et maintenant ?"
 
@@ -7098,147 +7504,149 @@ msgstr ""
 "clean.requireForce à true par défaut et ni -i, -n ou -f fourni ; refus de "
 "nettoyer"
 
-#: builtin/clone.c:40
+#: builtin/clone.c:42
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr "git clone [<options>] [--] <dépôt> [<répertoire>]"
 
-#: builtin/clone.c:85
+#: builtin/clone.c:87
 msgid "don't create a checkout"
 msgstr "ne pas créer d'extraction"
 
-#: builtin/clone.c:86 builtin/clone.c:88 builtin/init-db.c:479
+#: builtin/clone.c:88 builtin/clone.c:90 builtin/init-db.c:479
 msgid "create a bare repository"
 msgstr "créer un dépôt nu"
 
-#: builtin/clone.c:90
+#: builtin/clone.c:92
 msgid "create a mirror repository (implies bare)"
 msgstr "créer un dépôt miroir (implique dépôt nu)"
 
-#: builtin/clone.c:92
+#: builtin/clone.c:94
 msgid "to clone from a local repository"
 msgstr "pour cloner depuis un dépôt local"
 
-#: builtin/clone.c:94
+#: builtin/clone.c:96
 msgid "don't use local hardlinks, always copy"
 msgstr "ne pas utiliser de liens durs locaux, toujours copier"
 
-#: builtin/clone.c:96
+#: builtin/clone.c:98
 msgid "setup as shared repository"
 msgstr "régler comme dépôt partagé"
 
-#: builtin/clone.c:98 builtin/clone.c:102
+#: builtin/clone.c:100 builtin/clone.c:104
 msgid "pathspec"
 msgstr "spécificateur de chemin"
 
-#: builtin/clone.c:98 builtin/clone.c:102
+#: builtin/clone.c:100 builtin/clone.c:104
 msgid "initialize submodules in the clone"
 msgstr "initialiser les sous-modules dans le clone"
 
-#: builtin/clone.c:105
+#: builtin/clone.c:107
 msgid "number of submodules cloned in parallel"
 msgstr "nombre de sous-modules clonés en parallèle"
 
-#: builtin/clone.c:106 builtin/init-db.c:476
+#: builtin/clone.c:108 builtin/init-db.c:476
 msgid "template-directory"
 msgstr "répertoire-modèle"
 
-#: builtin/clone.c:107 builtin/init-db.c:477
+#: builtin/clone.c:109 builtin/init-db.c:477
 msgid "directory from which templates will be used"
 msgstr "répertoire depuis lequel les modèles vont être utilisés"
 
-#: builtin/clone.c:109 builtin/clone.c:111 builtin/submodule--helper.c:1210
-#: builtin/submodule--helper.c:1577
+#: builtin/clone.c:111 builtin/clone.c:113 builtin/submodule--helper.c:1223
+#: builtin/submodule--helper.c:1594
 msgid "reference repository"
 msgstr "dépôt de référence"
 
-#: builtin/clone.c:113
+#: builtin/clone.c:115 builtin/submodule--helper.c:1225
+#: builtin/submodule--helper.c:1596
 msgid "use --reference only while cloning"
 msgstr "utiliser seulement --reference pour cloner"
 
-#: builtin/clone.c:114 builtin/column.c:27 builtin/merge-file.c:44
+#: builtin/clone.c:116 builtin/column.c:27 builtin/merge-file.c:44
+#: builtin/pack-objects.c:3166 builtin/repack.c:213
 msgid "name"
 msgstr "nom"
 
-#: builtin/clone.c:115
+#: builtin/clone.c:117
 msgid "use <name> instead of 'origin' to track upstream"
 msgstr "utiliser <nom> au lieu de 'origin' pour suivre la branche amont"
 
-#: builtin/clone.c:117
+#: builtin/clone.c:119
 msgid "checkout <branch> instead of the remote's HEAD"
 msgstr "extraire <branche> au lieu de la HEAD du répertoire distant"
 
-#: builtin/clone.c:119
+#: builtin/clone.c:121
 msgid "path to git-upload-pack on the remote"
 msgstr "chemin vers git-upload-pack sur le serveur distant"
 
-#: builtin/clone.c:120 builtin/fetch.c:151 builtin/grep.c:813
-#: builtin/pull.c:211
+#: builtin/clone.c:122 builtin/fetch.c:150 builtin/grep.c:813
+#: builtin/pull.c:216
 msgid "depth"
 msgstr "profondeur"
 
-#: builtin/clone.c:121
+#: builtin/clone.c:123
 msgid "create a shallow clone of that depth"
 msgstr "créer un clone superficiel de cette profondeur"
 
-#: builtin/clone.c:122 builtin/fetch.c:153 builtin/pack-objects.c:3017
+#: builtin/clone.c:124 builtin/fetch.c:152 builtin/pack-objects.c:3157
 #: parse-options.h:154
 msgid "time"
 msgstr "heure"
 
-#: builtin/clone.c:123
+#: builtin/clone.c:125
 msgid "create a shallow clone since a specific time"
 msgstr "créer un clone superficiel depuis une date spécifique"
 
-#: builtin/clone.c:124 builtin/fetch.c:155
+#: builtin/clone.c:126 builtin/fetch.c:154
 msgid "revision"
 msgstr "révision"
 
-#: builtin/clone.c:125 builtin/fetch.c:156
+#: builtin/clone.c:127 builtin/fetch.c:155
 msgid "deepen history of shallow clone, excluding rev"
 msgstr ""
 "approfondir l'historique d'un clone superficiel en excluant une révision"
 
-#: builtin/clone.c:127
+#: builtin/clone.c:129
 msgid "clone only one branch, HEAD or --branch"
 msgstr "cloner seulement une branche, HEAD ou --branch"
 
-#: builtin/clone.c:129
+#: builtin/clone.c:131
 msgid "don't clone any tags, and make later fetches not to follow them"
 msgstr ""
 "ne pas cloner les tags et indiquer aux récupérations futures de ne pas le "
 "faire"
 
-#: builtin/clone.c:131
+#: builtin/clone.c:133
 msgid "any cloned submodules will be shallow"
 msgstr "tous les sous-modules clonés seront superficiels"
 
-#: builtin/clone.c:132 builtin/init-db.c:485
+#: builtin/clone.c:134 builtin/init-db.c:485
 msgid "gitdir"
 msgstr "gitdir"
 
-#: builtin/clone.c:133 builtin/init-db.c:486
+#: builtin/clone.c:135 builtin/init-db.c:486
 msgid "separate git dir from working tree"
 msgstr "séparer le répertoire git de la copie de travail"
 
-#: builtin/clone.c:134
+#: builtin/clone.c:136
 msgid "key=value"
 msgstr "clé=valeur"
 
-#: builtin/clone.c:135
+#: builtin/clone.c:137
 msgid "set config inside the new repository"
 msgstr "régler la configuration dans le nouveau dépôt"
 
-#: builtin/clone.c:136 builtin/fetch.c:173 builtin/pull.c:224
-#: builtin/push.c:567
+#: builtin/clone.c:138 builtin/fetch.c:173 builtin/pull.c:229
+#: builtin/push.c:583
 msgid "use IPv4 addresses only"
 msgstr "n'utiliser que des adresses IPv4"
 
-#: builtin/clone.c:138 builtin/fetch.c:175 builtin/pull.c:227
-#: builtin/push.c:569
+#: builtin/clone.c:140 builtin/fetch.c:175 builtin/pull.c:232
+#: builtin/push.c:585
 msgid "use IPv6 addresses only"
 msgstr "n'utiliser que des adresses IPv6"
 
-#: builtin/clone.c:276
+#: builtin/clone.c:278
 msgid ""
 "No directory name could be guessed.\n"
 "Please specify a directory on the command line"
@@ -7246,42 +7654,42 @@ msgstr ""
 "Aucun nom de répertoire n'a pu être deviné\n"
 "Veuillez spécifier un répertoire dans la ligne de commande"
 
-#: builtin/clone.c:329
+#: builtin/clone.c:331
 #, c-format
 msgid "info: Could not add alternate for '%s': %s\n"
 msgstr "info : impossible d'ajouter une alternative pour '%s' : %s\n"
 
-#: builtin/clone.c:401
+#: builtin/clone.c:403
 #, c-format
 msgid "failed to open '%s'"
 msgstr "échec à l'ouverture de '%s'"
 
-#: builtin/clone.c:409
+#: builtin/clone.c:411
 #, c-format
 msgid "%s exists and is not a directory"
 msgstr "%s existe et n'est pas un répertoire"
 
-#: builtin/clone.c:423
+#: builtin/clone.c:425
 #, c-format
 msgid "failed to stat %s\n"
 msgstr "échec du stat de %s\n"
 
-#: builtin/clone.c:445
+#: builtin/clone.c:447
 #, c-format
 msgid "failed to create link '%s'"
 msgstr "échec de la création du lien '%s'"
 
-#: builtin/clone.c:449
+#: builtin/clone.c:451
 #, c-format
 msgid "failed to copy file to '%s'"
 msgstr "échec de la copie vers '%s'"
 
-#: builtin/clone.c:475
+#: builtin/clone.c:477
 #, c-format
 msgid "done.\n"
 msgstr "fait.\n"
 
-#: builtin/clone.c:489
+#: builtin/clone.c:491
 msgid ""
 "Clone succeeded, but checkout failed.\n"
 "You can inspect what was checked out with 'git status'\n"
@@ -7291,102 +7699,102 @@ msgstr ""
 "Vous pouvez inspecter ce qui a été extrait avec 'git status'\n"
 "et réessayer l'extraction avec 'git checkout -f HEAD'\n"
 
-#: builtin/clone.c:566
+#: builtin/clone.c:568
 #, c-format
 msgid "Could not find remote branch %s to clone."
 msgstr "Impossible de trouver la branche distante '%s' à cloner."
 
-#: builtin/clone.c:661
+#: builtin/clone.c:663
 msgid "remote did not send all necessary objects"
 msgstr "le serveur distant n'a pas envoyé tous les objets nécessaires"
 
-#: builtin/clone.c:677
+#: builtin/clone.c:679
 #, c-format
 msgid "unable to update %s"
 msgstr "impossible de mettre à jour %s"
 
-#: builtin/clone.c:726
+#: builtin/clone.c:728
 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
 msgstr ""
 "la HEAD distante réfère à une référence non existante, impossible de "
 "l'extraire.\n"
 
-#: builtin/clone.c:756
+#: builtin/clone.c:758
 msgid "unable to checkout working tree"
 msgstr "impossible d'extraire la copie de travail"
 
-#: builtin/clone.c:801
+#: builtin/clone.c:803
 msgid "unable to write parameters to config file"
 msgstr "impossible d'écrire les paramètres dans le fichier de configuration"
 
-#: builtin/clone.c:864
+#: builtin/clone.c:866
 msgid "cannot repack to clean up"
 msgstr "impossible de remballer pour nettoyer"
 
-#: builtin/clone.c:866
+#: builtin/clone.c:868
 msgid "cannot unlink temporary alternates file"
 msgstr "impossible de unlinker le fichier temporaire alternates"
 
-#: builtin/clone.c:906 builtin/receive-pack.c:1946
+#: builtin/clone.c:907 builtin/receive-pack.c:1947
 msgid "Too many arguments."
 msgstr "Trop d'arguments."
 
-#: builtin/clone.c:910
+#: builtin/clone.c:911
 msgid "You must specify a repository to clone."
 msgstr "Vous devez spécifier un dépôt à cloner."
 
-#: builtin/clone.c:923
+#: builtin/clone.c:924
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr "les options --bare et --origin %s sont incompatibles."
 
-#: builtin/clone.c:926
+#: builtin/clone.c:927
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "--bare et --separate-git-dir sont incompatibles."
 
-#: builtin/clone.c:939
+#: builtin/clone.c:940
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "le dépôt '%s' n'existe pas"
 
-#: builtin/clone.c:945 builtin/fetch.c:1455
+#: builtin/clone.c:946 builtin/fetch.c:1460
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "la profondeur %s n'est pas un entier positif"
 
-#: builtin/clone.c:955
+#: builtin/clone.c:956
 #, 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:965
+#: builtin/clone.c:966
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "la copie de travail '%s' existe déjà."
 
-#: builtin/clone.c:980 builtin/clone.c:1001 builtin/difftool.c:270
-#: builtin/worktree.c:255 builtin/worktree.c:285
+#: builtin/clone.c:981 builtin/clone.c:1002 builtin/difftool.c:270
+#: builtin/worktree.c:246 builtin/worktree.c:276
 #, 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:985
+#: builtin/clone.c:986
 #, 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:1005
+#: builtin/clone.c:1006
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "Clonage dans le dépôt nu '%s'\n"
 
-#: builtin/clone.c:1007
+#: builtin/clone.c:1008
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Clonage dans '%s'...\n"
 
-#: builtin/clone.c:1031
+#: builtin/clone.c:1032
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
@@ -7460,7 +7868,7 @@ msgstr "Remplissage d'espace sur le côté droit"
 msgid "Padding space between columns"
 msgstr "Remplissage d'espace entre les colonnes"
 
-#: builtin/column.c:52
+#: builtin/column.c:51
 msgid "--command must be the first argument"
 msgstr "--command doit être le premier argument"
 
@@ -7518,61 +7926,61 @@ msgstr ""
 "Puis \"git cherry-pick --continue\" continuera le picorage \n"
 "des commits restants.\n"
 
-#: builtin/commit.c:284
+#: builtin/commit.c:293
 msgid "failed to unpack HEAD tree object"
 msgstr "échec du dépaquetage de l'objet arbre HEAD"
 
-#: builtin/commit.c:325
+#: builtin/commit.c:334
 msgid "unable to create temporary index"
 msgstr "impossible de créer l'index temporaire"
 
-#: builtin/commit.c:331
+#: builtin/commit.c:340
 msgid "interactive add failed"
 msgstr "échec de l'ajout interactif"
 
-#: builtin/commit.c:344
+#: builtin/commit.c:353
 msgid "unable to update temporary index"
 msgstr "impossible de mettre à jour l'index temporaire"
 
-#: builtin/commit.c:346
+#: builtin/commit.c:355
 msgid "Failed to update main cache tree"
 msgstr "Impossible de mettre à jour l'arbre de cache principal"
 
-#: builtin/commit.c:371 builtin/commit.c:395 builtin/commit.c:444
+#: builtin/commit.c:380 builtin/commit.c:403 builtin/commit.c:449
 msgid "unable to write new_index file"
 msgstr "impossible d'écrire le fichier new_index"
 
-#: builtin/commit.c:427
+#: builtin/commit.c:432
 msgid "cannot do a partial commit during a merge."
 msgstr "impossible de faire une validation partielle pendant une fusion."
 
-#: builtin/commit.c:429
+#: builtin/commit.c:434
 msgid "cannot do a partial commit during a cherry-pick."
 msgstr "impossible de faire une validation partielle pendant un picorage."
 
-#: builtin/commit.c:437
+#: builtin/commit.c:442
 msgid "cannot read the index"
 msgstr "impossible de lire l'index"
 
-#: builtin/commit.c:456
+#: builtin/commit.c:461
 msgid "unable to write temporary index file"
 msgstr "impossible d'écrire le fichier d'index temporaire"
 
-#: builtin/commit.c:553
+#: builtin/commit.c:558
 #, c-format
 msgid "commit '%s' lacks author header"
 msgstr "entête d'auteur manquant dans le commit '%s'"
 
-#: builtin/commit.c:555
+#: builtin/commit.c:560
 #, c-format
 msgid "commit '%s' has malformed author line"
 msgstr "le commit '%s' a une ligne d'auteur malformée"
 
-#: builtin/commit.c:574
+#: builtin/commit.c:579
 msgid "malformed --author parameter"
 msgstr "paramètre --author mal formé"
 
-#: builtin/commit.c:626
+#: builtin/commit.c:631
 msgid ""
 "unable to select a comment character that is not used\n"
 "in the current commit message"
@@ -7580,38 +7988,38 @@ msgstr ""
 "impossible de sélectionner un caractère de commentaire\n"
 "qui n'est pas utilisé dans le message de validation actuel"
 
-#: builtin/commit.c:663 builtin/commit.c:696 builtin/commit.c:1024
+#: builtin/commit.c:668 builtin/commit.c:701 builtin/commit.c:1029
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "impossible de rechercher le commit %s"
 
-#: builtin/commit.c:675 builtin/shortlog.c:309
+#: builtin/commit.c:680 builtin/shortlog.c:316
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(lecture du message de journal depuis l'entrée standard)\n"
 
-#: builtin/commit.c:677
+#: builtin/commit.c:682
 msgid "could not read log from standard input"
 msgstr "impossible de lire le journal depuis l'entrée standard"
 
-#: builtin/commit.c:681
+#: builtin/commit.c:686
 #, c-format
 msgid "could not read log file '%s'"
 msgstr "impossible de lire le fichier de journal '%s'"
 
-#: builtin/commit.c:710 builtin/commit.c:718
+#: builtin/commit.c:715 builtin/commit.c:723
 msgid "could not read SQUASH_MSG"
 msgstr "impossible de lire SQUASH_MSG"
 
-#: builtin/commit.c:715
+#: builtin/commit.c:720
 msgid "could not read MERGE_MSG"
 msgstr "impossible de lire MERGE_MSG"
 
-#: builtin/commit.c:769
+#: builtin/commit.c:774
 msgid "could not write commit template"
 msgstr "impossible d'écrire le modèle de commit"
 
-#: builtin/commit.c:787
+#: builtin/commit.c:792
 #, c-format
 msgid ""
 "\n"
@@ -7626,7 +8034,7 @@ msgstr ""
 "\t%s\n"
 "et essayez à nouveau.\n"
 
-#: builtin/commit.c:792
+#: builtin/commit.c:797
 #, c-format
 msgid ""
 "\n"
@@ -7641,7 +8049,7 @@ msgstr ""
 "\t%s\n"
 "et essayez à nouveau.\n"
 
-#: builtin/commit.c:805
+#: builtin/commit.c:810
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -7651,7 +8059,7 @@ msgstr ""
 "commençant par '%c' seront ignorées, et un message vide abandonne la "
 "validation.\n"
 
-#: builtin/commit.c:813
+#: builtin/commit.c:818
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -7662,151 +8070,151 @@ msgstr ""
 "commençant par '%c' seront conservées ; vous pouvez les supprimer vous-même\n"
 "si vous le souhaitez. Un message vide abandonne la validation.\n"
 
-#: builtin/commit.c:830
+#: builtin/commit.c:835
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr "%sAuteur :     %.*s <%.*s>"
 
-#: builtin/commit.c:838
+#: builtin/commit.c:843
 #, c-format
 msgid "%sDate:      %s"
 msgstr "%sDate :       %s"
 
-#: builtin/commit.c:845
+#: builtin/commit.c:850
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr "%sValidateur : %.*s <%.*s>"
 
-#: builtin/commit.c:862
+#: builtin/commit.c:867
 msgid "Cannot read index"
 msgstr "Impossible de lire l'index"
 
-#: builtin/commit.c:928
+#: builtin/commit.c:933
 msgid "Error building trees"
 msgstr "Erreur lors de la construction des arbres"
 
-#: builtin/commit.c:942 builtin/tag.c:256
+#: builtin/commit.c:947 builtin/tag.c:257
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "Veuillez fournir le message en utilisant l'option -m ou -F.\n"
 
-#: builtin/commit.c:986
+#: builtin/commit.c:991
 #, c-format
 msgid "--author '%s' is not 'Name <email>' and matches no existing author"
 msgstr ""
 "--author '%s' n'est pas de la forme 'Nom <email>' ni ne correspond à aucun "
 "auteur existant"
 
-#: builtin/commit.c:1000
+#: builtin/commit.c:1005
 #, c-format
 msgid "Invalid ignored mode '%s'"
 msgstr "Mode de fichier ignoré invalide '%s'"
 
-#: builtin/commit.c:1014 builtin/commit.c:1264
+#: builtin/commit.c:1019 builtin/commit.c:1269
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "Mode de fichier non suivi invalide '%s'"
 
-#: builtin/commit.c:1052
+#: builtin/commit.c:1057
 msgid "--long and -z are incompatible"
 msgstr "--long et -z sont incompatibles"
 
-#: builtin/commit.c:1085
+#: builtin/commit.c:1090
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "L'utilisation simultanée de --reset-author et --author n'a pas de sens"
 
-#: builtin/commit.c:1094
+#: builtin/commit.c:1099
 msgid "You have nothing to amend."
 msgstr "Il n'y a rien à corriger."
 
-#: builtin/commit.c:1097
+#: builtin/commit.c:1102
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr "Vous êtes en pleine fusion -- impossible de corriger (amend)."
 
-#: builtin/commit.c:1099
+#: builtin/commit.c:1104
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr "Vous êtes en plein picorage -- impossible de corriger (amend)."
 
-#: builtin/commit.c:1102
+#: builtin/commit.c:1107
 msgid "Options --squash and --fixup cannot be used together"
 msgstr "Les options --squash et --fixup ne peuvent pas être utilisées ensemble"
 
-#: builtin/commit.c:1112
+#: builtin/commit.c:1117
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "Une seule option parmi -c/-C/-F/--fixup peut être utilisée."
 
-#: builtin/commit.c:1114
+#: builtin/commit.c:1119
 msgid "Option -m cannot be combined with -c/-C/-F."
 msgstr "L'option -m ne peut pas être combinée avec -c/-C/-F."
 
-#: builtin/commit.c:1122
+#: builtin/commit.c:1127
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr "--reset-author ne peut être utilisé qu'avec -C, -c ou --amend."
 
-#: builtin/commit.c:1139
+#: builtin/commit.c:1144
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr ""
 "Une seule option parmi --include/--only/--all/--interactive/--patch peut "
 "être utilisée."
 
-#: builtin/commit.c:1141
+#: builtin/commit.c:1146
 msgid "No paths with --include/--only does not make sense."
 msgstr "Aucun chemin avec les options --include/--only n'a pas de sens."
 
-#: builtin/commit.c:1155 builtin/tag.c:542
+#: builtin/commit.c:1160 builtin/tag.c:543
 #, c-format
 msgid "Invalid cleanup mode %s"
 msgstr "Mode de nettoyage invalide %s"
 
-#: builtin/commit.c:1160
+#: builtin/commit.c:1165
 msgid "Paths with -a does not make sense."
 msgstr "Spécifier des chemins avec l'option -a n'a pas de sens."
 
-#: builtin/commit.c:1278 builtin/commit.c:1443
+#: builtin/commit.c:1303 builtin/commit.c:1480
 msgid "show status concisely"
 msgstr "afficher l'état avec concision"
 
-#: builtin/commit.c:1280 builtin/commit.c:1445
+#: builtin/commit.c:1305 builtin/commit.c:1482
 msgid "show branch information"
 msgstr "afficher l'information de branche"
 
-#: builtin/commit.c:1282
+#: builtin/commit.c:1307
 msgid "show stash information"
 msgstr "afficher l'information de remisage"
 
-#: builtin/commit.c:1284 builtin/commit.c:1447
+#: builtin/commit.c:1309 builtin/commit.c:1484
 msgid "compute full ahead/behind values"
 msgstr "calcule les valeurs complètes en avance/en retard"
 
-#: builtin/commit.c:1286
+#: builtin/commit.c:1311
 msgid "version"
 msgstr "version"
 
-#: builtin/commit.c:1286 builtin/commit.c:1449 builtin/push.c:542
-#: builtin/worktree.c:541
+#: builtin/commit.c:1311 builtin/commit.c:1486 builtin/push.c:558
+#: builtin/worktree.c:581
 msgid "machine-readable output"
 msgstr "sortie pour traitement automatique"
 
-#: builtin/commit.c:1289 builtin/commit.c:1451
+#: builtin/commit.c:1314 builtin/commit.c:1488
 msgid "show status in long format (default)"
 msgstr "afficher l'état en format long (par défaut)"
 
-#: builtin/commit.c:1292 builtin/commit.c:1454
+#: builtin/commit.c:1317 builtin/commit.c:1491
 msgid "terminate entries with NUL"
 msgstr "terminer les éléments par NUL"
 
-#: builtin/commit.c:1294 builtin/commit.c:1298 builtin/commit.c:1457
-#: builtin/fast-export.c:999 builtin/fast-export.c:1002 builtin/tag.c:396
+#: builtin/commit.c:1319 builtin/commit.c:1323 builtin/commit.c:1494
+#: builtin/fast-export.c:1001 builtin/fast-export.c:1004 builtin/tag.c:397
 msgid "mode"
 msgstr "mode"
 
-#: builtin/commit.c:1295 builtin/commit.c:1457
+#: builtin/commit.c:1320 builtin/commit.c:1494
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr ""
 "afficher les fichiers non suivis, \"mode\" facultatif : all (tous), normal, "
 "no. (Défaut : all)"
 
-#: builtin/commit.c:1299
+#: builtin/commit.c:1324
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
@@ -7814,11 +8222,11 @@ msgstr ""
 "afficher les fichiers ignorés, \"mode\" facultatif : traditional "
 "(traditionnel), matching (correspondant), no. (Défaut : traditional)"
 
-#: builtin/commit.c:1301 parse-options.h:167
+#: builtin/commit.c:1326 parse-options.h:167
 msgid "when"
 msgstr "quand"
 
-#: builtin/commit.c:1302
+#: builtin/commit.c:1327
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
@@ -7826,187 +8234,197 @@ msgstr ""
 "ignorer les modifications dans les sous-modules, \"quand\" facultatif : all "
 "(tous), dirty (sale), untracked (non suivi). (Défaut : all)"
 
-#: builtin/commit.c:1304
+#: builtin/commit.c:1329
 msgid "list untracked files in columns"
 msgstr "afficher les fichiers non suivis en colonnes"
 
-#: builtin/commit.c:1323
+#: builtin/commit.c:1330
+msgid "do not detect renames"
+msgstr "ne pas détecter les renommages"
+
+#: builtin/commit.c:1332
+msgid "detect renames, optionally set similarity index"
+msgstr ""
+"détecter les renommages, en spécifiant optionnellement le facteur de "
+"similarité"
+
+#: builtin/commit.c:1352
 msgid "Unsupported combination of ignored and untracked-files arguments"
 msgstr ""
 "Combinaison non supportée d'arguments sur les fichiers ignorés et non-suivis"
 
-#: builtin/commit.c:1413
+#: builtin/commit.c:1450
 msgid "suppress summary after successful commit"
 msgstr "supprimer le résumé après une validation réussie"
 
-#: builtin/commit.c:1414
+#: builtin/commit.c:1451
 msgid "show diff in commit message template"
 msgstr "afficher les diff dans le modèle de message de validation"
 
-#: builtin/commit.c:1416
+#: builtin/commit.c:1453
 msgid "Commit message options"
 msgstr "Options du message de validation"
 
-#: builtin/commit.c:1417 builtin/tag.c:393
+#: builtin/commit.c:1454 builtin/tag.c:394
 msgid "read message from file"
 msgstr "lire le message depuis un fichier"
 
-#: builtin/commit.c:1418
+#: builtin/commit.c:1455
 msgid "author"
 msgstr "auteur"
 
-#: builtin/commit.c:1418
+#: builtin/commit.c:1455
 msgid "override author for commit"
 msgstr "remplacer l'auteur pour la validation"
 
-#: builtin/commit.c:1419 builtin/gc.c:359
+#: builtin/commit.c:1456 builtin/gc.c:501
 msgid "date"
 msgstr "date"
 
-#: builtin/commit.c:1419
+#: builtin/commit.c:1456
 msgid "override date for commit"
 msgstr "remplacer la date pour la validation"
 
-#: builtin/commit.c:1420 builtin/merge.c:226 builtin/notes.c:402
-#: builtin/notes.c:565 builtin/tag.c:391
+#: builtin/commit.c:1457 builtin/merge.c:228 builtin/notes.c:402
+#: builtin/notes.c:565 builtin/tag.c:392
 msgid "message"
 msgstr "message"
 
-#: builtin/commit.c:1420
+#: builtin/commit.c:1457
 msgid "commit message"
 msgstr "message de validation"
 
-#: builtin/commit.c:1421 builtin/commit.c:1422 builtin/commit.c:1423
-#: builtin/commit.c:1424 parse-options.h:269 ref-filter.h:92
+#: builtin/commit.c:1458 builtin/commit.c:1459 builtin/commit.c:1460
+#: builtin/commit.c:1461 parse-options.h:270 ref-filter.h:92
 msgid "commit"
 msgstr "commit"
 
-#: builtin/commit.c:1421
+#: builtin/commit.c:1458
 msgid "reuse and edit message from specified commit"
 msgstr "réutiliser et éditer le message du commit spécifié"
 
-#: builtin/commit.c:1422
+#: builtin/commit.c:1459
 msgid "reuse message from specified commit"
 msgstr "réutiliser le message du commit spécifié"
 
-#: builtin/commit.c:1423
+#: builtin/commit.c:1460
 msgid "use autosquash formatted message to fixup specified commit"
 msgstr ""
 "utiliser un message au format autosquash pour corriger le commit spécifié"
 
-#: builtin/commit.c:1424
+#: builtin/commit.c:1461
 msgid "use autosquash formatted message to squash specified commit"
 msgstr ""
 "utiliser un message au format autosquash pour compresser le commit spécifié"
 
-#: builtin/commit.c:1425
+#: builtin/commit.c:1462
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr ""
 "à présent je suis l'auteur de la validation (utilisé avec -C/-c/--amend)"
 
-#: builtin/commit.c:1426 builtin/log.c:1446 builtin/merge.c:240
-#: builtin/pull.c:149 builtin/revert.c:105
+#: builtin/commit.c:1463 builtin/log.c:1446 builtin/merge.c:242
+#: builtin/pull.c:154 builtin/revert.c:105
 msgid "add Signed-off-by:"
 msgstr "ajouter une entrée Signed-off-by :"
 
-#: builtin/commit.c:1427
+#: builtin/commit.c:1464
 msgid "use specified template file"
 msgstr "utiliser le fichier de modèle spécifié"
 
-#: builtin/commit.c:1428
+#: builtin/commit.c:1465
 msgid "force edit of commit"
 msgstr "forcer l'édition du commit"
 
-#: builtin/commit.c:1429
+#: builtin/commit.c:1466
 msgid "default"
 msgstr "défaut"
 
-#: builtin/commit.c:1429 builtin/tag.c:397
+#: builtin/commit.c:1466 builtin/tag.c:398
 msgid "how to strip spaces and #comments from message"
 msgstr "comment éliminer les espaces et les commentaires # du message"
 
-#: builtin/commit.c:1430
+#: builtin/commit.c:1467
 msgid "include status in commit message template"
 msgstr "inclure l'état dans le modèle de message de validation"
 
-#: builtin/commit.c:1432 builtin/merge.c:238 builtin/pull.c:179
+#: builtin/commit.c:1469 builtin/merge.c:240 builtin/pull.c:184
 #: builtin/revert.c:113
 msgid "GPG sign commit"
 msgstr "signer la validation avec GPG"
 
-#: builtin/commit.c:1435
+#: builtin/commit.c:1472
 msgid "Commit contents options"
 msgstr "Valider les options des contenus"
 
-#: builtin/commit.c:1436
+#: builtin/commit.c:1473
 msgid "commit all changed files"
 msgstr "valider tous les fichiers modifiés"
 
-#: builtin/commit.c:1437
+#: builtin/commit.c:1474
 msgid "add specified files to index for commit"
 msgstr "ajouter les fichiers spécifiés à l'index pour la validation"
 
-#: builtin/commit.c:1438
+#: builtin/commit.c:1475
 msgid "interactively add files"
 msgstr "ajouter des fichiers en mode interactif"
 
-#: builtin/commit.c:1439
+#: builtin/commit.c:1476
 msgid "interactively add changes"
 msgstr "ajouter les modifications en mode interactif"
 
-#: builtin/commit.c:1440
+#: builtin/commit.c:1477
 msgid "commit only specified files"
 msgstr "valider seulement les fichiers spécifiés"
 
-#: builtin/commit.c:1441
+#: builtin/commit.c:1478
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr "éviter d'utiliser les crochets pre-commit et commit-msg"
 
-#: builtin/commit.c:1442
+#: builtin/commit.c:1479
 msgid "show what would be committed"
 msgstr "afficher ce qui serait validé"
 
-#: builtin/commit.c:1455
+#: builtin/commit.c:1492
 msgid "amend previous commit"
 msgstr "corriger la validation précédente"
 
-#: builtin/commit.c:1456
+#: builtin/commit.c:1493
 msgid "bypass post-rewrite hook"
 msgstr "éviter d'utiliser le crochet post-rewrite"
 
-#: builtin/commit.c:1461
+#: builtin/commit.c:1498
 msgid "ok to record an empty change"
 msgstr "accepter d'enregistrer une modification vide"
 
-#: builtin/commit.c:1463
+#: builtin/commit.c:1500
 msgid "ok to record a change with an empty message"
 msgstr "accepter d'enregistrer une modification avec un message vide"
 
-#: builtin/commit.c:1536
+#: builtin/commit.c:1573
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "Fichier MERGE_HEAD corrompu (%s)"
 
-#: builtin/commit.c:1543
+#: builtin/commit.c:1580
 msgid "could not read MERGE_MODE"
 msgstr "impossible de lire MERGE_MODE"
 
-#: builtin/commit.c:1562
+#: builtin/commit.c:1599
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "impossible de lire le message de validation : %s"
 
-#: builtin/commit.c:1573
+#: builtin/commit.c:1610
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr "Abandon de la validation dû à un message de validation vide.\n"
 
-#: builtin/commit.c:1578
+#: builtin/commit.c:1615
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr "Abandon de la validation ; vous n'avez pas édité le message\n"
 
-#: builtin/commit.c:1613
+#: builtin/commit.c:1650
 msgid ""
 "Repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full and quota is\n"
@@ -8016,150 +8434,215 @@ msgstr ""
 "new_index. Vérifiez que le disque n'est pas plein ou que le quota\n"
 "n'a pas été dépassé, puis lancez \"git reset HEAD\" pour réparer."
 
+#: builtin/commit-graph.c:9
+msgid "git commit-graph [--object-dir <objdir>]"
+msgstr "git commit-graph [--object-dir <objdir>]"
+
+#: builtin/commit-graph.c:10 builtin/commit-graph.c:16
+msgid "git commit-graph read [--object-dir <objdir>]"
+msgstr "git commit-graph read [--object-dir <objdir>]"
+
+#: builtin/commit-graph.c:11 builtin/commit-graph.c:21
+msgid ""
+"git commit-graph write [--object-dir <objdir>] [--append] [--stdin-packs|--"
+"stdin-commits]"
+msgstr ""
+"git commit-graph write [--object-dir <objdir>] [--append] [--stdin-packs|--"
+"stdin-commits]"
+
+#: builtin/commit-graph.c:39 builtin/commit-graph.c:92
+#: builtin/commit-graph.c:147 builtin/fetch.c:161 builtin/log.c:1466
+msgid "dir"
+msgstr "répertoire"
+
+#: builtin/commit-graph.c:40 builtin/commit-graph.c:93
+#: builtin/commit-graph.c:148
+msgid "The object directory to store the graph"
+msgstr "Le répertoire d'objet où stocker le graphe"
+
+#: builtin/commit-graph.c:95
+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:97
+msgid "start walk at commits listed by stdin"
+msgstr "commencer le parcours aux commits listés sur stdin"
+
+#: builtin/commit-graph.c:99
+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:108
+msgid "cannot use both --stdin-commits and --stdin-packs"
+msgstr "impossible d'utiliser à la fois --stdin-commits et --stdin-packs"
+
 #: builtin/config.c:10
 msgid "git config [<options>]"
 msgstr "git config [<options>]"
 
-#: builtin/config.c:58
+#: builtin/config.c:101
+#, c-format
+msgid "unrecognized --type argument, %s"
+msgstr "argument --type non reconnu, %s"
+
+#: builtin/config.c:123
 msgid "Config file location"
 msgstr "Emplacement du fichier de configuration"
 
-#: builtin/config.c:59
+#: builtin/config.c:124
 msgid "use global config file"
 msgstr "utiliser les fichier de configuration global"
 
-#: builtin/config.c:60
+#: builtin/config.c:125
 msgid "use system config file"
 msgstr "utiliser le fichier de configuration du système"
 
-#: builtin/config.c:61
+#: builtin/config.c:126
 msgid "use repository config file"
 msgstr "utiliser le fichier de configuration du dépôt"
 
-#: builtin/config.c:62
+#: builtin/config.c:127
 msgid "use given config file"
 msgstr "utiliser le fichier de configuration spécifié"
 
-#: builtin/config.c:63
+#: builtin/config.c:128
 msgid "blob-id"
 msgstr "blob-id"
 
-#: builtin/config.c:63
+#: builtin/config.c:128
 msgid "read config from given blob object"
 msgstr "lire la configuration depuis l'objet blob fourni"
 
-#: builtin/config.c:64
+#: builtin/config.c:129
 msgid "Action"
 msgstr "Action"
 
-#: builtin/config.c:65
+#: builtin/config.c:130
 msgid "get value: name [value-regex]"
 msgstr "obtenir la valeur : nom [regex-de-valeur]"
 
-#: builtin/config.c:66
+#: builtin/config.c:131
 msgid "get all values: key [value-regex]"
 msgstr "obtenir toutes les valeurs : clé [regex-de-valeur]"
 
-#: builtin/config.c:67
+#: builtin/config.c:132
 msgid "get values for regexp: name-regex [value-regex]"
 msgstr "obtenir les valeur pour la regexp : regex-de-nom [regex-de-valeur]"
 
-#: builtin/config.c:68
+#: builtin/config.c:133
 msgid "get value specific for the URL: section[.var] URL"
 msgstr "obtenir la valeur spécifique pour l'URL : section[.var] URL"
 
-#: builtin/config.c:69
+#: builtin/config.c:134
 msgid "replace all matching variables: name value [value_regex]"
 msgstr ""
 "remplacer toutes les variables correspondant : nom valeur [regex-de-valeur]"
 
-#: builtin/config.c:70
+#: builtin/config.c:135
 msgid "add a new variable: name value"
 msgstr "ajouter une nouvelle variable : nom valeur"
 
-#: builtin/config.c:71
+#: builtin/config.c:136
 msgid "remove a variable: name [value-regex]"
 msgstr "supprimer une variable : nom [regex-de-valeur]"
 
-#: builtin/config.c:72
+#: builtin/config.c:137
 msgid "remove all matches: name [value-regex]"
 msgstr "supprimer toutes les correspondances nom [regex-de-valeur]"
 
-#: builtin/config.c:73
+#: builtin/config.c:138
 msgid "rename section: old-name new-name"
 msgstr "renommer une section : ancien-nom nouveau-nom"
 
-#: builtin/config.c:74
+#: builtin/config.c:139
 msgid "remove a section: name"
 msgstr "supprimer une section : nom"
 
-#: builtin/config.c:75
+#: builtin/config.c:140
 msgid "list all"
 msgstr "afficher tout"
 
-#: builtin/config.c:76
+#: builtin/config.c:141
 msgid "open an editor"
 msgstr "ouvrir un éditeur"
 
-#: builtin/config.c:77
+#: builtin/config.c:142
 msgid "find the color configured: slot [default]"
 msgstr "trouver la couleur configurée : slot [par défaut]"
 
-#: builtin/config.c:78
+#: builtin/config.c:143
 msgid "find the color setting: slot [stdout-is-tty]"
 msgstr "trouver le réglage de la couleur : slot [stdout-est-tty]"
 
-#: builtin/config.c:79
+#: builtin/config.c:144
 msgid "Type"
 msgstr "Type"
 
-#: builtin/config.c:80
+#: builtin/config.c:145
+msgid "value is given this type"
+msgstr "ce type est assigné à la valeur"
+
+#: builtin/config.c:146
 msgid "value is \"true\" or \"false\""
 msgstr "la valeur est \"true\" (vrai) ou \"false\" (faux)"
 
-#: builtin/config.c:81
+#: builtin/config.c:147
 msgid "value is decimal number"
 msgstr "la valeur est un nombre décimal"
 
-#: builtin/config.c:82
+#: builtin/config.c:148
 msgid "value is --bool or --int"
 msgstr "la valeur est --bool ou --int"
 
-#: builtin/config.c:83
+#: builtin/config.c:149
 msgid "value is a path (file or directory name)"
 msgstr "la valeur est un chemin (vers un fichier ou un répertoire)"
 
-#: builtin/config.c:84
+#: builtin/config.c:150
 msgid "value is an expiry date"
 msgstr "la valeur est une date d'expiration"
 
-#: builtin/config.c:85
+#: builtin/config.c:151
 msgid "Other"
 msgstr "Autre"
 
-#: builtin/config.c:86
+#: builtin/config.c:152
 msgid "terminate values with NUL byte"
 msgstr "terminer les valeurs avec un caractère NUL"
 
-#: builtin/config.c:87
+#: builtin/config.c:153
 msgid "show variable names only"
 msgstr "n'afficher que les noms de variable"
 
-#: builtin/config.c:88
+#: builtin/config.c:154
 msgid "respect include directives on lookup"
 msgstr "respecter les directives d'inclusion lors de la recherche"
 
-#: builtin/config.c:89
+#: builtin/config.c:155
 msgid "show origin of config (file, standard input, blob, command line)"
 msgstr ""
 "afficher l'origine de la configuration (fichier, entrée standard, blob, "
 "ligne de commande)"
 
-#: builtin/config.c:335
+#: builtin/config.c:156
+msgid "value"
+msgstr "valeur"
+
+#: builtin/config.c:156
+msgid "with --get, use default value when missing entry"
+msgstr "avec --get, utiliser le valeur par défaut quand l'entrée n'existe pas"
+
+#: builtin/config.c:332
+#, c-format
+msgid "failed to format default config value: %s"
+msgstr "échec du formatage de la valeur de config par défaut : %s"
+
+#: builtin/config.c:431
 msgid "unable to parse default color value"
 msgstr "impossible de lire la valeur de couleur par défaut"
 
-#: builtin/config.c:479
+#: builtin/config.c:575
 #, c-format
 msgid ""
 "# This is Git's per-user configuration file.\n"
@@ -8174,16 +8657,20 @@ msgstr ""
 "#\tname = %s\n"
 "#\temail = %s\n"
 
-#: builtin/config.c:507
+#: builtin/config.c:603
 msgid "--local can only be used inside a git repository"
 msgstr "--local ne peut être utilisé qu'à l'intérieur d'un dépôt git"
 
-#: builtin/config.c:632
+#: builtin/config.c:606
+msgid "--blob can only be used inside a git repository"
+msgstr "--blob ne peut être utilisé qu'à l'intérieur d'un dépôt git"
+
+#: builtin/config.c:735
 #, c-format
 msgid "cannot create configuration file %s"
 msgstr "création impossible du fichier de configuration '%s'"
 
-#: builtin/config.c:645
+#: builtin/config.c:748
 #, c-format
 msgid ""
 "cannot overwrite multiple values with a single value\n"
@@ -8192,11 +8679,11 @@ msgstr ""
 "impossible de surcharger des valeurs multiples avec une seule valeur\n"
 "       Utilisez une regexp, --add ou --replace-all pour modifier %s."
 
-#: builtin/count-objects.c:88
+#: builtin/count-objects.c:90
 msgid "git count-objects [-v] [-H | --human-readable]"
 msgstr "git count-objects [-v] [-H | --human-readable]"
 
-#: builtin/count-objects.c:98
+#: builtin/count-objects.c:100
 msgid "print sizes in human readable format"
 msgstr "affiche les tailles dans un format humainement lisible"
 
@@ -8465,23 +8952,23 @@ msgstr "réalise un diff de répertoire complet"
 msgid "do not prompt before launching a diff tool"
 msgstr "ne pas confirmer avant de lancer l'outil de diff"
 
-#: builtin/difftool.c:705
+#: builtin/difftool.c:704
 msgid "use symlinks in dir-diff mode"
 msgstr "utiliser les liens symboliques en mode de diff de répertoire"
 
-#: builtin/difftool.c:706
+#: builtin/difftool.c:705
 msgid "<tool>"
 msgstr "<outil>"
 
-#: builtin/difftool.c:707
+#: builtin/difftool.c:706
 msgid "use the specified diff tool"
 msgstr "utiliser l'outil de diff spécifié"
 
-#: builtin/difftool.c:709
+#: builtin/difftool.c:708
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr "afficher une liste des outils de diff utilisables avec `--tool`"
 
-#: builtin/difftool.c:712
+#: builtin/difftool.c:711
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
@@ -8489,170 +8976,168 @@ msgstr ""
 "provoque la fin de 'git-difftool' si l'outil de diff invoqué renvoie un code "
 "non-nul"
 
-#: builtin/difftool.c:714
+#: builtin/difftool.c:713
 msgid "<command>"
 msgstr "<commande>"
 
-#: builtin/difftool.c:715
+#: builtin/difftool.c:714
 msgid "specify a custom command for viewing diffs"
 msgstr "spécifier une commande personnalisée pour visualiser les différences"
 
-#: builtin/difftool.c:739
+#: builtin/difftool.c:738
 msgid "no <tool> given for --tool=<tool>"
 msgstr "pas d'<outil> spécifié pour --tool=<outil>"
 
-#: builtin/difftool.c:746
+#: builtin/difftool.c:745
 msgid "no <cmd> given for --extcmd=<cmd>"
 msgstr "pas de <commande> spécifié pour --extcmd=<commande>"
 
-#: builtin/fast-export.c:26
+#: builtin/fast-export.c:27
 msgid "git fast-export [rev-list-opts]"
 msgstr "git fast-export [options-de-liste-de-révisions]"
 
-#: builtin/fast-export.c:998
+#: builtin/fast-export.c:1000
 msgid "show progress after <n> objects"
 msgstr "afficher la progression après <n> objets"
 
-#: builtin/fast-export.c:1000
+#: builtin/fast-export.c:1002
 msgid "select handling of signed tags"
 msgstr "sélectionner la gestion des étiquettes signées"
 
-#: builtin/fast-export.c:1003
+#: builtin/fast-export.c:1005
 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:1006
+#: builtin/fast-export.c:1008
 msgid "Dump marks to this file"
 msgstr "Enregistrer les marques dans ce fichier"
 
-#: builtin/fast-export.c:1008
+#: builtin/fast-export.c:1010
 msgid "Import marks from this file"
 msgstr "importer les marques depuis ce fichier"
 
-#: builtin/fast-export.c:1010
+#: builtin/fast-export.c:1012
 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:1012
+#: builtin/fast-export.c:1014
 msgid "Output full tree for each commit"
 msgstr "Afficher l'arbre complet pour chaque commit"
 
-#: builtin/fast-export.c:1014
+#: builtin/fast-export.c:1016
 msgid "Use the done feature to terminate the stream"
 msgstr "Utiliser la fonction \"done\" pour terminer le flux"
 
-#: builtin/fast-export.c:1015
+#: builtin/fast-export.c:1017
 msgid "Skip output of blob data"
 msgstr "Sauter l'affichage de données de blob"
 
-#: builtin/fast-export.c:1016
+#: builtin/fast-export.c:1018
 msgid "refspec"
 msgstr "spécificateur de référence"
 
-#: builtin/fast-export.c:1017
+#: builtin/fast-export.c:1019
 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:1018
+#: builtin/fast-export.c:1020
 msgid "anonymize output"
 msgstr "anonymise la sortie"
 
-#: builtin/fetch.c:25
+#: builtin/fetch.c:26
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
 msgstr "git fetch [<options>] [<dépôt> [<spécification-de-référence>...]]"
 
-#: builtin/fetch.c:26
+#: builtin/fetch.c:27
 msgid "git fetch [<options>] <group>"
 msgstr "git fetch [<options>] <groupe>"
 
-#: builtin/fetch.c:27
+#: builtin/fetch.c:28
 msgid "git fetch --multiple [<options>] [(<repository> | <group>)...]"
 msgstr "git fetch --multiple [<options>] [(<dépôt> | <groupe>)...]"
 
-#: builtin/fetch.c:28
+#: builtin/fetch.c:29
 msgid "git fetch --all [<options>]"
 msgstr "git fetch --all [<options>]"
 
-#: builtin/fetch.c:124 builtin/pull.c:188
+#: builtin/fetch.c:123 builtin/pull.c:193
 msgid "fetch from all remotes"
 msgstr "récupérer depuis tous les dépôts distants"
 
-#: builtin/fetch.c:126 builtin/pull.c:191
+#: builtin/fetch.c:125 builtin/pull.c:196
 msgid "append to .git/FETCH_HEAD instead of overwriting"
 msgstr "ajouter à .git/FETCH_HEAD au lieu de l'écraser"
 
-#: builtin/fetch.c:128 builtin/pull.c:194
+#: builtin/fetch.c:127 builtin/pull.c:199
 msgid "path to upload pack on remote end"
 msgstr "chemin vers lequel télécharger le paquet sur le poste distant"
 
-#: builtin/fetch.c:129 builtin/pull.c:196
+#: builtin/fetch.c:128 builtin/pull.c:201
 msgid "force overwrite of local branch"
 msgstr "forcer l'écrasement de la branche locale"
 
-#: builtin/fetch.c:131
+#: builtin/fetch.c:130
 msgid "fetch from multiple remotes"
 msgstr "récupérer depuis plusieurs dépôts distants"
 
-#: builtin/fetch.c:133 builtin/pull.c:198
+#: builtin/fetch.c:132 builtin/pull.c:203
 msgid "fetch all tags and associated objects"
 msgstr "récupérer toutes les étiquettes et leurs objets associés"
 
-#: builtin/fetch.c:135
+#: builtin/fetch.c:134
 msgid "do not fetch all tags (--no-tags)"
 msgstr "ne pas récupérer toutes les étiquettes (--no-tags)"
 
-#: builtin/fetch.c:137
+#: builtin/fetch.c:136
 msgid "number of submodules fetched in parallel"
 msgstr "nombre de sous-modules récupérés en parallèle"
 
-#: builtin/fetch.c:139 builtin/pull.c:201
+#: builtin/fetch.c:138 builtin/pull.c:206
 msgid "prune remote-tracking branches no longer on remote"
 msgstr ""
 "éliminer les branches de suivi distant si la branche n'existe plus dans le "
 "dépôt distant"
 
-#: builtin/fetch.c:141
+#: builtin/fetch.c:140
 msgid "prune local tags no longer on remote and clobber changed tags"
-msgstr "éliminer les étiquettes locales qui ont disparu du dépôt distant et qui encombrent les étiquettes modifiées"
+msgstr ""
+"éliminer les étiquettes locales qui ont disparu du dépôt distant et qui "
+"encombrent les étiquettes modifiées"
 
-#: builtin/fetch.c:142 builtin/fetch.c:165 builtin/pull.c:126
+#: builtin/fetch.c:141 builtin/fetch.c:164 builtin/pull.c:131
 msgid "on-demand"
 msgstr "à la demande"
 
-#: builtin/fetch.c:143
+#: builtin/fetch.c:142
 msgid "control recursive fetching of submodules"
 msgstr "contrôler la récupération récursive dans les sous-modules"
 
-#: builtin/fetch.c:147 builtin/pull.c:209
+#: builtin/fetch.c:146 builtin/pull.c:214
 msgid "keep downloaded pack"
 msgstr "conserver le paquet téléchargé"
 
-#: builtin/fetch.c:149
+#: builtin/fetch.c:148
 msgid "allow updating of HEAD ref"
 msgstr "permettre la mise à jour de la référence HEAD"
 
-#: builtin/fetch.c:152 builtin/fetch.c:158 builtin/pull.c:212
+#: builtin/fetch.c:151 builtin/fetch.c:157 builtin/pull.c:217
 msgid "deepen history of shallow clone"
 msgstr "approfondir l'historique d'un clone superficiel"
 
-#: builtin/fetch.c:154
+#: builtin/fetch.c:153
 msgid "deepen history of shallow repository based on time"
 msgstr "approfondir l'historique d'un clone superficiel en fonction d'une date"
 
-#: builtin/fetch.c:160 builtin/pull.c:215
+#: builtin/fetch.c:159 builtin/pull.c:220
 msgid "convert to a complete repository"
 msgstr "convertir en un dépôt complet"
 
-#: builtin/fetch.c:162 builtin/log.c:1466
-msgid "dir"
-msgstr "répertoire"
-
-#: builtin/fetch.c:163
+#: builtin/fetch.c:162
 msgid "prepend this to submodule path output"
 msgstr "préfixer ceci à la sortie du chemin du sous-module"
 
-#: builtin/fetch.c:166
+#: builtin/fetch.c:165
 msgid ""
 "default for recursive fetching of submodules (lower priority than config "
 "files)"
@@ -8660,91 +9145,101 @@ msgstr ""
 "par défaut pour la récupération récursive de sous-modules (priorité plus "
 "basse que les fichiers de config)"
 
-#: builtin/fetch.c:170 builtin/pull.c:218
+#: builtin/fetch.c:169 builtin/pull.c:223
 msgid "accept refs that update .git/shallow"
 msgstr "accepter les références qui mettent à jour .git/shallow"
 
-#: builtin/fetch.c:171 builtin/pull.c:220
+#: builtin/fetch.c:170 builtin/pull.c:225
 msgid "refmap"
 msgstr "correspondance de référence"
 
-#: builtin/fetch.c:172 builtin/pull.c:221
+#: builtin/fetch.c:171 builtin/pull.c:226
 msgid "specify fetch refmap"
 msgstr "spécifier une correspondance de référence pour la récupération"
 
-#: builtin/fetch.c:431
+#: builtin/fetch.c:172 builtin/ls-remote.c:77 builtin/push.c:582
+#: builtin/send-pack.c:172
+msgid "server-specific"
+msgstr "spécifique au serveur"
+
+#: builtin/fetch.c:172 builtin/ls-remote.c:77 builtin/push.c:582
+#: builtin/send-pack.c:173
+msgid "option to transmit"
+msgstr "option à transmettre"
+
+#: builtin/fetch.c:442
 msgid "Couldn't find remote ref HEAD"
 msgstr "impossible de trouver la référence HEAD distante"
 
-#: builtin/fetch.c:549
+#: builtin/fetch.c:560
 #, c-format
 msgid "configuration fetch.output contains invalid value %s"
 msgstr ""
 "le paramètre de configuration fetch.output contient une valeur invalide %s"
 
-#: builtin/fetch.c:642
+#: builtin/fetch.c:653
 #, c-format
 msgid "object %s not found"
 msgstr "objet %s non trouvé"
 
-#: builtin/fetch.c:646
+#: builtin/fetch.c:657
 msgid "[up to date]"
 msgstr "[à jour]"
 
-#: builtin/fetch.c:659 builtin/fetch.c:739
+#: builtin/fetch.c:670 builtin/fetch.c:750
 msgid "[rejected]"
 msgstr "[rejeté]"
 
-#: builtin/fetch.c:660
+#: builtin/fetch.c:671
 msgid "can't fetch in current branch"
 msgstr "impossible de récupérer dans la branche actuelle"
 
-#: builtin/fetch.c:669
+#: builtin/fetch.c:680
 msgid "[tag update]"
 msgstr "[mise à jour de l'étiquette]"
 
-#: builtin/fetch.c:670 builtin/fetch.c:703 builtin/fetch.c:719
-#: builtin/fetch.c:734
+#: builtin/fetch.c:681 builtin/fetch.c:714 builtin/fetch.c:730
+#: builtin/fetch.c:745
 msgid "unable to update local ref"
 msgstr "impossible de mettre à jour la référence locale"
 
-#: builtin/fetch.c:689
+#: builtin/fetch.c:700
 msgid "[new tag]"
 msgstr "[nouvelle étiquette]"
 
-#: builtin/fetch.c:692
+#: builtin/fetch.c:703
 msgid "[new branch]"
 msgstr "[nouvelle branche]"
 
-#: builtin/fetch.c:695
+#: builtin/fetch.c:706
 msgid "[new ref]"
 msgstr "[nouvelle référence]"
 
-#: builtin/fetch.c:734
+#: builtin/fetch.c:745
 msgid "forced update"
 msgstr "mise à jour forcée"
 
-#: builtin/fetch.c:739
+#: builtin/fetch.c:750
 msgid "non-fast-forward"
 msgstr "pas en avance rapide"
 
-#: builtin/fetch.c:784
+#: builtin/fetch.c:795
 #, c-format
 msgid "%s did not send all necessary objects\n"
 msgstr "%s n'a pas envoyé tous les objets nécessaires\n"
 
-#: builtin/fetch.c:804
+#: builtin/fetch.c:815
 #, c-format
 msgid "reject %s because shallow roots are not allowed to be updated"
 msgstr ""
 "%s rejeté parce que les racines superficielles ne sont pas mises à jour"
 
-#: builtin/fetch.c:892 builtin/fetch.c:988
+#: builtin/fetch.c:903 builtin/fetch.c:999
 #, c-format
 msgid "From %.*s\n"
 msgstr "Depuis %.*s\n"
 
-#: builtin/fetch.c:903
+#: builtin/fetch.c:914
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
@@ -8753,55 +9248,57 @@ msgstr ""
 "des références locales n'ont pas pu être mises à jour ; essayez de lancer\n"
 " 'git remote prune %s' pour supprimer des branches anciennes en conflit"
 
-#: builtin/fetch.c:958
+#: builtin/fetch.c:969
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr "   (%s sera en suspens)"
 
-#: builtin/fetch.c:959
+#: builtin/fetch.c:970
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr "   (%s est devenu en suspens)"
 
-#: builtin/fetch.c:991
+#: builtin/fetch.c:1002
 msgid "[deleted]"
 msgstr "[supprimé]"
 
-#: builtin/fetch.c:992 builtin/remote.c:1024
+#: builtin/fetch.c:1003 builtin/remote.c:1033
 msgid "(none)"
 msgstr "(aucun(e))"
 
-#: builtin/fetch.c:1015
+#: builtin/fetch.c:1026
 #, c-format
 msgid "Refusing to fetch into current branch %s of non-bare repository"
 msgstr "Refus de récupérer dans la branche courant %s d'un dépôt non nu"
 
-#: builtin/fetch.c:1034
+#: builtin/fetch.c:1045
 #, c-format
 msgid "Option \"%s\" value \"%s\" is not valid for %s"
 msgstr "La valeur \"%2$s\" de l'option \"%1$s\" est invalide pour %3$s"
 
-#: builtin/fetch.c:1037
+#: builtin/fetch.c:1048
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr "L'option \"%s\" est ignorée pour %s\n"
 
-#: builtin/fetch.c:1277
+#: builtin/fetch.c:1287
 #, c-format
 msgid "Fetching %s\n"
 msgstr "Récupération de %s\n"
 
-#: builtin/fetch.c:1279 builtin/remote.c:97
+#: builtin/fetch.c:1289 builtin/remote.c:98
 #, c-format
 msgid "Could not fetch %s"
 msgstr "Impossible de récupérer %s"
 
-#: builtin/fetch.c:1325 builtin/fetch.c:1498
+#: builtin/fetch.c:1335 builtin/fetch.c:1503
 msgid ""
 "--filter can only be used with the remote configured in core.partialClone"
-msgstr "--filter ne peut être utilisé qu'avec le dépôt distant configuré dans core.partialClone"
+msgstr ""
+"--filter ne peut être utilisé qu'avec le dépôt distant configuré dans core."
+"partialClone"
 
-#: builtin/fetch.c:1350
+#: builtin/fetch.c:1358
 msgid ""
 "No remote repository specified.  Please, specify either a URL or a\n"
 "remote name from which new revisions should be fetched."
@@ -8809,40 +9306,40 @@ msgstr ""
 "Aucun dépôt distant spécifié. Veuillez spécifier une URL ou un nom\n"
 "distant depuis lesquels les nouvelles révisions devraient être récupérées."
 
-#: builtin/fetch.c:1394
+#: builtin/fetch.c:1395
 msgid "You need to specify a tag name."
 msgstr "Vous devez spécifier un nom d'étiquette."
 
-#: builtin/fetch.c:1439
+#: builtin/fetch.c:1444
 msgid "Negative depth in --deepen is not supported"
 msgstr "Une profondeur négative dans --deepen n'est pas supportée"
 
-#: builtin/fetch.c:1441
+#: builtin/fetch.c:1446
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen et --depth sont mutuellement exclusifs"
 
-#: builtin/fetch.c:1446
+#: builtin/fetch.c:1451
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth et --unshallow ne peuvent pas être utilisés ensemble"
 
-#: builtin/fetch.c:1448
+#: builtin/fetch.c:1453
 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:1464
+#: builtin/fetch.c:1469
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all n'accepte pas d'argument de dépôt"
 
-#: builtin/fetch.c:1466
+#: builtin/fetch.c:1471
 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:1475
+#: builtin/fetch.c:1480
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "distant ou groupe distant inexistant : %s"
 
-#: builtin/fetch.c:1482
+#: builtin/fetch.c:1487
 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 "
@@ -8910,7 +9407,7 @@ msgstr "échapper les champs réservés pour compatibilité avec Tcl"
 msgid "show only <n> matched refs"
 msgstr "n'afficher que <n> références correspondant"
 
-#: builtin/for-each-ref.c:39 builtin/tag.c:420
+#: builtin/for-each-ref.c:39 builtin/tag.c:421
 msgid "respect format colors"
 msgstr "respecter les couleurs de formatage"
 
@@ -8934,82 +9431,82 @@ msgstr "afficher seulement les références qui contiennent le commit"
 msgid "print only refs which don't contain the commit"
 msgstr "afficher seulement les références qui ne contiennent pas le commit"
 
-#: builtin/fsck.c:568
+#: builtin/fsck.c:569
 msgid "Checking object directories"
 msgstr "Vérification des répertoires d'objet"
 
-#: builtin/fsck.c:660
+#: builtin/fsck.c:661
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<options>] [<objet>...]"
 
-#: builtin/fsck.c:666
+#: builtin/fsck.c:667
 msgid "show unreachable objects"
 msgstr "afficher les objets inaccessibles"
 
-#: builtin/fsck.c:667
+#: builtin/fsck.c:668
 msgid "show dangling objects"
 msgstr "afficher les objets en suspens"
 
-#: builtin/fsck.c:668
+#: builtin/fsck.c:669
 msgid "report tags"
 msgstr "afficher les étiquettes"
 
-#: builtin/fsck.c:669
+#: builtin/fsck.c:670
 msgid "report root nodes"
 msgstr "signaler les nœuds racines"
 
-#: builtin/fsck.c:670
+#: builtin/fsck.c:671
 msgid "make index objects head nodes"
 msgstr "considérer les objets de l'index comme nœuds tête"
 
 # translated from man page
-#: builtin/fsck.c:671
+#: builtin/fsck.c:672
 msgid "make reflogs head nodes (default)"
 msgstr "considérer les reflogs comme nœuds tête (par défaut)"
 
-#: builtin/fsck.c:672
+#: builtin/fsck.c:673
 msgid "also consider packs and alternate objects"
 msgstr "inspecter aussi les objets pack et alternatifs"
 
-#: builtin/fsck.c:673
+#: builtin/fsck.c:674
 msgid "check only connectivity"
 msgstr "ne vérifier que la connectivité"
 
-#: builtin/fsck.c:674
+#: builtin/fsck.c:675
 msgid "enable more strict checking"
 msgstr "activer une vérification plus strict"
 
-#: builtin/fsck.c:676
+#: builtin/fsck.c:677
 msgid "write dangling objects in .git/lost-found"
 msgstr "écrire les objets en suspens dans .git/lost-found"
 
-#: builtin/fsck.c:677 builtin/prune.c:108
+#: builtin/fsck.c:678 builtin/prune.c:109
 msgid "show progress"
 msgstr "afficher la progression"
 
-#: builtin/fsck.c:678
+#: builtin/fsck.c:679
 msgid "show verbose names for reachable objects"
 msgstr "afficher les noms étendus pour les objets inaccessibles"
 
-#: builtin/fsck.c:742
+#: builtin/fsck.c:745
 msgid "Checking objects"
 msgstr "Vérification des objets"
 
-#: builtin/gc.c:27
+#: builtin/gc.c:33
 msgid "git gc [<options>]"
 msgstr "git gc [<options>]"
 
-#: builtin/gc.c:80
+#: builtin/gc.c:88
 #, c-format
 msgid "Failed to fstat %s: %s"
 msgstr "Échec du stat de %s : %s"
 
-#: builtin/gc.c:312
+#: builtin/gc.c:452
 #, c-format
 msgid "Can't stat %s"
 msgstr "impossible de faire un stat de %s"
 
-#: builtin/gc.c:321
+#: builtin/gc.c:461
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -9025,47 +9522,56 @@ msgstr ""
 "\n"
 "%s"
 
-#: builtin/gc.c:360
+#: builtin/gc.c:502
 msgid "prune unreferenced objects"
 msgstr "éliminer les objets non référencés"
 
-#: builtin/gc.c:362
+#: builtin/gc.c:504
 msgid "be more thorough (increased runtime)"
 msgstr "être plus consciencieux (durée de traitement allongée)"
 
-#: builtin/gc.c:363
+#: builtin/gc.c:505
 msgid "enable auto-gc mode"
 msgstr "activer le mode auto-gc"
 
-#: builtin/gc.c:366
+#: builtin/gc.c:508
 msgid "force running gc even if there may be another gc running"
 msgstr ""
 "forcer le lancement du ramasse-miettes même si un autre ramasse-miettes "
 "tourne déjà"
 
-#: builtin/gc.c:384
+#: builtin/gc.c:511
+msgid "repack all other packs except the largest pack"
+msgstr "recompacter tous les autres paquets excepté le plus gros paquet"
+
+#: builtin/gc.c:528
 #, c-format
-msgid "Failed to parse gc.logexpiry value %s"
-msgstr "impossible de lire la valeur de gc.logexpiry %s"
+msgid "failed to parse gc.logexpiry value %s"
+msgstr "impossible d'analyser gc.logexpiry %s"
 
-#: builtin/gc.c:412
+#: builtin/gc.c:539
+#, c-format
+msgid "failed to parse prune expiry value %s"
+msgstr "impossible d'analyser la valeur d'expiration d'élagage %s"
+
+#: builtin/gc.c:559
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
 msgstr ""
 "Compression automatique du dépôt en tâche de fond pour optimiser les "
 "performances.\n"
 
-#: builtin/gc.c:414
+#: builtin/gc.c:561
 #, c-format
 msgid "Auto packing the repository for optimum performance.\n"
 msgstr "Compression du dépôt pour optimiser les performances.\n"
 
-#: builtin/gc.c:415
+#: builtin/gc.c:562
 #, c-format
 msgid "See \"git help gc\" for manual housekeeping.\n"
 msgstr "Voir \"git help gc\" pour toute information sur le nettoyage manuel.\n"
 
-#: builtin/gc.c:440
+#: builtin/gc.c:598
 #, c-format
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
@@ -9073,23 +9579,23 @@ msgstr ""
 "un ramasse-miettes est déjà en cours sur la machine '%s' pid %<PRIuMAX> "
 "(utilisez --force si ce n'est pas le cas)"
 
-#: builtin/gc.c:487
+#: builtin/gc.c:645
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove them."
 msgstr ""
 "Il y a trop d'objets seuls inaccessibles ; lancez 'git prune' pour les "
 "supprimer."
 
-#: builtin/grep.c:27
+#: builtin/grep.c:28
 msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
 msgstr "git grep [<options>] [-e] <motif> [<révision>...] [[--] <chemin>...]"
 
-#: builtin/grep.c:225
+#: builtin/grep.c:226
 #, c-format
 msgid "grep: failed to create thread: %s"
 msgstr "grep : échec de création du fil: %s"
 
-#: builtin/grep.c:283
+#: builtin/grep.c:284
 #, c-format
 msgid "invalid number of threads specified (%d) for %s"
 msgstr "nombre de fils spécifié invalide (%d) pour %s"
@@ -9098,17 +9604,17 @@ msgstr "nombre de fils spécifié invalide (%d) pour %s"
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:292 builtin/index-pack.c:1523 builtin/index-pack.c:1712
+#: builtin/grep.c:293 builtin/index-pack.c:1535 builtin/index-pack.c:1727
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "pas de support des fils, ignore %s"
 
-#: builtin/grep.c:460 builtin/grep.c:580 builtin/grep.c:622
+#: builtin/grep.c:461 builtin/grep.c:582 builtin/grep.c:623
 #, c-format
 msgid "unable to read tree (%s)"
 msgstr "impossible de lire l'arbre (%s)"
 
-#: builtin/grep.c:637
+#: builtin/grep.c:638
 #, c-format
 msgid "unable to grep from object of type %s"
 msgstr "impossible de faire un grep sur un objet de type %s"
@@ -9315,7 +9821,7 @@ msgstr ""
 msgid "unable to resolve revision: %s"
 msgstr "impossible de résoudre la révision : %s"
 
-#: builtin/grep.c:1036 builtin/index-pack.c:1519
+#: builtin/grep.c:1036 builtin/index-pack.c:1531
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "nombre de fils spécifié invalide (%d)"
@@ -9388,58 +9894,62 @@ msgstr ""
 msgid "process file as it were from this path"
 msgstr "traiter le fichier comme s'il venait de ce chemin"
 
-#: builtin/help.c:43
+#: builtin/help.c:45
 msgid "print all available commands"
 msgstr "afficher toutes les commandes disponibles"
 
-#: builtin/help.c:44
+#: builtin/help.c:46
 msgid "exclude guides"
 msgstr "exclure les guides"
 
-#: builtin/help.c:45
+#: builtin/help.c:47
 msgid "print list of useful guides"
 msgstr "afficher une liste de guides utiles"
 
-#: builtin/help.c:46
+#: builtin/help.c:48
 msgid "show man page"
 msgstr "afficher la page de manuel"
 
-#: builtin/help.c:47
+#: builtin/help.c:49
 msgid "show manual in web browser"
 msgstr "afficher le manuel dans un navigateur web"
 
-#: builtin/help.c:49
+#: builtin/help.c:51
 msgid "show info page"
 msgstr "afficher la page info"
 
-#: builtin/help.c:55
+#: builtin/help.c:53
+msgid "print command description"
+msgstr "afficher la description de la commande"
+
+#: builtin/help.c:58
 msgid "git help [--all] [--guides] [--man | --web | --info] [<command>]"
 msgstr "git help [--all] [--guides] [--man | --web | --info] [<commande>]"
 
-#: builtin/help.c:67
+#: builtin/help.c:70
 #, c-format
 msgid "unrecognized help format '%s'"
 msgstr "format d'aide non reconnu '%s'"
 
-#: builtin/help.c:94
+#: builtin/help.c:97
 msgid "Failed to start emacsclient."
 msgstr "échec de démarrage d'emacsclient."
 
-#: builtin/help.c:107
+#: builtin/help.c:110
 msgid "Failed to parse emacsclient version."
 msgstr "échec d'analyse de la version d'emacsclient."
 
-#: builtin/help.c:115
+#: builtin/help.c:118
 #, c-format
 msgid "emacsclient version '%d' too old (< 22)."
 msgstr "la version d'emacsclient '%d' est trop ancienne (<22)."
 
-#: builtin/help.c:133 builtin/help.c:155 builtin/help.c:165 builtin/help.c:173
+#: builtin/help.c:136 builtin/help.c:158 builtin/help.c:168 builtin/help.c:176
 #, c-format
 msgid "failed to exec '%s'"
 msgstr "échec de l'exécution de '%s'"
 
-#: builtin/help.c:211
+#: builtin/help.c:214
 #, c-format
 msgid ""
 "'%s': path for unsupported man viewer.\n"
@@ -9448,7 +9958,7 @@ msgstr ""
 "'%s' : chemin pour l'utilitaire de visualisation de manuel non supporté.\n"
 "Veuillez utiliser plutôt 'man.<outil>.cmd'."
 
-#: builtin/help.c:223
+#: builtin/help.c:226
 #, c-format
 msgid ""
 "'%s': cmd for supported man viewer.\n"
@@ -9457,360 +9967,327 @@ msgstr ""
 "'%s' : chemin pour l'utilitaire de visualisation de manuel supporté.\n"
 "Veuillez utiliser plutôt 'man.<outil>.cmd'."
 
-#: builtin/help.c:340
+#: builtin/help.c:343
 #, c-format
 msgid "'%s': unknown man viewer."
 msgstr "'%s' : visualiseur de manuel inconnu."
 
-#: builtin/help.c:357
+#: builtin/help.c:360
 msgid "no man viewer handled the request"
 msgstr "aucun visualiseur de manuel n'a pris en charge la demande"
 
-#: builtin/help.c:365
+#: builtin/help.c:368
 msgid "no info viewer handled the request"
 msgstr "aucun visualiseur de 'info' n'a pris en charge la demande"
 
-#: builtin/help.c:407
-msgid "Defining attributes per path"
-msgstr "Définition des attributs par chemin"
-
-#: builtin/help.c:408
-msgid "Everyday Git With 20 Commands Or So"
-msgstr "Git de tous les jours avec à peu près 20 commandes"
-
-#: builtin/help.c:409
-msgid "A Git glossary"
-msgstr "Un glossaire Git"
-
-#: builtin/help.c:410
-msgid "Specifies intentionally untracked files to ignore"
-msgstr "Spécifie les fichiers non-suivis à ignorer intentionnellement"
-
-#: builtin/help.c:411
-msgid "Defining submodule properties"
-msgstr "Définition des propriétés de sous-module"
-
-#: builtin/help.c:412
-msgid "Specifying revisions and ranges for Git"
-msgstr "Spécification des révisions et portées pour Git"
-
-#: builtin/help.c:413
-msgid "A tutorial introduction to Git (for version 1.5.1 or newer)"
-msgstr ""
-"Une introduction pratique à Git (pour les versions 1.5.1 et supérieures)"
-
-#: builtin/help.c:414
-msgid "An overview of recommended workflows with Git"
-msgstr "Un aperçu des flux de travail recommandés avec Git"
-
-#: builtin/help.c:426
-msgid "The common Git guides are:\n"
-msgstr "Les guides Git populaires sont : \n"
-
-#: builtin/help.c:444
+#: builtin/help.c:415
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr "'%s' est un alias de '%s'"
 
-#: builtin/help.c:466 builtin/help.c:483
+#: builtin/help.c:442 builtin/help.c:459
 #, c-format
 msgid "usage: %s%s"
 msgstr "usage : %s%s"
 
-#: builtin/index-pack.c:157
+#: builtin/index-pack.c:158
 #, c-format
 msgid "unable to open %s"
 msgstr "impossible d'ouvrir %s"
 
-#: builtin/index-pack.c:207
+#: builtin/index-pack.c:208
 #, c-format
 msgid "object type mismatch at %s"
 msgstr "type d'objet non correspondant à %s"
 
-#: builtin/index-pack.c:227
+#: builtin/index-pack.c:228
 #, c-format
 msgid "did not receive expected object %s"
 msgstr "objet attendu non reçu %s"
 
-#: builtin/index-pack.c:230
+#: builtin/index-pack.c:231
 #, c-format
 msgid "object %s: expected type %s, found %s"
 msgstr "objet %s : type attendu %s, reçu %s"
 
-#: builtin/index-pack.c:272
+#: builtin/index-pack.c:273
 #, c-format
 msgid "cannot fill %d byte"
 msgid_plural "cannot fill %d bytes"
 msgstr[0] "impossible de remplir %d octet"
 msgstr[1] "impossible de remplir %d octets"
 
-#: builtin/index-pack.c:282
+#: builtin/index-pack.c:283
 msgid "early EOF"
 msgstr "fin de fichier prématurée"
 
-#: builtin/index-pack.c:283
+#: builtin/index-pack.c:284
 msgid "read error on input"
 msgstr "erreur de lecture sur l'entrée"
 
-#: builtin/index-pack.c:295
+#: builtin/index-pack.c:296
 msgid "used more bytes than were available"
 msgstr "plus d'octets utilisés que disponibles"
 
-#: builtin/index-pack.c:302
+#: builtin/index-pack.c:303
 msgid "pack too large for current definition of off_t"
 msgstr "le paquet est trop grand pour la définition actuelle de off_t"
 
-#: builtin/index-pack.c:305 builtin/unpack-objects.c:93
+#: builtin/index-pack.c:306 builtin/unpack-objects.c:93
 msgid "pack exceeds maximum allowed size"
 msgstr "le paquet dépasse la taille maximale permise"
 
-#: builtin/index-pack.c:320
+#: builtin/index-pack.c:321
 #, c-format
 msgid "unable to create '%s'"
 msgstr "impossible de créer '%s'"
 
-#: builtin/index-pack.c:326
+#: builtin/index-pack.c:327
 #, c-format
 msgid "cannot open packfile '%s'"
 msgstr "impossible d'ouvrir le fichier paquet '%s'"
 
-#: builtin/index-pack.c:340
+#: builtin/index-pack.c:341
 msgid "pack signature mismatch"
 msgstr "la signature du paquet ne correspond pas"
 
-#: builtin/index-pack.c:342
+#: builtin/index-pack.c:343
 #, c-format
 msgid "pack version %<PRIu32> unsupported"
 msgstr "la version de paquet %<PRIu32> non supportée"
 
-#: builtin/index-pack.c:360
+#: builtin/index-pack.c:361
 #, c-format
 msgid "pack has bad object at offset %<PRIuMAX>: %s"
 msgstr "le paquet a un mauvais objet à l'offset %<PRIuMAX> : %s"
 
-#: builtin/index-pack.c:481
+#: builtin/index-pack.c:482
 #, c-format
 msgid "inflate returned %d"
 msgstr "la décompression (inflate) a retourné %d"
 
-#: builtin/index-pack.c:530
+#: builtin/index-pack.c:531
 msgid "offset value overflow for delta base object"
 msgstr "dépassement de la valeur d'offset pour l'objet delta de base"
 
-#: builtin/index-pack.c:538
+#: builtin/index-pack.c:539
 msgid "delta base offset is out of bound"
 msgstr "l'objet delta de base est hors limite"
 
-#: builtin/index-pack.c:546
+#: builtin/index-pack.c:547
 #, c-format
 msgid "unknown object type %d"
 msgstr "type d'objet inconnu %d"
 
-#: builtin/index-pack.c:577
+#: builtin/index-pack.c:578
 msgid "cannot pread pack file"
 msgstr "impossible de lire (pread) le fichier paquet"
 
-#: builtin/index-pack.c:579
+#: builtin/index-pack.c:580
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
 msgstr[0] "fin prématurée du fichier paquet, %<PRIuMAX> octet lu"
 msgstr[1] "fin prématurée du fichier paquet, %<PRIuMAX> octets lus"
 
-#: builtin/index-pack.c:605
+#: builtin/index-pack.c:606
 msgid "serious inflate inconsistency"
 msgstr "grave incohérence dans la décompression (inflate)"
 
-#: builtin/index-pack.c:750 builtin/index-pack.c:756 builtin/index-pack.c:779
-#: builtin/index-pack.c:818 builtin/index-pack.c:827
+#: builtin/index-pack.c:751 builtin/index-pack.c:757 builtin/index-pack.c:780
+#: builtin/index-pack.c:819 builtin/index-pack.c:828
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "COLLISION SHA1 TROUVÉE AVEC %s !"
 
-#: builtin/index-pack.c:753 builtin/pack-objects.c:182
-#: builtin/pack-objects.c:276
+#: builtin/index-pack.c:754 builtin/pack-objects.c:198
+#: builtin/pack-objects.c:292
 #, c-format
 msgid "unable to read %s"
 msgstr "impossible de lire %s"
 
-#: builtin/index-pack.c:816
+#: builtin/index-pack.c:817
 #, c-format
 msgid "cannot read existing object info %s"
 msgstr "impossible de lire l'information existante de l'objet %s"
 
-#: builtin/index-pack.c:824
+#: builtin/index-pack.c:825
 #, c-format
 msgid "cannot read existing object %s"
 msgstr "impossible de lire l'objet existant %s"
 
-#: builtin/index-pack.c:838
+#: builtin/index-pack.c:839
 #, c-format
 msgid "invalid blob object %s"
 msgstr "objet blob invalide %s"
 
-#: builtin/index-pack.c:853
+#: builtin/index-pack.c:842 builtin/index-pack.c:860
+msgid "fsck error in packed object"
+msgstr "erreur de fsck dans l'objet empaqueté"
+
+#: builtin/index-pack.c:857
 #, c-format
 msgid "invalid %s"
 msgstr "%s invalide"
 
-#: builtin/index-pack.c:856
-msgid "Error in object"
-msgstr "Erreur dans l'objet"
-
-#: builtin/index-pack.c:858
+#: builtin/index-pack.c:862
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr "Tous les objets enfants de %s ne sont pas accessibles"
 
-#: builtin/index-pack.c:930 builtin/index-pack.c:961
+#: builtin/index-pack.c:934 builtin/index-pack.c:965
 msgid "failed to apply delta"
 msgstr "échec d'application du delta"
 
-#: builtin/index-pack.c:1131
+#: builtin/index-pack.c:1135
 msgid "Receiving objects"
 msgstr "Réception d'objets"
 
-#: builtin/index-pack.c:1131
+#: builtin/index-pack.c:1135
 msgid "Indexing objects"
 msgstr "Indexation d'objets"
 
-#: builtin/index-pack.c:1165
+#: builtin/index-pack.c:1169
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr "le paquet est corrompu (SHA1 ne correspond pas)"
 
-#: builtin/index-pack.c:1170
+#: builtin/index-pack.c:1174
 msgid "cannot fstat packfile"
 msgstr "impossible d'obtenir le statut (fstat) du fichier paquet"
 
-#: builtin/index-pack.c:1173
+#: builtin/index-pack.c:1177
 msgid "pack has junk at the end"
 msgstr "le paquet est invalide à la fin"
 
-#: builtin/index-pack.c:1185
+#: builtin/index-pack.c:1189
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr "confusion extrême dans parse_pack_objects()"
 
-#: builtin/index-pack.c:1208
+#: builtin/index-pack.c:1212
 msgid "Resolving deltas"
 msgstr "Résolution des deltas"
 
-#: builtin/index-pack.c:1219
+#: builtin/index-pack.c:1223
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "impossible de créer le fil : %s"
 
-#: builtin/index-pack.c:1261
+#: builtin/index-pack.c:1265
 msgid "confusion beyond insanity"
 msgstr "confusion extrême"
 
-#: builtin/index-pack.c:1267
+#: builtin/index-pack.c:1271
 #, c-format
 msgid "completed with %d local object"
 msgid_plural "completed with %d local objects"
 msgstr[0] "complété avec %d objet local"
 msgstr[1] "complété avec %d objets locaux"
 
-#: builtin/index-pack.c:1279
+#: builtin/index-pack.c:1283
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr ""
 "Somme de contrôle de fin inattendue pour %s (corruption sur le disque ?)"
 
-#: builtin/index-pack.c:1283
+#: builtin/index-pack.c:1287
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
 msgstr[0] "le paquet a %d delta non résolu"
 msgstr[1] "le paquet a %d deltas non résolus"
 
-#: builtin/index-pack.c:1307
+#: builtin/index-pack.c:1311
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr "impossible de compresser l'objet ajouté (%d)"
 
-#: builtin/index-pack.c:1383
+#: builtin/index-pack.c:1388
 #, c-format
 msgid "local object %s is corrupt"
 msgstr "l'objet local %s est corrompu"
 
-#: builtin/index-pack.c:1397
+#: builtin/index-pack.c:1402
 #, c-format
 msgid "packfile name '%s' does not end with '.pack'"
 msgstr "le nom de fichier paquet '%s' ne se termine pas par '.pack'"
 
-#: builtin/index-pack.c:1422
+#: builtin/index-pack.c:1427
 #, c-format
 msgid "cannot write %s file '%s'"
 msgstr "impossible d'écrire le fichier %s '%s'"
 
-#: builtin/index-pack.c:1430
+#: builtin/index-pack.c:1435
 #, c-format
 msgid "cannot close written %s file '%s'"
 msgstr "impossible de fermer le fichier %s écrit '%s'"
 
-#: builtin/index-pack.c:1454
+#: builtin/index-pack.c:1459
 msgid "error while closing pack file"
 msgstr "erreur en fermeture du fichier paquet"
 
-#: builtin/index-pack.c:1468
+#: builtin/index-pack.c:1473
 msgid "cannot store pack file"
 msgstr "impossible de stocker le fichier paquet"
 
-#: builtin/index-pack.c:1476
+#: builtin/index-pack.c:1481
 msgid "cannot store index file"
 msgstr "impossible de stocker le fichier d'index"
 
-#: builtin/index-pack.c:1513
+#: builtin/index-pack.c:1525
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "mauvais pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1581
+#: builtin/index-pack.c:1594
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Impossible d'ouvrir le fichier paquet existant '%s'"
 
-#: builtin/index-pack.c:1583
+#: builtin/index-pack.c:1596
 #, 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:1631
+#: builtin/index-pack.c:1644
 #, 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:1638
+#: builtin/index-pack.c:1651
 #, 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:1675
+#: builtin/index-pack.c:1688
 msgid "Cannot come back to cwd"
 msgstr "Impossible de revenir au répertoire de travail courant"
 
-#: builtin/index-pack.c:1724 builtin/index-pack.c:1727
-#: builtin/index-pack.c:1743 builtin/index-pack.c:1747
+#: builtin/index-pack.c:1739 builtin/index-pack.c:1742
+#: builtin/index-pack.c:1758 builtin/index-pack.c:1762
 #, c-format
 msgid "bad %s"
 msgstr "mauvais %s"
 
-#: builtin/index-pack.c:1763
+#: builtin/index-pack.c:1778
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin ne peut pas être utilisé sans --stdin"
 
-#: builtin/index-pack.c:1765
+#: builtin/index-pack.c:1780
 msgid "--stdin requires a git repository"
 msgstr "--stdin requiert un dépôt git"
 
-#: builtin/index-pack.c:1771
+#: builtin/index-pack.c:1786
 msgid "--verify with no packfile name given"
 msgstr "--verify sans nom de fichier paquet donné"
 
+#: builtin/index-pack.c:1836 builtin/unpack-objects.c:578
+msgid "fsck error in pack objects"
+msgstr "erreur de fsck dans les objets paquets"
+
 #: builtin/init-db.c:55
 #, c-format
 msgid "cannot stat '%s'"
@@ -9848,8 +10325,8 @@ msgstr "modèle %s ignoré"
 
 #: builtin/init-db.c:120
 #, c-format
-msgid "templates not found %s"
-msgstr "modèles non trouvés %s"
+msgid "templates not found in %s"
+msgstr "modèles non trouvés dans %s"
 
 #: builtin/init-db.c:135
 #, c-format
@@ -9907,11 +10384,6 @@ msgstr "permissions"
 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:516 builtin/init-db.c:521
-#, c-format
-msgid "cannot mkdir %s"
-msgstr "impossible de créer le répertoire (mkdir) %s"
-
 #: builtin/init-db.c:525
 #, c-format
 msgid "cannot chdir to %s"
@@ -10097,7 +10569,7 @@ msgstr "Deux répertoires de sortie ?"
 msgid "Unknown commit %s"
 msgstr "Commit inconnu %s"
 
-#: builtin/log.c:1289 builtin/notes.c:887 builtin/tag.c:522
+#: builtin/log.c:1289 builtin/notes.c:887 builtin/tag.c:523
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr "Impossible de résoudre '%s' comme une référence valide."
@@ -10457,7 +10929,7 @@ msgstr ""
 msgid "show debugging data"
 msgstr "afficher les données de débogage"
 
-#: builtin/ls-remote.c:7
+#: builtin/ls-remote.c:9
 msgid ""
 "git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
@@ -10467,41 +10939,41 @@ msgstr ""
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
 "                     [--symref] [<dépôt> [<références>...]]"
 
-#: builtin/ls-remote.c:52
+#: builtin/ls-remote.c:59
 msgid "do not print remote URL"
 msgstr "ne pas afficher les URL distantes"
 
-#: builtin/ls-remote.c:53 builtin/ls-remote.c:55
+#: builtin/ls-remote.c:60 builtin/ls-remote.c:62
 msgid "exec"
 msgstr "exécutable"
 
-#: builtin/ls-remote.c:54 builtin/ls-remote.c:56
+#: builtin/ls-remote.c:61 builtin/ls-remote.c:63
 msgid "path of git-upload-pack on the remote host"
 msgstr "chemin vers git-upload-pack sur le serveur distant"
 
-#: builtin/ls-remote.c:58
+#: builtin/ls-remote.c:65
 msgid "limit to tags"
 msgstr "limiter aux étiquettes"
 
-#: builtin/ls-remote.c:59
+#: builtin/ls-remote.c:66
 msgid "limit to heads"
 msgstr "limiter aux heads"
 
-#: builtin/ls-remote.c:60
+#: builtin/ls-remote.c:67
 msgid "do not show peeled tags"
 msgstr "ne pas afficher les étiquettes pelées"
 
-#: builtin/ls-remote.c:62
+#: builtin/ls-remote.c:69
 msgid "take url.<base>.insteadOf into account"
 msgstr "prendre en compte url.<base>.insteadOf"
 
-#: builtin/ls-remote.c:64
+#: builtin/ls-remote.c:73
 msgid "exit with exit code 2 if no matching refs are found"
 msgstr ""
 "sortir avec un code d'erreur 2 si aucune correspondance de référence n'est "
 "trouvée"
 
-#: builtin/ls-remote.c:67
+#: builtin/ls-remote.c:76
 msgid "show underlying ref in addition to the object pointed by it"
 msgstr "afficher la réf sous-jacente en plus de l'objet pointé par elle"
 
@@ -10548,168 +11020,168 @@ msgstr ""
 msgid "empty mbox: '%s'"
 msgstr "mbox vide : '%s'"
 
-#: builtin/merge.c:49
+#: builtin/merge.c:51
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<options>] [<commit>...]"
 
-#: builtin/merge.c:50
+#: builtin/merge.c:52
 msgid "git merge --abort"
 msgstr "git merge --abort"
 
-#: builtin/merge.c:51
+#: builtin/merge.c:53
 msgid "git merge --continue"
 msgstr "git merge --continue"
 
-#: builtin/merge.c:108
+#: builtin/merge.c:110
 msgid "switch `m' requires a value"
 msgstr "le commutateur `m' a besoin d'une valeur"
 
-#: builtin/merge.c:145
+#: builtin/merge.c:147
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
 msgstr "Impossible de trouver la stratégie de fusion '%s'.\n"
 
-#: builtin/merge.c:146
+#: builtin/merge.c:148
 #, c-format
 msgid "Available strategies are:"
 msgstr "Les stratégies disponibles sont :"
 
-#: builtin/merge.c:151
+#: builtin/merge.c:153
 #, c-format
 msgid "Available custom strategies are:"
 msgstr "Les stratégies personnalisées sont :"
 
-#: builtin/merge.c:201 builtin/pull.c:137
+#: builtin/merge.c:203 builtin/pull.c:142
 msgid "do not show a diffstat at the end of the merge"
 msgstr "ne pas afficher un diffstat à la fin de la fusion"
 
-#: builtin/merge.c:204 builtin/pull.c:140
+#: builtin/merge.c:206 builtin/pull.c:145
 msgid "show a diffstat at the end of the merge"
 msgstr "afficher un diffstat à la fin de la fusion"
 
-#: builtin/merge.c:205 builtin/pull.c:143
+#: builtin/merge.c:207 builtin/pull.c:148
 msgid "(synonym to --stat)"
 msgstr "(synonyme de --stat)"
 
-#: builtin/merge.c:207 builtin/pull.c:146
+#: builtin/merge.c:209 builtin/pull.c:151
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr ""
 "ajouter (au plus <n>) éléments du journal court au message de validation de "
 "la fusion"
 
-#: builtin/merge.c:210 builtin/pull.c:152
+#: builtin/merge.c:212 builtin/pull.c:157
 msgid "create a single commit instead of doing a merge"
 msgstr "créer une validation unique au lieu de faire une fusion"
 
-#: builtin/merge.c:212 builtin/pull.c:155
+#: builtin/merge.c:214 builtin/pull.c:160
 msgid "perform a commit if the merge succeeds (default)"
 msgstr "effectuer une validation si la fusion réussit (défaut)"
 
-#: builtin/merge.c:214 builtin/pull.c:158
+#: builtin/merge.c:216 builtin/pull.c:163
 msgid "edit message before committing"
 msgstr "éditer le message avant la validation"
 
-#: builtin/merge.c:215
+#: builtin/merge.c:217
 msgid "allow fast-forward (default)"
 msgstr "autoriser l'avance rapide (défaut)"
 
-#: builtin/merge.c:217 builtin/pull.c:164
+#: builtin/merge.c:219 builtin/pull.c:169
 msgid "abort if fast-forward is not possible"
 msgstr "abandonner si l'avance rapide n'est pas possible"
 
-#: builtin/merge.c:221 builtin/pull.c:167
+#: builtin/merge.c:223 builtin/pull.c:172
 msgid "verify that the named commit has a valid GPG signature"
 msgstr "vérifier que le commit nommé a une signature GPG valide"
 
-#: builtin/merge.c:222 builtin/notes.c:777 builtin/pull.c:171
+#: builtin/merge.c:224 builtin/notes.c:777 builtin/pull.c:176
 #: builtin/revert.c:109
 msgid "strategy"
 msgstr "stratégie"
 
-#: builtin/merge.c:223 builtin/pull.c:172
+#: builtin/merge.c:225 builtin/pull.c:177
 msgid "merge strategy to use"
 msgstr "stratégie de fusion à utiliser"
 
-#: builtin/merge.c:224 builtin/pull.c:175
+#: builtin/merge.c:226 builtin/pull.c:180
 msgid "option=value"
 msgstr "option=valeur"
 
-#: builtin/merge.c:225 builtin/pull.c:176
+#: builtin/merge.c:227 builtin/pull.c:181
 msgid "option for selected merge strategy"
 msgstr "option pour la stratégie de fusion sélectionnée"
 
-#: builtin/merge.c:227
+#: builtin/merge.c:229
 msgid "merge commit message (for a non-fast-forward merge)"
 msgstr ""
 "message de validation de la fusion (pour une fusion sans avance rapide)"
 
-#: builtin/merge.c:231
+#: builtin/merge.c:233
 msgid "abort the current in-progress merge"
 msgstr "abandonner la fusion en cours"
 
-#: builtin/merge.c:233
+#: builtin/merge.c:235
 msgid "continue the current in-progress merge"
 msgstr "continuer la fusion en cours"
 
-#: builtin/merge.c:235 builtin/pull.c:183
+#: builtin/merge.c:237 builtin/pull.c:188
 msgid "allow merging unrelated histories"
 msgstr "permettre la fusion d'historiques sans rapport"
 
-#: builtin/merge.c:241
+#: builtin/merge.c:243
 msgid "verify commit-msg hook"
 msgstr "vérifier le crochet commit-msg"
 
-#: builtin/merge.c:266
+#: builtin/merge.c:268
 msgid "could not run stash."
 msgstr "impossible de lancer le remisage."
 
-#: builtin/merge.c:271
+#: builtin/merge.c:273
 msgid "stash failed"
 msgstr "échec du remisage"
 
-#: builtin/merge.c:276
+#: builtin/merge.c:278
 #, c-format
 msgid "not a valid object: %s"
 msgstr "pas un objet valide : %s"
 
-#: builtin/merge.c:298 builtin/merge.c:315
+#: builtin/merge.c:300 builtin/merge.c:317
 msgid "read-tree failed"
 msgstr "read-tree a échoué"
 
-#: builtin/merge.c:345
+#: builtin/merge.c:347
 msgid " (nothing to squash)"
 msgstr " (rien à compresser)"
 
-#: builtin/merge.c:356
+#: builtin/merge.c:358
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
 msgstr "Validation compressée -- HEAD non mise à jour\n"
 
-#: builtin/merge.c:406
+#: builtin/merge.c:408
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
 msgstr "Pas de message de fusion -- pas de mise à jour de HEAD\n"
 
-#: builtin/merge.c:456
+#: builtin/merge.c:458
 #, c-format
 msgid "'%s' does not point to a commit"
 msgstr "'%s' ne pointe pas sur un commit"
 
-#: builtin/merge.c:546
+#: builtin/merge.c:548
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Mauvaise chaîne branch.%s.mergeoptions : %s"
 
-#: builtin/merge.c:668
+#: builtin/merge.c:669
 msgid "Not handling anything other than two heads merge."
 msgstr "Impossible de gérer autre chose que la fusion de deux têtes."
 
-#: builtin/merge.c:682
+#: builtin/merge.c:683
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Options inconnue pour merge-recursive : -X%s"
 
-#: builtin/merge.c:697
+#: builtin/merge.c:698
 #, c-format
 msgid "unable to write %s"
 msgstr "impossible d'écrire %s"
@@ -10747,66 +11219,66 @@ msgstr ""
 msgid "Empty commit message."
 msgstr "Message de validation vide."
 
-#: builtin/merge.c:820
+#: builtin/merge.c:819
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Merveilleux.\n"
 
-#: builtin/merge.c:873
+#: builtin/merge.c:872
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr ""
 "La fusion automatique a échoué ; réglez les conflits et validez le "
 "résultat.\n"
 
-#: builtin/merge.c:912
+#: builtin/merge.c:911
 msgid "No current branch."
 msgstr "Pas de branche courante."
 
-#: builtin/merge.c:914
+#: builtin/merge.c:913
 msgid "No remote for the current branch."
 msgstr "Pas de branche distante pour la branche courante."
 
-#: builtin/merge.c:916
+#: builtin/merge.c:915
 msgid "No default upstream defined for the current branch."
 msgstr "Pas de branche amont par défaut définie pour la branche courante."
 
-#: builtin/merge.c:921
+#: builtin/merge.c:920
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "Pas de branche de suivi pour %s depuis %s"
 
-#: builtin/merge.c:974
+#: builtin/merge.c:973
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Mauvaise valeur '%s' dans l'environnement '%s'"
 
-#: builtin/merge.c:1076
+#: builtin/merge.c:1075
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "pas possible de fusionner ceci dans %s : %s"
 
-#: builtin/merge.c:1110
+#: builtin/merge.c:1109
 msgid "not something we can merge"
 msgstr "pas possible de fusionner ceci"
 
-#: builtin/merge.c:1212
+#: builtin/merge.c:1211
 msgid "--abort expects no arguments"
 msgstr "--abort n'accepte pas d'argument"
 
-#: builtin/merge.c:1216
+#: builtin/merge.c:1215
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "Il n'y a pas de fusion à abandonner (MERGE_HEAD manquant)."
 
-#: builtin/merge.c:1228
+#: builtin/merge.c:1227
 msgid "--continue expects no arguments"
 msgstr "--continue ne supporte aucun argument"
 
-#: builtin/merge.c:1232
+#: builtin/merge.c:1231
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "Il n'y a pas de fusion en cours (MERGE_HEAD manquant)."
 
-#: builtin/merge.c:1248
+#: builtin/merge.c:1247
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -10814,7 +11286,7 @@ msgstr ""
 "Vous n'avez pas terminé votre fusion (MERGE_HEAD existe).\n"
 "Veuillez valider vos modifications avant de pouvoir fusionner."
 
-#: builtin/merge.c:1255
+#: builtin/merge.c:1254
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -10822,114 +11294,114 @@ msgstr ""
 "Vous n'avez pas terminé votre picorage (CHERRY_PICK_HEAD existe).\n"
 "Veuillez valider vos modifications avant de pouvoir fusionner."
 
-#: builtin/merge.c:1258
+#: builtin/merge.c:1257
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr "Vous n'avez pas terminé votre picorage (CHERRY_PICK_HEAD existe)."
 
-#: builtin/merge.c:1267
+#: builtin/merge.c:1266
 msgid "You cannot combine --squash with --no-ff."
 msgstr "Vous ne pouvez pas combiner --squash avec --no-ff."
 
-#: builtin/merge.c:1275
+#: builtin/merge.c:1274
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr ""
 "Pas de validation spécifiée et merge.defaultToUpstream n'est pas défini."
 
-#: builtin/merge.c:1292
+#: builtin/merge.c:1291
 msgid "Squash commit into empty head not supported yet"
 msgstr "La validation compressée vers une tête vide n'est pas encore supportée"
 
-#: builtin/merge.c:1294
+#: builtin/merge.c:1293
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr "Une validation sans avance rapide n'a pas de sens dans une tête vide"
 
-#: builtin/merge.c:1299
+#: builtin/merge.c:1298
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - pas possible de fusionner ceci"
 
-#: builtin/merge.c:1301
+#: builtin/merge.c:1300
 msgid "Can merge only exactly one commit into empty head"
 msgstr ""
 "Possible de fusionner exactement une seule validation dans une tête vide"
 
-#: builtin/merge.c:1335
+#: builtin/merge.c:1334
 #, 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."
 
-#: builtin/merge.c:1338
+#: builtin/merge.c:1337
 #, 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."
 
-#: builtin/merge.c:1341
+#: builtin/merge.c:1340
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "La validation %s n'a pas de signature GPG."
 
-#: builtin/merge.c:1344
+#: builtin/merge.c:1343
 #, 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"
 
-#: builtin/merge.c:1403
+#: builtin/merge.c:1402
 msgid "refusing to merge unrelated histories"
 msgstr "refus de fusionner des historiques sans relation"
 
-#: builtin/merge.c:1412
+#: builtin/merge.c:1411
 msgid "Already up to date."
 msgstr "Déjà à jour."
 
-#: builtin/merge.c:1422
+#: builtin/merge.c:1421
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Mise à jour %s..%s\n"
 
-#: builtin/merge.c:1463
+#: builtin/merge.c:1462
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "Essai de fusion vraiment triviale dans l'index...\n"
 
-#: builtin/merge.c:1470
+#: builtin/merge.c:1469
 #, c-format
 msgid "Nope.\n"
 msgstr "Non.\n"
 
-#: builtin/merge.c:1495
+#: builtin/merge.c:1494
 msgid "Already up to date. Yeeah!"
 msgstr "Déjà à jour. Ouais !"
 
-#: builtin/merge.c:1501
+#: builtin/merge.c:1500
 msgid "Not possible to fast-forward, aborting."
 msgstr "Pas possible d'avancer rapidement, abandon."
 
-#: builtin/merge.c:1524 builtin/merge.c:1603
+#: builtin/merge.c:1523 builtin/merge.c:1602
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "Retour de l'arbre à l'original...\n"
 
-#: builtin/merge.c:1528
+#: builtin/merge.c:1527
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "Essai de la stratégie de fusion %s...\n"
 
-#: builtin/merge.c:1594
+#: builtin/merge.c:1593
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "Aucune stratégie de fusion n'a pris en charge la fusion.\n"
 
-#: builtin/merge.c:1596
+#: builtin/merge.c:1595
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "La fusion avec la stratégie %s a échoué.\n"
 
-#: builtin/merge.c:1605
+#: builtin/merge.c:1604
 #, c-format
 msgid "Using the %s to prepare resolving by hand.\n"
 msgstr "Utilisation de %s pour préparer la résolution à la main.\n"
 
-#: builtin/merge.c:1617
+#: builtin/merge.c:1616
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
@@ -11066,27 +11538,27 @@ msgstr "autoriser la création de plus d'un arbre"
 msgid "git mv [<options>] <source>... <destination>"
 msgstr "git mv [<options>] <source>... <destination>"
 
-#: builtin/mv.c:83
+#: builtin/mv.c:82
 #, c-format
 msgid "Directory %s is in index and no submodule?"
 msgstr "Le répertoire %s est dans l'index et pourtant aucun sous-module ?"
 
-#: builtin/mv.c:85 builtin/rm.c:289
+#: builtin/mv.c:84 builtin/rm.c:288
 msgid "Please stage your changes to .gitmodules or stash them to proceed"
 msgstr ""
 "Veuillez indexer vos modifications de .gitmodules ou les remiser pour "
 "continuer"
 
-#: builtin/mv.c:103
+#: builtin/mv.c:102
 #, c-format
 msgid "%.*s is in index"
 msgstr "%.*s est dans l'index"
 
-#: builtin/mv.c:125
+#: builtin/mv.c:124
 msgid "force move/rename even if target exists"
 msgstr "forcer le déplacement/renommage même si la cible existe"
 
-#: builtin/mv.c:127
+#: builtin/mv.c:126
 msgid "skip move/rename errors"
 msgstr "sauter les erreurs de déplacement/renommage"
 
@@ -11151,7 +11623,7 @@ msgstr "%s, source=%s, destination=%s"
 msgid "Renaming %s to %s\n"
 msgstr "Renommage de %s en %s\n"
 
-#: builtin/mv.c:276 builtin/remote.c:712 builtin/repack.c:394
+#: builtin/mv.c:276 builtin/remote.c:715 builtin/repack.c:409
 #, c-format
 msgid "renaming '%s' failed"
 msgstr "le renommage de '%s' a échoué"
@@ -11344,12 +11816,12 @@ msgstr "impossible d'écrire l'objet note"
 msgid "the note contents have been left in %s"
 msgstr "le contenu de la note a été laissé dans %s"
 
-#: builtin/notes.c:234 builtin/tag.c:506
+#: builtin/notes.c:234 builtin/tag.c:507
 #, c-format
 msgid "cannot read '%s'"
 msgstr "impossible de lire '%s'"
 
-#: builtin/notes.c:236 builtin/tag.c:509
+#: builtin/notes.c:236 builtin/tag.c:510
 #, c-format
 msgid "could not open or read '%s'"
 msgstr "impossible d'ouvrir ou lire '%s'"
@@ -11597,7 +12069,7 @@ msgstr ""
 msgid "read object names from the standard input"
 msgstr "lire les noms d'objet depuis l'entrée standard"
 
-#: builtin/notes.c:943 builtin/prune.c:106 builtin/worktree.c:160
+#: builtin/notes.c:943 builtin/prune.c:107 builtin/worktree.c:151
 msgid "do not remove, show only"
 msgstr "ne pas supprimer, afficher seulement"
 
@@ -11618,224 +12090,252 @@ msgstr "utiliser les notes depuis <références-notes>"
 msgid "unknown subcommand: %s"
 msgstr "sous-commande inconnue : %s"
 
-#: builtin/pack-objects.c:33
+#: builtin/pack-objects.c:48
 msgid ""
 "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects --stdout [options...] [< <liste-références> | < <liste-"
 "objets>]"
 
-#: builtin/pack-objects.c:34
+#: builtin/pack-objects.c:49
 msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects [options...] base-name [< <liste-références> | < <liste-"
 "objets>]"
 
-#: builtin/pack-objects.c:195 builtin/pack-objects.c:198
+#: builtin/pack-objects.c:211 builtin/pack-objects.c:214
 #, c-format
 msgid "deflate error (%d)"
 msgstr "erreur de compression (%d)"
 
-#: builtin/pack-objects.c:791
+#: builtin/pack-objects.c:810
 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:804
+#: builtin/pack-objects.c:823
 msgid "Writing objects"
 msgstr "Écriture des objets"
 
-#: builtin/pack-objects.c:1084
+#: builtin/pack-objects.c:1106
 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:2454
+#: builtin/pack-objects.c:1765
+msgid "Counting objects"
+msgstr "Décompte des objets"
+
+#: builtin/pack-objects.c:1895
+#, c-format
+msgid "unable to get size of %s"
+msgstr "impossible de récupérer la taille de %s"
+
+#: builtin/pack-objects.c:1910
+#, 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:2564
 msgid "Compressing objects"
 msgstr "Compression des objets"
 
-#: builtin/pack-objects.c:2625
+#: builtin/pack-objects.c:2735
 msgid "invalid value for --missing"
 msgstr "valeur invalide pour --missing"
 
-#: builtin/pack-objects.c:2928
+#: builtin/pack-objects.c:3067
 #, c-format
 msgid "unsupported index version %s"
 msgstr "version d'index non supportée %s"
 
-#: builtin/pack-objects.c:2932
+#: builtin/pack-objects.c:3071
 #, c-format
 msgid "bad index version '%s'"
 msgstr "mauvaise version d'index '%s'"
 
-#: builtin/pack-objects.c:2962
+#: builtin/pack-objects.c:3102
 msgid "do not show progress meter"
 msgstr "ne pas afficher la barre de progression"
 
-#: builtin/pack-objects.c:2964
+#: builtin/pack-objects.c:3104
 msgid "show progress meter"
 msgstr "afficher la barre de progression"
 
-#: builtin/pack-objects.c:2966
+#: builtin/pack-objects.c:3106
 msgid "show progress meter during object writing phase"
 msgstr "afficher la barre de progression durant la phase d'écrite des objets"
 
-#: builtin/pack-objects.c:2969
+#: builtin/pack-objects.c:3109
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "similaire à --all-progress quand la barre de progression est affichée"
 
-#: builtin/pack-objects.c:2970
+#: builtin/pack-objects.c:3110
 msgid "version[,offset]"
 msgstr "version[,offset]"
 
-#: builtin/pack-objects.c:2971
+#: builtin/pack-objects.c:3111
 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:2974
+#: builtin/pack-objects.c:3114
 msgid "maximum size of each output pack file"
 msgstr "taille maximum de chaque fichier paquet en sortie"
 
-#: builtin/pack-objects.c:2976
+#: builtin/pack-objects.c:3116
 msgid "ignore borrowed objects from alternate object store"
 msgstr "ignorer les objets empruntés à un autre magasin d'objets"
 
-#: builtin/pack-objects.c:2978
+#: builtin/pack-objects.c:3118
 msgid "ignore packed objects"
 msgstr "ignorer les objets empaquetés"
 
-#: builtin/pack-objects.c:2980
+#: builtin/pack-objects.c:3120
 msgid "limit pack window by objects"
 msgstr "limiter la fenêtre d'empaquetage par objets"
 
-#: builtin/pack-objects.c:2982
+#: builtin/pack-objects.c:3122
 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:2984
+#: builtin/pack-objects.c:3124
 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:2986
+#: builtin/pack-objects.c:3126
 msgid "reuse existing deltas"
 msgstr "réutiliser les deltas existants"
 
-#: builtin/pack-objects.c:2988
+#: builtin/pack-objects.c:3128
 msgid "reuse existing objects"
 msgstr "réutiliser les objets existants"
 
-#: builtin/pack-objects.c:2990
+#: builtin/pack-objects.c:3130
 msgid "use OFS_DELTA objects"
 msgstr "utiliser les objets OFS_DELTA"
 
-#: builtin/pack-objects.c:2992
+#: builtin/pack-objects.c:3132
 msgid "use threads when searching for best delta matches"
 msgstr ""
 "utiliser des fils lors de la recherche pour une meilleurs correspondance des "
 "deltas"
 
-#: builtin/pack-objects.c:2994
+#: builtin/pack-objects.c:3134
 msgid "do not create an empty pack output"
 msgstr "ne pas créer un paquet vide"
 
-#: builtin/pack-objects.c:2996
+#: builtin/pack-objects.c:3136
 msgid "read revision arguments from standard input"
 msgstr "lire les paramètres de révision depuis l'entrée standard"
 
-#: builtin/pack-objects.c:2998
+#: builtin/pack-objects.c:3138
 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:3001
+#: builtin/pack-objects.c:3141
 msgid "include objects reachable from any reference"
 msgstr "inclure les objets accessibles depuis toute référence"
 
-#: builtin/pack-objects.c:3004
+#: builtin/pack-objects.c:3144
 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:3007
+#: builtin/pack-objects.c:3147
 msgid "include objects referred to by the index"
 msgstr "inclure les objets référencés par l'index"
 
-#: builtin/pack-objects.c:3010
+#: builtin/pack-objects.c:3150
 msgid "output pack to stdout"
 msgstr "afficher l'empaquetage sur la sortie standard"
 
-#: builtin/pack-objects.c:3012
+#: builtin/pack-objects.c:3152
 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:3014
+#: builtin/pack-objects.c:3154
 msgid "keep unreachable objects"
 msgstr "garder les objets inaccessibles"
 
-#: builtin/pack-objects.c:3016
+#: builtin/pack-objects.c:3156
 msgid "pack loose unreachable objects"
 msgstr "empaqueter les objets inaccessibles détachés"
 
-#: builtin/pack-objects.c:3018
+#: builtin/pack-objects.c:3158
 msgid "unpack unreachable objects newer than <time>"
 msgstr "dépaqueter les objets inaccessibles plus récents que <heure>"
 
-#: builtin/pack-objects.c:3021
+#: builtin/pack-objects.c:3161
 msgid "create thin packs"
 msgstr "créer des paquets légers"
 
-#: builtin/pack-objects.c:3023
+#: builtin/pack-objects.c:3163
 msgid "create packs suitable for shallow fetches"
 msgstr "créer des paquets permettant des récupérations superficielles"
 
-#: builtin/pack-objects.c:3025
+#: builtin/pack-objects.c:3165
 msgid "ignore packs that have companion .keep file"
 msgstr "ignorer les paquets qui ont un fichier .keep"
 
-#: builtin/pack-objects.c:3027
+#: builtin/pack-objects.c:3167
+msgid "ignore this pack"
+msgstr "ignorer ce paquet"
+
+#: builtin/pack-objects.c:3169
 msgid "pack compression level"
 msgstr "niveau de compression du paquet"
 
-#: builtin/pack-objects.c:3029
+#: builtin/pack-objects.c:3171
 msgid "do not hide commits by grafts"
 msgstr "ne pas cacher les validations par greffes"
 
-#: builtin/pack-objects.c:3031
+#: builtin/pack-objects.c:3173
 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:3033
+#: builtin/pack-objects.c:3175
 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:3036
+#: builtin/pack-objects.c:3178
 msgid "handling for missing objects"
 msgstr "gestion des objets manquants"
 
-#: builtin/pack-objects.c:3039
+#: builtin/pack-objects.c:3181
 msgid "do not pack objects in promisor packfiles"
 msgstr "ne pas empaqueter les objets dans les fichiers paquets prometteurs"
 
-#: builtin/pack-objects.c:3178
-msgid "Counting objects"
-msgstr "Décompte des objets"
+#: builtin/pack-objects.c:3205
+#, 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:3210
+#, c-format
+msgid "pack.deltaCacheLimit is too high, forcing %d"
+msgstr "pack.deltaCacheLimit est trop grand, forcé à %d"
 
-#: builtin/pack-refs.c:6
+#: builtin/pack-objects.c:3338
+msgid "Enumerating objects"
+msgstr "Énumération des objets"
+
+#: builtin/pack-refs.c:7
 msgid "git pack-refs [<options>]"
 msgstr "git pack-refs [<options>]"
 
-#: builtin/pack-refs.c:14
+#: builtin/pack-refs.c:15
 msgid "pack everything"
 msgstr "empaqueter tout"
 
-#: builtin/pack-refs.c:15
+#: builtin/pack-refs.c:16
 msgid "prune loose refs (default)"
 msgstr "éliminer les références perdues (défaut)"
 
@@ -11851,65 +12351,65 @@ msgstr "Suppression des objets dupliqués"
 msgid "git prune [-n] [-v] [--progress] [--expire <time>] [--] [<head>...]"
 msgstr "git prune [-n] [-v] [--progress] [--expire <heure>] [--] [<head>…]"
 
-#: builtin/prune.c:107
+#: builtin/prune.c:108
 msgid "report pruned objects"
 msgstr "afficher les objets éliminés"
 
-#: builtin/prune.c:110
+#: builtin/prune.c:111
 msgid "expire objects older than <time>"
 msgstr "faire expirer les objets plus vieux que <heure>"
 
-#: builtin/prune.c:112
+#: builtin/prune.c:113
 msgid "limit traversal to objects outside promisor packfiles"
 msgstr "limiter la traversée aux objets hors des fichiers paquets prometteurs"
 
-#: builtin/prune.c:126
+#: builtin/prune.c:127
 msgid "cannot prune in a precious-objects repo"
 msgstr "impossible de nettoyer dans un dépôt d'objets précieux"
 
-#: builtin/pull.c:54 builtin/pull.c:56
+#: builtin/pull.c:59 builtin/pull.c:61
 #, c-format
 msgid "Invalid value for %s: %s"
 msgstr "Valeur invalide pour %s : %s"
 
-#: builtin/pull.c:76
+#: builtin/pull.c:81
 msgid "git pull [<options>] [<repository> [<refspec>...]]"
 msgstr "git pull [<options>] [<dépôt> [<spécification-de-référence>...]]"
 
-#: builtin/pull.c:127
+#: builtin/pull.c:132
 msgid "control for recursive fetching of submodules"
 msgstr "contrôler la récupération récursive dans les sous-modules"
 
-#: builtin/pull.c:131
+#: builtin/pull.c:136
 msgid "Options related to merging"
 msgstr "Options relatives à la fusion"
 
-#: builtin/pull.c:134
+#: builtin/pull.c:139
 msgid "incorporate changes by rebasing rather than merging"
 msgstr "incorporer les modifications en rebasant plutôt qu'en fusionnant"
 
-#: builtin/pull.c:161 builtin/rebase--helper.c:23 builtin/revert.c:121
+#: builtin/pull.c:166 builtin/rebase--helper.c:23 builtin/revert.c:121
 msgid "allow fast-forward"
 msgstr "autoriser l'avance rapide"
 
-#: builtin/pull.c:170
+#: builtin/pull.c:175
 msgid "automatically stash/stash pop before and after rebase"
 msgstr "remiser avant et réappliquer après le rebasage automatiquement"
 
-#: builtin/pull.c:186
+#: builtin/pull.c:191
 msgid "Options related to fetching"
 msgstr "Options relatives au rapatriement"
 
-#: builtin/pull.c:204
+#: builtin/pull.c:209
 msgid "number of submodules pulled in parallel"
 msgstr "nombre de sous-modules tirés en parallèle"
 
-#: builtin/pull.c:299
+#: builtin/pull.c:304
 #, c-format
 msgid "Invalid value for pull.ff: %s"
 msgstr "Valeur invalide pour pull.ff : %s"
 
-#: builtin/pull.c:415
+#: builtin/pull.c:420
 msgid ""
 "There is no candidate for rebasing against among the refs that you just "
 "fetched."
@@ -11917,14 +12417,14 @@ msgstr ""
 "Il n'y a pas de candidate sur laquelle rebaser parmi les références que vous "
 "venez de récupérer."
 
-#: builtin/pull.c:417
+#: builtin/pull.c:422
 msgid ""
 "There are no candidates for merging among the refs that you just fetched."
 msgstr ""
 "Il n'y a pas de candidate avec laquelle fusionner parmi les références que "
 "vous venez de récupérer."
 
-#: builtin/pull.c:418
+#: builtin/pull.c:423
 msgid ""
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
@@ -11932,7 +12432,7 @@ msgstr ""
 "Généralement, cela signifie que vous avez indiqué un spécificateur\n"
 "de référence joker qui n'a pas eu de correspondance sur le serveur distant."
 
-#: builtin/pull.c:421
+#: builtin/pull.c:426
 #, c-format
 msgid ""
 "You asked to pull from the remote '%s', but did not specify\n"
@@ -11944,44 +12444,44 @@ msgstr ""
 "configuration\n"
 "pour la branche actuelle, vous devez spécifier la branche avec la commande."
 
-#: builtin/pull.c:426 git-parse-remote.sh:73
+#: builtin/pull.c:431 git-parse-remote.sh:73
 msgid "You are not currently on a branch."
 msgstr "Vous n'êtes actuellement sur aucune branche."
 
-#: builtin/pull.c:428 builtin/pull.c:443 git-parse-remote.sh:79
+#: builtin/pull.c:433 builtin/pull.c:448 git-parse-remote.sh:79
 msgid "Please specify which branch you want to rebase against."
 msgstr "Veuillez spécifier sur quelle branche vous souhaiter rebaser."
 
-#: builtin/pull.c:430 builtin/pull.c:445 git-parse-remote.sh:82
+#: builtin/pull.c:435 builtin/pull.c:450 git-parse-remote.sh:82
 msgid "Please specify which branch you want to merge with."
 msgstr "Veuillez spécifier une branche avec laquelle fusionner."
 
-#: builtin/pull.c:431 builtin/pull.c:446
+#: builtin/pull.c:436 builtin/pull.c:451
 msgid "See git-pull(1) for details."
 msgstr "Référez-vous à git-pull(1) pour de plus amples détails."
 
-#: builtin/pull.c:433 builtin/pull.c:439 builtin/pull.c:448
+#: builtin/pull.c:438 builtin/pull.c:444 builtin/pull.c:453
 #: git-parse-remote.sh:64
 msgid "<remote>"
 msgstr "<distant>"
 
-#: builtin/pull.c:433 builtin/pull.c:448 builtin/pull.c:453 git-rebase.sh:477
+#: builtin/pull.c:438 builtin/pull.c:453 builtin/pull.c:458 git-rebase.sh:523
 #: git-parse-remote.sh:65
 msgid "<branch>"
 msgstr "<branche>"
 
-#: builtin/pull.c:441 git-parse-remote.sh:75
+#: builtin/pull.c:446 git-parse-remote.sh:75
 msgid "There is no tracking information for the current branch."
 msgstr "Pas d'information de suivi distant pour la branche actuelle."
 
-#: builtin/pull.c:450 git-parse-remote.sh:95
+#: builtin/pull.c:455 git-parse-remote.sh:95
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:"
 msgstr ""
 "Si vous souhaitez indiquer l'information de suivi distant pour cette "
 "branche, vous pouvez le faire avec :"
 
-#: builtin/pull.c:455
+#: builtin/pull.c:460
 #, c-format
 msgid ""
 "Your configuration specifies to merge with the ref '%s'\n"
@@ -11991,29 +12491,29 @@ msgstr ""
 "'%s'\n"
 "du serveur distant, mais cette référence n'a pas été récupérée."
 
-#: builtin/pull.c:819
+#: builtin/pull.c:826
 msgid "ignoring --verify-signatures for rebase"
 msgstr "--verify-signatures est ignoré pour un rebasage"
 
-#: builtin/pull.c:867
+#: builtin/pull.c:874
 msgid "--[no-]autostash option is only valid with --rebase."
 msgstr "l'option --[no-]autostash n'est valide qu'avec --rebase."
 
-#: builtin/pull.c:875
+#: builtin/pull.c:882
 msgid "Updating an unborn branch with changes added to the index."
 msgstr ""
 "Mise à jour d'une branche non encore créée avec les changements ajoutés dans "
 "l'index."
 
-#: builtin/pull.c:878
+#: builtin/pull.c:885
 msgid "pull with rebase"
 msgstr "tirer avec un rebasage"
 
-#: builtin/pull.c:879
+#: builtin/pull.c:886
 msgid "please commit or stash them."
 msgstr "veuillez les valider ou les remiser."
 
-#: builtin/pull.c:904
+#: builtin/pull.c:911
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -12024,7 +12524,7 @@ msgstr ""
 "avance rapide de votre copie de travail\n"
 "depuis le commit %s."
 
-#: builtin/pull.c:909
+#: builtin/pull.c:916
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -12041,33 +12541,33 @@ msgstr ""
 "$ git reset --hard\n"
 "pour régénérer."
 
-#: builtin/pull.c:924
+#: builtin/pull.c:931
 msgid "Cannot merge multiple branches into empty head."
 msgstr "Impossible de fusionner de multiples branches sur une tête vide."
 
-#: builtin/pull.c:928
+#: builtin/pull.c:935
 msgid "Cannot rebase onto multiple branches."
 msgstr "Impossible de rebaser sur de multiples branches."
 
-#: builtin/pull.c:935
+#: builtin/pull.c:942
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr ""
 "impossible de rebaser avec des modifications de sous-modules enregistrées "
 "localement"
 
-#: builtin/push.c:17
+#: builtin/push.c:19
 msgid "git push [<options>] [<repository> [<refspec>...]]"
 msgstr "git push [<options>] [<dépôt> [<spécification-de-référence>...]]"
 
-#: builtin/push.c:92
+#: builtin/push.c:111
 msgid "tag shorthand without <tag>"
 msgstr "raccourci d'étiquette sans <étiquette>"
 
-#: builtin/push.c:102
+#: builtin/push.c:121
 msgid "--delete only accepts plain target ref names"
 msgstr "--delete accepte seulement des noms entiers de références cibles"
 
-#: builtin/push.c:146
+#: builtin/push.c:165
 msgid ""
 "\n"
 "To choose either option permanently, see push.default in 'git help config'."
@@ -12076,7 +12576,7 @@ msgstr ""
 "Pour choisir l'option de manière permanente, voir push.default dans 'git "
 "help config'."
 
-#: builtin/push.c:149
+#: builtin/push.c:168
 #, c-format
 msgid ""
 "The upstream branch of your current branch does not match\n"
@@ -12101,7 +12601,7 @@ msgstr ""
 "    git push %s %s\n"
 "%s"
 
-#: builtin/push.c:164
+#: builtin/push.c:183
 #, c-format
 msgid ""
 "You are not currently on a branch.\n"
@@ -12116,7 +12616,7 @@ msgstr ""
 "\n"
 "    git push %s HEAD:<nom-de-la-branche-amont>\n"
 
-#: builtin/push.c:178
+#: builtin/push.c:197
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -12130,13 +12630,13 @@ msgstr ""
 "\n"
 "    git push --set-upstream %s %s\n"
 
-#: builtin/push.c:186
+#: builtin/push.c:205
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
 msgstr ""
 "La branche courante %s a de multiples branches amont, impossible de pousser."
 
-#: builtin/push.c:189
+#: builtin/push.c:208
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -12147,14 +12647,14 @@ msgstr ""
 "pas une branche amont de votre branche courante '%s', sans me dire\n"
 "quoi pousser pour mettre à jour quelle branche amont."
 
-#: builtin/push.c:248
+#: builtin/push.c:267
 msgid ""
 "You didn't specify any refspecs to push, and push.default is \"nothing\"."
 msgstr ""
 "Vous n'avez pas spécifié de spécifications de référence à pousser, et push."
 "default est \"nothing\"."
 
-#: builtin/push.c:255
+#: builtin/push.c:274
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
@@ -12169,7 +12669,7 @@ msgstr ""
 "Voir la 'Note à propos des avances rapides' dans 'git push --help' pour plus "
 "d'information."
 
-#: builtin/push.c:261
+#: builtin/push.c:280
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. Check out this branch and integrate the remote changes\n"
@@ -12184,7 +12684,7 @@ msgstr ""
 "Voir la 'Note à propos des avances rapides' dans 'git push --help' pour plus "
 "d'information."
 
-#: builtin/push.c:267
+#: builtin/push.c:286
 msgid ""
 "Updates were rejected because the remote contains work that you do\n"
 "not have locally. This is usually caused by another repository pushing\n"
@@ -12202,13 +12702,13 @@ msgstr ""
 "Voir la 'Note à propos des avances rapides' dans 'git push --help' pour plus "
 "d'information."
 
-#: builtin/push.c:274
+#: builtin/push.c:293
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr ""
 "Les mises à jour ont été rejetées car l'étiquette existe déjà dans la "
 "branche distante."
 
-#: builtin/push.c:277
+#: builtin/push.c:296
 msgid ""
 "You cannot update a remote ref that points at a non-commit object,\n"
 "or update a remote ref to make it point at a non-commit object,\n"
@@ -12220,22 +12720,22 @@ msgstr ""
 "pointer\n"
 "vers un objet qui n'est pas un commit, sans utiliser l'option '--force'.\n"
 
-#: builtin/push.c:337
+#: builtin/push.c:357
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "Poussée vers %s\n"
 
-#: builtin/push.c:341
+#: builtin/push.c:361
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "impossible de pousser des références vers '%s'"
 
-#: builtin/push.c:372
+#: builtin/push.c:395
 #, c-format
 msgid "bad repository '%s'"
 msgstr "mauvais dépôt '%s'"
 
-#: builtin/push.c:373
+#: builtin/push.c:396
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -12257,113 +12757,105 @@ msgstr ""
 "\n"
 "    git push <nom>\n"
 
-#: builtin/push.c:391
-msgid "--all and --tags are incompatible"
-msgstr "--all et --tags sont incompatibles"
-
-#: builtin/push.c:392
-msgid "--all can't be combined with refspecs"
-msgstr "--all ne peut pas être combiné avec des spécifications de référence"
-
-#: builtin/push.c:397
-msgid "--mirror and --tags are incompatible"
-msgstr "--mirror et --tags sont incompatibles"
-
-#: builtin/push.c:398
-msgid "--mirror can't be combined with refspecs"
-msgstr "--mirror ne peut pas être combiné avec des spécifications de référence"
-
-#: builtin/push.c:403
-msgid "--all and --mirror are incompatible"
-msgstr "--all et --mirror sont incompatibles"
-
-#: builtin/push.c:535
+#: builtin/push.c:551
 msgid "repository"
 msgstr "dépôt"
 
-#: builtin/push.c:536 builtin/send-pack.c:163
+#: builtin/push.c:552 builtin/send-pack.c:164
 msgid "push all refs"
 msgstr "pousser toutes les références"
 
-#: builtin/push.c:537 builtin/send-pack.c:165
+#: builtin/push.c:553 builtin/send-pack.c:166
 msgid "mirror all refs"
 msgstr "refléter toutes les références"
 
-#: builtin/push.c:539
+#: builtin/push.c:555
 msgid "delete refs"
 msgstr "supprimer les références"
 
-#: builtin/push.c:540
+#: builtin/push.c:556
 msgid "push tags (can't be used with --all or --mirror)"
 msgstr ""
 "pousser les étiquettes (ne peut pas être utilisé avec --all ou --mirror)"
 
-#: builtin/push.c:543 builtin/send-pack.c:166
+#: builtin/push.c:559 builtin/send-pack.c:167
 msgid "force updates"
 msgstr "forcer les mises à jour"
 
-#: builtin/push.c:545 builtin/send-pack.c:180
+#: builtin/push.c:561 builtin/send-pack.c:181
 msgid "refname>:<expect"
 msgstr "nom de référence>:<attendu"
 
-#: builtin/push.c:546 builtin/send-pack.c:181
+#: builtin/push.c:562 builtin/send-pack.c:182
 msgid "require old value of ref to be at this value"
 msgstr "exiger que l'ancienne valeur de la référence soit à cette valeur"
 
-#: builtin/push.c:549
+#: builtin/push.c:565
 msgid "control recursive pushing of submodules"
 msgstr "contrôler la poussée récursive des sous-modules"
 
-#: builtin/push.c:551 builtin/send-pack.c:174
+#: builtin/push.c:567 builtin/send-pack.c:175
 msgid "use thin pack"
 msgstr "utiliser un empaquetage léger"
 
-#: builtin/push.c:552 builtin/push.c:553 builtin/send-pack.c:160
-#: builtin/send-pack.c:161
+#: builtin/push.c:568 builtin/push.c:569 builtin/send-pack.c:161
+#: builtin/send-pack.c:162
 msgid "receive pack program"
 msgstr "recevoir le programme d'empaquetage"
 
-#: builtin/push.c:554
+#: builtin/push.c:570
 msgid "set upstream for git pull/status"
 msgstr "définir la branche amont pour git pull/status"
 
-#: builtin/push.c:557
+#: builtin/push.c:573
 msgid "prune locally removed refs"
 msgstr "éliminer les références locales supprimées"
 
-#: builtin/push.c:559
+#: builtin/push.c:575
 msgid "bypass pre-push hook"
 msgstr "éviter d'utiliser le crochet pre-push"
 
-#: builtin/push.c:560
+#: builtin/push.c:576
 msgid "push missing but relevant tags"
 msgstr "pousser les étiquettes manquantes mais pertinentes"
 
-#: builtin/push.c:563 builtin/send-pack.c:168
+#: builtin/push.c:579 builtin/send-pack.c:169
 msgid "GPG sign the push"
 msgstr "signer la poussée avec GPG"
 
-#: builtin/push.c:565 builtin/send-pack.c:175
+#: builtin/push.c:581 builtin/send-pack.c:176
 msgid "request atomic transaction on remote side"
 msgstr "demande une transaction atomique sur le serveur distant"
 
-#: builtin/push.c:566 builtin/send-pack.c:171
-msgid "server-specific"
-msgstr "spécifique au serveur"
-
-#: builtin/push.c:566 builtin/send-pack.c:172
-msgid "option to transmit"
-msgstr "option à transmettre"
-
-#: builtin/push.c:583
+#: builtin/push.c:599
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr "--delete est incompatible avec --all, --mirror et --tags"
 
-#: builtin/push.c:585
+#: builtin/push.c:601
 msgid "--delete doesn't make sense without any refs"
 msgstr "--delete n'a pas de sens sans aucune référence"
 
 #: builtin/push.c:604
+msgid "--all and --tags are incompatible"
+msgstr "--all et --tags sont incompatibles"
+
+#: builtin/push.c:606
+msgid "--all can't be combined with refspecs"
+msgstr "--all ne peut pas être combiné avec des spécifications de référence"
+
+#: builtin/push.c:610
+msgid "--mirror and --tags are incompatible"
+msgstr "--mirror et --tags sont incompatibles"
+
+#: builtin/push.c:612
+msgid "--mirror can't be combined with refspecs"
+msgstr "--mirror ne peut pas être combiné avec des spécifications de référence"
+
+#: builtin/push.c:615
+msgid "--all and --mirror are incompatible"
+msgstr "--all et --mirror sont incompatibles"
+
+#: builtin/push.c:634
 msgid "push options must not have new line characters"
 msgstr ""
 "les options de poussée ne peuvent pas contenir de caractères de nouvelle "
@@ -12380,67 +12872,67 @@ msgstr ""
 "sparse-checkout] [--index-output=<fichier>] (--empty | <arbre ou apparenté "
 "1> [<arbre ou apparenté 2> [<arbre ou apparenté 3>]])"
 
-#: builtin/read-tree.c:121
+#: builtin/read-tree.c:120
 msgid "write resulting index to <file>"
 msgstr "écrire l'index résultant dans <fichier>"
 
-#: builtin/read-tree.c:124
+#: builtin/read-tree.c:123
 msgid "only empty the index"
 msgstr "juste vider l'index"
 
-#: builtin/read-tree.c:126
+#: builtin/read-tree.c:125
 msgid "Merging"
 msgstr "Fusion"
 
-#: builtin/read-tree.c:128
+#: builtin/read-tree.c:127
 msgid "perform a merge in addition to a read"
 msgstr "effectuer une fusion en plus d'une lecture"
 
-#: builtin/read-tree.c:130
+#: builtin/read-tree.c:129
 msgid "3-way merge if no file level merging required"
 msgstr "fusion à 3 points si aucune fusion de niveau fichier n'est requise"
 
-#: builtin/read-tree.c:132
+#: builtin/read-tree.c:131
 msgid "3-way merge in presence of adds and removes"
 msgstr "fusion à 3 points en présence d'ajouts et suppressions"
 
-#: builtin/read-tree.c:134
+#: builtin/read-tree.c:133
 msgid "same as -m, but discard unmerged entries"
 msgstr "comme -m, mais annule les éléments non fusionnés"
 
-#: builtin/read-tree.c:135
+#: builtin/read-tree.c:134
 msgid "<subdirectory>/"
 msgstr "<sous-répertoire>/"
 
-#: builtin/read-tree.c:136
+#: builtin/read-tree.c:135
 msgid "read the tree into the index under <subdirectory>/"
 msgstr "lire l'arbre dans l'index dans <sous-répertoire>/"
 
-#: builtin/read-tree.c:139
+#: builtin/read-tree.c:138
 msgid "update working tree with merge result"
 msgstr "mettre à jour la copie de travail avec le résultat de la fusion"
 
-#: builtin/read-tree.c:141
+#: builtin/read-tree.c:140
 msgid "gitignore"
 msgstr "gitignore"
 
-#: builtin/read-tree.c:142
+#: builtin/read-tree.c:141
 msgid "allow explicitly ignored files to be overwritten"
 msgstr "autoriser explicitement les fichiers ignorés à être écrasés"
 
-#: builtin/read-tree.c:145
+#: builtin/read-tree.c:144
 msgid "don't check the working tree after merging"
 msgstr "ne pas vérifier la copie de travail après la fusion"
 
-#: builtin/read-tree.c:146
+#: builtin/read-tree.c:145
 msgid "don't update the index or the work tree"
 msgstr "ne pas mettre à jour l'index ou la copie de travail"
 
-#: builtin/read-tree.c:148
+#: builtin/read-tree.c:147
 msgid "skip applying sparse checkout filter"
 msgstr "sauter l'application du filtre d'extraction creuse"
 
-#: builtin/read-tree.c:150
+#: builtin/read-tree.c:149
 msgid "debug unpack-trees"
 msgstr "déboguer unpack-trees"
 
@@ -12457,46 +12949,58 @@ msgid "allow commits with empty messages"
 msgstr "autoriser les validations avec des messages vides"
 
 #: builtin/rebase--helper.c:27
+msgid "rebase merge commits"
+msgstr "rebaser les commits de fusion"
+
+#: builtin/rebase--helper.c:29
+msgid "keep original branch points of cousins"
+msgstr "conserver les points de branchement de cousins originaux"
+
+#: builtin/rebase--helper.c:30
 msgid "continue rebase"
 msgstr "continuer le rebasage"
 
-#: builtin/rebase--helper.c:29
+#: builtin/rebase--helper.c:32
 msgid "abort rebase"
 msgstr "abandonner le rebasage"
 
-#: builtin/rebase--helper.c:32
+#: builtin/rebase--helper.c:35
 msgid "make rebase script"
 msgstr "créer les script de rebasage"
 
-#: builtin/rebase--helper.c:34
+#: builtin/rebase--helper.c:37
 msgid "shorten commit ids in the todo list"
 msgstr "raccourcir les identifiants de commits dans la liste à-faire"
 
-#: builtin/rebase--helper.c:36
+#: builtin/rebase--helper.c:39
 msgid "expand commit ids in the todo list"
 msgstr "étendre les identifiants de commit dans la liste à-faire"
 
-#: builtin/rebase--helper.c:38
+#: builtin/rebase--helper.c:41
 msgid "check the todo list"
 msgstr "vérifier la liste à-faire"
 
-#: builtin/rebase--helper.c:40
+#: builtin/rebase--helper.c:43
 msgid "skip unnecessary picks"
 msgstr "éviter les commandes de picorage non nécessaires"
 
-#: builtin/rebase--helper.c:42
+#: builtin/rebase--helper.c:45
 msgid "rearrange fixup/squash lines"
 msgstr "réarranger les lignes fixup/squash"
 
-#: builtin/rebase--helper.c:44
+#: builtin/rebase--helper.c:47
 msgid "insert exec commands in todo list"
 msgstr "insérer les commandes exec dans la liste à-faire"
 
-#: builtin/receive-pack.c:30
+#: builtin/rebase--helper.c:68
+msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
+msgstr "--[no-]rebase-cousins n'a aucun effet sans --rebase-merges"
+
+#: builtin/receive-pack.c:31
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <répertoire-git>"
 
-#: builtin/receive-pack.c:841
+#: builtin/receive-pack.c:842
 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"
@@ -12526,7 +13030,7 @@ msgstr ""
 "Pour éliminer ce message et conserver le comportement par défaut,\n"
 "réglez « receive.denyCurrentBranch » à 'refuse'."
 
-#: builtin/receive-pack.c:861
+#: builtin/receive-pack.c:862
 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"
@@ -12546,11 +13050,11 @@ msgstr ""
 "\n"
 "Pour éliminer ce message, réglez-le à 'refuse'."
 
-#: builtin/receive-pack.c:1934
+#: builtin/receive-pack.c:1935
 msgid "quiet"
 msgstr "quiet"
 
-#: builtin/receive-pack.c:1948
+#: builtin/receive-pack.c:1949
 msgid "You must specify a directory."
 msgstr "Vous devez spécifier un répertoire."
 
@@ -12559,11 +13063,11 @@ msgstr "Vous devez spécifier un répertoire."
 msgid "'%s' is not a valid timestamp"
 msgstr "'%s' n'est pas un horodatage valide"
 
-#: builtin/remote.c:13
+#: builtin/remote.c:14
 msgid "git remote [-v | --verbose]"
 msgstr "git remote [-v | --verbose]"
 
-#: builtin/remote.c:14
+#: builtin/remote.c:15
 msgid ""
 "git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
 "mirror=<fetch|push>] <name> <url>"
@@ -12571,83 +13075,83 @@ msgstr ""
 "git remote add [-t <branche>] [-m <master>] [-f] [--tags | --no-tags] [--"
 "mirror=<fetch|push>] <nom> <url>"
 
-#: builtin/remote.c:15 builtin/remote.c:35
+#: builtin/remote.c:16 builtin/remote.c:36
 msgid "git remote rename <old> <new>"
 msgstr "git remote rename <ancienne> <nouvelle>"
 
-#: builtin/remote.c:16 builtin/remote.c:40
+#: builtin/remote.c:17 builtin/remote.c:41
 msgid "git remote remove <name>"
 msgstr "git remote remove <nom>"
 
-#: builtin/remote.c:17 builtin/remote.c:45
+#: builtin/remote.c:18 builtin/remote.c:46
 msgid "git remote set-head <name> (-a | --auto | -d | --delete | <branch>)"
 msgstr "git remote set-head <nom> (-a | --auto | -d | --delete | <branche>)"
 
-#: builtin/remote.c:18
+#: builtin/remote.c:19
 msgid "git remote [-v | --verbose] show [-n] <name>"
 msgstr "git remote [-v | --verbose] show [-n] <nom>"
 
-#: builtin/remote.c:19
+#: builtin/remote.c:20
 msgid "git remote prune [-n | --dry-run] <name>"
 msgstr "git remote prune [-n | --dry-run] <nom>"
 
-#: builtin/remote.c:20
+#: builtin/remote.c:21
 msgid ""
 "git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]"
 msgstr ""
 "git remote [-v | --verbose] update [-p | --prune] [(<groupe> | "
 "<distante>)...]"
 
-#: builtin/remote.c:21
+#: builtin/remote.c:22
 msgid "git remote set-branches [--add] <name> <branch>..."
 msgstr "git remote set-branches [--add] <nom> <branche>..."
 
-#: builtin/remote.c:22 builtin/remote.c:71
+#: builtin/remote.c:23 builtin/remote.c:72
 msgid "git remote get-url [--push] [--all] <name>"
 msgstr "git remote get-url [--push] [--all] <nom>"
 
-#: builtin/remote.c:23 builtin/remote.c:76
+#: builtin/remote.c:24 builtin/remote.c:77
 msgid "git remote set-url [--push] <name> <newurl> [<oldurl>]"
 msgstr "git remote set-url [--push] <nom> <nouvelle-URL> [<ancienne-URL>]"
 
-#: builtin/remote.c:24 builtin/remote.c:77
+#: builtin/remote.c:25 builtin/remote.c:78
 msgid "git remote set-url --add <name> <newurl>"
 msgstr "git remote set-url --add <nom> <nouvelle-URL>"
 
-#: builtin/remote.c:25 builtin/remote.c:78
+#: builtin/remote.c:26 builtin/remote.c:79
 msgid "git remote set-url --delete <name> <url>"
 msgstr "git remote set-url --delete <nom> <URL>"
 
-#: builtin/remote.c:30
+#: builtin/remote.c:31
 msgid "git remote add [<options>] <name> <url>"
 msgstr "git remote add [<options>] <nom> <URL>"
 
-#: builtin/remote.c:50
+#: builtin/remote.c:51
 msgid "git remote set-branches <name> <branch>..."
 msgstr "git remote set-branches <nom> <branche>..."
 
-#: builtin/remote.c:51
+#: builtin/remote.c:52
 msgid "git remote set-branches --add <name> <branch>..."
 msgstr "git remote set-branches --add <nom> <branche>..."
 
-#: builtin/remote.c:56
+#: builtin/remote.c:57
 msgid "git remote show [<options>] <name>"
 msgstr "git remote show [<options>] <nom>"
 
-#: builtin/remote.c:61
+#: builtin/remote.c:62
 msgid "git remote prune [<options>] <name>"
 msgstr "git remote prune [<options>] <nom>"
 
-#: builtin/remote.c:66
+#: builtin/remote.c:67
 msgid "git remote update [<options>] [<group> | <remote>]..."
 msgstr "git remote update [<options>] [<groupe> | <distante>]..."
 
-#: builtin/remote.c:95
+#: builtin/remote.c:96
 #, c-format
 msgid "Updating %s"
 msgstr "Mise à jour de %s"
 
-#: builtin/remote.c:127
+#: builtin/remote.c:128
 msgid ""
 "--mirror is dangerous and deprecated; please\n"
 "\t use --mirror=fetch or --mirror=push instead"
@@ -12655,92 +13159,92 @@ msgstr ""
 "--mirror est dangereux et obsolète ; merci\n"
 "\t d'utiliser --mirror=fetch ou --mirror=push à la place"
 
-#: builtin/remote.c:144
+#: builtin/remote.c:145
 #, c-format
 msgid "unknown mirror argument: %s"
 msgstr "argument miroir inconnu : %s"
 
-#: builtin/remote.c:160
+#: builtin/remote.c:161
 msgid "fetch the remote branches"
 msgstr "rapatrier les branches distantes"
 
-#: builtin/remote.c:162
+#: builtin/remote.c:163
 msgid "import all tags and associated objects when fetching"
 msgstr ""
 "importer toutes les étiquettes et les objets associés lors du rapatriement"
 
-#: builtin/remote.c:165
+#: builtin/remote.c:166
 msgid "or do not fetch any tag at all (--no-tags)"
 msgstr "ou ne rapatrier aucune étiquette (--no-tags)"
 
-#: builtin/remote.c:167
+#: builtin/remote.c:168
 msgid "branch(es) to track"
 msgstr "branche(s) à suivre"
 
-#: builtin/remote.c:168
+#: builtin/remote.c:169
 msgid "master branch"
 msgstr "branche maîtresse"
 
-#: builtin/remote.c:169
+#: builtin/remote.c:170
 msgid "push|fetch"
 msgstr "push|fetch"
 
-#: builtin/remote.c:170
+#: builtin/remote.c:171
 msgid "set up remote as a mirror to push to or fetch from"
 msgstr ""
 "paramétrer la distante comme miroir pour pousser ou pour rapatrier depuis"
 
-#: builtin/remote.c:182
+#: builtin/remote.c:183
 msgid "specifying a master branch makes no sense with --mirror"
 msgstr "spécifier une branche maîtresse n'a pas de sens avec --mirror"
 
-#: builtin/remote.c:184
+#: builtin/remote.c:185
 msgid "specifying branches to track makes sense only with fetch mirrors"
 msgstr ""
 "spécifier les branches à suivre n'a de sens qu'avec des miroirs de "
 "rapatriement"
 
-#: builtin/remote.c:191 builtin/remote.c:631
+#: builtin/remote.c:192 builtin/remote.c:634
 #, c-format
 msgid "remote %s already exists."
 msgstr "la distante %s existe déjà."
 
-#: builtin/remote.c:195 builtin/remote.c:635
+#: builtin/remote.c:196 builtin/remote.c:638
 #, c-format
 msgid "'%s' is not a valid remote name"
 msgstr "'%s' n'est pas un nom valide de distante"
 
-#: builtin/remote.c:235
+#: builtin/remote.c:236
 #, c-format
 msgid "Could not setup master '%s'"
 msgstr "Impossible de paramétrer la maîtresse '%s'"
 
-#: builtin/remote.c:337
+#: builtin/remote.c:342
 #, c-format
 msgid "Could not get fetch map for refspec %s"
 msgstr ""
 "Impossible d'obtenir une correspondance distante pour la spécification de "
 "référence %s"
 
-#: builtin/remote.c:438 builtin/remote.c:446
+#: builtin/remote.c:441 builtin/remote.c:449
 msgid "(matching)"
 msgstr "(correspond)"
 
-#: builtin/remote.c:450
+#: builtin/remote.c:453
 msgid "(delete)"
 msgstr "(supprimer)"
 
-#: builtin/remote.c:624 builtin/remote.c:759 builtin/remote.c:858
+#: builtin/remote.c:627 builtin/remote.c:762 builtin/remote.c:861
 #, c-format
 msgid "No such remote: %s"
 msgstr "Distante inconnue : %s"
 
-#: builtin/remote.c:641
+#: builtin/remote.c:644
 #, c-format
 msgid "Could not rename config section '%s' to '%s'"
 msgstr "Impossible de renommer la section de configuration '%s' en '%s'"
 
-#: builtin/remote.c:661
+#: builtin/remote.c:664
 #, c-format
 msgid ""
 "Not updating non-default fetch refspec\n"
@@ -12751,17 +13255,17 @@ msgstr ""
 "\t%s\n"
 "\tVeuillez mettre à jour la configuration manuellement si nécessaire."
 
-#: builtin/remote.c:697
+#: builtin/remote.c:700
 #, c-format
 msgid "deleting '%s' failed"
 msgstr "échec de suppression de '%s'"
 
-#: builtin/remote.c:731
+#: builtin/remote.c:734
 #, c-format
 msgid "creating '%s' failed"
 msgstr "échec de création de '%s'"
 
-#: builtin/remote.c:796
+#: builtin/remote.c:799
 msgid ""
 "Note: A branch outside the refs/remotes/ hierarchy was not removed;\n"
 "to delete it, use:"
@@ -12776,113 +13280,118 @@ msgstr[1] ""
 "supprimées ;\n"
 "pour les supprimer, utilisez :"
 
-#: builtin/remote.c:810
+#: builtin/remote.c:813
 #, c-format
 msgid "Could not remove config section '%s'"
 msgstr "Impossible de supprimer la section de configuration '%s'"
 
-#: builtin/remote.c:911
+#: builtin/remote.c:914
 #, c-format
 msgid " new (next fetch will store in remotes/%s)"
 msgstr " nouveau (le prochain rapatriement (fetch) stockera dans remotes/%s)"
 
-#: builtin/remote.c:914
+#: builtin/remote.c:917
 msgid " tracked"
 msgstr " suivi"
 
-#: builtin/remote.c:916
+#: builtin/remote.c:919
 msgid " stale (use 'git remote prune' to remove)"
 msgstr " dépassé (utilisez 'git remote prune' pour supprimer)"
 
-#: builtin/remote.c:918
+#: builtin/remote.c:921
 msgid " ???"
 msgstr " ???"
 
-#: builtin/remote.c:959
+#: builtin/remote.c:962
 #, c-format
 msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch"
 msgstr "branch.%s.merge invalide ; ne peut pas rebaser sur plus d'une branche"
 
-#: builtin/remote.c:967
+#: builtin/remote.c:971
 #, c-format
 msgid "rebases interactively onto remote %s"
 msgstr "rebase de manière interactive sur la distante %s"
 
-#: builtin/remote.c:968
+#: builtin/remote.c:973
+#, c-format
+msgid "rebases interactively (with merges) onto remote %s"
+msgstr "rebase de manière interactive (avec fusions) sur la distante %s"
+
+#: builtin/remote.c:976
 #, c-format
 msgid "rebases onto remote %s"
 msgstr "rebase sur la distante %s"
 
-#: builtin/remote.c:971
+#: builtin/remote.c:980
 #, c-format
 msgid " merges with remote %s"
 msgstr " fusionne avec la distante %s"
 
-#: builtin/remote.c:974
+#: builtin/remote.c:983
 #, c-format
 msgid "merges with remote %s"
 msgstr "fusionne avec la distante %s"
 
-#: builtin/remote.c:977
+#: builtin/remote.c:986
 #, c-format
 msgid "%-*s    and with remote %s\n"
 msgstr "%-*s    et avec la distante %s\n"
 
-#: builtin/remote.c:1020
+#: builtin/remote.c:1029
 msgid "create"
 msgstr "créer"
 
-#: builtin/remote.c:1023
+#: builtin/remote.c:1032
 msgid "delete"
 msgstr "supprimer"
 
-#: builtin/remote.c:1027
+#: builtin/remote.c:1036
 msgid "up to date"
 msgstr "à jour"
 
-#: builtin/remote.c:1030
+#: builtin/remote.c:1039
 msgid "fast-forwardable"
 msgstr "peut être mis à jour en avance rapide"
 
-#: builtin/remote.c:1033
+#: builtin/remote.c:1042
 msgid "local out of date"
 msgstr "le local n'est pas à jour"
 
-#: builtin/remote.c:1040
+#: builtin/remote.c:1049
 #, c-format
 msgid "    %-*s forces to %-*s (%s)"
 msgstr "    %-*s force vers %-*s (%s)"
 
-#: builtin/remote.c:1043
+#: builtin/remote.c:1052
 #, c-format
 msgid "    %-*s pushes to %-*s (%s)"
 msgstr "    %-*s pousse vers %-*s (%s)"
 
-#: builtin/remote.c:1047
+#: builtin/remote.c:1056
 #, c-format
 msgid "    %-*s forces to %s"
 msgstr "    %-*s force vers %s"
 
-#: builtin/remote.c:1050
+#: builtin/remote.c:1059
 #, c-format
 msgid "    %-*s pushes to %s"
 msgstr "    %-*s pousse vers %s"
 
-#: builtin/remote.c:1118
+#: builtin/remote.c:1127
 msgid "do not query remotes"
 msgstr "ne pas interroger les distantes"
 
-#: builtin/remote.c:1145
+#: builtin/remote.c:1154
 #, c-format
 msgid "* remote %s"
 msgstr "* distante %s"
 
-#: builtin/remote.c:1146
+#: builtin/remote.c:1155
 #, c-format
 msgid "  Fetch URL: %s"
 msgstr "  URL de rapatriement : %s"
 
-#: builtin/remote.c:1147 builtin/remote.c:1163 builtin/remote.c:1302
+#: builtin/remote.c:1156 builtin/remote.c:1172 builtin/remote.c:1311
 msgid "(no URL)"
 msgstr "(pas d'URL)"
 
@@ -12890,25 +13399,25 @@ msgstr "(pas d'URL)"
 #. with the one in " Fetch URL: %s"
 #. translation.
 #.
-#: builtin/remote.c:1161 builtin/remote.c:1163
+#: builtin/remote.c:1170 builtin/remote.c:1172
 #, c-format
 msgid "  Push  URL: %s"
 msgstr "  URL push : %s"
 
-#: builtin/remote.c:1165 builtin/remote.c:1167 builtin/remote.c:1169
+#: builtin/remote.c:1174 builtin/remote.c:1176 builtin/remote.c:1178
 #, c-format
 msgid "  HEAD branch: %s"
 msgstr "  Branche HEAD : %s"
 
-#: builtin/remote.c:1165
+#: builtin/remote.c:1174
 msgid "(not queried)"
 msgstr "(non demandé)"
 
-#: builtin/remote.c:1167
+#: builtin/remote.c:1176
 msgid "(unknown)"
 msgstr "(inconnu)"
 
-#: builtin/remote.c:1171
+#: builtin/remote.c:1180
 #, c-format
 msgid ""
 "  HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
@@ -12916,162 +13425,162 @@ msgstr ""
 "  Branche HEAD (la HEAD distante est ambiguë, peut être l'une des "
 "suivantes) :\n"
 
-#: builtin/remote.c:1183
+#: builtin/remote.c:1192
 #, c-format
 msgid "  Remote branch:%s"
 msgid_plural "  Remote branches:%s"
 msgstr[0] "  Branche distante :%s"
 msgstr[1] "  Branches distantes :%s"
 
-#: builtin/remote.c:1186 builtin/remote.c:1212
+#: builtin/remote.c:1195 builtin/remote.c:1221
 msgid " (status not queried)"
 msgstr " (état non demandé)"
 
-#: builtin/remote.c:1195
+#: builtin/remote.c:1204
 msgid "  Local branch configured for 'git pull':"
 msgid_plural "  Local branches configured for 'git pull':"
 msgstr[0] "  Branche locale configurée pour 'git pull' :"
 msgstr[1] "  Branches locales configurées pour 'git pull' :"
 
-#: builtin/remote.c:1203
+#: builtin/remote.c:1212
 msgid "  Local refs will be mirrored by 'git push'"
 msgstr "  Les références locales seront reflétées par 'git push'"
 
-#: builtin/remote.c:1209
+#: builtin/remote.c:1218
 #, c-format
 msgid "  Local ref configured for 'git push'%s:"
 msgid_plural "  Local refs configured for 'git push'%s:"
 msgstr[0] "  Référence locale configurée pour 'git push'%s :"
 msgstr[1] "  Références locales configurées pour 'git push'%s :"
 
-#: builtin/remote.c:1230
+#: builtin/remote.c:1239
 msgid "set refs/remotes/<name>/HEAD according to remote"
 msgstr "définir refs/remotes/<nom>/HEAD selon la distante"
 
-#: builtin/remote.c:1232
+#: builtin/remote.c:1241
 msgid "delete refs/remotes/<name>/HEAD"
 msgstr "supprimer refs/remotes/<nom>/HEAD"
 
-#: builtin/remote.c:1247
+#: builtin/remote.c:1256
 msgid "Cannot determine remote HEAD"
 msgstr "Impossible de déterminer la HEAD distante"
 
-#: builtin/remote.c:1249
+#: builtin/remote.c:1258
 msgid "Multiple remote HEAD branches. Please choose one explicitly with:"
 msgstr ""
 "Il y a de multiples branches HEAD distantes. Veuillez en choisir une "
 "explicitement avec :"
 
-#: builtin/remote.c:1259
+#: builtin/remote.c:1268
 #, c-format
 msgid "Could not delete %s"
 msgstr "Impossible de supprimer %s"
 
-#: builtin/remote.c:1267
+#: builtin/remote.c:1276
 #, c-format
 msgid "Not a valid ref: %s"
 msgstr "Référence non valide : %s"
 
-#: builtin/remote.c:1269
+#: builtin/remote.c:1278
 #, c-format
 msgid "Could not setup %s"
 msgstr "Impossible de paramétrer %s"
 
-#: builtin/remote.c:1287
+#: builtin/remote.c:1296
 #, c-format
 msgid " %s will become dangling!"
 msgstr " %s se retrouvera en suspens !"
 
-#: builtin/remote.c:1288
+#: builtin/remote.c:1297
 #, c-format
 msgid " %s has become dangling!"
 msgstr " %s se retrouve en suspens !"
 
-#: builtin/remote.c:1298
+#: builtin/remote.c:1307
 #, c-format
 msgid "Pruning %s"
 msgstr "Élimination de %s"
 
-#: builtin/remote.c:1299
+#: builtin/remote.c:1308
 #, c-format
 msgid "URL: %s"
 msgstr "URL : %s"
 
-#: builtin/remote.c:1315
+#: builtin/remote.c:1324
 #, c-format
 msgid " * [would prune] %s"
 msgstr " * [serait éliminé] %s"
 
-#: builtin/remote.c:1318
+#: builtin/remote.c:1327
 #, c-format
 msgid " * [pruned] %s"
 msgstr " * [éliminé] %s"
 
-#: builtin/remote.c:1363
+#: builtin/remote.c:1372
 msgid "prune remotes after fetching"
 msgstr "éliminer les distants après le rapatriement"
 
-#: builtin/remote.c:1426 builtin/remote.c:1480 builtin/remote.c:1548
+#: builtin/remote.c:1435 builtin/remote.c:1489 builtin/remote.c:1557
 #, c-format
 msgid "No such remote '%s'"
 msgstr "Pas de serveur remote '%s'"
 
-#: builtin/remote.c:1442
+#: builtin/remote.c:1451
 msgid "add branch"
 msgstr "ajouter une branche"
 
-#: builtin/remote.c:1449
+#: builtin/remote.c:1458
 msgid "no remote specified"
 msgstr "pas de serveur distant spécifié"
 
-#: builtin/remote.c:1466
+#: builtin/remote.c:1475
 msgid "query push URLs rather than fetch URLs"
 msgstr "interroger les URLs de poussée plutôt que les URLs de récupération"
 
-#: builtin/remote.c:1468
+#: builtin/remote.c:1477
 msgid "return all URLs"
 msgstr "retourner toutes les URLs"
 
-#: builtin/remote.c:1496
+#: builtin/remote.c:1505
 #, c-format
 msgid "no URLs configured for remote '%s'"
 msgstr "aucune URL configurée pour le dépôt distant '%s'"
 
-#: builtin/remote.c:1522
+#: builtin/remote.c:1531
 msgid "manipulate push URLs"
 msgstr "manipuler les URLs push"
 
-#: builtin/remote.c:1524
+#: builtin/remote.c:1533
 msgid "add URL"
 msgstr "ajouter une URL"
 
-#: builtin/remote.c:1526
+#: builtin/remote.c:1535
 msgid "delete URLs"
 msgstr "supprimer des URLs"
 
-#: builtin/remote.c:1533
+#: builtin/remote.c:1542
 msgid "--add --delete doesn't make sense"
 msgstr "--add --delete n'a aucun sens"
 
-#: builtin/remote.c:1572
+#: builtin/remote.c:1581
 #, c-format
 msgid "Invalid old URL pattern: %s"
 msgstr "Motif d'URL ancien invalide : %s"
 
-#: builtin/remote.c:1580
+#: builtin/remote.c:1589
 #, c-format
 msgid "No such URL found: %s"
 msgstr "Pas d'URL trouvée : %s"
 
-#: builtin/remote.c:1582
+#: builtin/remote.c:1591
 msgid "Will not delete all non-push URLs"
 msgstr "Pas de suppression de toutes les URLs non-push"
 
-#: builtin/remote.c:1598
+#: builtin/remote.c:1607
 msgid "be verbose; must be placed before a subcommand"
 msgstr "être verbeux : doit être placé avant une sous-commande"
 
-#: builtin/remote.c:1629
+#: builtin/remote.c:1638
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr "Sous-commande inconnue : %s"
@@ -13089,128 +13598,136 @@ msgstr ""
 "Utilisez\n"
 "--no-write-bitmap-index ou désactivez le paramètre pack.writebitmaps."
 
-#: builtin/repack.c:170
+#: builtin/repack.c:180
 msgid "pack everything in a single pack"
 msgstr "empaqueter tout dans un seul paquet"
 
-#: builtin/repack.c:172
+#: builtin/repack.c:182
 msgid "same as -a, and turn unreachable objects loose"
 msgstr "identique à -a et transformer les objets inaccessibles en suspens"
 
-#: builtin/repack.c:175
+#: builtin/repack.c:185
 msgid "remove redundant packs, and run git-prune-packed"
 msgstr "supprimer les paquets redondants et lancer git-prune-packed"
 
-#: builtin/repack.c:177
+#: builtin/repack.c:187
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr "passer --no-reuse-delta à git-pack-objects"
 
-#: builtin/repack.c:179
+#: builtin/repack.c:189
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr "passer --no-reuse-object à git-pack-objects"
 
-#: builtin/repack.c:181
+#: builtin/repack.c:191
 msgid "do not run git-update-server-info"
 msgstr "ne pas lancer git update-server-info"
 
-#: builtin/repack.c:184
+#: builtin/repack.c:194
 msgid "pass --local to git-pack-objects"
 msgstr "passer --local à git-pack-objects"
 
-#: builtin/repack.c:186
+#: builtin/repack.c:196
 msgid "write bitmap index"
 msgstr "écrire un index en bitmap"
 
-#: builtin/repack.c:187
+#: builtin/repack.c:197
 msgid "approxidate"
 msgstr "date approximative"
 
-#: builtin/repack.c:188
+#: builtin/repack.c:198
 msgid "with -A, do not loosen objects older than this"
 msgstr "avec -A, ne pas suspendre les objets plus vieux que celui-ci"
 
-#: builtin/repack.c:190
+#: builtin/repack.c:200
 msgid "with -a, repack unreachable objects"
 msgstr "avec -a, repaquétiser les objets inaccessibles"
 
-#: builtin/repack.c:192
+#: builtin/repack.c:202
 msgid "size of the window used for delta compression"
 msgstr "taille de la fenêtre utilisée pour la compression des deltas"
 
-#: builtin/repack.c:193 builtin/repack.c:199
+#: builtin/repack.c:203 builtin/repack.c:209
 msgid "bytes"
 msgstr "octets"
 
-#: builtin/repack.c:194
+#: builtin/repack.c:204
 msgid "same as the above, but limit memory size instead of entries count"
 msgstr ""
 "idem ci-dessus, mais limiter la taille mémoire au lieu du nombre d'éléments"
 
-#: builtin/repack.c:196
+#: builtin/repack.c:206
 msgid "limits the maximum delta depth"
 msgstr "limite la profondeur maximale des deltas"
 
-#: builtin/repack.c:198
+#: builtin/repack.c:208
 msgid "limits the maximum number of threads"
 msgstr "limite le nombre maximal de fils"
 
-#: builtin/repack.c:200
+#: builtin/repack.c:210
 msgid "maximum size of each packfile"
 msgstr "taille maximum de chaque fichier paquet"
 
-#: builtin/repack.c:202
+#: builtin/repack.c:212
 msgid "repack objects in packs marked with .keep"
 msgstr "réempaqueter les objets dans des paquets marqués avec .keep"
 
-#: builtin/repack.c:212
+#: builtin/repack.c:214
+msgid "do not repack this pack"
+msgstr "ne pas rempaqueter ce paquet"
+
+#: builtin/repack.c:224
 msgid "cannot delete packs in a precious-objects repo"
 msgstr "impossible de supprimer les paquets dans un dépôt d'objets précieux"
 
-#: builtin/repack.c:216
+#: builtin/repack.c:228
 msgid "--keep-unreachable and -A are incompatible"
 msgstr "--keep-unreachable et -A sont incompatibles"
 
-#: builtin/repack.c:410 builtin/worktree.c:148
+#: builtin/repack.c:425 builtin/worktree.c:139
 #, c-format
 msgid "failed to remove '%s'"
 msgstr "échec de la suppression de '%s'"
 
-#: builtin/replace.c:20
+#: builtin/replace.c:22
 msgid "git replace [-f] <object> <replacement>"
 msgstr "git replace [-f] <objet> <remplacement>"
 
-#: builtin/replace.c:21
+#: builtin/replace.c:23
 msgid "git replace [-f] --edit <object>"
 msgstr "git replace [-f] --edit <objet>"
 
-#: builtin/replace.c:22
+#: builtin/replace.c:24
 msgid "git replace [-f] --graft <commit> [<parent>...]"
 msgstr "git replace [-f] --graft <commit> [<parent>...]"
 
-#: builtin/replace.c:23
+#: builtin/replace.c:25
+msgid "git replace [-f] --convert-graft-file"
+msgstr "git replace [-f] --convert-graft-file"
+
+#: builtin/replace.c:26
 msgid "git replace -d <object>..."
 msgstr "git replace -d <objet>..."
 
-#: builtin/replace.c:24
+#: builtin/replace.c:27
 msgid "git replace [--format=<format>] [-l [<pattern>]]"
 msgstr "git replace [--format=<format>] [-l [<motif>]]"
 
-#: builtin/replace.c:331 builtin/replace.c:369 builtin/replace.c:397
+#: builtin/replace.c:371 builtin/replace.c:415 builtin/replace.c:445
 #, c-format
 msgid "Not a valid object name: '%s'"
 msgstr "Nom d'objet invalide : '%s'"
 
-#: builtin/replace.c:361
+#: builtin/replace.c:407
 #, c-format
 msgid "bad mergetag in commit '%s'"
 msgstr "mauvaise étiquette de fusion dans le commit '%s'"
 
-#: builtin/replace.c:363
+#: builtin/replace.c:409
 #, c-format
 msgid "malformed mergetag in commit '%s'"
 msgstr "étiquette de fusion malformée dans le commit '%s'"
 
-#: builtin/replace.c:374
+#: builtin/replace.c:421
 #, c-format
 msgid ""
 "original commit '%s' contains mergetag '%s' that is discarded; use --edit "
@@ -13219,45 +13736,58 @@ msgstr ""
 "le commit original '%s' contient l'étiquette de fusion '%s' qui a disparu ; "
 "utilisez --edit au lieu de --graft"
 
-#: builtin/replace.c:407
+#: builtin/replace.c:460
 #, c-format
 msgid "the original commit '%s' has a gpg signature."
 msgstr "le commit original '%s' contient une signature GPG."
 
-#: builtin/replace.c:408
+#: builtin/replace.c:461
 msgid "the signature will be removed in the replacement commit!"
 msgstr "la signature sera éliminée dans la validation de remplacement !"
 
-#: builtin/replace.c:414
+#: builtin/replace.c:471
 #, c-format
 msgid "could not write replacement commit for: '%s'"
 msgstr "Impossible d'écrire le commit de remplacement pour '%s'"
 
-#: builtin/replace.c:438
+#: builtin/replace.c:514
+#, c-format
+msgid ""
+"could not convert the following graft(s):\n"
+"%s"
+msgstr ""
+"impossible de convertir la(les) greffe(s) suivante(s) :\n"
+"%s"
+
+#: builtin/replace.c:535
 msgid "list replace refs"
 msgstr "afficher les références de remplacement"
 
-#: builtin/replace.c:439
+#: builtin/replace.c:536
 msgid "delete replace refs"
 msgstr "supprimer les références de remplacement"
 
-#: builtin/replace.c:440
+#: builtin/replace.c:537
 msgid "edit existing object"
 msgstr "éditer l'objet existant"
 
-#: builtin/replace.c:441
+#: builtin/replace.c:538
 msgid "change a commit's parents"
 msgstr "Modifier les parents d'un commit"
 
-#: builtin/replace.c:442
+#: builtin/replace.c:539
+msgid "convert existing graft file"
+msgstr "convertir le fichier de greffe existant"
+
+#: builtin/replace.c:540
 msgid "replace the ref if it exists"
 msgstr "remplacer la référence si elle existe"
 
-#: builtin/replace.c:444
+#: builtin/replace.c:542
 msgid "do not pretty-print contents for --edit"
 msgstr "afficher sans mise en forme pour --edit"
 
-#: builtin/replace.c:445
+#: builtin/replace.c:543
 msgid "use this format"
 msgstr "utiliser ce format"
 
@@ -13421,23 +13951,23 @@ msgstr "rev-list ne supporte l'affichage des notes"
 msgid "cannot combine --use-bitmap-index with object filtering"
 msgstr "impossible de combiner --use-bitmap-index avec le filtrage d'objet"
 
-#: builtin/rev-parse.c:402
+#: builtin/rev-parse.c:406
 msgid "git rev-parse --parseopt [<options>] -- [<args>...]"
 msgstr "git rev-parse --parseopt [<options>] -- [<arguments>...]"
 
-#: builtin/rev-parse.c:407
+#: builtin/rev-parse.c:411
 msgid "keep the `--` passed as an arg"
 msgstr "garder le `--` passé en argument"
 
-#: builtin/rev-parse.c:409
+#: builtin/rev-parse.c:413
 msgid "stop parsing after the first non-option argument"
 msgstr "arrêt de l'analyse après le premier argument qui n'est pas une option"
 
-#: builtin/rev-parse.c:412
+#: builtin/rev-parse.c:416
 msgid "output in stuck long form"
 msgstr "sortie en forme longue fixée"
 
-#: builtin/rev-parse.c:545
+#: builtin/rev-parse.c:549
 msgid ""
 "git rev-parse --parseopt [<options>] -- [<args>...]\n"
 "   or: git rev-parse --sq-quote [<arg>...]\n"
@@ -13579,42 +14109,42 @@ msgid_plural "the following files have local modifications:"
 msgstr[0] "le fichier suivant a des modifications locales :"
 msgstr[1] "les fichiers suivants ont des modifications locales :"
 
-#: builtin/rm.c:243
+#: builtin/rm.c:241
 msgid "do not list removed files"
 msgstr "ne pas afficher les fichiers supprimés"
 
-#: builtin/rm.c:244
+#: builtin/rm.c:242
 msgid "only remove from the index"
 msgstr "supprimer seulement de l'index"
 
-#: builtin/rm.c:245
+#: builtin/rm.c:243
 msgid "override the up-to-date check"
 msgstr "outrepasser la vérification des fichiers à jour"
 
-#: builtin/rm.c:246
+#: builtin/rm.c:244
 msgid "allow recursive removal"
 msgstr "autoriser la suppression récursive"
 
-#: builtin/rm.c:248
+#: builtin/rm.c:246
 msgid "exit with a zero status even if nothing matched"
 msgstr "sortir avec un état zéro même si rien ne correspondait"
 
-#: builtin/rm.c:307
+#: builtin/rm.c:306
 #, c-format
 msgid "not removing '%s' recursively without -r"
 msgstr "pas de suppression récursive de '%s' sans -r"
 
-#: builtin/rm.c:346
+#: builtin/rm.c:345
 #, c-format
 msgid "git rm: unable to remove %s"
 msgstr "git rm : impossible de supprimer %s"
 
-#: builtin/rm.c:369
+#: builtin/rm.c:368
 #, c-format
 msgid "could not remove '%s'"
 msgstr "impossible de supprimer '%s'"
 
-#: builtin/send-pack.c:19
+#: builtin/send-pack.c:20
 msgid ""
 "git send-pack [--all | --mirror] [--dry-run] [--force] [--receive-pack=<git-"
 "receive-pack>] [--verbose] [--thin] [--atomic] [<host>:]<directory> "
@@ -13627,52 +14157,72 @@ msgstr ""
 "  --all et la spécification explicite de <référence> sont mutuellement "
 "exclusifs."
 
-#: builtin/send-pack.c:162
+#: builtin/send-pack.c:163
 msgid "remote name"
 msgstr "nom distant"
 
-#: builtin/send-pack.c:176
+#: builtin/send-pack.c:177
 msgid "use stateless RPC protocol"
 msgstr "utiliser un protocole RPC sans état"
 
-#: builtin/send-pack.c:177
+#: builtin/send-pack.c:178
 msgid "read refs from stdin"
 msgstr "lire les références depuis l'entrée standard"
 
-#: builtin/send-pack.c:178
+#: builtin/send-pack.c:179
 msgid "print status from remote helper"
 msgstr "afficher les messages du greffon de protocole distant"
 
+#: builtin/serve.c:7
+msgid "git serve [<options>]"
+msgstr "git serve [<options>]"
+
+#: builtin/serve.c:17 builtin/upload-pack.c:23
+msgid "quit after a single request/response exchange"
+msgstr "quitter après un unique échange requête/réponse"
+
+#: builtin/serve.c:19
+msgid "exit immediately after advertising capabilities"
+msgstr "sortir immédiatement après l'annonce des capacités"
+
 #: builtin/shortlog.c:14
-msgid "git shortlog [<options>] [<revision-range>] [[--] [<path>...]]"
-msgstr "git shortlog [<options>] [<intervalle-révisions>] [[--] [<chemin>...]]"
+msgid "git shortlog [<options>] [<revision-range>] [[--] <path>...]"
+msgstr "git shortlog [<options>] [<intervalle-révisions>] [[--] <chemin>...]"
 
-#: builtin/shortlog.c:263
+#: builtin/shortlog.c:15
+msgid "git log --pretty=short | git shortlog [<options>]"
+msgstr "git log --pretty=short | git shortlog [<options>]"
+
+#: builtin/shortlog.c:264
 msgid "Group by committer rather than author"
 msgstr "Grouper par validateur plutôt que par auteur"
 
-#: builtin/shortlog.c:265
+#: builtin/shortlog.c:266
 msgid "sort output according to the number of commits per author"
 msgstr "trier la sortie sur le nombre de validations par auteur"
 
-#: builtin/shortlog.c:267
+#: builtin/shortlog.c:268
 msgid "Suppress commit descriptions, only provides commit count"
 msgstr ""
 "Supprimer les descriptions de validation, fournit seulement le nombre de "
 "validations"
 
-#: builtin/shortlog.c:269
+#: builtin/shortlog.c:270
 msgid "Show the email address of each author"
 msgstr "Afficher l'adresse courriel de chaque auteur"
 
-#: builtin/shortlog.c:270
+#: builtin/shortlog.c:271
 msgid "w[,i1[,i2]]"
 msgstr "w[,i1[,i2]]"
 
-#: builtin/shortlog.c:271
+#: builtin/shortlog.c:272
 msgid "Linewrap output"
 msgstr "Couper les lignes"
 
+#: builtin/shortlog.c:298
+msgid "too many arguments given outside repository"
+msgstr "trop d'arguments fournis hors d'un dépôt"
+
 #: builtin/show-branch.c:12
 msgid ""
 "git show-branch [-a | --all] [-r | --remotes] [--topo-order | --date-order]\n"
@@ -13878,39 +14428,39 @@ msgstr ""
 msgid "prepend comment character and space to each line"
 msgstr "ajouter devant chaque ligne le caractère de commentaire et un espace"
 
-#: builtin/submodule--helper.c:35 builtin/submodule--helper.c:1669
+#: builtin/submodule--helper.c:37 builtin/submodule--helper.c:1688
 #, c-format
 msgid "No such ref: %s"
 msgstr "Référence inexistante : %s"
 
-#: builtin/submodule--helper.c:42 builtin/submodule--helper.c:1678
+#: builtin/submodule--helper.c:44 builtin/submodule--helper.c:1697
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr "Nom de référence complet attendu, %s obtenu"
 
-#: builtin/submodule--helper.c:59
+#: builtin/submodule--helper.c:61
 msgid "submodule--helper print-default-remote takes no arguments"
 msgstr "submodule--helper  print-default-remote n'accepte aucun argument"
 
-#: builtin/submodule--helper.c:96
+#: builtin/submodule--helper.c:98
 #, c-format
 msgid "cannot strip one component off url '%s'"
 msgstr "impossible de supprimer un composant de l'URL '%s'"
 
-#: builtin/submodule--helper.c:404 builtin/submodule--helper.c:1198
+#: builtin/submodule--helper.c:406 builtin/submodule--helper.c:1211
 msgid "alternative anchor for relative paths"
 msgstr "ancre alternative pour les chemins relatifs"
 
-#: builtin/submodule--helper.c:409
+#: builtin/submodule--helper.c:411
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper list [--prefix=<chemin>] [<chemin>...]"
 
-#: builtin/submodule--helper.c:460 builtin/submodule--helper.c:483
+#: builtin/submodule--helper.c:462 builtin/submodule--helper.c:485
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr "URL non trouvée pour le chemin de sous-module '%s' dans .gitmodules"
 
-#: builtin/submodule--helper.c:498
+#: builtin/submodule--helper.c:500
 #, c-format
 msgid ""
 "could not lookup configuration '%s'. Assuming this repository is its own "
@@ -13919,60 +14469,60 @@ msgstr ""
 "impossible de trouver la configuration '%s'. Ce dépôt est considéré comme "
 "son propre amont d'autorité."
 
-#: builtin/submodule--helper.c:509
+#: builtin/submodule--helper.c:511
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr "Échec d'enregistrement de l'URL pour le chemin de sous-module '%s'"
 
-#: builtin/submodule--helper.c:513
+#: builtin/submodule--helper.c:515
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr "Sous-module '%s' (%s) enregistré pour le chemin '%s'\n"
 
-#: builtin/submodule--helper.c:523
+#: builtin/submodule--helper.c:525
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
 msgstr ""
 "attention : nous vous suggérons de spécifier une commande de mode de mise à "
 "jour pour le sous-module '%s'\n"
 
-#: builtin/submodule--helper.c:530
+#: builtin/submodule--helper.c:532
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
 msgstr ""
 "Échec d'enregistrement du mode de mise à jour pour le chemin de sous-module "
 "'%s'"
 
-#: builtin/submodule--helper.c:552
+#: builtin/submodule--helper.c:554
 msgid "Suppress output for initializing a submodule"
 msgstr "Supprimer la sortie lors de l'initialisation d'un sous-module"
 
-#: builtin/submodule--helper.c:557
+#: builtin/submodule--helper.c:559
 msgid "git submodule--helper init [<path>]"
 msgstr "git submodule--helper init [<chemin>]"
 
-#: builtin/submodule--helper.c:625 builtin/submodule--helper.c:747
+#: builtin/submodule--helper.c:631 builtin/submodule--helper.c:757
 #, c-format
 msgid "no submodule mapping found in .gitmodules for path '%s'"
 msgstr ""
 "Pas de mise en correspondance du sous-module trouvé dans .gitmodules pour le "
 "chemin '%s'"
 
-#: builtin/submodule--helper.c:660
+#: builtin/submodule--helper.c:670
 #, c-format
 msgid "could not resolve HEAD ref inside the submodule '%s'"
 msgstr "impossible de résoudre HEAD dans le sous-module '%s'"
 
-#: builtin/submodule--helper.c:687 builtin/submodule--helper.c:856
+#: builtin/submodule--helper.c:697 builtin/submodule--helper.c:866
 #, c-format
 msgid "failed to recurse into submodule '%s'"
 msgstr "récursion impossible dans le sous-module '%s'"
 
-#: builtin/submodule--helper.c:711 builtin/submodule--helper.c:1021
+#: builtin/submodule--helper.c:721 builtin/submodule--helper.c:1031
 msgid "Suppress submodule status output"
 msgstr "supprimer la sortie d'état du sous-module"
 
-#: builtin/submodule--helper.c:712
+#: builtin/submodule--helper.c:722
 msgid ""
 "Use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
@@ -13980,139 +14530,148 @@ msgstr ""
 "Utiliser le commit stocké dans l'index au lieu de celui stocké dans la HEAD "
 "du sous-module"
 
-#: builtin/submodule--helper.c:713
+#: builtin/submodule--helper.c:723
 msgid "recurse into nested submodules"
 msgstr "parcourir récursivement les sous-modules"
 
-#: builtin/submodule--helper.c:718
+#: builtin/submodule--helper.c:728
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quiet] [--cached] [--recursive] [<chemin>...]"
 
-#: builtin/submodule--helper.c:742
+#: builtin/submodule--helper.c:752
 msgid "git submodule--helper name <path>"
 msgstr "git submodule--helper <nom> <chemin>"
 
-#: builtin/submodule--helper.c:806
+#: builtin/submodule--helper.c:816
 #, c-format
 msgid "Synchronizing submodule url for '%s'\n"
 msgstr "Synchronisation de l'URL sous-module pour '%s'\n"
 
-#: builtin/submodule--helper.c:812
+#: builtin/submodule--helper.c:822
 #, c-format
 msgid "failed to register url for submodule path '%s'"
 msgstr "échec d'enregistrement de l'URL pour le chemin de sous-module '%s'"
 
-#: builtin/submodule--helper.c:826
+#: builtin/submodule--helper.c:836
 #, c-format
 msgid "failed to get the default remote for submodule '%s'"
 msgstr "échec d'obtention du dépôt distant par défaut pour le sous-module '%s'"
 
-#: builtin/submodule--helper.c:837
+#: builtin/submodule--helper.c:847
 #, c-format
 msgid "failed to update remote for submodule '%s'"
 msgstr "échec de mise à jour du dépôt distant pour le sous-module '%s'"
 
-#: builtin/submodule--helper.c:885
+#: builtin/submodule--helper.c:895
 msgid "Suppress output of synchronizing submodule url"
-msgstr "Supprimer la sortie lors de la synchronisation de l'URL d'un sous-module"
+msgstr ""
+"Supprimer la sortie lors de la synchronisation de l'URL d'un sous-module"
 
-#: builtin/submodule--helper.c:887
+#: builtin/submodule--helper.c:897
 msgid "Recurse into nested submodules"
 msgstr "Parcourir récursivement les sous-modules"
 
-#: builtin/submodule--helper.c:892
+#: builtin/submodule--helper.c:902
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
 msgstr "git submodule--helper sync [--quiet] [--recursive] [<chemin>]"
 
-#: builtin/submodule--helper.c:946
+#: builtin/submodule--helper.c:956
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
 "really want to remove it including all of its history)"
-msgstr "L'arbre de travail du sous-module '%s' contient un répertoire .git (utilisez 'rm -rf' si vous voulez vraiment le supprimer en incluant tout son historique)"
+msgstr ""
+"L'arbre de travail du sous-module '%s' contient un répertoire .git (utilisez "
+"'rm -rf' si vous voulez vraiment le supprimer en incluant tout son "
+"historique)"
 
-#: builtin/submodule--helper.c:958
+#: builtin/submodule--helper.c:968
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains local modifications; use '-f' to discard "
 "them"
-msgstr "L'arbre de travail du sous-module '%s' contient des modifications locales ; utilisez '-f' pour les annuler"
+msgstr ""
+"L'arbre de travail du sous-module '%s' contient des modifications locales ; "
+"utilisez '-f' pour les annuler"
 
-#: builtin/submodule--helper.c:966
+#: builtin/submodule--helper.c:976
 #, c-format
 msgid "Cleared directory '%s'\n"
 msgstr "Répertoire '%s' nettoyé\n"
 
-#: builtin/submodule--helper.c:968
+#: builtin/submodule--helper.c:978
 #, c-format
 msgid "Could not remove submodule work tree '%s'\n"
 msgstr "Impossible de supprimer l'arbre de travail du sous-module '%s'\n"
 
-#: builtin/submodule--helper.c:977
+#: builtin/submodule--helper.c:987
 #, c-format
 msgid "could not create empty submodule directory %s"
 msgstr "impossible de créer le répertoire vide du sous-module %s"
 
-#: builtin/submodule--helper.c:993
+#: builtin/submodule--helper.c:1003
 #, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "Sous-module '%s' (%s) non enregistré pour le chemin '%s'\n"
 
-#: builtin/submodule--helper.c:1022
+#: builtin/submodule--helper.c:1032
 msgid "Remove submodule working trees even if they contain local changes"
-msgstr "Éliminer les arbres de travail des sous-modules même s'ils contiennent des modifications locales"
+msgstr ""
+"Éliminer les arbres de travail des sous-modules même s'ils contiennent des "
+"modifications locales"
 
-#: builtin/submodule--helper.c:1023
+#: builtin/submodule--helper.c:1033
 msgid "Unregister all submodules"
 msgstr "Désenregistrer tous les sous-modules"
 
-#: builtin/submodule--helper.c:1028
+#: builtin/submodule--helper.c:1038
 msgid ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
-msgstr "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<chemin>...]]"
+msgstr ""
+"git submodule deinit [--quiet] [-f | --force] [--all | [--] [<chemin>...]]"
 
-#: builtin/submodule--helper.c:1042
+#: builtin/submodule--helper.c:1052
 msgid "Use '--all' if you really want to deinitialize all submodules"
 msgstr ""
 "Utilisez '--all' si vous voulez vraiment réinitialiser tous les sous-modules"
 
-#: builtin/submodule--helper.c:1133 builtin/submodule--helper.c:1136
+#: builtin/submodule--helper.c:1145 builtin/submodule--helper.c:1148
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
 msgstr "le sous-module '%s' ne peut pas ajouter d'alternative : %s"
 
-#: builtin/submodule--helper.c:1172
+#: builtin/submodule--helper.c:1184
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
 msgstr ""
 "La valeur '%s' pour submodule.alternateErrorStrategy n'est pas reconnue"
 
-#: builtin/submodule--helper.c:1179
+#: builtin/submodule--helper.c:1191
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
 msgstr "La valeur '%s' pour submodule.alternateLocation n'est pas reconnue"
 
-#: builtin/submodule--helper.c:1201
+#: builtin/submodule--helper.c:1214
 msgid "where the new submodule will be cloned to"
 msgstr "emplacement où le sous-module sera cloné"
 
-#: builtin/submodule--helper.c:1204
+#: builtin/submodule--helper.c:1217
 msgid "name of the new submodule"
 msgstr "nom du nouveau sous-module"
 
-#: builtin/submodule--helper.c:1207
+#: builtin/submodule--helper.c:1220
 msgid "url where to clone the submodule from"
 msgstr "URL depuis laquelle cloner le sous-module"
 
-#: builtin/submodule--helper.c:1213
+#: builtin/submodule--helper.c:1228
 msgid "depth for shallow clones"
 msgstr "profondeur de l'historique des clones superficiels"
 
-#: builtin/submodule--helper.c:1216 builtin/submodule--helper.c:1587
+#: builtin/submodule--helper.c:1231 builtin/submodule--helper.c:1606
 msgid "force cloning progress"
 msgstr "forcer l'affichage de la progression du clonage"
 
-#: builtin/submodule--helper.c:1221
+#: builtin/submodule--helper.c:1236
 msgid ""
 "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
 "<repository>] [--name <name>] [--depth <depth>] --url <url> --path <path>"
@@ -14120,83 +14679,83 @@ msgstr ""
 "git submodule--helper clone [--prefix=<chemin>] [--quiet] [--reference "
 "<dépôt>] [--name <nom>] [--depth <profondeur>]  --url <url> --path <chemin>"
 
-#: builtin/submodule--helper.c:1252
+#: builtin/submodule--helper.c:1267
 #, c-format
 msgid "clone of '%s' into submodule path '%s' failed"
 msgstr "Le clonage de '%s' dans le chemin de sous-module '%s' a échoué"
 
-#: builtin/submodule--helper.c:1267
+#: builtin/submodule--helper.c:1281
 #, c-format
 msgid "could not get submodule directory for '%s'"
 msgstr "impossible de créer le répertoire de sous-module pour '%s'"
 
-#: builtin/submodule--helper.c:1332
+#: builtin/submodule--helper.c:1347
 #, c-format
 msgid "Submodule path '%s' not initialized"
 msgstr "Le chemin de sous-module '%s' n'est pas initialisé"
 
-#: builtin/submodule--helper.c:1336
+#: builtin/submodule--helper.c:1351
 msgid "Maybe you want to use 'update --init'?"
 msgstr "Vous voudriez sûrement utiliser 'update --init' ?"
 
-#: builtin/submodule--helper.c:1365
+#: builtin/submodule--helper.c:1380
 #, c-format
 msgid "Skipping unmerged submodule %s"
 msgstr "Sous-module non fusionné %s non traité"
 
-#: builtin/submodule--helper.c:1394
+#: builtin/submodule--helper.c:1409
 #, c-format
 msgid "Skipping submodule '%s'"
 msgstr "Sous-module '%s' non traité"
 
-#: builtin/submodule--helper.c:1527
+#: builtin/submodule--helper.c:1544
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
 msgstr "Impossible de cloner '%s'. Réessai prévu"
 
-#: builtin/submodule--helper.c:1538
+#: builtin/submodule--helper.c:1555
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
 msgstr "Impossible de cloner '%s' pour la seconde fois, abandon"
 
-#: builtin/submodule--helper.c:1568 builtin/submodule--helper.c:1788
+#: builtin/submodule--helper.c:1585 builtin/submodule--helper.c:1808
 msgid "path into the working tree"
 msgstr "chemin dans la copie de travail"
 
-#: builtin/submodule--helper.c:1571
+#: builtin/submodule--helper.c:1588
 msgid "path into the working tree, across nested submodule boundaries"
 msgstr ""
 "chemin dans la copie de travail, traversant les frontières de sous-modules"
 
-#: builtin/submodule--helper.c:1575
+#: builtin/submodule--helper.c:1592
 msgid "rebase, merge, checkout or none"
 msgstr "valeurs possibles : rebase, merge, checkout ou none"
 
-#: builtin/submodule--helper.c:1579
+#: builtin/submodule--helper.c:1598
 msgid "Create a shallow clone truncated to the specified number of revisions"
 msgstr "Créer un clone superficiel tronqué au nombre de révisions spécifié"
 
-#: builtin/submodule--helper.c:1582
+#: builtin/submodule--helper.c:1601
 msgid "parallel jobs"
 msgstr "jobs parallèles"
 
-#: builtin/submodule--helper.c:1584
+#: builtin/submodule--helper.c:1603
 msgid "whether the initial clone should follow the shallow recommendation"
 msgstr "spécifie si le clonage initial doit être aussi superficiel"
 
-#: builtin/submodule--helper.c:1585
+#: builtin/submodule--helper.c:1604
 msgid "don't print cloning progress"
 msgstr "ne pas afficher la progression du clonage"
 
-#: builtin/submodule--helper.c:1592
+#: builtin/submodule--helper.c:1611
 msgid "git submodule--helper update_clone [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper update_clone [--prefix=<chemin>] [<chemin>...]"
 
-#: builtin/submodule--helper.c:1605
+#: builtin/submodule--helper.c:1624
 msgid "bad value for update parameter"
 msgstr "valeur invalide pour la mise à jour du paramètre"
 
-#: builtin/submodule--helper.c:1673
+#: builtin/submodule--helper.c:1692
 #, c-format
 msgid ""
 "Submodule (%s) branch configured to inherit branch from superproject, but "
@@ -14205,20 +14764,20 @@ msgstr ""
 "la branche du sous-module %s est configurée pour hériter de la branche du "
 "superprojet, mais le superprojet n'est sur aucune branche"
 
-#: builtin/submodule--helper.c:1789
+#: builtin/submodule--helper.c:1809
 msgid "recurse into submodules"
 msgstr "parcourir récursivement les sous-modules"
 
-#: builtin/submodule--helper.c:1795
+#: builtin/submodule--helper.c:1815
 msgid "git submodule--helper embed-git-dir [<path>...]"
 msgstr "git submodule--helper embed-git-dir [<chemin>...]"
 
-#: builtin/submodule--helper.c:1857
+#: builtin/submodule--helper.c:1901
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s ne gère pas --super-prefix"
 
-#: builtin/submodule--helper.c:1863
+#: builtin/submodule--helper.c:1907
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "'%s' n'est pas une sous-commande valide de submodule--helper"
@@ -14288,7 +14847,7 @@ msgstr "étiquette '%s' non trouvée."
 msgid "Deleted tag '%s' (was %s)\n"
 msgstr "Étiquette '%s' supprimée (elle était sur %s)\n"
 
-#: builtin/tag.c:131
+#: builtin/tag.c:132
 #, c-format
 msgid ""
 "\n"
@@ -14301,7 +14860,7 @@ msgstr ""
 "  %s\n"
 "Les lignes commençant par '%c' seront ignorées.\n"
 
-#: builtin/tag.c:135
+#: builtin/tag.c:136
 #, c-format
 msgid ""
 "\n"
@@ -14316,147 +14875,147 @@ msgstr ""
 "Les lignes commençant par '%c' seront gardées ; vous pouvez les retirer vous-"
 "même si vous le souhaitez.\n"
 
-#: builtin/tag.c:189
+#: builtin/tag.c:190
 msgid "unable to sign the tag"
 msgstr "impossible de signer l'étiquette"
 
-#: builtin/tag.c:191
+#: builtin/tag.c:192
 msgid "unable to write tag file"
 msgstr "impossible d'écrire le fichier d'étiquettes"
 
-#: builtin/tag.c:216
+#: builtin/tag.c:217
 msgid "bad object type."
 msgstr "mauvais type d'objet."
 
-#: builtin/tag.c:265
+#: builtin/tag.c:266
 msgid "no tag message?"
 msgstr "pas de message pour l'étiquette ?"
 
-#: builtin/tag.c:272
+#: builtin/tag.c:273
 #, c-format
 msgid "The tag message has been left in %s\n"
 msgstr "Le message pour l'étiquette a été laissé dans %s\n"
 
-#: builtin/tag.c:381
+#: builtin/tag.c:382
 msgid "list tag names"
 msgstr "afficher les noms des étiquettes"
 
-#: builtin/tag.c:383
+#: builtin/tag.c:384
 msgid "print <n> lines of each tag message"
 msgstr "affiche <n> lignes de chaque message d'étiquette"
 
-#: builtin/tag.c:385
+#: builtin/tag.c:386
 msgid "delete tags"
 msgstr "supprimer des étiquettes"
 
-#: builtin/tag.c:386
+#: builtin/tag.c:387
 msgid "verify tags"
 msgstr "vérifier des étiquettes"
 
-#: builtin/tag.c:388
+#: builtin/tag.c:389
 msgid "Tag creation options"
 msgstr "Options de création de l'étiquette"
 
-#: builtin/tag.c:390
+#: builtin/tag.c:391
 msgid "annotated tag, needs a message"
 msgstr "étiquette annotée, nécessite un message"
 
-#: builtin/tag.c:392
+#: builtin/tag.c:393
 msgid "tag message"
 msgstr "message pour l'étiquette"
 
-#: builtin/tag.c:394
+#: builtin/tag.c:395
 msgid "force edit of tag message"
 msgstr "forcer l'édition du message d'étiquetage"
 
-#: builtin/tag.c:395
+#: builtin/tag.c:396
 msgid "annotated and GPG-signed tag"
 msgstr "étiquette annotée et signée avec GPG"
 
-#: builtin/tag.c:399
+#: builtin/tag.c:400
 msgid "use another key to sign the tag"
 msgstr "utiliser une autre clé pour signer l'étiquette"
 
-#: builtin/tag.c:400
+#: builtin/tag.c:401
 msgid "replace the tag if exists"
 msgstr "remplacer l'étiquette si elle existe"
 
-#: builtin/tag.c:401 builtin/update-ref.c:368
+#: builtin/tag.c:402 builtin/update-ref.c:368
 msgid "create a reflog"
 msgstr "créer un reflog"
 
-#: builtin/tag.c:403
+#: builtin/tag.c:404
 msgid "Tag listing options"
 msgstr "Options d'affichage des étiquettes"
 
-#: builtin/tag.c:404
+#: builtin/tag.c:405
 msgid "show tag list in columns"
 msgstr "afficher la liste des étiquettes sous forme de colonnes"
 
-#: builtin/tag.c:405 builtin/tag.c:407
+#: builtin/tag.c:406 builtin/tag.c:408
 msgid "print only tags that contain the commit"
 msgstr "afficher seulement les étiquettes qui contiennent la validation"
 
-#: builtin/tag.c:406 builtin/tag.c:408
+#: builtin/tag.c:407 builtin/tag.c:409
 msgid "print only tags that don't contain the commit"
 msgstr "afficher seulement les étiquettes qui ne contiennent pas la validation"
 
-#: builtin/tag.c:409
+#: builtin/tag.c:410
 msgid "print only tags that are merged"
 msgstr "afficher seulement les étiquettes qui sont fusionnées"
 
-#: builtin/tag.c:410
+#: builtin/tag.c:411
 msgid "print only tags that are not merged"
 msgstr "afficher seulement les étiquettes qui ne sont pas fusionnées"
 
-#: builtin/tag.c:415
+#: builtin/tag.c:416
 msgid "print only tags of the object"
 msgstr "afficher seulement les étiquettes de l'objet"
 
-#: builtin/tag.c:459
+#: builtin/tag.c:460
 msgid "--column and -n are incompatible"
 msgstr "--column et -n sont incompatibles"
 
-#: builtin/tag.c:481
+#: builtin/tag.c:482
 msgid "-n option is only allowed in list mode"
 msgstr "l'option -n est autorisée seulement en mode de liste"
 
-#: builtin/tag.c:483
+#: builtin/tag.c:484
 msgid "--contains option is only allowed in list mode"
 msgstr "l'option --contains est autorisée seulement en mode de liste"
 
-#: builtin/tag.c:485
+#: builtin/tag.c:486
 msgid "--no-contains option is only allowed in list mode"
 msgstr "l'option --contains est autorisée seulement en mode liste"
 
-#: builtin/tag.c:487
+#: builtin/tag.c:488
 msgid "--points-at option is only allowed in list mode"
 msgstr "l'option --points-at est autorisée seulement en mode liste"
 
-#: builtin/tag.c:489
+#: builtin/tag.c:490
 msgid "--merged and --no-merged options are only allowed in list mode"
 msgstr ""
 "les options --merged et --no-merged ne sont autorisées qu'en mode liste"
 
-#: builtin/tag.c:500
+#: builtin/tag.c:501
 msgid "only one -F or -m option is allowed."
 msgstr "une seule option -F ou -m est autorisée."
 
-#: builtin/tag.c:519
+#: builtin/tag.c:520
 msgid "too many params"
 msgstr "trop de paramètres"
 
-#: builtin/tag.c:525
+#: builtin/tag.c:526
 #, c-format
 msgid "'%s' is not a valid tag name."
 msgstr "'%s' n'est pas un nom d'étiquette valide."
 
-#: builtin/tag.c:530
+#: builtin/tag.c:531
 #, c-format
 msgid "tag '%s' already exists"
 msgstr "l'étiquette '%s' existe déjà"
 
-#: builtin/tag.c:561
+#: builtin/tag.c:562
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
 msgstr "Étiquette '%s' mise à jour (elle était sur %s)\n"
@@ -14532,148 +15091,148 @@ msgstr ""
 msgid " OK"
 msgstr " OK"
 
-#: builtin/update-index.c:579
+#: builtin/update-index.c:589
 msgid "git update-index [<options>] [--] [<file>...]"
 msgstr "git update-index [<options>] [--] [<fichier>...]"
 
-#: builtin/update-index.c:936
+#: builtin/update-index.c:946
 msgid "continue refresh even when index needs update"
 msgstr "continuer de rafraîchir même si l'index a besoin d'une mise à jour"
 
-#: builtin/update-index.c:939
+#: builtin/update-index.c:949
 msgid "refresh: ignore submodules"
 msgstr "rafraîchir : ignorer les sous-modules"
 
-#: builtin/update-index.c:942
+#: builtin/update-index.c:952
 msgid "do not ignore new files"
 msgstr "ne pas ignorer les nouveaux fichiers"
 
-#: builtin/update-index.c:944
+#: builtin/update-index.c:954
 msgid "let files replace directories and vice-versa"
 msgstr "laisser les fichiers remplacer des répertoires et vice-versa"
 
-#: builtin/update-index.c:946
+#: builtin/update-index.c:956
 msgid "notice files missing from worktree"
 msgstr "aviser des fichiers manquants dans la copie de travail"
 
-#: builtin/update-index.c:948
+#: builtin/update-index.c:958
 msgid "refresh even if index contains unmerged entries"
 msgstr "rafraîchir même si l'index contient des éléments non fusionnés"
 
-#: builtin/update-index.c:951
+#: builtin/update-index.c:961
 msgid "refresh stat information"
 msgstr "rafraîchir l'information de stat"
 
-#: builtin/update-index.c:955
+#: builtin/update-index.c:965
 msgid "like --refresh, but ignore assume-unchanged setting"
 msgstr "comme --refresh, mais en ignorant l'option assume-unchanged"
 
-#: builtin/update-index.c:959
+#: builtin/update-index.c:969
 msgid "<mode>,<object>,<path>"
 msgstr "<mode>, <objet>, <chemin>"
 
-#: builtin/update-index.c:960
+#: builtin/update-index.c:970
 msgid "add the specified entry to the index"
 msgstr "ajouter l'élément spécifié dans l'index"
 
-#: builtin/update-index.c:969
+#: builtin/update-index.c:979
 msgid "mark files as \"not changing\""
 msgstr "marquer les fichiers comme \"non changeants\""
 
-#: builtin/update-index.c:972
+#: builtin/update-index.c:982
 msgid "clear assumed-unchanged bit"
 msgstr "mettre à zéro le bit supposé-non-modifié"
 
-#: builtin/update-index.c:975
+#: builtin/update-index.c:985
 msgid "mark files as \"index-only\""
 msgstr "marquer les fichiers comme \"index seulement\""
 
-#: builtin/update-index.c:978
+#: builtin/update-index.c:988
 msgid "clear skip-worktree bit"
 msgstr "mettre à zéro le bit sauter-la-copie-de travail"
 
-#: builtin/update-index.c:981
+#: builtin/update-index.c:991
 msgid "add to index only; do not add content to object database"
 msgstr ""
 "ajouter seulement à l'index ; ne pas ajouter le contenu dans la base de "
 "données des objets"
 
-#: builtin/update-index.c:983
+#: builtin/update-index.c:993
 msgid "remove named paths even if present in worktree"
 msgstr ""
 "supprimer les chemins nommés même s'ils sont présents dans la copie de "
 "travail"
 
-#: builtin/update-index.c:985
+#: builtin/update-index.c:995
 msgid "with --stdin: input lines are terminated by null bytes"
 msgstr "avec --stdin : les lignes en entrée sont terminées par des octets nuls"
 
-#: builtin/update-index.c:987
+#: builtin/update-index.c:997
 msgid "read list of paths to be updated from standard input"
 msgstr "lire la liste des chemins à mettre à jour depuis l'entrée standard"
 
-#: builtin/update-index.c:991
+#: builtin/update-index.c:1001
 msgid "add entries from standard input to the index"
 msgstr "ajouter les éléments depuis l'entrée standard à l'index"
 
-#: builtin/update-index.c:995
+#: builtin/update-index.c:1005
 msgid "repopulate stages #2 and #3 for the listed paths"
 msgstr "repeupler les étapes n°2 et n°3 pour les chemins listés"
 
-#: builtin/update-index.c:999
+#: builtin/update-index.c:1009
 msgid "only update entries that differ from HEAD"
 msgstr "mettre à jour seulement les éléments qui diffèrent de HEAD"
 
-#: builtin/update-index.c:1003
+#: builtin/update-index.c:1013
 msgid "ignore files missing from worktree"
 msgstr "ignorer les fichiers manquants dans la copie de travail"
 
-#: builtin/update-index.c:1006
+#: builtin/update-index.c:1016
 msgid "report actions to standard output"
 msgstr "afficher les actions sur la sortie standard"
 
-#: builtin/update-index.c:1008
+#: builtin/update-index.c:1018
 msgid "(for porcelains) forget saved unresolved conflicts"
 msgstr "(pour porcelaines) oublier les conflits sauvés et non résolus"
 
-#: builtin/update-index.c:1012
+#: builtin/update-index.c:1022
 msgid "write index in this format"
 msgstr "écrire l'index dans ce format"
 
-#: builtin/update-index.c:1014
+#: builtin/update-index.c:1024
 msgid "enable or disable split index"
 msgstr "activer ou désactiver l'index divisé"
 
-#: builtin/update-index.c:1016
+#: builtin/update-index.c:1026
 msgid "enable/disable untracked cache"
 msgstr "activer ou désactiver le cache de non-suivis"
 
-#: builtin/update-index.c:1018
+#: builtin/update-index.c:1028
 msgid "test if the filesystem supports untracked cache"
 msgstr "tester si le système de fichier supporte le cache de non-suivis"
 
-#: builtin/update-index.c:1020
+#: builtin/update-index.c:1030
 msgid "enable untracked cache without testing the filesystem"
 msgstr "activer le cache de non-suivis sans tester le système de fichier"
 
-#: builtin/update-index.c:1022
+#: builtin/update-index.c:1032
 msgid "write out the index even if is not flagged as changed"
 msgstr "écrire l'index même s'il n'est pas marqué comme modifié"
 
-#: builtin/update-index.c:1024
+#: builtin/update-index.c:1034
 msgid "enable or disable file system monitor"
 msgstr ""
 "activer ou désactiver la surveillance du système de fichier (fsmonitor)"
 
-#: builtin/update-index.c:1026
+#: builtin/update-index.c:1036
 msgid "mark files as fsmonitor valid"
 msgstr "marquer les fichiers comme valides pour fsmonitor"
 
-#: builtin/update-index.c:1029
+#: builtin/update-index.c:1039
 msgid "clear fsmonitor valid bit"
 msgstr "effacer le bit de validité fsmonitor"
 
-#: builtin/update-index.c:1127
+#: builtin/update-index.c:1138
 msgid ""
 "core.splitIndex is set to false; remove or change it, if you really want to "
 "enable split index"
@@ -14681,7 +15240,7 @@ msgstr ""
 "core.splitIndex est réglé à false ; supprimez-le ou changez-le si vous "
 "souhaitez vraiment activer l'index coupé"
 
-#: builtin/update-index.c:1136
+#: builtin/update-index.c:1147
 msgid ""
 "core.splitIndex is set to true; remove or change it, if you really want to "
 "disable split index"
@@ -14689,7 +15248,7 @@ msgstr ""
 "core.splitIndex est réglé à vrai ; supprimez-le ou changez-le si vous "
 "souhaitez vraiment désactiver l'index coupé"
 
-#: builtin/update-index.c:1147
+#: builtin/update-index.c:1158
 msgid ""
 "core.untrackedCache is set to true; remove or change it, if you really want "
 "to disable the untracked cache"
@@ -14697,11 +15256,11 @@ msgstr ""
 "core.untrackedCache est réglé à true ; supprimez-le ou changez-le si vous "
 "souhaitez vraiment désactiver le cache des fichiers non-suivis"
 
-#: builtin/update-index.c:1151
+#: builtin/update-index.c:1162
 msgid "Untracked cache disabled"
 msgstr "Le cache non suivi est désactivé"
 
-#: builtin/update-index.c:1159
+#: builtin/update-index.c:1170
 msgid ""
 "core.untrackedCache is set to false; remove or change it, if you really want "
 "to enable the untracked cache"
@@ -14709,29 +15268,29 @@ msgstr ""
 "core.untrackedCache est réglé à false ; supprimez-le ou changez-le si vous "
 "souhaitez vraiment activer le cache des fichiers non-suivis"
 
-#: builtin/update-index.c:1163
+#: builtin/update-index.c:1174
 #, c-format
 msgid "Untracked cache enabled for '%s'"
 msgstr "Le cache non suivi est activé pour '%s'"
 
-#: builtin/update-index.c:1171
+#: builtin/update-index.c:1182
 msgid "core.fsmonitor is unset; set it if you really want to enable fsmonitor"
 msgstr ""
 "core.fsmonitor est réglé à false ; changez-le si vous souhaitez vraiment "
 "activer la surveillance du système de fichiers"
 
-#: builtin/update-index.c:1175
+#: builtin/update-index.c:1186
 msgid "fsmonitor enabled"
 msgstr "fsmonitor activé"
 
-#: builtin/update-index.c:1178
+#: builtin/update-index.c:1189
 msgid ""
 "core.fsmonitor is set; remove it if you really want to disable fsmonitor"
 msgstr ""
 "core.fsmonitor est réglé à true ; supprimez-le ou changez-le si vous "
 "souhaitez vraiment désactiver la surveillance du système de fichiers"
 
-#: builtin/update-index.c:1182
+#: builtin/update-index.c:1193
 msgid "fsmonitor disabled"
 msgstr "fsmonitor désactivé"
 
@@ -14773,8 +15332,26 @@ msgstr "git update-server-info [--force]"
 msgid "update the info files from scratch"
 msgstr "mettre à jour les fichiers d'information à partir de zéro"
 
-#: builtin/verify-commit.c:18
-msgid "git verify-commit [-v | --verbose] <commit>..."
+#: builtin/upload-pack.c:11
+msgid "git upload-pack [<options>] <dir>"
+msgstr "git upload-pack [<options>] <répertoire>"
+
+#: builtin/upload-pack.c:25
+msgid "exit immediately after initial ref advertisement"
+msgstr "Sortir immédiatement après l'annonce initiale des références"
+
+#: builtin/upload-pack.c:27
+msgid "do not try <directory>/.git/ if <directory> is no Git directory"
+msgstr ""
+"nes pas essayer <répertoire>/.git/ si <répertoire> n'est pas un répertoire "
+"Git"
+
+#: builtin/upload-pack.c:29
+msgid "interrupt transfer after <n> seconds of inactivity"
+msgstr "interrompre le transfert après <n> secondes d'inactivité"
+
+#: builtin/verify-commit.c:18
+msgid "git verify-commit [-v | --verbose] <commit>..."
 msgstr "git verify-commit [-v | --verbose] <commit>..."
 
 #: builtin/verify-commit.c:73
@@ -14833,23 +15410,23 @@ msgstr "git worktree remove [<options>] <arbre-de-travail>"
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <chemin>"
 
-#: builtin/worktree.c:60
+#: builtin/worktree.c:58
 #, c-format
 msgid "Removing worktrees/%s: not a valid directory"
 msgstr "Suppression de worktrees/%s : répertoire invalide"
 
-#: builtin/worktree.c:66
+#: builtin/worktree.c:64
 #, c-format
 msgid "Removing worktrees/%s: gitdir file does not exist"
 msgstr "Suppression de worktrees/%s : le fichier gitdir n'existe pas"
 
-#: builtin/worktree.c:71 builtin/worktree.c:80
+#: builtin/worktree.c:69 builtin/worktree.c:78
 #, c-format
 msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
 msgstr ""
 "Suppression de worktrees/%s : echec de la lecture du fichier gitdir (%s)"
 
-#: builtin/worktree.c:90
+#: builtin/worktree.c:88
 #, c-format
 msgid ""
 "Removing worktrees/%s: short read (expected %<PRIuMAX> bytes, read "
@@ -14858,185 +15435,209 @@ msgstr ""
 "Suppression de worktrees/%s: lecture trop courte ( %<PRIuMAX> octets "
 "attendus, %<PRIuMAX> octets lus)"
 
-#: builtin/worktree.c:98
+#: builtin/worktree.c:96
 #, c-format
 msgid "Removing worktrees/%s: invalid gitdir file"
 msgstr "Suppression de worktrees/%s : fichier gitdir invalide"
 
-#: builtin/worktree.c:114
+#: builtin/worktree.c:105
 #, 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"
 
-#: builtin/worktree.c:161
+#: builtin/worktree.c:152
 msgid "report pruned working trees"
 msgstr "afficher les arbres de travail éliminés"
 
-#: builtin/worktree.c:163
+#: builtin/worktree.c:154
 msgid "expire working trees older than <time>"
 msgstr "faire expirer les arbres de travail plus vieux que <temps>"
 
-#: builtin/worktree.c:238
+#: builtin/worktree.c:229
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' existe déjà"
 
-#: builtin/worktree.c:269
+#: builtin/worktree.c:260
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "impossible de créer le répertoire de '%s'"
 
-#: builtin/worktree.c:308
+#: builtin/worktree.c:373 builtin/worktree.c:379
 #, c-format
-msgid "Preparing %s (identifier %s)"
-msgstr "Préparation de %s (identifiant %s)"
+msgid "Preparing worktree (new branch '%s')"
+msgstr "Préparation de l'arbre de travail (nouvelle branche '%s')"
 
-#: builtin/worktree.c:385
+#: builtin/worktree.c:375
+#, 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:384
+#, c-format
+msgid "Preparing worktree (checking out '%s')"
+msgstr "Préparation de l'arbre de travail (extraction de '%s')"
+
+#: builtin/worktree.c:390
+#, c-format
+msgid "Preparing worktree (detached HEAD %s)"
+msgstr "Préparation de l'arbre de travail (HEAD détachée %s)"
+
+#: builtin/worktree.c:431
 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:388
+#: builtin/worktree.c:434
 msgid "create a new branch"
 msgstr "créer une nouvelle branche"
 
-#: builtin/worktree.c:390
+#: builtin/worktree.c:436
 msgid "create or reset a branch"
 msgstr "créer ou réinitialiser une branche"
 
-#: builtin/worktree.c:392
+#: builtin/worktree.c:438
 msgid "populate the new working tree"
 msgstr "remplissage de la nouvelle copie de travail"
 
-#: builtin/worktree.c:393
+#: builtin/worktree.c:439
 msgid "keep the new working tree locked"
 msgstr "conserver le verrou sur le nouvel arbre de travail"
 
-#: builtin/worktree.c:395
+#: builtin/worktree.c:441
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "régler le mode de suivi (voir git-branch(1))"
 
-#: builtin/worktree.c:398
+#: builtin/worktree.c:444
 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:406
+#: builtin/worktree.c:452
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b, -B et --detach sont mutuellement exclusifs"
 
-#: builtin/worktree.c:471
+#: builtin/worktree.c:511
 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:571
+#: builtin/worktree.c:611
 msgid "reason for locking"
 msgstr "raison du verrouillage"
 
-#: builtin/worktree.c:583 builtin/worktree.c:616 builtin/worktree.c:670
-#: builtin/worktree.c:809
+#: builtin/worktree.c:623 builtin/worktree.c:656 builtin/worktree.c:710
+#: builtin/worktree.c:850
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' n'est pas une copie de travail"
 
-#: builtin/worktree.c:585 builtin/worktree.c:618
+#: builtin/worktree.c:625 builtin/worktree.c:658
 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:590
+#: builtin/worktree.c:630
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' est déjà verrouillé, car '%s'"
 
-#: builtin/worktree.c:592
+#: builtin/worktree.c:632
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' est déjà verrouillé"
 
-#: builtin/worktree.c:620
+#: builtin/worktree.c:660
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' n'est pas verrouillé"
 
-#: builtin/worktree.c:645
+#: builtin/worktree.c:685
 msgid "working trees containing submodules cannot be moved or removed"
-msgstr "les arbres de travail contenant des sous-modules ne peuvent pas être déplacés ou supprimés"
+msgstr ""
+"les arbres de travail contenant des sous-modules ne peuvent pas être "
+"déplacés ou supprimés"
 
-#: builtin/worktree.c:672 builtin/worktree.c:811
+#: builtin/worktree.c:712 builtin/worktree.c:852
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' est un arbre de travail principal"
 
-#: builtin/worktree.c:677
+#: builtin/worktree.c:717
 #, 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:683
+#: builtin/worktree.c:723
 #, c-format
 msgid "target '%s' already exists"
 msgstr "la cible '%s' existe déjà"
 
-#: builtin/worktree.c:690
+#: builtin/worktree.c:730
 #, c-format
 msgid "cannot move a locked working tree, lock reason: %s"
-msgstr "impossible de déplacer un arbre de travail verrouillé, raison du verrouillage : %s"
+msgstr ""
+"impossible de déplacer un arbre de travail verrouillé, raison du "
+"verrouillage : %s"
 
-#: builtin/worktree.c:692
+#: builtin/worktree.c:732
 msgid "cannot move a locked working tree"
 msgstr "impossible de déplacer un arbre de travail verrouillé"
 
-#: builtin/worktree.c:695
+#: builtin/worktree.c:735
 #, 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:700
+#: builtin/worktree.c:740
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "échec au déplacement de '%s' vers '%s'"
 
-#: builtin/worktree.c:748
+#: builtin/worktree.c:788
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "échec du lancement de 'git status' sur '%s'"
 
-#: builtin/worktree.c:752
+#: builtin/worktree.c:792
 #, c-format
 msgid "'%s' is dirty, use --force to delete it"
 msgstr "'%s' est sale, utilisez --force pour le supprimer"
 
-#: builtin/worktree.c:757
+#: builtin/worktree.c:797
 #, 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:768 builtin/worktree.c:782
+#: builtin/worktree.c:808 builtin/worktree.c:822
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "échec de la suppression de '%s'"
 
-#: builtin/worktree.c:794
+#: builtin/worktree.c:834
 msgid "force removing even if the worktree is dirty"
 msgstr "forcer la suppression même si l'arbre de travail est sale"
 
-#: builtin/worktree.c:815
+#: builtin/worktree.c:856
 #, c-format
 msgid "cannot remove a locked working tree, lock reason: %s"
-msgstr "impossible de supprimer un arbre de travail verrouillé, raison du verrouillage : %s"
+msgstr ""
+"impossible de supprimer un arbre de travail verrouillé, raison du "
+"verrouillage : %s"
 
-#: builtin/worktree.c:817
+#: builtin/worktree.c:858
 msgid "cannot remove a locked working tree"
 msgstr "impossible de supprimer un arbre de travail verrouillé"
 
-#: builtin/worktree.c:820
+#: builtin/worktree.c:861
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
-msgstr "la validation a échoué, impossible de supprimer l'arbre de travail : %s"
+msgstr ""
+"la validation a échoué, impossible de supprimer l'arbre de travail : %s"
 
 #: builtin/write-tree.c:14
 msgid "git write-tree [--missing-ok] [--prefix=<prefix>/]"
@@ -15054,28 +15655,6 @@ msgstr "écrire l'objet arbre pour un sous-répertoire <préfixe>"
 msgid "only useful for debugging"
 msgstr "seulement utile pour le débogage"
 
-#: upload-pack.c:27
-msgid "git upload-pack [<options>] <dir>"
-msgstr "git upload-pack [<options>] <répertoire>"
-
-#: upload-pack.c:1070
-msgid "quit after a single request/response exchange"
-msgstr "quitter après un unique échange requête/réponse"
-
-#: upload-pack.c:1072
-msgid "exit immediately after initial ref advertisement"
-msgstr "Sortir immédiatement après l'annonce initiale des références"
-
-#: upload-pack.c:1074
-msgid "do not try <directory>/.git/ if <directory> is no Git directory"
-msgstr ""
-"nes pas essayer <répertoire>/.git/ si <répertoire> n'est pas un répertoire "
-"Git"
-
-#: upload-pack.c:1076
-msgid "interrupt transfer after <n> seconds of inactivity"
-msgstr "interrompre le transfert après <n> secondes d'inactivité"
-
 #: credential-cache--daemon.c:222
 #, c-format
 msgid ""
@@ -15093,21 +15672,24 @@ msgstr ""
 msgid "print debugging messages to stderr"
 msgstr "afficher les messages de debug sur stderr"
 
-#: git.c:8
+#: git.c:27
 msgid ""
 "git [--version] [--help] [-C <path>] [-c <name>=<value>]\n"
 "           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
-"           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]\n"
+"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
+"bare]\n"
 "           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
 "           <command> [<args>]"
 msgstr ""
 "git [--version] [--help] [-C <chemin>] [-c <nom>=<valeur>]\n"
-"           [--exec-path[=<chemin>]] [--html-path] [--man-path] [--info-path]\n"
-"           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]\n"
+"           [--exec-path[=<chemin>]] [--html-path] [--man-path] [--info-"
+"path]\n"
+"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
+"bare]\n"
 "           [--git-dir=<chemin>] [--work-tree=<chemin>] [--namespace=<nom>]\n"
 "           <commande> [<args>]"
 
-#: git.c:15
+#: git.c:34
 msgid ""
 "'git help -a' and 'git help -g' list available subcommands and some\n"
 "concept guides. See 'git help <command>' or 'git help <concept>'\n"
@@ -15117,66 +15699,67 @@ msgstr ""
 "quelques concepts. Voir 'git help <commande>' ou 'git help <concept>'\n"
 "pour en lire plus à propos d'une commande spécifique ou d'un concept."
 
-#: git.c:95
+#: git.c:173
 #, c-format
 msgid "no directory given for --git-dir\n"
 msgstr "aucun répertoire fourni pour --git-dir\n"
 
-#: git.c:109
+#: git.c:187
 #, c-format
 msgid "no namespace given for --namespace\n"
 msgstr "aucun espace de nom fournit pour --namespace\n"
 
-#: git.c:123
+#: git.c:201
 #, c-format
 msgid "no directory given for --work-tree\n"
 msgstr "aucun répertoire fourni pour --work-tree\n"
 
-#: git.c:137
+#: git.c:215
 #, c-format
 msgid "no prefix given for --super-prefix\n"
 msgstr "aucun préfixe fourni pour --super-prefix\n"
 
-#: git.c:159
+#: git.c:237
 #, c-format
 msgid "-c expects a configuration string\n"
 msgstr "-c requiert une chaîne de configuration\n"
 
-#: git.c:197
+#: git.c:275
 #, c-format
 msgid "no directory given for -C\n"
 msgstr "aucun répertoire fourni pour -C\n"
 
-#: git.c:212
+#: git.c:300
 #, c-format
 msgid "unknown option: %s\n"
 msgstr "option inconnue : %s\n"
 
-#: git.c:687
+#: git.c:765
 #, c-format
 msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
-msgstr "l'expansion de l'alias '%s' a échoué : '%s' n'est pas une commande git\n"
+msgstr ""
+"l'expansion de l'alias '%s' a échoué : '%s' n'est pas une commande git\n"
 
-#: git.c:699
+#: git.c:777
 #, c-format
 msgid "failed to run command '%s': %s\n"
 msgstr "échec au lancement de la commande '%s' : %s\n"
 
-#: http.c:342
+#: http.c:348
 #, c-format
 msgid "negative value for http.postbuffer; defaulting to %d"
 msgstr ""
 "valeur négative pour http.postbuffer ; utilisation de la valeur par défaut %d"
 
-#: http.c:363
+#: http.c:369
 msgid "Delegation control is not supported with cURL < 7.22.0"
 msgstr "La délégation de commande n'est pas supporté avec cuRL < 7.22.0"
 
-#: http.c:372
+#: http.c:378
 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:1857
+#: http.c:1854
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -15187,7 +15770,7 @@ msgstr ""
 "      demandé : %s\n"
 "  redirection : %s"
 
-#: remote-curl.c:345
+#: remote-curl.c:401
 #, c-format
 msgid "redirecting to %s"
 msgstr "redirection vers %s"
@@ -15200,133 +15783,678 @@ msgstr "args"
 msgid "object filtering"
 msgstr "filtrage d'objet"
 
-#: common-cmds.h:9
-msgid "start a working area (see also: git help tutorial)"
-msgstr "démarrer une zone de travail (voir aussi : git help tutorial)"
+#: parse-options.h:157
+msgid "expiry-date"
+msgstr "date-d'expiration"
 
-#: common-cmds.h:10
-msgid "work on the current change (see also: git help everyday)"
-msgstr ""
-"travailler sur la modification actuelle (voir aussi : git help revisions)"
+#: parse-options.h:172
+msgid "no-op (backward compatibility)"
+msgstr "sans action (rétrocompatibilité)"
 
-#: common-cmds.h:11
-msgid "examine the history and state (see also: git help revisions)"
-msgstr "examiner l'historique et l'état (voir aussi : git help revisions)"
+#: parse-options.h:251
+msgid "be more verbose"
+msgstr "être plus verbeux"
 
-#: common-cmds.h:12
-msgid "grow, mark and tweak your common history"
-msgstr "agrandir, marquer et modifier votre historique"
+#: parse-options.h:253
+msgid "be more quiet"
+msgstr "être plus silencieux"
 
-#: common-cmds.h:13
-msgid "collaborate (see also: git help workflows)"
-msgstr "collaborer (voir aussi : git help workflows)"
+#: parse-options.h:259
+msgid "use <n> digits to display SHA-1s"
+msgstr "utiliser <n> chiffres pour afficher les SHA-1s"
 
-#: common-cmds.h:17
+#: command-list.h:50
 msgid "Add file contents to the index"
 msgstr "Ajouter le contenu de fichiers dans l'index"
 
-#: common-cmds.h:18
+#: command-list.h:51
+msgid "Apply a series of patches from a mailbox"
+msgstr "Appliquer une série de patchs depuis une boîte mail"
+
+#: command-list.h:52
+msgid "Annotate file lines with commit information"
+msgstr "Annoter les lignes du fichier avec l'information de commit"
+
+#: command-list.h:53
+msgid "Apply a patch to files and/or to the index"
+msgstr "Appliquer une patch à des fichiers ou à l'index"
+
+#: command-list.h:54
+msgid "Import an Arch repository into Git"
+msgstr "Importer dans Git un dépôt Arch"
+
+#: command-list.h:55
+msgid "Create an archive of files from a named tree"
+msgstr "Créer une archive des fichiers depuis un arbre nommé"
+
+#: command-list.h:56
 msgid "Use binary search to find the commit that introduced a bug"
 msgstr "Trouver par recherche binaire la modification qui a introduit un bogue"
 
-#: common-cmds.h:19
+#: command-list.h:57
+msgid "Show what revision and author last modified each line of a file"
+msgstr ""
+"Montrer la révision et l'auteur qui ont modifié en dernier chaque ligne d'un "
+"fichier"
+
+#: command-list.h:58
 msgid "List, create, or delete branches"
 msgstr "Lister, créer ou supprimer des branches"
 
-#: common-cmds.h:20
+#: command-list.h:59
+msgid "Move objects and refs by archive"
+msgstr "Déplacer les objets et références par archive"
+
+#: command-list.h:60
+msgid "Provide content or type and size information for repository objects"
+msgstr ""
+"Fournir les contenu ou l'information de type et taille pour les objets du "
+"dépôt"
+
+#: command-list.h:61
+msgid "Display gitattributes information"
+msgstr "Afficher les informations gitattributes"
+
+#: command-list.h:62
+msgid "Debug gitignore / exclude files"
+msgstr "Déboguer gitignore / les fichiers d'exclusion"
+
+#: command-list.h:63
+msgid "Show canonical names and email addresses of contacts"
+msgstr "Afficher les noms canoniques et les adresses courriel des contacts"
+
+#: command-list.h:64
 msgid "Switch branches or restore working tree files"
 msgstr "Basculer de branche ou restaurer la copie de travail"
 
-#: common-cmds.h:21
+#: command-list.h:65
+msgid "Copy files from the index to the working tree"
+msgstr "Copier les fichiers depuis l'index dans la copie de travail"
+
+#: command-list.h:66
+msgid "Ensures that a reference name is well formed"
+msgstr "Assure qu'un nom de référence est bien formé"
+
+#: command-list.h:67
+msgid "Find commits yet to be applied to upstream"
+msgstr "Trouver les commits à appliquer en amont"
+
+#: command-list.h:68
+msgid "Apply the changes introduced by some existing commits"
+msgstr "Appliquer les modifications introduites par des commits existants"
+
+#: command-list.h:69
+msgid "Graphical alternative to git-commit"
+msgstr "Alternative graphique à git-commit"
+
+#: command-list.h:70
+msgid "Remove untracked files from the working tree"
+msgstr "Supprimer les fichiers non-suivis de l'arbre de travail"
+
+#: command-list.h:71
 msgid "Clone a repository into a new directory"
 msgstr "Cloner un dépôt dans un nouveau répertoire"
 
-#: common-cmds.h:22
+#: command-list.h:72
+msgid "Display data in columns"
+msgstr "Afficher les données en colonnes"
+
+#: command-list.h:73
 msgid "Record changes to the repository"
 msgstr "Enregistrer les modifications dans le dépôt"
 
-#: common-cmds.h:23
+#: command-list.h:74
+msgid "Write and verify Git commit graph files"
+msgstr "Écrire et vérifier les fichiers de graphe de commit Git"
+
+#: command-list.h:75
+msgid "Create a new commit object"
+msgstr "Créer un nouvel objet commit"
+
+#: command-list.h:76
+msgid "Get and set repository or global options"
+msgstr "voir et régler les options globales ou de dépôt"
+
+#: command-list.h:77
+msgid "Count unpacked number of objects and their disk consumption"
+msgstr ""
+"Compter le nombre d'objets non-empaquetés et leur consommation d'espace "
+"disque"
+
+#: command-list.h:78
+msgid "Retrieve and store user credentials"
+msgstr "Récupérer et sauvegarder les certificats d'utilisateur"
+
+#: command-list.h:79
+msgid "Helper to temporarily store passwords in memory"
+msgstr "Assistant pour maintenir temporairement en mémoire les mots de passe"
+
+#: command-list.h:80
+msgid "Helper to store credentials on disk"
+msgstr "Assistant pour sauvegarder les certificats sur disque"
+
+#: command-list.h:81
+msgid "Export a single commit to a CVS checkout"
+msgstr "Exporter un commit unique en extraction CVS"
+
+#: command-list.h:82
+msgid "Salvage your data out of another SCM people love to hate"
+msgstr "Sauver vos données depuis un autre SCM qu'on aime à haïr"
+
+#: command-list.h:83
+msgid "A CVS server emulator for Git"
+msgstr "Un émulateur de serveur CVS pour Git"
+
+#: command-list.h:84
+msgid "A really simple server for Git repositories"
+msgstr "Un serveur vraiment simple pour les dépôts Git"
+
+#: command-list.h:85
+msgid "Give an object a human readable name based on an available ref"
+msgstr ""
+"Baptiser un objet avec un nom lisible à partir d'une référence disponible"
+
+#: command-list.h:86
 msgid "Show changes between commits, commit and working tree, etc"
 msgstr ""
 "Afficher les changements entre les validations, entre validation et copie de "
 "travail, etc"
 
-#: common-cmds.h:24
+#: command-list.h:87
+msgid "Compares files in the working tree and the index"
+msgstr "Compare des fichiers de l'arbre de travail et de l'index"
+
+#: command-list.h:88
+msgid "Compare a tree to the working tree or index"
+msgstr "Comparer un arbre avec l'arbre de travail ou l'index"
+
+#: command-list.h:89
+msgid "Compares the content and mode of blobs found via two tree objects"
+msgstr "Compare le contenu et la mode des blobs trouvés via deux objets arbre"
+
+#: command-list.h:90
+msgid "Show changes using common diff tools"
+msgstr "Afficher les modifications en utilisant les outils habituel de diff"
+
+#: command-list.h:91
+msgid "Git data exporter"
+msgstr "Exporteur de données Git"
+
+#: command-list.h:92
+msgid "Backend for fast Git data importers"
+msgstr "Moteur pour les importateurs rapides de données Git"
+
+#: command-list.h:93
 msgid "Download objects and refs from another repository"
 msgstr "Télécharger les objets et références depuis un autre dépôt"
 
-#: common-cmds.h:25
+#: command-list.h:94
+msgid "Receive missing objects from another repository"
+msgstr "Télécharger les objets manquants depuis un autre dépôt"
+
+#: command-list.h:95
+msgid "Rewrite branches"
+msgstr "Réécrire les branches"
+
+#: command-list.h:96
+msgid "Produce a merge commit message"
+msgstr "Produire un message de validation de fusion"
+
+#: command-list.h:97
+msgid "Output information on each ref"
+msgstr "Afficher l'information de chaque référence"
+
+#: command-list.h:98
+msgid "Prepare patches for e-mail submission"
+msgstr "Préparer les patchs pour soumission par courriel"
+
+#: command-list.h:99
+msgid "Verifies the connectivity and validity of the objects in the database"
+msgstr ""
+"Vérifier la connectivité et la validité des objets dans la base de données"
+
+#: command-list.h:100
+msgid "Cleanup unnecessary files and optimize the local repository"
+msgstr "Effacer les fichiers non-nécessaires et optimiser le dépôt local"
+
+#: command-list.h:101
+msgid "Extract commit ID from an archive created using git-archive"
+msgstr "Extraire l'ID du commit depuis une archive créée par git-archive"
+
+#: command-list.h:102
 msgid "Print lines matching a pattern"
 msgstr "Afficher les lignes correspondant à un motif"
 
-#: common-cmds.h:26
+#: command-list.h:103
+msgid "A portable graphical interface to Git"
+msgstr "Une interface graphique portable pour Git"
+
+#: command-list.h:104
+msgid "Compute object ID and optionally creates a blob from a file"
+msgstr ""
+"Calculer l'ID d'objet et créer optionnellement un blob depuis un fichier"
+
+#: command-list.h:105
+msgid "Display help information about Git"
+msgstr "Afficher l'information d'aide à propos de Git"
+
+#: command-list.h:106
+msgid "Server side implementation of Git over HTTP"
+msgstr "Implantation côté serveur de Git sur HTTP"
+
+#: command-list.h:107
+msgid "Download from a remote Git repository via HTTP"
+msgstr "Télécharger depuis un dépôt Git distant via HTTP"
+
+#: command-list.h:108
+msgid "Push objects over HTTP/DAV to another repository"
+msgstr "Pousser les objets sur un autre dépôt via HTTP/DAV"
+
+#: command-list.h:109
+msgid "Send a collection of patches from stdin to an IMAP folder"
+msgstr "Envoyer un ensemble de patchs depuis stdin vers un répertoire IMAP"
+
+#: command-list.h:110
+msgid "Build pack index file for an existing packed archive"
+msgstr ""
+"Construire un fichier d'index pack depuis une archive compactée existante"
+
+#: command-list.h:111
 msgid "Create an empty Git repository or reinitialize an existing one"
 msgstr "Créer un dépôt Git vide ou réinitialiser un existant"
 
-#: common-cmds.h:27
+#: command-list.h:112
+msgid "Instantly browse your working repository in gitweb"
+msgstr "Naviguer instantanément votre dépôt de travail dans gitweb"
+
+#: command-list.h:113
+msgid "add or parse structured information in commit messages"
+msgstr ""
+"ajouter ou analyser l'information structurée dans les messages de validation"
+
+#: command-list.h:114
+msgid "The Git repository browser"
+msgstr "Le navigateur de dépôt Git"
+
+#: command-list.h:115
 msgid "Show commit logs"
 msgstr "Afficher l'historique des validations"
 
-#: common-cmds.h:28
+#: command-list.h:116
+msgid "Show information about files in the index and the working tree"
+msgstr ""
+"Afficher l'information à propos des fichiers dans l'index ou l'arbre de "
+"travail"
+
+#: command-list.h:117
+msgid "List references in a remote repository"
+msgstr "Lister les références dans un dépôt distant"
+
+#: command-list.h:118
+msgid "List the contents of a tree object"
+msgstr "Afficher le contenu d'un objet arbre"
+
+#: command-list.h:119
+msgid "Extracts patch and authorship from a single e-mail message"
+msgstr ""
+"Extraire le patch et l'information de d'auteur depuis un simple message de "
+"courriel"
+
+#: command-list.h:120
+msgid "Simple UNIX mbox splitter program"
+msgstr "Programme simple de découpage de mbox UNIX"
+
+#: command-list.h:121
 msgid "Join two or more development histories together"
 msgstr "Fusionner deux ou plusieurs historiques de développement ensemble"
 
-#: common-cmds.h:29
+#: command-list.h:122
+msgid "Find as good common ancestors as possible for a merge"
+msgstr "Trouver un ancêtre aussi bon que possible pour une fusion"
+
+#: command-list.h:123
+msgid "Run a three-way file merge"
+msgstr "Lancer une fusion à 3 points"
+
+#: command-list.h:124
+msgid "Run a merge for files needing merging"
+msgstr "Lancer une fusion à 3 points pour les fichiers à fusionner"
+
+#: command-list.h:125
+msgid "The standard helper program to use with git-merge-index"
+msgstr "Le programme assistant standard à utiliser avec git-merge-index"
+
+#: command-list.h:126
+msgid "Run merge conflict resolution tools to resolve merge conflicts"
+msgstr ""
+"Lancer les outils de résolution de conflit de fusion pour résoudre les "
+"conflits de fusion"
+
+#: command-list.h:127
+msgid "Show three-way merge without touching index"
+msgstr "Afficher la fusion à trois points sans modifier l'index"
+
+#: command-list.h:128
+msgid "Creates a tag object"
+msgstr "Créer un objet étiquette"
+
+#: command-list.h:129
+msgid "Build a tree-object from ls-tree formatted text"
+msgstr "Construire un objet arbre depuis une texte formaté comme ls-tree"
+
+#: command-list.h:130
 msgid "Move or rename a file, a directory, or a symlink"
 msgstr "Déplacer ou renommer un fichier, un répertoire, ou un lien symbolique"
 
-#: common-cmds.h:30
+#: command-list.h:131
+msgid "Find symbolic names for given revs"
+msgstr "Trouver les noms symboliques pour des révisions données"
+
+#: command-list.h:132
+msgid "Add or inspect object notes"
+msgstr "Ajouter ou inspecter les notes d'un objets"
+
+#: command-list.h:133
+msgid "Import from and submit to Perforce repositories"
+msgstr "Importer et soumettre à des dépôt Perforce"
+
+#: command-list.h:134
+msgid "Create a packed archive of objects"
+msgstr "Créer une archive compactée d'objets"
+
+#: command-list.h:135
+msgid "Find redundant pack files"
+msgstr "Trouver les fichiers pack redondants"
+
+#: command-list.h:136
+msgid "Pack heads and tags for efficient repository access"
+msgstr "Empaqueter les têtes et les étiquettes pour un accès efficace au dépôt"
+
+#: command-list.h:137
+msgid "Routines to help parsing remote repository access parameters"
+msgstr ""
+"Routines pour aider à analyser les paramètres d'accès aux dépôts distants"
+
+#: command-list.h:138
+msgid "Compute unique ID for a patch"
+msgstr "Calculer l'ID unique d'un patch"
+
+#: command-list.h:139
+msgid "Prune all unreachable objects from the object database"
+msgstr ""
+"Éliminer les objets inatteignables depuis la base de données des objets"
+
+#: command-list.h:140
+msgid "Remove extra objects that are already in pack files"
+msgstr "Éliminer les objets qui sont déjà présents dans les fichiers pack"
+
+#: command-list.h:141
 msgid "Fetch from and integrate with another repository or a local branch"
 msgstr "Rapatrier et intégrer un autre dépôt ou une branche locale"
 
-#: common-cmds.h:31
+#: command-list.h:142
 msgid "Update remote refs along with associated objects"
 msgstr "Mettre à jour les références distantes ainsi que les objets associés"
 
-#: common-cmds.h:32
+#: command-list.h:143
+msgid "Applies a quilt patchset onto the current branch"
+msgstr "Appliquer un patchset quilt sur la branche courante"
+
+#: command-list.h:144
+msgid "Reads tree information into the index"
+msgstr "Lire l'information d'arbre dans l'index"
+
+#: command-list.h:145
 msgid "Reapply commits on top of another base tip"
 msgstr "Réapplication des commits sur le sommet de l'autre base"
 
-#: common-cmds.h:33
+#: command-list.h:146
+msgid "Receive what is pushed into the repository"
+msgstr "Recevoir ce qui est poussé dans le dépôt"
+
+#: command-list.h:147
+msgid "Manage reflog information"
+msgstr "Gérer l'information de reflog"
+
+#: command-list.h:148
+msgid "Manage set of tracked repositories"
+msgstr "Gérer un ensemble de dépôts suivis"
+
+#: command-list.h:149
+msgid "Pack unpacked objects in a repository"
+msgstr "Empaqueter les objets non-empaquetés d'un dépôt"
+
+#: command-list.h:150
+msgid "Create, list, delete refs to replace objects"
+msgstr "Créer, lister, supprimer des référence pour remplacer des objets"
+
+#: command-list.h:151
+msgid "Generates a summary of pending changes"
+msgstr "Générer une résumé des modifications en attentes"
+
+#: command-list.h:152
+msgid "Reuse recorded resolution of conflicted merges"
+msgstr "Réutiliser une résolution enregistrée de fusions conflictuelles"
+
+#: command-list.h:153
 msgid "Reset current HEAD to the specified state"
 msgstr "Réinitialiser la HEAD courante à l'état spécifié"
 
-#: common-cmds.h:34
+#: command-list.h:154
+msgid "Revert some existing commits"
+msgstr "Inverser des commits existants"
+
+#: command-list.h:155
+msgid "Lists commit objects in reverse chronological order"
+msgstr "Afficher les objets commit dans l'ordre chronologique inverse"
+
+#: command-list.h:156
+msgid "Pick out and massage parameters"
+msgstr "Analyser et préparer les paramètres"
+
+#: command-list.h:157
 msgid "Remove files from the working tree and from the index"
 msgstr "Supprimer des fichiers de la copie de travail et de l'index"
 
-#: common-cmds.h:35
+#: command-list.h:158
+msgid "Send a collection of patches as emails"
+msgstr "Envoyer un ensemble de patchs comme courriels"
+
+#: command-list.h:159
+msgid "Push objects over Git protocol to another repository"
+msgstr "Pousser les objets sur un autre dépôt via le protocole Git"
+
+#: command-list.h:160
+msgid "Restricted login shell for Git-only SSH access"
+msgstr "shell de login restreint pour un accès SSH vers Git seulement"
+
+#: command-list.h:161
+msgid "Summarize 'git log' output"
+msgstr "Résumer la sortie de 'git log'"
+
+#: command-list.h:162
 msgid "Show various types of objects"
 msgstr "Afficher différents types d'objets"
 
-#: common-cmds.h:36
+#: command-list.h:163
+msgid "Show branches and their commits"
+msgstr "Afficher les branches et leurs commits"
+
+#: command-list.h:164
+msgid "Show packed archive index"
+msgstr "Afficher l'index de l'archive empaquetée"
+
+#: command-list.h:165
+msgid "List references in a local repository"
+msgstr "Lister les références du dépôt local"
+
+#: command-list.h:166
+msgid "Git's i18n setup code for shell scripts"
+msgstr "Le code d'initialisation i18n pour les scripts shell"
+
+#: command-list.h:167
+msgid "Common Git shell script setup code"
+msgstr "Le code d'initialisation commun aux scripts shell Git"
+
+#: command-list.h:168
+msgid "Stash the changes in a dirty working directory away"
+msgstr "Remiser les modifications d'un répertoire de travail sale"
+
+#: command-list.h:169
+msgid "Add file contents to the staging area"
+msgstr "Ajouter le contenu de fichiers à l'index"
+
+#: command-list.h:170
 msgid "Show the working tree status"
 msgstr "Afficher l'état de la copie de travail"
 
-#: common-cmds.h:37
+#: command-list.h:171
+msgid "Remove unnecessary whitespace"
+msgstr "Retirer les espaces inutiles"
+
+#: command-list.h:172
+msgid "Initialize, update or inspect submodules"
+msgstr "Initialiser, mettre à jour et inspecter les sous-modules"
+
+#: command-list.h:173
+msgid "Bidirectional operation between a Subversion repository and Git"
+msgstr "Opération Bidirectionnelles entre un dépôt Subversion et Git"
+
+#: command-list.h:174
+msgid "Read, modify and delete symbolic refs"
+msgstr "Lire, modifier et supprimer les références symboliques"
+
+#: command-list.h:175
 msgid "Create, list, delete or verify a tag object signed with GPG"
 msgstr ""
 "Créer, lister, supprimer ou vérifier un objet d'étiquette signé avec GPG"
 
-#: parse-options.h:157
-msgid "expiry-date"
-msgstr "date-d'expiration"
+#: command-list.h:176
+msgid "Creates a temporary file with a blob's contents"
+msgstr "Créer un fichier temporaire avec le contenu d'un blob"
 
-#: parse-options.h:172
-msgid "no-op (backward compatibility)"
-msgstr "sans action (rétrocompatibilité)"
+#: command-list.h:177
+msgid "Unpack objects from a packed archive"
+msgstr "Dépaqueter les objets depuis une archive empaquetée"
 
-#: parse-options.h:250
-msgid "be more verbose"
-msgstr "être plus verbeux"
+#: command-list.h:178
+msgid "Register file contents in the working tree to the index"
+msgstr "Enregistrer le contenu d'un fichier de l'arbre de travail dans l'index"
 
-#: parse-options.h:252
-msgid "be more quiet"
-msgstr "être plus silencieux"
+#: command-list.h:179
+msgid "Update the object name stored in a ref safely"
+msgstr ""
+"Mettre à jour le nom d'objet stocké dans une référence en toute sécurité"
 
-#: parse-options.h:258
-msgid "use <n> digits to display SHA-1s"
-msgstr "utiliser <n> chiffres pour afficher les SHA-1s"
+#: command-list.h:180
+msgid "Update auxiliary info file to help dumb servers"
+msgstr ""
+"Mettre à jour le fichier d'informations auxiliaires pour aider les serveurs "
+"idiots"
+
+#: command-list.h:181
+msgid "Send archive back to git-archive"
+msgstr "Renvoyer une archive dans git-archive"
+
+#: command-list.h:182
+msgid "Send objects packed back to git-fetch-pack"
+msgstr "Renvoyer des objets empaquetés dans git-fetch-pack"
+
+#: command-list.h:183
+msgid "Show a Git logical variable"
+msgstr "Afficher un variable logique de Git"
+
+#: command-list.h:184
+msgid "Check the GPG signature of commits"
+msgstr "Vérifier la signature GPG de commits"
+
+#: command-list.h:185
+msgid "Validate packed Git archive files"
+msgstr "Valider des fichiers d'archive Git empaquetés"
+
+#: command-list.h:186
+msgid "Check the GPG signature of tags"
+msgstr "Vérifier la signature GPG d'étiquettes"
+
+#: command-list.h:187
+msgid "Git web interface (web frontend to Git repositories)"
+msgstr "Interface web de Git"
+
+#: command-list.h:188
+msgid "Show logs with difference each commit introduces"
+msgstr "Afficher les journaux avec la différence que chaque commit introduit"
+
+#: command-list.h:189
+msgid "Manage multiple working trees"
+msgstr "Gère de arbres de travail multiples"
+
+#: command-list.h:190
+msgid "Create a tree object from the current index"
+msgstr "Créer un objet arbre depuis l'index courant"
+
+#: command-list.h:191
+msgid "Defining attributes per path"
+msgstr "Définition des attributs par chemin"
+
+#: command-list.h:192
+msgid "Git command-line interface and conventions"
+msgstr "interface en ligne de commande et conventions de Git"
+
+#: command-list.h:193
+msgid "A Git core tutorial for developers"
+msgstr "Tutoriel du cœur de Git pour les développeurs"
+
+#: command-list.h:194
+msgid "Git for CVS users"
+msgstr "Git pour les utilisateurs de CVS"
+
+#: command-list.h:195
+msgid "Tweaking diff output"
+msgstr "Bidouillage de la sortie diff"
+
+#: command-list.h:196
+msgid "A useful minimum set of commands for Everyday Git"
+msgstr "Un ensemble minimal utile des commandes de Git pour tous les jours"
+
+#: command-list.h:197
+msgid "A Git Glossary"
+msgstr "Un glossaire Git"
+
+#: command-list.h:198
+msgid "Hooks used by Git"
+msgstr "Crochets utilisés par Git"
+
+#: command-list.h:199
+msgid "Specifies intentionally untracked files to ignore"
+msgstr "Spécifie les fichiers non-suivis à ignorer intentionnellement"
+
+#: command-list.h:200
+msgid "Defining submodule properties"
+msgstr "Définition des propriétés de sous-module"
+
+#: command-list.h:201
+msgid "Git namespaces"
+msgstr "Espaces de nom de Git"
+
+#: command-list.h:202
+msgid "Git Repository Layout"
+msgstr "Disposition d'un dépôt Git"
+
+#: command-list.h:203
+msgid "Specifying revisions and ranges for Git"
+msgstr "Spécification des révisions et portées pour Git"
+
+#: command-list.h:204
+msgid "A tutorial introduction to Git: part two"
+msgstr "Une introduction pratique à Git : deuxième partie"
+
+#: command-list.h:205
+msgid "A tutorial introduction to Git"
+msgstr "Une introduction pratique à Git"
+
+#: command-list.h:206
+msgid "An overview of recommended workflows with Git"
+msgstr "Un aperçu des flux de travail recommandés avec Git"
 
 #: rerere.h:40
 msgid "update the index with reused conflict resolution if possible"
@@ -15562,7 +16690,7 @@ msgstr "Essai de fusion simple avec $pretty_name"
 msgid "Simple merge did not work, trying automatic merge."
 msgstr "La fusion simple a échoué, essai avec la fusion automatique."
 
-#: git-rebase.sh:60
+#: git-rebase.sh:61
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
@@ -15576,43 +16704,43 @@ msgstr ""
 "arrêter\n"
 "et revenir à l'état antérieur à la commande, lancez \"git rebase --abort\"."
 
-#: git-rebase.sh:163 git-rebase.sh:409
+#: git-rebase.sh:173 git-rebase.sh:442
 #, sh-format
 msgid "Could not move back to $head_name"
 msgstr "Impossible de revenir à $head_name"
 
-#: git-rebase.sh:174
+#: git-rebase.sh:184
 msgid "Applied autostash."
 msgstr "Autoremisage appliqué."
 
-#: git-rebase.sh:177
+#: git-rebase.sh:187
 #, sh-format
 msgid "Cannot store $stash_sha1"
 msgstr "Impossible de stocker $stash_sha1"
 
-#: git-rebase.sh:218
+#: git-rebase.sh:229
 msgid "The pre-rebase hook refused to rebase."
 msgstr "Le crochet pre-rebase a refusé de rebaser."
 
-#: git-rebase.sh:223
+#: git-rebase.sh:234
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr "Il semble que 'git-am' soit en cours. Impossible de rebaser."
 
-#: git-rebase.sh:370
+#: git-rebase.sh:403
 msgid "No rebase in progress?"
 msgstr "Pas de rebasage en cours ?"
 
-#: git-rebase.sh:381
+#: git-rebase.sh:414
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr ""
 "L'action --edit-todo peut seulement être utilisée lors d'un rebasage "
 "interactif."
 
-#: git-rebase.sh:388
+#: git-rebase.sh:421
 msgid "Cannot read HEAD"
 msgstr "Impossible de lire HEAD"
 
-#: git-rebase.sh:391
+#: git-rebase.sh:424
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
@@ -15620,7 +16748,7 @@ msgstr ""
 "Vous devez éditer tous les conflits de fusion et\n"
 "les marquer comme résolus avec git add"
 
-#: git-rebase.sh:435
+#: git-rebase.sh:468
 #, sh-format
 msgid ""
 "It seems that there is already a $state_dir_base directory, and\n"
@@ -15642,76 +16770,80 @@ msgstr ""
 "chose\n"
 "d'important ici."
 
-#: git-rebase.sh:491
+#: git-rebase.sh:509
+msgid "error: cannot combine '--signoff' with '--preserve-merges'"
+msgstr "erreur : '--signoff' et '--preserve-merges' sont incompatibles"
+
+#: git-rebase.sh:537
 #, sh-format
 msgid "invalid upstream '$upstream_name'"
 msgstr "invalide '$upstream_name' en amont"
 
-#: git-rebase.sh:515
+#: git-rebase.sh:561
 #, sh-format
 msgid "$onto_name: there are more than one merge bases"
 msgstr "$onto_name : il y a plus d'une base de fusion"
 
-#: git-rebase.sh:518 git-rebase.sh:522
+#: git-rebase.sh:564 git-rebase.sh:568
 #, sh-format
 msgid "$onto_name: there is no merge base"
 msgstr "$onto_name : il n'y a pas de base de fusion"
 
-#: git-rebase.sh:527
+#: git-rebase.sh:573
 #, sh-format
 msgid "Does not point to a valid commit: $onto_name"
 msgstr "Ne pointe pas sur une validation valide : $onto_name"
 
-#: git-rebase.sh:553
+#: git-rebase.sh:599
 #, sh-format
 msgid "fatal: no such branch/commit '$branch_name'"
 msgstr "fatal : pas de branche ou commit '$branch_name'"
 
-#: git-rebase.sh:586
+#: git-rebase.sh:632
 msgid "Cannot autostash"
 msgstr "Autoremisage impossible"
 
-#: git-rebase.sh:591
+#: git-rebase.sh:637
 #, sh-format
 msgid "Created autostash: $stash_abbrev"
 msgstr "Autoremisage créé : $stash_abbrev"
 
-#: git-rebase.sh:595
+#: git-rebase.sh:641
 msgid "Please commit or stash them."
 msgstr "Veuillez les valider ou les remiser."
 
-#: git-rebase.sh:618
+#: git-rebase.sh:664
 #, sh-format
 msgid "HEAD is up to date."
 msgstr "HEAD est à jour."
 
-#: git-rebase.sh:620
+#: git-rebase.sh:666
 #, sh-format
 msgid "Current branch $branch_name is up to date."
 msgstr "La branche courante $branch_name est à jour."
 
-#: git-rebase.sh:628
+#: git-rebase.sh:674
 #, sh-format
 msgid "HEAD is up to date, rebase forced."
 msgstr "HEAD est à jour, rebasage forcé."
 
-#: git-rebase.sh:630
+#: git-rebase.sh:676
 #, sh-format
 msgid "Current branch $branch_name is up to date, rebase forced."
 msgstr "La branche courante $branch_name est à jour, rebasage forcé."
 
-#: git-rebase.sh:642
+#: git-rebase.sh:688
 #, sh-format
 msgid "Changes from $mb to $onto:"
 msgstr "Changements de $mb sur $onto :"
 
-#: git-rebase.sh:651
+#: git-rebase.sh:697
 msgid "First, rewinding head to replay your work on top of it..."
 msgstr ""
 "Rembobinage préalable de head pour pouvoir rejouer votre travail par-"
 "dessus..."
 
-#: git-rebase.sh:661
+#: git-rebase.sh:707
 #, sh-format
 msgid "Fast-forwarded $branch_name to $onto_name."
 msgstr "$branch_name mise à jour en avance rapide sur $onto_name."
@@ -15780,113 +16912,113 @@ msgstr "Impossible de sauver l'état courant"
 msgid "Saved working directory and index state $stash_msg"
 msgstr "Copie de travail et état de l'index sauvegardés dans $stash_msg"
 
-#: git-stash.sh:340
+#: git-stash.sh:342
 msgid "Cannot remove worktree changes"
 msgstr "Impossible de supprimer les changements de la copie de travail"
 
-#: git-stash.sh:488
+#: git-stash.sh:490
 #, sh-format
 msgid "unknown option: $opt"
 msgstr "option inconnue : $opt"
 
-#: git-stash.sh:501
+#: git-stash.sh:503
 msgid "No stash entries found."
 msgstr "Aucune entrée de remisage trouvée."
 
-#: git-stash.sh:508
+#: git-stash.sh:510
 #, sh-format
 msgid "Too many revisions specified: $REV"
 msgstr "Trop de révisions spécifiées : $REV"
 
-#: git-stash.sh:523
+#: git-stash.sh:525
 #, sh-format
 msgid "$reference is not a valid reference"
 msgstr "$reference n'est pas une référence valide"
 
-#: git-stash.sh:551
+#: git-stash.sh:553
 #, sh-format
 msgid "'$args' is not a stash-like commit"
 msgstr "'$args' n'est pas une validation de type remisage"
 
-#: git-stash.sh:562
+#: git-stash.sh:564
 #, sh-format
 msgid "'$args' is not a stash reference"
 msgstr "'$args' n'est pas une référence de remisage"
 
-#: git-stash.sh:570
+#: git-stash.sh:572
 msgid "unable to refresh index"
 msgstr "impossible de rafraîchir l'index"
 
-#: git-stash.sh:574
+#: git-stash.sh:576
 msgid "Cannot apply a stash in the middle of a merge"
 msgstr "Impossible d'appliquer un remisage en cours de fusion"
 
-#: git-stash.sh:582
+#: git-stash.sh:584
 msgid "Conflicts in index. Try without --index."
 msgstr "Conflits dans l'index. Essayez sans --index."
 
-#: git-stash.sh:584
+#: git-stash.sh:586
 msgid "Could not save index tree"
 msgstr "Impossible de sauvegarder l'arbre d'index"
 
-#: git-stash.sh:593
+#: git-stash.sh:595
 msgid "Could not restore untracked files from stash entry"
 msgstr ""
 "Impossible de restaurer les fichiers non-suivis depuis l'entrée de remisage"
 
-#: git-stash.sh:618
+#: git-stash.sh:620
 msgid "Cannot unstage modified files"
 msgstr "Impossible de désindexer les fichiers modifiés"
 
-#: git-stash.sh:633
+#: git-stash.sh:635
 msgid "Index was not unstashed."
 msgstr "L'index n'a pas été sorti de remise."
 
-#: git-stash.sh:647
+#: git-stash.sh:649
 msgid "The stash entry is kept in case you need it again."
 msgstr ""
 "L'entrée de remisage est conservée au cas où vous en auriez encore besoin."
 
-#: git-stash.sh:656
+#: git-stash.sh:658
 #, sh-format
 msgid "Dropped ${REV} ($s)"
 msgstr "${REV} supprimé ($s)"
 
-#: git-stash.sh:657
+#: git-stash.sh:659
 #, sh-format
 msgid "${REV}: Could not drop stash entry"
 msgstr "${REV}: Impossible de supprimer l'élément de stash"
 
-#: git-stash.sh:665
+#: git-stash.sh:667
 msgid "No branch name specified"
 msgstr "Aucune branche spécifiée"
 
-#: git-stash.sh:744
+#: git-stash.sh:746
 msgid "(To restore them type \"git stash apply\")"
 msgstr "(Pour les restaurer tapez \"git stash apply\")"
 
-#: git-submodule.sh:181
+#: git-submodule.sh:188
 msgid "Relative path can only be used from the toplevel of the working tree"
 msgstr ""
 "Un chemin relatif ne peut être utilisé que depuis la racine de la copie de "
 "travail"
 
-#: git-submodule.sh:191
+#: git-submodule.sh:198
 #, sh-format
 msgid "repo URL: '$repo' must be absolute or begin with ./|../"
 msgstr "L'URL de dépôt '$repo' doit être absolu ou commencer par ./|../"
 
-#: git-submodule.sh:210
+#: git-submodule.sh:217
 #, sh-format
 msgid "'$sm_path' already exists in the index"
 msgstr "'$sm_path' existe déjà dans l'index"
 
-#: git-submodule.sh:213
+#: git-submodule.sh:220
 #, sh-format
 msgid "'$sm_path' already exists in the index and is not a submodule"
 msgstr "'$sm_path' existe déjà dans l'index et n'est pas un sous-module"
 
-#: git-submodule.sh:219
+#: git-submodule.sh:226
 #, sh-format
 msgid ""
 "The following path is ignored by one of your .gitignore files:\n"
@@ -15897,24 +17029,24 @@ msgstr ""
 "$sm_path\n"
 "Utilisez -f si vous voulez vraiment l'ajouter."
 
-#: git-submodule.sh:237
+#: git-submodule.sh:249
 #, sh-format
 msgid "Adding existing repo at '$sm_path' to the index"
 msgstr "Ajout du dépôt existant à '$sm_path' dans l'index"
 
-#: git-submodule.sh:239
+#: git-submodule.sh:251
 #, sh-format
 msgid "'$sm_path' already exists and is not a valid git repo"
 msgstr "'$sm_path' existe déjà et n'est pas un dépôt git valide"
 
-#: git-submodule.sh:247
+#: git-submodule.sh:259
 #, sh-format
 msgid "A git directory for '$sm_name' is found locally with remote(s):"
 msgstr ""
 "Un répertoire git pour '$sm_name' est trouvé en local avec le(s) serveur(s) "
 "distant(s) :"
 
-#: git-submodule.sh:249
+#: git-submodule.sh:261
 #, sh-format
 msgid ""
 "If you want to reuse this local git directory instead of cloning again from\n"
@@ -15931,49 +17063,49 @@ msgstr ""
 "correct\n"
 "ou si ceci n'est pas clair, choisissez un autre nom avec l'option '--name'."
 
-#: git-submodule.sh:255
+#: git-submodule.sh:267
 #, sh-format
 msgid "Reactivating local git directory for submodule '$sm_name'."
 msgstr "Réactivation du répertoire git local pour le sous-module '$sm_name'."
 
-#: git-submodule.sh:267
+#: git-submodule.sh:279
 #, sh-format
 msgid "Unable to checkout submodule '$sm_path'"
 msgstr "Impossible d'extraire le sous-module '$sm_path'"
 
-#: git-submodule.sh:272
+#: git-submodule.sh:284
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr "Échec d'ajout du sous-module '$sm_path'"
 
-#: git-submodule.sh:281
+#: git-submodule.sh:293
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
 msgstr "Échec d'enregistrement du sous-module '$sm_path'"
 
-#: git-submodule.sh:342
+#: git-submodule.sh:354
 #, sh-format
 msgid "Entering '$displaypath'"
 msgstr "Entrée dans '$displaypath'"
 
-#: git-submodule.sh:362
+#: git-submodule.sh:374
 #, sh-format
 msgid "Stopping at '$displaypath'; script returned non-zero status."
 msgstr "Arrêt sur '$displaypath' ; le script a retourné un état non nul."
 
-#: git-submodule.sh:584
+#: git-submodule.sh:600
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
 msgstr ""
 "Impossible de trouver la révision courante dans le chemin de sous-module "
 "'$displaypath'"
 
-#: git-submodule.sh:594
+#: git-submodule.sh:610
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr "Impossible de rapatrier dans le chemin de sous-module '$sm_path'"
 
-#: git-submodule.sh:599
+#: git-submodule.sh:615
 #, sh-format
 msgid ""
 "Unable to find current ${remote_name}/${branch} revision in submodule path "
@@ -15982,12 +17114,12 @@ msgstr ""
 "Impossible de trouver la révision courante ${remote_name}/${branch} dans le "
 "chemin de sous-module '$sm_path'"
 
-#: git-submodule.sh:617
+#: git-submodule.sh:633
 #, sh-format
 msgid "Unable to fetch in submodule path '$displaypath'"
 msgstr "Impossible de rapatrier dans le chemin de sous-module '$displaypath'"
 
-#: git-submodule.sh:623
+#: git-submodule.sh:639
 #, sh-format
 msgid ""
 "Fetched in submodule path '$displaypath', but it did not contain $sha1. "
@@ -15996,76 +17128,76 @@ msgstr ""
 "Chemin de sous-module '$displaypath' récupéré, mais il ne contenait pas "
 "$sha1. La récupération directe de ce commit a échoué."
 
-#: git-submodule.sh:630
+#: git-submodule.sh:646
 #, sh-format
 msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
 msgstr ""
 "Impossible d'extraire '$sha1' dans le chemin de sous-module '$displaypath'"
 
-#: git-submodule.sh:631
+#: git-submodule.sh:647
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
 msgstr "Chemin de sous-module '$displaypath' : '$sha1' extrait"
 
-#: git-submodule.sh:635
+#: git-submodule.sh:651
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
 msgstr ""
 "Impossible de rebaser '$sha1' dans le chemin de sous-module '$displaypath'"
 
-#: git-submodule.sh:636
+#: git-submodule.sh:652
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
 msgstr "Chemin de sous-module '$displaypath' : rebasé dans '$sha1'"
 
-#: git-submodule.sh:641
+#: git-submodule.sh:657
 #, sh-format
 msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
 msgstr ""
 "Impossible de fusionner '$sha1' dans le chemin de sous-module '$displaypath'"
 
-#: git-submodule.sh:642
+#: git-submodule.sh:658
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
 msgstr "Chemin de sous-module '$displaypath' : fusionné dans '$sha1'"
 
-#: git-submodule.sh:647
+#: git-submodule.sh:663
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
 msgstr ""
 "L'exécution de '$command $sha1' a échoué dans le chemin de sous-module "
 "'$displaypath'"
 
-#: git-submodule.sh:648
+#: git-submodule.sh:664
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr "Chemin de sous-module '$displaypath' : '$command $sha1'"
 
-#: git-submodule.sh:679
+#: git-submodule.sh:695
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "Échec de parcours dans le chemin du sous-module '$displaypath'"
 
-#: git-submodule.sh:775
+#: git-submodule.sh:791
 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:827
+#: git-submodule.sh:843
 #, sh-format
 msgid "unexpected mode $mod_dst"
 msgstr "mode $mod_dst inattendu"
 
-#: git-submodule.sh:847
+#: git-submodule.sh:863
 #, 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:850
+#: git-submodule.sh:866
 #, 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:853
+#: git-submodule.sh:869
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
 msgstr ""
@@ -16077,38 +17209,51 @@ msgstr ""
 msgid "See git-${cmd}(1) for details."
 msgstr "Référez-vous à git-${cmd}(1) pour de plus amples détails."
 
-#: git-rebase--interactive.sh:140
+#: git-rebase--interactive.sh:142
 #, sh-format
 msgid "Rebasing ($new_count/$total)"
 msgstr "Rebasage ($new_count/$total)"
 
-#: git-rebase--interactive.sh:156
+#: git-rebase--interactive.sh:158
 msgid ""
 "\n"
 "Commands:\n"
-"p, pick = use commit\n"
-"r, reword = use commit, but edit the commit message\n"
-"e, edit = use commit, but stop for amending\n"
-"s, squash = use commit, but meld into previous commit\n"
-"f, fixup = like \"squash\", but discard this commit's log message\n"
-"x, exec = run command (the rest of the line) using shell\n"
-"d, drop = remove commit\n"
+"p, pick <commit> = use commit\n"
+"r, reword <commit> = use commit, but edit the commit message\n"
+"e, edit <commit> = use commit, but stop for amending\n"
+"s, squash <commit> = use commit, but meld into previous commit\n"
+"f, fixup <commit> = like \"squash\", but discard this commit's log message\n"
+"x, exec <command> = run command (the rest of the line) using shell\n"
+"d, drop <commit> = remove commit\n"
+"l, label <label> = label current HEAD with a name\n"
+"t, reset <label> = reset HEAD to a label\n"
+"m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]\n"
+".       create a merge commit using the original merge commit's\n"
+".       message (or the oneline, if no original merge commit was\n"
+".       specified). Use -c <commit> to reword the commit message.\n"
 "\n"
 "These lines can be re-ordered; they are executed from top to bottom.\n"
 msgstr ""
 "\n"
 "Commandes :\n"
-" p, pick = utiliser le commit\n"
-" r, reword = utiliser le commit, mais reformuler son message\n"
-" e, edit = utiliser le commit, mais s'arrêter pour le modifier\n"
-" s, squash = utiliser le commit, mais le fusionner avec le précédent\n"
-" f, fixup = comme \"squash\", mais en éliminant son message\n"
-" x, exec = lancer la commande (reste de la ligne) dans un shell\n"
-" d, drop = supprimer le commit\n"
+" p, pick <commit> = utiliser le commit\n"
+" r, reword <commit> = utiliser le commit, mais reformuler son message\n"
+" e, edit <commit> = utiliser le commit, mais s'arrêter pour le modifier\n"
+" s, squash <commit> = utiliser le commit, mais le fusionner avec le "
+"précédent\n"
+" f, fixup <commit> = comme \"squash\", mais en éliminant son message\n"
+" x, exec <commit> = lancer la commande (reste de la ligne) dans un shell\n"
+" d, drop <commit> = supprimer le commit\n"
+" l, label <label> = étiqueter la HEAD courante avec un nom\n"
+" t, reset <label> = réinitialiser HEAD à label\n"
+" m, merge [-C <commit> | -c <commit>] <label> [# <uniligne>]\n"
+"         créer un commit de fusion utilisant le message de fusion original\n"
+"         (ou l'uniligne, si aucun commit de fusion n'a été spécifié).\n"
+"         Utilisez -c <commit> pour reformuler le message de validation.\n"
 "\n"
 "Vous pouvez réordonner ces lignes ; elles sont exécutées de haut en bas.\n"
 
-#: git-rebase--interactive.sh:171
+#: git-rebase--interactive.sh:179
 msgid ""
 "\n"
 "Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
@@ -16117,7 +17262,7 @@ msgstr ""
 "Ne supprimez aucune ligne. Utilisez 'drop' explicitement pour supprimer un "
 "commit.\n"
 
-#: git-rebase--interactive.sh:175
+#: git-rebase--interactive.sh:183
 msgid ""
 "\n"
 "If you remove a line here THAT COMMIT WILL BE LOST.\n"
@@ -16125,7 +17270,7 @@ msgstr ""
 "\n"
 "Si vous éliminez une ligne ici, LE COMMIT CORRESPONDANT SERA PERDU.\n"
 
-#: git-rebase--interactive.sh:213
+#: git-rebase--interactive.sh:221
 #, sh-format
 msgid ""
 "You can amend the commit now, with\n"
@@ -16144,83 +17289,83 @@ msgstr ""
 "\n"
 "\tgit rebase --continue"
 
-#: git-rebase--interactive.sh:238
+#: git-rebase--interactive.sh:246
 #, sh-format
 msgid "$sha1: not a commit that can be picked"
 msgstr "$sha1 n'est pas un commit qui peut être picorer"
 
-#: git-rebase--interactive.sh:277
+#: git-rebase--interactive.sh:285
 #, sh-format
 msgid "Invalid commit name: $sha1"
 msgstr "Nom de commit invalide : $sha1"
 
-#: git-rebase--interactive.sh:319
+#: git-rebase--interactive.sh:325
 msgid "Cannot write current commit's replacement sha1"
 msgstr "Impossible de sauver le sha1 du remplaçant du commit en cours"
 
-#: git-rebase--interactive.sh:371
+#: git-rebase--interactive.sh:376
 #, sh-format
 msgid "Fast-forward to $sha1"
 msgstr "Avance rapide sur $sha1"
 
-#: git-rebase--interactive.sh:373
+#: git-rebase--interactive.sh:378
 #, sh-format
 msgid "Cannot fast-forward to $sha1"
 msgstr "Avance rapide impossible sur $sha1"
 
-#: git-rebase--interactive.sh:382
+#: git-rebase--interactive.sh:387
 #, sh-format
 msgid "Cannot move HEAD to $first_parent"
 msgstr "Impossible de déplacer HEAD sur $first_parent"
 
-#: git-rebase--interactive.sh:387
+#: git-rebase--interactive.sh:392
 #, sh-format
 msgid "Refusing to squash a merge: $sha1"
 msgstr "Refus d'écraser un commit de fusion: $sha1"
 
-#: git-rebase--interactive.sh:405
+#: git-rebase--interactive.sh:410
 #, sh-format
 msgid "Error redoing merge $sha1"
 msgstr "Erreur lors de la réapplication de la fusion $sha1"
 
-#: git-rebase--interactive.sh:414
+#: git-rebase--interactive.sh:419
 #, sh-format
 msgid "Could not pick $sha1"
 msgstr "Impossible de picorer $sha1"
 
-#: git-rebase--interactive.sh:423
+#: git-rebase--interactive.sh:428
 #, sh-format
 msgid "This is the commit message #${n}:"
 msgstr "Ceci est le ${n}ième message de validation :"
 
-#: git-rebase--interactive.sh:428
+#: git-rebase--interactive.sh:433
 #, sh-format
 msgid "The commit message #${n} will be skipped:"
 msgstr "Le message de validation ${n} sera ignoré :"
 
-#: git-rebase--interactive.sh:439
+#: git-rebase--interactive.sh:444
 #, sh-format
 msgid "This is a combination of $count commit."
 msgid_plural "This is a combination of $count commits."
 msgstr[0] "Ceci est la combinaison de $count commit."
 msgstr[1] "Ceci est la combinaison de $count commits."
 
-#: git-rebase--interactive.sh:448
+#: git-rebase--interactive.sh:453
 #, sh-format
 msgid "Cannot write $fixup_msg"
 msgstr "Impossible d'écrire $fixup_msg"
 
-#: git-rebase--interactive.sh:451
+#: git-rebase--interactive.sh:456
 msgid "This is a combination of 2 commits."
 msgstr "Ceci est la combinaison de 2 commits."
 
-#: git-rebase--interactive.sh:492 git-rebase--interactive.sh:535
-#: git-rebase--interactive.sh:538
+#: git-rebase--interactive.sh:497 git-rebase--interactive.sh:540
+#: git-rebase--interactive.sh:543
 #, sh-format
 msgid "Could not apply $sha1... $rest"
 msgstr "Impossible d'appliquer $sha1... $rest"
 
-#: git-rebase--interactive.sh:567
+#: git-rebase--interactive.sh:572
 #, sh-format
 msgid ""
 "Could not amend commit after successfully picking $sha1... $rest\n"
@@ -16237,31 +17382,31 @@ msgstr ""
 "le\n"
 "problème avant de pouvoir reformuler le message du commit."
 
-#: git-rebase--interactive.sh:582
+#: git-rebase--interactive.sh:587
 #, sh-format
 msgid "Stopped at $sha1_abbrev... $rest"
 msgstr "Arrêté à $sha1_abbrev... $rest"
 
-#: git-rebase--interactive.sh:597
+#: git-rebase--interactive.sh:602
 #, sh-format
 msgid "Cannot '$squash_style' without a previous commit"
 msgstr "'$squash_style' impossible avec le commit précédent"
 
-#: git-rebase--interactive.sh:639
+#: git-rebase--interactive.sh:644
 #, sh-format
 msgid "Executing: $rest"
 msgstr "Exécution : $rest"
 
-#: git-rebase--interactive.sh:647
+#: git-rebase--interactive.sh:652
 #, sh-format
 msgid "Execution failed: $rest"
 msgstr "L'exécution a échoué : $rest"
 
-#: git-rebase--interactive.sh:649
+#: git-rebase--interactive.sh:654
 msgid "and made changes to the index and/or the working tree"
 msgstr "et a mis à jour l'index ou la copie de travail"
 
-#: git-rebase--interactive.sh:651
+#: git-rebase--interactive.sh:656
 msgid ""
 "You can fix the problem, and then run\n"
 "\n"
@@ -16272,7 +17417,7 @@ msgstr ""
 "git rebase --continue"
 
 #. TRANSLATORS: after these lines is a command to be issued by the user
-#: git-rebase--interactive.sh:664
+#: git-rebase--interactive.sh:669
 #, sh-format
 msgid ""
 "Execution succeeded: $rest\n"
@@ -16287,29 +17432,29 @@ msgstr ""
 "\n"
 "\tgit rebase --continue"
 
-#: git-rebase--interactive.sh:675
+#: git-rebase--interactive.sh:680
 #, sh-format
 msgid "Unknown command: $command $sha1 $rest"
 msgstr "Commande inconnue : $command $sha1 $rest"
 
-#: git-rebase--interactive.sh:676
+#: git-rebase--interactive.sh:681
 msgid "Please fix this using 'git rebase --edit-todo'."
 msgstr "Veuillez corriger ceci en utilisant 'git rebase --edit-todo'."
 
-#: git-rebase--interactive.sh:711
+#: git-rebase--interactive.sh:716
 #, sh-format
 msgid "Successfully rebased and updated $head_name."
 msgstr "Rebasage et mise à jour de $head_name avec succès."
 
-#: git-rebase--interactive.sh:735
+#: git-rebase--interactive.sh:740
 msgid "could not detach HEAD"
 msgstr "Impossible de détacher HEAD"
 
-#: git-rebase--interactive.sh:771
+#: git-rebase--interactive.sh:778
 msgid "Could not remove CHERRY_PICK_HEAD"
 msgstr "Impossible de supprimer CHERRY_PICK_HEAD"
 
-#: git-rebase--interactive.sh:776
+#: git-rebase--interactive.sh:783
 #, sh-format
 msgid ""
 "You have staged changes in your working tree.\n"
@@ -16340,12 +17485,12 @@ msgstr ""
 "\n"
 "  git rebase --continue\n"
 
-#: git-rebase--interactive.sh:793
+#: git-rebase--interactive.sh:800
 msgid "Error trying to find the author identity to amend commit"
 msgstr ""
 "Erreur lors de la recherche de l'identité de l'auteur pour corriger le commit"
 
-#: git-rebase--interactive.sh:798
+#: git-rebase--interactive.sh:805
 msgid ""
 "You have uncommitted changes in your working tree. Please commit them\n"
 "first and then run 'git rebase --continue' again."
@@ -16353,11 +17498,11 @@ msgstr ""
 "Vous avez des modifications non validées dans votre copie de travail.\n"
 "Veuillez les valider d'abord, puis relancer 'git rebase --continue'."
 
-#: git-rebase--interactive.sh:803 git-rebase--interactive.sh:807
+#: git-rebase--interactive.sh:810 git-rebase--interactive.sh:814
 msgid "Could not commit staged changes."
 msgstr "impossible de valider les modifications indexées."
 
-#: git-rebase--interactive.sh:836
+#: git-rebase--interactive.sh:843
 msgid ""
 "\n"
 "You are editing the todo file of an ongoing interactive rebase.\n"
@@ -16372,57 +17517,59 @@ msgstr ""
 "    git rebase --continue\n"
 "\n"
 
-#: git-rebase--interactive.sh:844 git-rebase--interactive.sh:1008
+#: git-rebase--interactive.sh:851 git-rebase--interactive.sh:937
 msgid "Could not execute editor"
 msgstr "Impossible de lancer l'éditeur"
 
-#: git-rebase--interactive.sh:860
+#: git-rebase--interactive.sh:872
 #, sh-format
 msgid "Could not checkout $switch_to"
 msgstr "Impossible d'extraire $switch_to"
 
-#: git-rebase--interactive.sh:865
+#: git-rebase--interactive.sh:879
 msgid "No HEAD?"
 msgstr "Pas de HEAD ?"
 
-#: git-rebase--interactive.sh:866
+#: git-rebase--interactive.sh:880
 #, sh-format
 msgid "Could not create temporary $state_dir"
 msgstr "Impossible de créer un répertoire temporaire $state_dir"
 
-#: git-rebase--interactive.sh:869
+#: git-rebase--interactive.sh:883
 msgid "Could not mark as interactive"
 msgstr "Impossible de marquer comme interactif"
 
-#: git-rebase--interactive.sh:879 git-rebase--interactive.sh:884
-msgid "Could not init rewritten commits"
-msgstr "Impossible d'initialiser les commits réécrits"
-
-#: git-rebase--interactive.sh:910
-msgid "Could not generate todo list"
-msgstr "Impossible de générer la liste à-faire"
-
-#: git-rebase--interactive.sh:986
+#: git-rebase--interactive.sh:915
 #, sh-format
 msgid "Rebase $shortrevisions onto $shortonto ($todocount command)"
 msgid_plural "Rebase $shortrevisions onto $shortonto ($todocount commands)"
 msgstr[0] "Rebasage de $shortrevisions sur $shortonto ($todocount commande)"
 msgstr[1] "Rebasage de $shortrevisions sur $shortonto ($todocount commandes)"
 
-#: git-rebase--interactive.sh:991
+#: git-rebase--interactive.sh:920
 msgid ""
 "\n"
-"However, if you remove everything, the rebase will be aborted.\n"
+"\tHowever, if you remove everything, the rebase will be aborted.\n"
 "\n"
+"\t"
 msgstr ""
 "\n"
 "Cependant, si vous effacez tout, le rebasage sera annulé.\n"
 "\n"
+"\t"
 
-#: git-rebase--interactive.sh:998
+#: git-rebase--interactive.sh:927
 msgid "Note that empty commits are commented out"
 msgstr "Veuillez noter que les commits vides sont en commentaire"
 
+#: git-rebase--interactive.sh:980
+msgid "Could not generate todo list"
+msgstr "Impossible de générer la liste à-faire"
+
+#: git-rebase--interactive.sh:1001 git-rebase--interactive.sh:1006
+msgid "Could not init rewritten commits"
+msgstr "Impossible d'initialiser les commits réécrits"
+
 #: git-sh-setup.sh:89 git-sh-setup.sh:94
 #, sh-format
 msgid "usage: $dashless $USAGE"
@@ -16504,68 +17651,68 @@ msgstr "indexé"
 msgid "unstaged"
 msgstr "non-indexé"
 
-#: git-add--interactive.perl:246 git-add--interactive.perl:271
+#: git-add--interactive.perl:253 git-add--interactive.perl:278
 msgid "binary"
 msgstr "binaire"
 
-#: git-add--interactive.perl:255 git-add--interactive.perl:309
+#: git-add--interactive.perl:262 git-add--interactive.perl:316
 msgid "nothing"
 msgstr "rien"
 
-#: git-add--interactive.perl:291 git-add--interactive.perl:306
+#: git-add--interactive.perl:298 git-add--interactive.perl:313
 msgid "unchanged"
 msgstr "inchangé"
 
-#: git-add--interactive.perl:602
+#: git-add--interactive.perl:609
 #, perl-format
 msgid "added %d path\n"
 msgid_plural "added %d paths\n"
 msgstr[0] "%d chemin ajouté\n"
 msgstr[1] "%d chemins ajoutés\n"
 
-#: git-add--interactive.perl:605
+#: git-add--interactive.perl:612
 #, perl-format
 msgid "updated %d path\n"
 msgid_plural "updated %d paths\n"
 msgstr[0] "%d chemin mis à jour\n"
 msgstr[1] "%d chemins mis à jour\n"
 
-#: git-add--interactive.perl:608
+#: git-add--interactive.perl:615
 #, perl-format
 msgid "reverted %d path\n"
 msgid_plural "reverted %d paths\n"
 msgstr[0] "%d chemin inversé\n"
 msgstr[1] "%d chemins inversés\n"
 
-#: git-add--interactive.perl:611
+#: git-add--interactive.perl:618
 #, perl-format
 msgid "touched %d path\n"
 msgid_plural "touched %d paths\n"
 msgstr[0] "%d chemin touché\n"
 msgstr[1] "%d chemins touchés\n"
 
-#: git-add--interactive.perl:620
+#: git-add--interactive.perl:627
 msgid "Update"
 msgstr "Mise à jour"
 
-#: git-add--interactive.perl:632
+#: git-add--interactive.perl:639
 msgid "Revert"
 msgstr "Inverser"
 
-#: git-add--interactive.perl:655
+#: git-add--interactive.perl:662
 #, perl-format
 msgid "note: %s is untracked now.\n"
 msgstr "note : %s n'est plus suivi à présent.\n"
 
-#: git-add--interactive.perl:666
+#: git-add--interactive.perl:673
 msgid "Add untracked"
 msgstr "Ajouter un fichier non-suivi"
 
-#: git-add--interactive.perl:672
+#: git-add--interactive.perl:679
 msgid "No untracked files.\n"
 msgstr "Aucun Fichier non suivi.\n"
 
-#: git-add--interactive.perl:1026
+#: git-add--interactive.perl:1033
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
@@ -16573,7 +17720,7 @@ msgstr ""
 "Si le patch s'applique proprement, la section éditée sera\n"
 "immédiatement marquée comme indexée."
 
-#: git-add--interactive.perl:1029
+#: git-add--interactive.perl:1036
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
@@ -16581,7 +17728,7 @@ msgstr ""
 "Si le patch s'applique proprement, la section éditée sera\n"
 "immédiatement marquée comme remisée."
 
-#: git-add--interactive.perl:1032
+#: git-add--interactive.perl:1039
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
@@ -16589,7 +17736,7 @@ msgstr ""
 "Si le patch s'applique proprement, la section éditée sera\n"
 "immédiatement marquée comme desindexée."
 
-#: git-add--interactive.perl:1035 git-add--interactive.perl:1044
+#: git-add--interactive.perl:1042 git-add--interactive.perl:1051
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
@@ -16597,7 +17744,7 @@ msgstr ""
 "Si le patch s'applique proprement, la section éditée sera\n"
 "immédiatement marquée comme appliquée."
 
-#: git-add--interactive.perl:1038 git-add--interactive.perl:1041
+#: git-add--interactive.perl:1045 git-add--interactive.perl:1048
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
@@ -16605,17 +17752,17 @@ msgstr ""
 "Si le patch s'applique proprement, la section éditée sera\n"
 "immédiatement marquée comme éliminée."
 
-#: git-add--interactive.perl:1078
+#: git-add--interactive.perl:1085
 #, 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:1079
+#: git-add--interactive.perl:1086
 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"
 
-#: git-add--interactive.perl:1085
+#: git-add--interactive.perl:1092
 #, perl-format
 msgid ""
 "---\n"
@@ -16629,7 +17776,7 @@ msgstr ""
 "Les lignes commençant par %s seront éliminées.\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: git-add--interactive.perl:1093
+#: git-add--interactive.perl:1100
 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"
@@ -16639,7 +17786,7 @@ msgstr ""
 "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"
 
-#: git-add--interactive.perl:1107
+#: git-add--interactive.perl:1114
 #, 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"
@@ -16650,14 +17797,14 @@ msgstr "échec de l'ouverture du fichier d'édition de section en lecture : %s"
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: git-add--interactive.perl:1206
+#: git-add--interactive.perl:1213
 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] ? "
 
-#: git-add--interactive.perl:1215
+#: git-add--interactive.perl:1222
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -16671,7 +17818,7 @@ msgstr ""
 "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:1221
+#: git-add--interactive.perl:1228
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -16685,7 +17832,7 @@ msgstr ""
 "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:1227
+#: git-add--interactive.perl:1234
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -16699,7 +17846,7 @@ msgstr ""
 "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:1233
+#: git-add--interactive.perl:1240
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -16713,7 +17860,7 @@ msgstr ""
 "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:1239
+#: git-add--interactive.perl:1246
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -16727,7 +17874,7 @@ msgstr ""
 "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:1245
+#: git-add--interactive.perl:1252
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -16741,7 +17888,7 @@ msgstr ""
 "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:1251
+#: git-add--interactive.perl:1258
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -16755,7 +17902,7 @@ msgstr ""
 "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:1266
+#: git-add--interactive.perl:1273
 msgid ""
 "g - select a hunk to go to\n"
 "/ - search for a hunk matching the given regex\n"
@@ -16777,211 +17924,218 @@ msgstr ""
 "e - éditer manuellement la section actuelle\n"
 "? - afficher l'aide\n"
 
-#: git-add--interactive.perl:1297
+#: git-add--interactive.perl:1304
 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:1298
+#: git-add--interactive.perl:1305
 msgid "Apply them to the worktree anyway? "
 msgstr "Les appliquer quand même à l'arbre de travail ? "
 
-#: git-add--interactive.perl:1301
+#: git-add--interactive.perl:1308
 msgid "Nothing was applied.\n"
 msgstr "Rien n'a été appliqué.\n"
 
-#: git-add--interactive.perl:1312
+#: git-add--interactive.perl:1319
 #, perl-format
 msgid "ignoring unmerged: %s\n"
 msgstr "fichier non-fusionné ignoré : %s\n"
 
-#: git-add--interactive.perl:1321
+#: git-add--interactive.perl:1328
 msgid "Only binary files changed.\n"
 msgstr "Seuls des fichiers binaires ont changé.\n"
 
-#: git-add--interactive.perl:1323
+#: git-add--interactive.perl:1330
 msgid "No changes.\n"
 msgstr "Aucune modification.\n"
 
-#: git-add--interactive.perl:1331
+#: git-add--interactive.perl:1338
 msgid "Patch update"
 msgstr "Mise à jour par patch"
 
-#: git-add--interactive.perl:1383
+#: git-add--interactive.perl:1390
 #, perl-format
 msgid "Stage mode change [y,n,q,a,d%s,?]? "
 msgstr "Indexer le changement de mode [y,n,q,a,d%s,?] ? "
 
-#: git-add--interactive.perl:1384
+#: git-add--interactive.perl:1391
 #, perl-format
 msgid "Stage deletion [y,n,q,a,d%s,?]? "
 msgstr "Indexer la suppression [y,n,q,a,d%s,?] ? "
 
-#: git-add--interactive.perl:1385
+#: git-add--interactive.perl:1392
 #, perl-format
 msgid "Stage this hunk [y,n,q,a,d%s,?]? "
 msgstr "Indexer cette section [y,n,q,a,d%s,?] ? "
 
-#: git-add--interactive.perl:1388
+#: git-add--interactive.perl:1395
 #, perl-format
 msgid "Stash mode change [y,n,q,a,d%s,?]? "
 msgstr "Remiser le changement de mode [y,n,q,a,d%s,?] ? "
 
-#: git-add--interactive.perl:1389
+#: git-add--interactive.perl:1396
 #, perl-format
 msgid "Stash deletion [y,n,q,a,d%s,?]? "
 msgstr "Remiser la suppression [y,n,q,a,d%s,?] ? "
 
-#: git-add--interactive.perl:1390
+#: git-add--interactive.perl:1397
 #, perl-format
 msgid "Stash this hunk [y,n,q,a,d%s,?]? "
 msgstr "Remiser cette section [y,n,q,a,d%s,?] ? "
 
-#: git-add--interactive.perl:1393
+#: git-add--interactive.perl:1400
 #, 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,?] ? "
 
-#: git-add--interactive.perl:1394
+#: git-add--interactive.perl:1401
 #, perl-format
 msgid "Unstage deletion [y,n,q,a,d%s,?]? "
 msgstr "Désindexer la suppression [y,n,q,a,d%s,?] ? "
 
-#: git-add--interactive.perl:1395
+#: git-add--interactive.perl:1402
 #, perl-format
 msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
 msgstr "Désindexer cette section [y,n,q,a,d%s,?] ? "
 
-#: git-add--interactive.perl:1398
+#: git-add--interactive.perl:1405
 #, 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,?] ? "
 
-#: git-add--interactive.perl:1399
+#: git-add--interactive.perl:1406
 #, 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,?] ? "
 
-#: git-add--interactive.perl:1400
+#: git-add--interactive.perl:1407
 #, 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,?] ? "
 
-#: git-add--interactive.perl:1403
+#: git-add--interactive.perl:1410
 #, 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,?] ? "
 
-#: git-add--interactive.perl:1404
+#: git-add--interactive.perl:1411
 #, 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,?] ? "
 
-#: git-add--interactive.perl:1405
+#: git-add--interactive.perl:1412
 #, 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,?] ? "
 
-#: git-add--interactive.perl:1408
+#: git-add--interactive.perl:1415
 #, perl-format
 msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
-msgstr "Abandonner le changement de mode dans l'index et l'arbre [y,n,q,a,d%s,?] ? "
+msgstr ""
+"Abandonner le changement de mode dans l'index et l'arbre [y,n,q,a,d%s,?] ? "
 
-#: git-add--interactive.perl:1409
+#: git-add--interactive.perl:1416
 #, 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,?] ? "
 
-#: git-add--interactive.perl:1410
+#: git-add--interactive.perl:1417
 #, perl-format
 msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
-msgstr "Supprimer la section dans l'index et l'arbre de travail [y,n,q,a,d%s,?] ? "
+msgstr ""
+"Supprimer la section dans l'index et l'arbre de travail [y,n,q,a,d%s,?] ? "
 
-#: git-add--interactive.perl:1413
+#: git-add--interactive.perl:1420
 #, perl-format
 msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
-msgstr "Appliquer le changement de mode dans l'index et l'arbre de travail [y,n,q,a,d%s,?] ? "
+msgstr ""
+"Appliquer le changement de mode dans l'index et l'arbre de travail [y,n,q,a,d"
+"%s,?] ? "
 
-#: git-add--interactive.perl:1414
+#: git-add--interactive.perl:1421
 #, perl-format
 msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
-msgstr "Appliquer la suppression dans l'index et l'arbre de travail [y,n,q,a,d%s,?] ? "
+msgstr ""
+"Appliquer la suppression dans l'index et l'arbre de travail [y,n,q,a,d"
+"%s,?] ? "
 
-#: git-add--interactive.perl:1415
+#: git-add--interactive.perl:1422
 #, perl-format
 msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
-msgstr "Appliquer la section à l'index et l'arbre de travail [y,n,q,a,d%s,?] ? "
+msgstr ""
+"Appliquer la section à l'index et l'arbre de travail [y,n,q,a,d%s,?] ? "
 
-#: git-add--interactive.perl:1515
+#: git-add--interactive.perl:1522
 msgid "No other hunks to goto\n"
 msgstr "Aucune autre section à atteindre\n"
 
-#: git-add--interactive.perl:1522
+#: git-add--interactive.perl:1529
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "aller à quelle section (<ret> pour voir plus) ? "
 
-#: git-add--interactive.perl:1524
+#: git-add--interactive.perl:1531
 msgid "go to which hunk? "
 msgstr "aller à quelle section ? "
 
-#: git-add--interactive.perl:1533
+#: git-add--interactive.perl:1540
 #, perl-format
 msgid "Invalid number: '%s'\n"
 msgstr "Nombre invalide : '%s'\n"
 
-#: git-add--interactive.perl:1538
+#: git-add--interactive.perl:1545
 #, 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:1564
+#: git-add--interactive.perl:1571
 msgid "No other hunks to search\n"
 msgstr "aucune autre section à rechercher\n"
 
-#: git-add--interactive.perl:1568
+#: git-add--interactive.perl:1575
 msgid "search for regex? "
 msgstr "rechercher la regex ? "
 
-#: git-add--interactive.perl:1581
+#: git-add--interactive.perl:1588
 #, perl-format
 msgid "Malformed search regexp %s: %s\n"
 msgstr "Regex de recherche malformée %s : %s\n"
 
-#: git-add--interactive.perl:1591
+#: git-add--interactive.perl:1598
 msgid "No hunk matches the given pattern\n"
 msgstr "Aucune section ne correspond au motif donné\n"
 
-#: git-add--interactive.perl:1603 git-add--interactive.perl:1625
+#: git-add--interactive.perl:1610 git-add--interactive.perl:1632
 msgid "No previous hunk\n"
 msgstr "Pas de section précédente\n"
 
-#: git-add--interactive.perl:1612 git-add--interactive.perl:1631
+#: git-add--interactive.perl:1619 git-add--interactive.perl:1638
 msgid "No next hunk\n"
 msgstr "Pas de section suivante\n"
 
-#: git-add--interactive.perl:1637
+#: git-add--interactive.perl:1644
 msgid "Sorry, cannot split this hunk\n"
 msgstr "Désolé, impossible de découper cette section\n"
 
-#: git-add--interactive.perl:1643
+#: git-add--interactive.perl:1650
 #, 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:1653
+#: git-add--interactive.perl:1660
 msgid "Sorry, cannot edit this hunk\n"
 msgstr "Désolé, impossible d'éditer cette section\n"
 
-#: git-add--interactive.perl:1699
+#: git-add--interactive.perl:1706
 msgid "Review diff"
 msgstr "Réviser la différence"
 
 #. TRANSLATORS: please do not translate the command names
 #. 'status', 'update', 'revert', etc.
-#: git-add--interactive.perl:1718
+#: git-add--interactive.perl:1725
 msgid ""
 "status        - show paths with changes\n"
 "update        - add working tree state to the staged set of changes\n"
@@ -16999,18 +18153,18 @@ msgstr ""
 "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:1735 git-add--interactive.perl:1740
-#: git-add--interactive.perl:1743 git-add--interactive.perl:1750
-#: git-add--interactive.perl:1754 git-add--interactive.perl:1760
+#: git-add--interactive.perl:1742 git-add--interactive.perl:1747
+#: git-add--interactive.perl:1750 git-add--interactive.perl:1757
+#: git-add--interactive.perl:1761 git-add--interactive.perl:1767
 msgid "missing --"
 msgstr "-- manquant"
 
-#: git-add--interactive.perl:1756
+#: git-add--interactive.perl:1763
 #, perl-format
 msgid "unknown --patch mode: %s"
 msgstr "mode de --patch inconnu : %s"
 
-#: git-add--interactive.perl:1762 git-add--interactive.perl:1768
+#: git-add--interactive.perl:1769 git-add--interactive.perl:1775
 #, perl-format
 msgid "invalid argument %s, expecting --"
 msgstr "argument invalide %s, -- attendu"
@@ -17052,7 +18206,9 @@ msgstr "Lancement de git format-patch impossible à l'extérieur d'un dépôt\n"
 msgid ""
 "`batch-size` and `relogin` must be specified together (via command-line or "
 "configuration option)\n"
-msgstr "`batch-size` et `relogin` doivent être spécifiés ensembles (via la ligne de commande ou des options de configuration)\n"
+msgstr ""
+"`batch-size` et `relogin` doivent être spécifiés ensembles (via la ligne de "
+"commande ou des options de configuration)\n"
 
 #: git-send-email.perl:456
 #, perl-format
@@ -17226,7 +18382,7 @@ msgstr "Que faire de cette adresse ? ([q]uitter|[d]élaisser|[e]diter): "
 msgid "CA path \"%s\" does not exist"
 msgstr "le chemin vers la CA \"%s\" n'existe pas"
 
-#: git-send-email.perl:1395
+#: git-send-email.perl:1400
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -17250,137 +18406,167 @@ msgstr ""
 "   lancez 'git config --global sendemail.confirm auto'.\n"
 "\n"
 
-#. TRANSLATORS: Make sure to include [y] [n] [q] [a] in your
+#. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1410
-msgid "Send this email? ([y]es|[n]o|[q]uit|[a]ll): "
-msgstr "Envoyer ce courriel ? ([y]es|[n]o|[q]uit|[a]ll) : "
+#: git-send-email.perl:1415
+msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
+msgstr "Envoyer ce courriel ? ([y]es|[n]o|[e]dit|[q]uit|[a]ll) : "
 
-#: git-send-email.perl:1413
+#: git-send-email.perl:1418
 msgid "Send this email reply required"
 msgstr "Une réponse est nécessaire"
 
-#: git-send-email.perl:1439
+#: git-send-email.perl:1446
 msgid "The required SMTP server is not properly defined."
 msgstr "Le serveur SMTP nécessaire n'est pas défini correctement."
 
-#: git-send-email.perl:1486
+#: git-send-email.perl:1493
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
 msgstr "Le serveur ne supporte pas STARTTLS ! %s"
 
-#: git-send-email.perl:1491 git-send-email.perl:1495
+#: git-send-email.perl:1498 git-send-email.perl:1502
 #, perl-format
 msgid "STARTTLS failed! %s"
 msgstr "echec de STARTTLS ! %s"
 
-#: git-send-email.perl:1505
+#: git-send-email.perl:1512
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
 msgstr ""
 "Impossible d'initialiser SMTP. Vérifiez la configuration et utilisez --smtp-"
 "debug."
 
-#: git-send-email.perl:1523
+#: git-send-email.perl:1530
 #, perl-format
 msgid "Failed to send %s\n"
 msgstr "échec de l'envoi de %s\n"
 
-#: git-send-email.perl:1526
+#: git-send-email.perl:1533
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr "Envoi simulé de %s\n"
 
-#: git-send-email.perl:1526
+#: git-send-email.perl:1533
 #, perl-format
 msgid "Sent %s\n"
 msgstr "%s envoyé\n"
 
-#: git-send-email.perl:1528
+#: git-send-email.perl:1535
 msgid "Dry-OK. Log says:\n"
 msgstr "Simulation OK. Le journal indique :\n"
 
-#: git-send-email.perl:1528
+#: git-send-email.perl:1535
 msgid "OK. Log says:\n"
 msgstr "OK. Le journal indique :\n"
 
-#: git-send-email.perl:1540
+#: git-send-email.perl:1547
 msgid "Result: "
 msgstr "Résultat : "
 
-#: git-send-email.perl:1543
+#: git-send-email.perl:1550
 msgid "Result: OK\n"
 msgstr "Résultat : OK\n"
 
-#: git-send-email.perl:1556
+#: git-send-email.perl:1568
 #, perl-format
 msgid "can't open file %s"
 msgstr "impossible d'ouvrir le fichier %s"
 
-#: git-send-email.perl:1603 git-send-email.perl:1623
+#: git-send-email.perl:1615 git-send-email.perl:1635
 #, perl-format
 msgid "(mbox) Adding cc: %s from line '%s'\n"
 msgstr "(mbox) Ajout de cc: %s depuis la ligne '%s'\n"
 
-#: git-send-email.perl:1609
+#: git-send-email.perl:1621
 #, perl-format
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) Ajout de to: %s depuis la ligne '%s'\n"
 
-#: git-send-email.perl:1657
+#: git-send-email.perl:1674
 #, 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:1682
+#: git-send-email.perl:1699
 #, 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:1788
+#: git-send-email.perl:1817
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) Impossible d'exécuter '%s'"
 
-#: git-send-email.perl:1795
+#: git-send-email.perl:1824
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) Ajout de %s : %s depuis : '%s'\n"
 
-#: git-send-email.perl:1799
+#: git-send-email.perl:1828
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) échec de la fermeture du pipe vers '%s'"
 
-#: git-send-email.perl:1826
+#: git-send-email.perl:1855
 msgid "cannot send message as 7bit"
 msgstr "impossible d'envoyer un message comme 7bit"
 
-#: git-send-email.perl:1834
+#: git-send-email.perl:1863
 msgid "invalid transfer encoding"
 msgstr "codage de transfert invalide"
 
-#: git-send-email.perl:1872 git-send-email.perl:1923 git-send-email.perl:1933
+#: git-send-email.perl:1901 git-send-email.perl:1952 git-send-email.perl:1962
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "impossible d'ouvrir %s :%s\n"
 
-#: git-send-email.perl:1875
+#: git-send-email.perl:1904
 #, 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:1891
+#: git-send-email.perl:1920
 #, 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:1895
+#: git-send-email.perl:1924
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "Souhaitez-vous réellement envoyer %s ?[y|N] : "
 
+#~ msgid "Everyday Git With 20 Commands Or So"
+#~ msgstr "Git de tous les jours avec à peu près 20 commandes"
+
+#~ msgid "Could not open '%s' for writing"
+#~ msgstr "Impossible d'ouvrir '%s' en écriture"
+
+#~ msgid ""
+#~ "unexpected 1st line of squash message:\n"
+#~ "\n"
+#~ "\t%.*s"
+#~ msgstr ""
+#~ "première ligne de message de compression inattendue :\n"
+#~ "\n"
+#~ "\t%.*s"
+
+#~ msgid ""
+#~ "invalid 1st line of squash message:\n"
+#~ "\n"
+#~ "\t%.*s"
+#~ msgstr ""
+#~ "première ligne de message de compression invalide :\n"
+#~ "\n"
+#~ "\t%.*s"
+
+#~ msgid "BUG: returned path string doesn't match cwd?"
+#~ msgstr "BUG : le chemin renvoyé ne correspond pas à cwd ?"
+
+#~ msgid "Error in object"
+#~ msgstr "Erreur dans l'objet"
+
 #~ msgid "git fetch-pack: expected ACK/NAK, got EOF"
 #~ msgstr "git fetch-pack : ACK/NACK attendu, EOF reçu"
 
@@ -17560,9 +18746,6 @@ msgstr "Souhaitez-vous réellement envoyer %s ?[y|N] : "
 #~ msgid "blob object"
 #~ msgstr "objet blob"
 
-#~ msgid "other tag object"
-#~ msgstr "objet étiquette autre"
-
 #~ msgid ""
 #~ "There is nothing to exclude from by :(exclude) patterns.\n"
 #~ "Perhaps you forgot to add either ':/' or '.' ?"
@@ -17898,9 +19081,6 @@ msgstr "Souhaitez-vous réellement envoyer %s ?[y|N] : "
 #~ "Veuillez indexer vos modifications de .gitmodules ou remisez-les pour "
 #~ "continuer"
 
-#~ msgid "could not verify the tag '%s'"
-#~ msgstr "impossible de vérifier l'étiquette '%s'"
-
 #~ msgid "failed to remove: %s"
 #~ msgstr "échec de la suppression de %s"
 
@@ -18114,9 +19294,6 @@ msgstr "Souhaitez-vous réellement envoyer %s ?[y|N] : "
 #~ msgid "no branch specified"
 #~ msgstr "aucune branche spécifiée"
 
-#~ msgid "check a branch out in a separate working directory"
-#~ msgstr "extraire une branche dans un répertoire de travail séparé"
-
 #~ msgid "prune .git/worktrees"
 #~ msgstr "éliminer .git/worktrees"
 
index ab5d1796712b7317bf400cdd49608f13912044fe..d4c7f0bec6e3d7bc34c718f23cd3f1871cc2f7fe 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2018-03-16 07:29+0800\n"
+"POT-Creation-Date: 2018-06-16 22:06+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"
@@ -18,59 +18,59 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
 
-#: advice.c:62
+#: advice.c:92
 #, c-format
-msgid "hint: %.*s\n"
+msgid "%shint: %.*s%s\n"
 msgstr ""
 
-#: advice.c:90
+#: advice.c:137
 msgid "Cherry-picking is not possible because you have unmerged files."
 msgstr ""
 
-#: advice.c:92
+#: advice.c:139
 msgid "Committing is not possible because you have unmerged files."
 msgstr ""
 
-#: advice.c:94
+#: advice.c:141
 msgid "Merging is not possible because you have unmerged files."
 msgstr ""
 
-#: advice.c:96
+#: advice.c:143
 msgid "Pulling is not possible because you have unmerged files."
 msgstr ""
 
-#: advice.c:98
+#: advice.c:145
 msgid "Reverting is not possible because you have unmerged files."
 msgstr ""
 
-#: advice.c:100
+#: advice.c:147
 #, c-format
 msgid "It is not possible to %s because you have unmerged files."
 msgstr ""
 
-#: advice.c:108
+#: advice.c:155
 msgid ""
 "Fix them up in the work tree, and then use 'git add/rm <file>'\n"
 "as appropriate to mark resolution and make a commit."
 msgstr ""
 
-#: advice.c:116
+#: advice.c:163
 msgid "Exiting because of an unresolved conflict."
 msgstr ""
 
-#: advice.c:121 builtin/merge.c:1251
+#: advice.c:168 builtin/merge.c:1250
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr ""
 
-#: advice.c:123
+#: advice.c:170
 msgid "Please, commit your changes before merging."
 msgstr ""
 
-#: advice.c:124
+#: advice.c:171
 msgid "Exiting because of unfinished merge."
 msgstr ""
 
-#: advice.c:130
+#: advice.c:177
 #, c-format
 msgid ""
 "Note: checking out '%s'.\n"
@@ -315,7 +315,7 @@ msgstr ""
 msgid "cannot checkout %s"
 msgstr ""
 
-#: apply.c:3396 apply.c:3407 apply.c:3453 setup.c:277
+#: apply.c:3396 apply.c:3407 apply.c:3453 setup.c:278
 #, c-format
 msgid "failed to read %s"
 msgstr ""
@@ -514,7 +514,7 @@ msgstr[1] ""
 msgid "truncating .rej filename to %.*s.rej"
 msgstr ""
 
-#: apply.c:4545 builtin/fetch.c:775 builtin/fetch.c:1025
+#: apply.c:4545 builtin/fetch.c:786 builtin/fetch.c:1036
 #, c-format
 msgid "cannot open %s"
 msgstr ""
@@ -568,15 +568,15 @@ msgid_plural "%d lines applied after fixing whitespace errors."
 msgstr[0] ""
 msgstr[1] ""
 
-#: apply.c:4894 builtin/add.c:539 builtin/mv.c:298 builtin/rm.c:390
+#: apply.c:4894 builtin/add.c:538 builtin/mv.c:300 builtin/rm.c:389
 msgid "Unable to write new index file"
 msgstr ""
 
 #: apply.c:4921 apply.c:4924 builtin/am.c:2254 builtin/am.c:2257
-#: builtin/clone.c:118 builtin/fetch.c:127 builtin/pull.c:193
-#: builtin/submodule--helper.c:403 builtin/submodule--helper.c:1197
-#: builtin/submodule--helper.c:1200 builtin/submodule--helper.c:1567
-#: builtin/submodule--helper.c:1570 builtin/submodule--helper.c:1787
+#: builtin/clone.c:120 builtin/fetch.c:126 builtin/pull.c:198
+#: builtin/submodule--helper.c:405 builtin/submodule--helper.c:1210
+#: builtin/submodule--helper.c:1213 builtin/submodule--helper.c:1584
+#: builtin/submodule--helper.c:1587 builtin/submodule--helper.c:1807
 #: git-add--interactive.perl:197
 msgid "path"
 msgstr ""
@@ -651,7 +651,7 @@ msgstr ""
 
 #: apply.c:4960 builtin/am.c:2242 builtin/interpret-trailers.c:95
 #: builtin/interpret-trailers.c:97 builtin/interpret-trailers.c:99
-#: builtin/pack-objects.c:3035
+#: builtin/pack-objects.c:3177
 msgid "action"
 msgstr ""
 
@@ -679,9 +679,9 @@ msgstr ""
 msgid "allow overlapping hunks"
 msgstr ""
 
-#: apply.c:4977 builtin/add.c:292 builtin/check-ignore.c:21
-#: builtin/commit.c:1276 builtin/count-objects.c:96 builtin/fsck.c:665
-#: builtin/log.c:1901 builtin/mv.c:123 builtin/read-tree.c:125
+#: apply.c:4977 builtin/add.c:290 builtin/check-ignore.c:21
+#: builtin/commit.c:1301 builtin/count-objects.c:98 builtin/fsck.c:666
+#: builtin/log.c:1901 builtin/mv.c:122 builtin/read-tree.c:124
 msgid "be verbose"
 msgstr ""
 
@@ -718,98 +718,98 @@ msgstr ""
 msgid "git archive --remote <repo> [--exec <cmd>] --list"
 msgstr ""
 
-#: archive.c:351 builtin/add.c:176 builtin/add.c:515 builtin/rm.c:299
+#: archive.c:351 builtin/add.c:176 builtin/add.c:514 builtin/rm.c:298
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr ""
 
-#: archive.c:436
+#: archive.c:434
 msgid "fmt"
 msgstr ""
 
-#: archive.c:436
+#: archive.c:434
 msgid "archive format"
 msgstr ""
 
-#: archive.c:437 builtin/log.c:1462
+#: archive.c:435 builtin/log.c:1462
 msgid "prefix"
 msgstr ""
 
-#: archive.c:438
+#: archive.c:436
 msgid "prepend prefix to each pathname in the archive"
 msgstr ""
 
-#: archive.c:439 builtin/blame.c:702 builtin/blame.c:703 builtin/config.c:62
-#: builtin/fast-export.c:1005 builtin/fast-export.c:1007 builtin/grep.c:869
+#: archive.c:437 builtin/blame.c:813 builtin/blame.c:814 builtin/config.c:127
+#: builtin/fast-export.c:1007 builtin/fast-export.c:1009 builtin/grep.c:869
 #: builtin/hash-object.c:103 builtin/ls-files.c:551 builtin/ls-files.c:554
-#: builtin/notes.c:405 builtin/notes.c:568 builtin/read-tree.c:120
+#: builtin/notes.c:405 builtin/notes.c:568 builtin/read-tree.c:119
 #: parse-options.h:165
 msgid "file"
 msgstr ""
 
-#: archive.c:440 builtin/archive.c:89
+#: archive.c:438 builtin/archive.c:89
 msgid "write the archive to this file"
 msgstr ""
 
-#: archive.c:442
+#: archive.c:440
 msgid "read .gitattributes in working directory"
 msgstr ""
 
-#: archive.c:443
+#: archive.c:441
 msgid "report archived files on stderr"
 msgstr ""
 
-#: archive.c:444
+#: archive.c:442
 msgid "store only"
 msgstr ""
 
-#: archive.c:445
+#: archive.c:443
 msgid "compress faster"
 msgstr ""
 
-#: archive.c:453
+#: archive.c:451
 msgid "compress better"
 msgstr ""
 
-#: archive.c:456
+#: archive.c:454
 msgid "list supported archive formats"
 msgstr ""
 
-#: archive.c:458 builtin/archive.c:90 builtin/clone.c:108 builtin/clone.c:111
-#: builtin/submodule--helper.c:1209 builtin/submodule--helper.c:1576
+#: archive.c:456 builtin/archive.c:90 builtin/clone.c:110 builtin/clone.c:113
+#: builtin/submodule--helper.c:1222 builtin/submodule--helper.c:1593
 msgid "repo"
 msgstr ""
 
-#: archive.c:459 builtin/archive.c:91
+#: archive.c:457 builtin/archive.c:91
 msgid "retrieve the archive from remote repository <repo>"
 msgstr ""
 
-#: archive.c:460 builtin/archive.c:92 builtin/notes.c:489
+#: archive.c:458 builtin/archive.c:92 builtin/notes.c:489
 msgid "command"
 msgstr ""
 
-#: archive.c:461 builtin/archive.c:93
+#: archive.c:459 builtin/archive.c:93
 msgid "path to the remote git-upload-archive command"
 msgstr ""
 
-#: archive.c:468
+#: archive.c:466
 msgid "Unexpected option --remote"
 msgstr ""
 
-#: archive.c:470
+#: archive.c:468
 msgid "Option --exec can only be used together with --remote"
 msgstr ""
 
-#: archive.c:472
+#: archive.c:470
 msgid "Unexpected option --output"
 msgstr ""
 
-#: archive.c:494
+#: archive.c:492
 #, c-format
 msgid "Unknown archive format '%s'"
 msgstr ""
 
-#: archive.c:501
+#: archive.c:499
 #, c-format
 msgid "Argument not supported for format '%s': -%d"
 msgstr ""
@@ -825,43 +825,43 @@ msgid ""
 "Use '\\!' for literal leading exclamation."
 msgstr ""
 
-#: bisect.c:460
+#: bisect.c:461
 #, c-format
 msgid "Badly quoted content in file '%s': %s"
 msgstr ""
 
-#: bisect.c:668
+#: bisect.c:669
 #, c-format
 msgid "We cannot bisect more!\n"
 msgstr ""
 
-#: bisect.c:722
+#: bisect.c:723
 #, c-format
 msgid "Not a valid commit name %s"
 msgstr ""
 
-#: bisect.c:746
+#: bisect.c:747
 #, c-format
 msgid ""
 "The merge base %s is bad.\n"
 "This means the bug has been fixed between %s and [%s].\n"
 msgstr ""
 
-#: bisect.c:751
+#: bisect.c:752
 #, c-format
 msgid ""
 "The merge base %s is new.\n"
 "The property has changed between %s and [%s].\n"
 msgstr ""
 
-#: bisect.c:756
+#: bisect.c:757
 #, c-format
 msgid ""
 "The merge base %s is %s.\n"
 "This means the first '%s' commit is between %s and [%s].\n"
 msgstr ""
 
-#: bisect.c:764
+#: bisect.c:765
 #, c-format
 msgid ""
 "Some %s revs are not ancestors of the %s rev.\n"
@@ -869,7 +869,7 @@ msgid ""
 "Maybe you mistook %s and %s revs?\n"
 msgstr ""
 
-#: bisect.c:777
+#: bisect.c:778
 #, c-format
 msgid ""
 "the merge base between %s and [%s] must be skipped.\n"
@@ -877,43 +877,43 @@ msgid ""
 "We continue anyway."
 msgstr ""
 
-#: bisect.c:810
+#: bisect.c:811
 #, c-format
 msgid "Bisecting: a merge base must be tested\n"
 msgstr ""
 
-#: bisect.c:850
+#: bisect.c:851
 #, c-format
 msgid "a %s revision is needed"
 msgstr ""
 
-#: bisect.c:869 builtin/notes.c:175 builtin/tag.c:235
+#: bisect.c:870 builtin/notes.c:175 builtin/tag.c:236
 #, c-format
 msgid "could not create file '%s'"
 msgstr ""
 
-#: bisect.c:920
+#: bisect.c:921
 #, c-format
 msgid "could not read file '%s'"
 msgstr ""
 
-#: bisect.c:950
+#: bisect.c:951
 msgid "reading bisect refs failed"
 msgstr ""
 
-#: bisect.c:969
+#: bisect.c:970
 #, c-format
 msgid "%s was both %s and %s\n"
 msgstr ""
 
-#: bisect.c:977
+#: bisect.c:978
 #, c-format
 msgid ""
 "No testable commit found.\n"
 "Maybe you started with bad path parameters?\n"
 msgstr ""
 
-#: bisect.c:996
+#: bisect.c:997
 #, c-format
 msgid "(roughly %d step)"
 msgid_plural "(roughly %d steps)"
@@ -923,48 +923,48 @@ msgstr[1] ""
 #. TRANSLATORS: the last %s will be replaced with "(roughly %d
 #. steps)" translation.
 #.
-#: bisect.c:1002
+#: bisect.c:1003
 #, c-format
 msgid "Bisecting: %d revision left to test after this %s\n"
 msgid_plural "Bisecting: %d revisions left to test after this %s\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: blame.c:1758
+#: blame.c:1756
 msgid "--contents and --reverse do not blend well."
 msgstr ""
 
-#: blame.c:1769
+#: blame.c:1767
 msgid "cannot use --contents with final commit object name"
 msgstr ""
 
-#: blame.c:1789
+#: blame.c:1787
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr ""
 
-#: blame.c:1798 bundle.c:160 ref-filter.c:1978 sequencer.c:1699
-#: sequencer.c:2901 builtin/commit.c:976 builtin/log.c:366 builtin/log.c:920
-#: builtin/log.c:1371 builtin/log.c:1702 builtin/log.c:1950 builtin/merge.c:370
-#: builtin/shortlog.c:191
+#: blame.c:1796 bundle.c:160 ref-filter.c:2075 sequencer.c:1861
+#: sequencer.c:3632 builtin/commit.c:981 builtin/log.c:366 builtin/log.c:920
+#: builtin/log.c:1371 builtin/log.c:1702 builtin/log.c:1950 builtin/merge.c:372
+#: builtin/shortlog.c:192
 msgid "revision walk setup failed"
 msgstr ""
 
-#: blame.c:1816
+#: blame.c:1814
 msgid ""
 "--reverse --first-parent together require range along first-parent chain"
 msgstr ""
 
-#: blame.c:1827
+#: blame.c:1825
 #, c-format
 msgid "no such path %s in %s"
 msgstr ""
 
-#: blame.c:1838
+#: blame.c:1836
 #, c-format
 msgid "cannot read blob %s for path %s"
 msgstr ""
 
-#: branch.c:53
+#: branch.c:54
 #, c-format
 msgid ""
 "\n"
@@ -973,85 +973,85 @@ msgid ""
 "\"git branch --set-upstream-to=%s%s%s\"."
 msgstr ""
 
-#: branch.c:67
+#: branch.c:68
 #, c-format
 msgid "Not setting branch %s as its own upstream."
 msgstr ""
 
-#: branch.c:93
+#: branch.c:94
 #, c-format
 msgid "Branch '%s' set up to track remote branch '%s' from '%s' by rebasing."
 msgstr ""
 
-#: branch.c:94
+#: branch.c:95
 #, c-format
 msgid "Branch '%s' set up to track remote branch '%s' from '%s'."
 msgstr ""
 
-#: branch.c:98
+#: branch.c:99
 #, c-format
 msgid "Branch '%s' set up to track local branch '%s' by rebasing."
 msgstr ""
 
-#: branch.c:99
+#: branch.c:100
 #, c-format
 msgid "Branch '%s' set up to track local branch '%s'."
 msgstr ""
 
-#: branch.c:104
+#: branch.c:105
 #, c-format
 msgid "Branch '%s' set up to track remote ref '%s' by rebasing."
 msgstr ""
 
-#: branch.c:105
+#: branch.c:106
 #, c-format
 msgid "Branch '%s' set up to track remote ref '%s'."
 msgstr ""
 
-#: branch.c:109
+#: branch.c:110
 #, c-format
 msgid "Branch '%s' set up to track local ref '%s' by rebasing."
 msgstr ""
 
-#: branch.c:110
+#: branch.c:111
 #, c-format
 msgid "Branch '%s' set up to track local ref '%s'."
 msgstr ""
 
-#: branch.c:119
+#: branch.c:120
 msgid "Unable to write upstream branch configuration"
 msgstr ""
 
-#: branch.c:156
+#: branch.c:157
 #, c-format
 msgid "Not tracking: ambiguous information for ref %s"
 msgstr ""
 
-#: branch.c:189
+#: branch.c:190
 #, c-format
 msgid "'%s' is not a valid branch name."
 msgstr ""
 
-#: branch.c:208
+#: branch.c:209
 #, c-format
 msgid "A branch named '%s' already exists."
 msgstr ""
 
-#: branch.c:213
+#: branch.c:214
 msgid "Cannot force update the current branch."
 msgstr ""
 
-#: branch.c:233
+#: branch.c:234
 #, c-format
 msgid "Cannot setup tracking information; starting point '%s' is not a branch."
 msgstr ""
 
-#: branch.c:235
+#: branch.c:236
 #, c-format
 msgid "the requested upstream branch '%s' does not exist"
 msgstr ""
 
-#: branch.c:237
+#: branch.c:238
 msgid ""
 "\n"
 "If you are planning on basing your work on an upstream\n"
@@ -1063,27 +1063,27 @@ msgid ""
 "\"git push -u\" to set the upstream config as you push."
 msgstr ""
 
-#: branch.c:280
+#: branch.c:281
 #, c-format
 msgid "Not a valid object name: '%s'."
 msgstr ""
 
-#: branch.c:300
+#: branch.c:301
 #, c-format
 msgid "Ambiguous object name: '%s'."
 msgstr ""
 
-#: branch.c:305
+#: branch.c:306
 #, c-format
 msgid "Not a valid branch point: '%s'."
 msgstr ""
 
-#: branch.c:359
+#: branch.c:360
 #, c-format
 msgid "'%s' is already checked out at '%s'"
 msgstr ""
 
-#: branch.c:382
+#: branch.c:383
 #, c-format
 msgid "HEAD of working tree %s is not updated"
 msgstr ""
@@ -1098,7 +1098,7 @@ msgstr ""
 msgid "unrecognized header: %s%s (%d)"
 msgstr ""
 
-#: bundle.c:88 sequencer.c:1879 sequencer.c:2337 builtin/commit.c:750
+#: bundle.c:88 sequencer.c:2081 sequencer.c:2558 builtin/commit.c:755
 #, c-format
 msgid "could not open '%s'"
 msgstr ""
@@ -1142,7 +1142,7 @@ msgstr ""
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr ""
 
-#: bundle.c:450 builtin/log.c:183 builtin/log.c:1607 builtin/shortlog.c:296
+#: bundle.c:450 builtin/log.c:183 builtin/log.c:1607 builtin/shortlog.c:303
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr ""
@@ -1165,188 +1165,215 @@ msgstr ""
 msgid "invalid color value: %.*s"
 msgstr ""
 
-#: commit.c:41 sequencer.c:2141 builtin/am.c:421 builtin/am.c:465
-#: builtin/am.c:1436 builtin/am.c:2072
+#: commit.c:43 sequencer.c:2364 builtin/am.c:421 builtin/am.c:465
+#: builtin/am.c:1436 builtin/am.c:2072 builtin/replace.c:376
+#: builtin/replace.c:448
 #, c-format
 msgid "could not parse %s"
 msgstr ""
 
-#: commit.c:43
+#: commit.c:45
 #, c-format
 msgid "%s %s is not a commit!"
 msgstr ""
 
-#: commit.c:1506
+#: commit.c:182
+msgid ""
+"Support for <GIT_DIR>/info/grafts is deprecated\n"
+"and will be removed in a future Git version.\n"
+"\n"
+"Please use \"git replace --convert-graft-file\"\n"
+"to convert the grafts into replace refs.\n"
+"\n"
+"Turn this message off by running\n"
+"\"git config advice.graftFileDeprecated false\""
+msgstr ""
+
+#: commit.c:1540
 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"
 "variable i18n.commitencoding to the encoding your project uses.\n"
 msgstr ""
 
+#: commit-graph.c:669
+#, c-format
+msgid "the commit graph format cannot write %d commits"
+msgstr ""
+
+#: commit-graph.c:696
+msgid "too many commits to write graph"
+msgstr ""
+
+#: commit-graph.c:707 builtin/init-db.c:516 builtin/init-db.c:521
+#, c-format
+msgid "cannot mkdir %s"
+msgstr ""
+
 #: compat/obstack.c:405 compat/obstack.c:407
 msgid "memory exhausted"
 msgstr ""
 
-#: config.c:186
+#: config.c:187
 msgid "relative config include conditionals must come from files"
 msgstr ""
 
-#: config.c:720
+#: config.c:788
 #, c-format
 msgid "bad config line %d in blob %s"
 msgstr ""
 
-#: config.c:724
+#: config.c:792
 #, c-format
 msgid "bad config line %d in file %s"
 msgstr ""
 
-#: config.c:728
+#: config.c:796
 #, c-format
 msgid "bad config line %d in standard input"
 msgstr ""
 
-#: config.c:732
+#: config.c:800
 #, c-format
 msgid "bad config line %d in submodule-blob %s"
 msgstr ""
 
-#: config.c:736
+#: config.c:804
 #, c-format
 msgid "bad config line %d in command line %s"
 msgstr ""
 
-#: config.c:740
+#: config.c:808
 #, c-format
 msgid "bad config line %d in %s"
 msgstr ""
 
-#: config.c:868
+#: config.c:936
 msgid "out of range"
 msgstr ""
 
-#: config.c:868
+#: config.c:936
 msgid "invalid unit"
 msgstr ""
 
-#: config.c:874
+#: config.c:942
 #, c-format
 msgid "bad numeric config value '%s' for '%s': %s"
 msgstr ""
 
-#: config.c:879
+#: config.c:947
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
 msgstr ""
 
-#: config.c:882
+#: config.c:950
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in file %s: %s"
 msgstr ""
 
-#: config.c:885
+#: config.c:953
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
 msgstr ""
 
-#: config.c:888
+#: config.c:956
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
 msgstr ""
 
-#: config.c:891
+#: config.c:959
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
 msgstr ""
 
-#: config.c:894
+#: config.c:962
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in %s: %s"
 msgstr ""
 
-#: config.c:989
+#: config.c:1057
 #, c-format
 msgid "failed to expand user dir in: '%s'"
 msgstr ""
 
-#: config.c:998
+#: config.c:1066
 #, c-format
 msgid "'%s' for '%s' is not a valid timestamp"
 msgstr ""
 
-#: config.c:1094 config.c:1105
+#: config.c:1171 config.c:1182
 #, c-format
 msgid "bad zlib compression level %d"
 msgstr ""
 
-#: config.c:1225
+#: config.c:1307
 #, c-format
 msgid "invalid mode for object creation: %s"
 msgstr ""
 
-#: config.c:1386
+#: config.c:1473
 #, c-format
 msgid "bad pack compression level %d"
 msgstr ""
 
-#: config.c:1582
+#: config.c:1681
 msgid "unable to parse command-line config"
 msgstr ""
 
-#: config.c:1914
+#: config.c:2013
 msgid "unknown error occurred while reading the configuration files"
 msgstr ""
 
-#: config.c:2101
+#: config.c:2200
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr ""
 
-#: config.c:2144
+#: config.c:2243
 #, c-format
 msgid "unknown core.untrackedCache value '%s'; using 'keep' default value"
 msgstr ""
 
-#: config.c:2170
+#: config.c:2269
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr ""
 
-#: config.c:2195
+#: config.c:2294
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr ""
 
-#: config.c:2197
+#: config.c:2296
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr ""
 
-#: config.c:2256
+#: config.c:2402
 #, c-format
 msgid "%s has multiple values"
 msgstr ""
 
-#: config.c:2599 config.c:2816
+#: config.c:2766 config.c:3019
 #, c-format
 msgid "fstat on %s failed"
 msgstr ""
 
-#: config.c:2706
+#: config.c:2905
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr ""
 
-#: config.c:2708 builtin/remote.c:776
+#: config.c:2907 builtin/remote.c:779
 #, c-format
 msgid "could not unset '%s'"
 msgstr ""
 
-#: connect.c:52
+#: connect.c:61
 msgid "The remote end hung up upon initial contact"
 msgstr ""
 
-#: connect.c:54
+#: connect.c:63
 msgid ""
 "Could not read from remote repository.\n"
 "\n"
@@ -1354,7 +1381,7 @@ msgid ""
 "and the repository exists."
 msgstr ""
 
-#: connected.c:66 builtin/fsck.c:198 builtin/prune.c:144
+#: connected.c:66 builtin/fsck.c:201 builtin/prune.c:145
 msgid "Checking connectivity"
 msgstr ""
 
@@ -1370,30 +1397,68 @@ msgstr ""
 msgid "failed to close rev-list's stdin"
 msgstr ""
 
-#: convert.c:205
+#: convert.c:206
 #, c-format
 msgid "CRLF would be replaced by LF in %s."
 msgstr ""
 
-#: convert.c:207
+#: convert.c:208
 #, c-format
 msgid ""
 "CRLF will be replaced by LF in %s.\n"
 "The file will have its original line endings in your working directory."
 msgstr ""
 
-#: convert.c:215
+#: convert.c:216
 #, c-format
 msgid "LF would be replaced by CRLF in %s"
 msgstr ""
 
-#: convert.c:217
+#: convert.c:218
 #, c-format
 msgid ""
 "LF will be replaced by CRLF in %s.\n"
 "The file will have its original line endings in your working directory."
 msgstr ""
 
+#: convert.c:279
+#, c-format
+msgid "BOM is prohibited in '%s' if encoded as %s"
+msgstr ""
+
+#: convert.c:286
+#, c-format
+msgid ""
+"The file '%s' contains a byte order mark (BOM). Please use UTF-%s as working-"
+"tree-encoding."
+msgstr ""
+
+#: convert.c:304
+#, c-format
+msgid "BOM is required in '%s' if encoded as %s"
+msgstr ""
+
+#: convert.c:306
+#, c-format
+msgid ""
+"The file '%s' is missing a byte order mark (BOM). Please use UTF-%sBE or UTF-"
+"%sLE (depending on the byte order) as working-tree-encoding."
+msgstr ""
+
+#: convert.c:424
+#, c-format
+msgid "failed to encode '%s' from %s to %s"
+msgstr ""
+
+#: convert.c:467
+#, c-format
+msgid "encoding '%s' from %s to %s and back is not the same"
+msgstr ""
+
+#: convert.c:1225
+msgid "true/false are no valid working-tree-encodings"
+msgstr ""
+
 #: date.c:116
 msgid "in the future"
 msgstr ""
@@ -1504,68 +1569,68 @@ msgid ""
 "%s"
 msgstr ""
 
-#: diff.c:3822
+#: diff.c:3823
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr ""
 
-#: diff.c:4146
+#: diff.c:4153
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr ""
 
-#: diff.c:4149
+#: diff.c:4156
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr ""
 
-#: diff.c:4237
+#: diff.c:4244
 msgid "--follow requires exactly one pathspec"
 msgstr ""
 
-#: diff.c:4403
+#: diff.c:4410
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
 "%s"
 msgstr ""
 
-#: diff.c:4417
+#: diff.c:4424
 #, c-format
 msgid "Failed to parse --submodule option parameter: '%s'"
 msgstr ""
 
-#: diff.c:5493
+#: diff.c:5500
 msgid "inexact rename detection was skipped due to too many files."
 msgstr ""
 
-#: diff.c:5496
+#: diff.c:5503
 msgid "only found copies from modified paths due to too many files."
 msgstr ""
 
-#: diff.c:5499
+#: diff.c:5506
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
 msgstr ""
 
-#: dir.c:1866
+#: dir.c:1867
 #, c-format
 msgid "could not open directory '%s'"
 msgstr ""
 
-#: dir.c:2108
+#: dir.c:2109
 msgid "failed to get kernel name and information"
 msgstr ""
 
-#: dir.c:2232
+#: dir.c:2233
 msgid "Untracked cache is disabled on this system or location."
 msgstr ""
 
-#: dir.c:3024 dir.c:3029
+#: dir.c:3075 dir.c:3080
 #, c-format
 msgid "could not create directories for %s"
 msgstr ""
 
-#: dir.c:3054
+#: dir.c:3109
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr ""
@@ -1588,201 +1653,205 @@ msgstr ""
 msgid "Remote with no URL"
 msgstr ""
 
-#: fetch-pack.c:253
+#: fetch-pack.c:254
 msgid "git fetch-pack: expected shallow list"
 msgstr ""
 
-#: fetch-pack.c:265
+#: fetch-pack.c:266
 msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
 msgstr ""
 
-#: fetch-pack.c:284 builtin/archive.c:63
+#: fetch-pack.c:285 builtin/archive.c:63
 #, c-format
 msgid "remote error: %s"
 msgstr ""
 
-#: fetch-pack.c:285
+#: fetch-pack.c:286
 #, c-format
 msgid "git fetch-pack: expected ACK/NAK, got '%s'"
 msgstr ""
 
-#: fetch-pack.c:337
+#: fetch-pack.c:338
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr ""
 
-#: fetch-pack.c:428
+#: fetch-pack.c:429 fetch-pack.c:1310
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr ""
 
-#: fetch-pack.c:434
+#: fetch-pack.c:435 fetch-pack.c:1316
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr ""
 
-#: fetch-pack.c:436
+#: fetch-pack.c:437 fetch-pack.c:1318
 #, c-format
 msgid "object not found: %s"
 msgstr ""
 
-#: fetch-pack.c:439
+#: fetch-pack.c:440 fetch-pack.c:1321
 #, c-format
 msgid "error in object: %s"
 msgstr ""
 
-#: fetch-pack.c:441
+#: fetch-pack.c:442 fetch-pack.c:1323
 #, c-format
 msgid "no shallow found: %s"
 msgstr ""
 
-#: fetch-pack.c:444
+#: fetch-pack.c:445 fetch-pack.c:1326
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr ""
 
-#: fetch-pack.c:485
+#: fetch-pack.c:486
 #, c-format
 msgid "got %s %d %s"
 msgstr ""
 
-#: fetch-pack.c:499
+#: fetch-pack.c:500
 #, c-format
 msgid "invalid commit %s"
 msgstr ""
 
-#: fetch-pack.c:532
+#: fetch-pack.c:533
 msgid "giving up"
 msgstr ""
 
-#: fetch-pack.c:542 progress.c:229
+#: fetch-pack.c:543 progress.c:229
 msgid "done"
 msgstr ""
 
-#: fetch-pack.c:554
+#: fetch-pack.c:555
 #, c-format
 msgid "got %s (%d) %s"
 msgstr ""
 
-#: fetch-pack.c:600
+#: fetch-pack.c:601
 #, c-format
 msgid "Marking %s as complete"
 msgstr ""
 
-#: fetch-pack.c:788
+#: fetch-pack.c:828
 #, c-format
 msgid "already have %s (%s)"
 msgstr ""
 
-#: fetch-pack.c:829
+#: fetch-pack.c:869
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr ""
 
-#: fetch-pack.c:837
+#: fetch-pack.c:877
 msgid "protocol error: bad pack header"
 msgstr ""
 
-#: fetch-pack.c:895
+#: fetch-pack.c:944
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr ""
 
-#: fetch-pack.c:911
+#: fetch-pack.c:960
 #, c-format
 msgid "%s failed"
 msgstr ""
 
-#: fetch-pack.c:913
+#: fetch-pack.c:962
 msgid "error in sideband demultiplexer"
 msgstr ""
 
-#: fetch-pack.c:940
+#: fetch-pack.c:989
 msgid "Server does not support shallow clients"
 msgstr ""
 
-#: fetch-pack.c:944
+#: fetch-pack.c:993
 msgid "Server supports multi_ack_detailed"
 msgstr ""
 
-#: fetch-pack.c:947
+#: fetch-pack.c:996
 msgid "Server supports no-done"
 msgstr ""
 
-#: fetch-pack.c:953
+#: fetch-pack.c:1002
 msgid "Server supports multi_ack"
 msgstr ""
 
-#: fetch-pack.c:957
+#: fetch-pack.c:1006
 msgid "Server supports side-band-64k"
 msgstr ""
 
-#: fetch-pack.c:961
+#: fetch-pack.c:1010
 msgid "Server supports side-band"
 msgstr ""
 
-#: fetch-pack.c:965
+#: fetch-pack.c:1014
 msgid "Server supports allow-tip-sha1-in-want"
 msgstr ""
 
-#: fetch-pack.c:969
+#: fetch-pack.c:1018
 msgid "Server supports allow-reachable-sha1-in-want"
 msgstr ""
 
-#: fetch-pack.c:979
+#: fetch-pack.c:1028
 msgid "Server supports ofs-delta"
 msgstr ""
 
-#: fetch-pack.c:985
+#: fetch-pack.c:1034 fetch-pack.c:1204
 msgid "Server supports filter"
 msgstr ""
 
-#: fetch-pack.c:993
+#: fetch-pack.c:1042
 #, c-format
 msgid "Server version is %.*s"
 msgstr ""
 
-#: fetch-pack.c:999
+#: fetch-pack.c:1048
 msgid "Server does not support --shallow-since"
 msgstr ""
 
-#: fetch-pack.c:1003
+#: fetch-pack.c:1052
 msgid "Server does not support --shallow-exclude"
 msgstr ""
 
-#: fetch-pack.c:1005
+#: fetch-pack.c:1054
 msgid "Server does not support --deepen"
 msgstr ""
 
-#: fetch-pack.c:1016
+#: fetch-pack.c:1065
 msgid "no common commits"
 msgstr ""
 
-#: fetch-pack.c:1028
+#: fetch-pack.c:1077 fetch-pack.c:1414
 msgid "git fetch-pack: fetch failed."
 msgstr ""
 
-#: fetch-pack.c:1190
+#: fetch-pack.c:1199
+msgid "Server does not support shallow requests"
+msgstr ""
+
+#: fetch-pack.c:1584
 msgid "no matching remote head"
 msgstr ""
 
-#: fetch-pack.c:1212
+#: fetch-pack.c:1610
 #, c-format
 msgid "no such remote ref %s"
 msgstr ""
 
-#: fetch-pack.c:1215
+#: fetch-pack.c:1613
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr ""
 
-#: gpg-interface.c:181
+#: gpg-interface.c:185
 msgid "gpg failed to sign the data"
 msgstr ""
 
-#: gpg-interface.c:211
+#: gpg-interface.c:210
 msgid "could not create temporary file"
 msgstr ""
 
-#: gpg-interface.c:214
+#: gpg-interface.c:213
 #, c-format
 msgid "failed writing detached signature to '%s'"
 msgstr ""
@@ -1792,67 +1861,128 @@ msgstr ""
 msgid "ignore invalid color '%.*s' in log.graphColors"
 msgstr ""
 
-#: grep.c:2022
+#: grep.c:2020
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr ""
 
-#: grep.c:2039 setup.c:163 builtin/clone.c:407 builtin/diff.c:81
+#: grep.c:2037 setup.c:164 builtin/clone.c:409 builtin/diff.c:81
 #: builtin/rm.c:134
 #, c-format
 msgid "failed to stat '%s'"
 msgstr ""
 
-#: grep.c:2050
+#: grep.c:2048
 #, c-format
 msgid "'%s': short read"
 msgstr ""
 
-#: help.c:179
+#: help.c:23
+msgid "start a working area (see also: git help tutorial)"
+msgstr ""
+
+#: help.c:24
+msgid "work on the current change (see also: git help everyday)"
+msgstr ""
+
+#: help.c:25
+msgid "examine the history and state (see also: git help revisions)"
+msgstr ""
+
+#: help.c:26
+msgid "grow, mark and tweak your common history"
+msgstr ""
+
+#: help.c:27
+msgid "collaborate (see also: git help workflows)"
+msgstr ""
+
+#: help.c:31
+msgid "Main Porcelain Commands"
+msgstr ""
+
+#: help.c:32
+msgid "Ancillary Commands / Manipulators"
+msgstr ""
+
+#: help.c:33
+msgid "Ancillary Commands / Interrogators"
+msgstr ""
+
+#: help.c:34
+msgid "Interacting with Others"
+msgstr ""
+
+#: help.c:35
+msgid "Low-level Commands / Manipulators"
+msgstr ""
+
+#: help.c:36
+msgid "Low-level Commands / Interrogators"
+msgstr ""
+
+#: help.c:37
+msgid "Low-level Commands / Synching Repositories"
+msgstr ""
+
+#: help.c:38
+msgid "Low-level Commands / Internal Helpers"
+msgstr ""
+
+#: help.c:293
 #, c-format
 msgid "available git commands in '%s'"
 msgstr ""
 
-#: help.c:186
+#: help.c:300
 msgid "git commands available from elsewhere on your $PATH"
 msgstr ""
 
-#: help.c:217
+#: help.c:309
 msgid "These are common Git commands used in various situations:"
 msgstr ""
 
-#: help.c:281
+#: help.c:358 git.c:90
+#, c-format
+msgid "unsupported command listing type '%s'"
+msgstr ""
+
+#: help.c:405
+msgid "The common Git guides are:"
+msgstr ""
+
+#: help.c:467
 #, c-format
 msgid ""
 "'%s' appears to be a git command, but we were not\n"
 "able to execute it. Maybe git-%s is broken?"
 msgstr ""
 
-#: help.c:336
+#: help.c:526
 msgid "Uh oh. Your system reports no Git commands at all."
 msgstr ""
 
-#: help.c:358
+#: help.c:548
 #, c-format
 msgid "WARNING: You called a Git command named '%s', which does not exist."
 msgstr ""
 
-#: help.c:363
+#: help.c:553
 #, c-format
 msgid "Continuing under the assumption that you meant '%s'."
 msgstr ""
 
-#: help.c:368
+#: help.c:558
 #, c-format
 msgid "Continuing in %0.1f seconds, assuming that you meant '%s'."
 msgstr ""
 
-#: help.c:376
+#: help.c:566
 #, c-format
 msgid "git: '%s' is not a git command. See 'git --help'."
 msgstr ""
 
-#: help.c:380
+#: help.c:570
 msgid ""
 "\n"
 "The most similar command is"
@@ -1862,16 +1992,16 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: help.c:395
+#: help.c:585
 msgid "git version [<options>]"
 msgstr ""
 
-#: help.c:462
+#: help.c:652
 #, c-format
 msgid "%s: %s - %s"
 msgstr ""
 
-#: help.c:466
+#: help.c:656
 msgid ""
 "\n"
 "Did you mean this?"
@@ -1924,7 +2054,7 @@ msgstr ""
 msgid "name consists only of disallowed characters: %s"
 msgstr ""
 
-#: ident.c:416 builtin/commit.c:582
+#: ident.c:416 builtin/commit.c:587
 #, c-format
 msgid "invalid date format: %s"
 msgstr ""
@@ -1954,261 +2084,378 @@ msgstr ""
 msgid "Unable to create '%s.lock': %s"
 msgstr ""
 
-#: merge.c:74
+#: merge.c:71
 msgid "failed to read the cache"
 msgstr ""
 
-#: merge.c:134 builtin/am.c:1946 builtin/am.c:1980 builtin/checkout.c:378
-#: builtin/checkout.c:599 builtin/clone.c:759
+#: merge.c:136 builtin/am.c:1946 builtin/am.c:1980 builtin/checkout.c:378
+#: builtin/checkout.c:606 builtin/clone.c:761
 msgid "unable to write new index file"
 msgstr ""
 
-#: merge-recursive.c:235
+#: merge-recursive.c:298
 msgid "(bad commit)\n"
 msgstr ""
 
-#: merge-recursive.c:257 merge-recursive.c:265
+#: merge-recursive.c:320
+#, c-format
+msgid "add_cacheinfo failed for path '%s'; merge aborting."
+msgstr ""
+
+#: merge-recursive.c:328
 #, c-format
-msgid "addinfo_cache failed for path '%s'"
+msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
 msgstr ""
 
-#: merge-recursive.c:329
+#: merge-recursive.c:410
 msgid "error building trees"
 msgstr ""
 
-#: merge-recursive.c:771
+#: merge-recursive.c:881
 #, c-format
 msgid "failed to create path '%s'%s"
 msgstr ""
 
-#: merge-recursive.c:782
+#: merge-recursive.c:892
 #, c-format
 msgid "Removing %s to make room for subdirectory\n"
 msgstr ""
 
-#: merge-recursive.c:796 merge-recursive.c:815
+#: merge-recursive.c:906 merge-recursive.c:925
 msgid ": perhaps a D/F conflict?"
 msgstr ""
 
-#: merge-recursive.c:805
+#: merge-recursive.c:915
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
 msgstr ""
 
-#: merge-recursive.c:847 builtin/cat-file.c:37
+#: merge-recursive.c:957 builtin/cat-file.c:37
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr ""
 
-#: merge-recursive.c:849
+#: merge-recursive.c:959
 #, c-format
 msgid "blob expected for %s '%s'"
 msgstr ""
 
-#: merge-recursive.c:873
+#: merge-recursive.c:983
 #, c-format
 msgid "failed to open '%s': %s"
 msgstr ""
 
-#: merge-recursive.c:884
+#: merge-recursive.c:994
 #, c-format
 msgid "failed to symlink '%s': %s"
 msgstr ""
 
-#: merge-recursive.c:889
+#: merge-recursive.c:999
 #, c-format
 msgid "do not know what to do with %06o %s '%s'"
 msgstr ""
 
-#: merge-recursive.c:1029
+#: merge-recursive.c:1186
+#, c-format
+msgid "Failed to merge submodule %s (not checked out)"
+msgstr ""
+
+#: merge-recursive.c:1193
+#, c-format
+msgid "Failed to merge submodule %s (commits not present)"
+msgstr ""
+
+#: merge-recursive.c:1200
+#, c-format
+msgid "Failed to merge submodule %s (commits don't follow merge-base)"
+msgstr ""
+
+#: merge-recursive.c:1208 merge-recursive.c:1220
+#, c-format
+msgid "Fast-forwarding submodule %s to the following commit:"
+msgstr ""
+
+#: merge-recursive.c:1211 merge-recursive.c:1223
+#, c-format
+msgid "Fast-forwarding submodule %s"
+msgstr ""
+
+#: merge-recursive.c:1245
+#, c-format
+msgid "Failed to merge submodule %s (merge following commits not found)"
+msgstr ""
+
+#: merge-recursive.c:1249
+#, c-format
+msgid "Failed to merge submodule %s (not fast-forward)"
+msgstr ""
+
+#: merge-recursive.c:1250
+msgid "Found a possible merge resolution for the submodule:\n"
+msgstr ""
+
+#: merge-recursive.c:1253
+#, c-format
+msgid ""
+"If this is correct simply add it to the index for example\n"
+"by using:\n"
+"\n"
+"  git update-index --cacheinfo 160000 %s \"%s\"\n"
+"\n"
+"which will accept this suggestion.\n"
+msgstr ""
+
+#: merge-recursive.c:1262
+#, c-format
+msgid "Failed to merge submodule %s (multiple merges found)"
+msgstr ""
+
+#: merge-recursive.c:1321
 msgid "Failed to execute internal merge"
 msgstr ""
 
-#: merge-recursive.c:1034
+#: merge-recursive.c:1326
 #, c-format
 msgid "Unable to add %s to database"
 msgstr ""
 
-#: merge-recursive.c:1146
+#: merge-recursive.c:1358
+#, c-format
+msgid "Auto-merging %s"
+msgstr ""
+
+#: merge-recursive.c:1423
+#, c-format
+msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+msgstr ""
+
+#: merge-recursive.c:1475
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
 "in tree."
 msgstr ""
 
-#: merge-recursive.c:1151
+#: merge-recursive.c:1480
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
 "left in tree."
 msgstr ""
 
-#: merge-recursive.c:1158
+#: merge-recursive.c:1487
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
 "in tree at %s."
 msgstr ""
 
-#: merge-recursive.c:1163
+#: merge-recursive.c:1492
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
 "left in tree at %s."
 msgstr ""
 
-#: merge-recursive.c:1197
+#: merge-recursive.c:1526
 msgid "rename"
 msgstr ""
 
-#: merge-recursive.c:1197
+#: merge-recursive.c:1526
 msgid "renamed"
 msgstr ""
 
-#: merge-recursive.c:1254
+#: merge-recursive.c:1580 merge-recursive.c:1736 merge-recursive.c:2368
+#: merge-recursive.c:3086
+#, c-format
+msgid "Refusing to lose dirty file at %s"
+msgstr ""
+
+#: merge-recursive.c:1594
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr ""
 
-#: merge-recursive.c:1279
+#: merge-recursive.c:1599
+#, c-format
+msgid "Refusing to lose untracked file at %s; adding as %s instead"
+msgstr ""
+
+#: merge-recursive.c:1625
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
 "\"->\"%s\" in \"%s\"%s"
 msgstr ""
 
-#: merge-recursive.c:1284
+#: merge-recursive.c:1630
 msgid " (left unresolved)"
 msgstr ""
 
-#: merge-recursive.c:1346
+#: merge-recursive.c:1694
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
 msgstr ""
 
-#: merge-recursive.c:1379
+#: merge-recursive.c:1733
 #, c-format
 msgid "Renaming %s to %s and %s to %s instead"
 msgstr ""
 
-#: merge-recursive.c:1582
+#: merge-recursive.c:1745
+#, c-format
+msgid "Refusing to lose untracked file at %s, even though it's in the way."
+msgstr ""
+
+#: merge-recursive.c:1951
+#, c-format
+msgid ""
+"CONFLICT (directory rename split): Unclear where to place %s because "
+"directory %s was renamed to multiple other directories, with no destination "
+"getting a majority of the files."
+msgstr ""
+
+#: merge-recursive.c:1983
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
+"implicit directory rename(s) putting the following path(s) there: %s."
+msgstr ""
+
+#: merge-recursive.c:1993
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
+"implicit directory renames tried to put these paths there: %s"
+msgstr ""
+
+#: merge-recursive.c:2085
+#, c-format
+msgid ""
+"CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
+">%s in %s"
+msgstr ""
+
+#: merge-recursive.c:2330
+#, c-format
+msgid ""
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
+msgstr ""
+
+#: merge-recursive.c:2736
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s. %s added in %s"
 msgstr ""
 
-#: merge-recursive.c:1597
+#: merge-recursive.c:2751
 #, c-format
 msgid "Adding merged %s"
 msgstr ""
 
-#: merge-recursive.c:1604 merge-recursive.c:1834
+#: merge-recursive.c:2758 merge-recursive.c:3089
 #, c-format
 msgid "Adding as %s instead"
 msgstr ""
 
-#: merge-recursive.c:1661
+#: merge-recursive.c:2914
 #, c-format
 msgid "cannot read object %s"
 msgstr ""
 
-#: merge-recursive.c:1664
+#: merge-recursive.c:2917
 #, c-format
 msgid "object %s is not a blob"
 msgstr ""
 
-#: merge-recursive.c:1733
+#: merge-recursive.c:2986
 msgid "modify"
 msgstr ""
 
-#: merge-recursive.c:1733
+#: merge-recursive.c:2986
 msgid "modified"
 msgstr ""
 
-#: merge-recursive.c:1743
+#: merge-recursive.c:2997
 msgid "content"
 msgstr ""
 
-#: merge-recursive.c:1750
+#: merge-recursive.c:3004
 msgid "add/add"
 msgstr ""
 
-#: merge-recursive.c:1786
+#: merge-recursive.c:3046
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr ""
 
-#: merge-recursive.c:1800
-#, c-format
-msgid "Auto-merging %s"
-msgstr ""
-
-#: merge-recursive.c:1804 git-submodule.sh:879
+#: merge-recursive.c:3055 git-submodule.sh:895
 msgid "submodule"
 msgstr ""
 
-#: merge-recursive.c:1805
+#: merge-recursive.c:3056
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr ""
 
-#: merge-recursive.c:1899
+#: merge-recursive.c:3178
 #, c-format
 msgid "Removing %s"
 msgstr ""
 
-#: merge-recursive.c:1925
+#: merge-recursive.c:3204
 msgid "file/directory"
 msgstr ""
 
-#: merge-recursive.c:1931
+#: merge-recursive.c:3210
 msgid "directory/file"
 msgstr ""
 
-#: merge-recursive.c:1938
+#: merge-recursive.c:3217
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
 msgstr ""
 
-#: merge-recursive.c:1947
+#: merge-recursive.c:3226
 #, c-format
 msgid "Adding %s"
 msgstr ""
 
-#: merge-recursive.c:1987
+#: merge-recursive.c:3267
 #, c-format
 msgid "Dirty index: cannot merge (dirty: %s)"
 msgstr ""
 
-#: merge-recursive.c:1991
+#: merge-recursive.c:3271
 msgid "Already up to date!"
 msgstr ""
 
-#: merge-recursive.c:2000
+#: merge-recursive.c:3280
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr ""
 
-#: merge-recursive.c:2097
+#: merge-recursive.c:3379
 msgid "Merging:"
 msgstr ""
 
-#: merge-recursive.c:2110
+#: merge-recursive.c:3392
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: merge-recursive.c:2149
+#: merge-recursive.c:3431
 msgid "merge returned no commit"
 msgstr ""
 
-#: merge-recursive.c:2212
+#: merge-recursive.c:3495
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr ""
 
-#: merge-recursive.c:2228 builtin/merge.c:657 builtin/merge.c:816
+#: merge-recursive.c:3511 builtin/merge.c:659 builtin/merge.c:816
 msgid "Unable to write index."
 msgstr ""
 
@@ -2248,30 +2495,30 @@ msgstr ""
 msgid "Bad %s value: '%s'"
 msgstr ""
 
-#: object.c:239
+#: object.c:242
 #, c-format
 msgid "unable to parse object: %s"
 msgstr ""
 
-#: packfile.c:561
+#: packfile.c:563
 msgid "offset before end of packfile (broken .idx?)"
 msgstr ""
 
-#: packfile.c:1694
+#: packfile.c:1742
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr ""
 
-#: packfile.c:1698
+#: packfile.c:1746
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr ""
 
-#: parse-options.c:619
+#: parse-options.c:621
 msgid "..."
 msgstr ""
 
-#: parse-options.c:638
+#: parse-options.c:640
 #, c-format
 msgid "usage: %s"
 msgstr ""
@@ -2279,26 +2526,31 @@ msgstr ""
 #. TRANSLATORS: the colon here should align with the
 #. one in "usage: %s" translation.
 #.
-#: parse-options.c:644
+#: parse-options.c:646
 #, c-format
 msgid "   or: %s"
 msgstr ""
 
-#: parse-options.c:647
+#: parse-options.c:649
 #, c-format
 msgid "    %s"
 msgstr ""
 
-#: parse-options.c:686
+#: parse-options.c:688
 msgid "-NUM"
 msgstr ""
 
-#: parse-options-cb.c:108
+#: parse-options-cb.c:44
+#, c-format
+msgid "malformed expiration date '%s'"
+msgstr ""
+
+#: parse-options-cb.c:112
 #, c-format
 msgid "malformed object name '%s'"
 msgstr ""
 
-#: path.c:891
+#: path.c:892
 #, c-format
 msgid "Could not make %s writable by group"
 msgstr ""
@@ -2378,66 +2630,67 @@ msgstr ""
 msgid "unable to parse --pretty format"
 msgstr ""
 
-#: read-cache.c:1473
+#: read-cache.c:1500
 #, c-format
 msgid ""
 "index.version set, but the value is invalid.\n"
 "Using version %i"
 msgstr ""
 
-#: read-cache.c:1483
+#: read-cache.c:1510
 #, c-format
 msgid ""
 "GIT_INDEX_VERSION set, but the value is invalid.\n"
 "Using version %i"
 msgstr ""
 
-#: read-cache.c:2375 sequencer.c:3248 wrapper.c:658 builtin/merge.c:1049
+#: read-cache.c:2404 sequencer.c:4338 wrapper.c:658 builtin/merge.c:1048
 #, c-format
 msgid "could not close '%s'"
 msgstr ""
 
-#: read-cache.c:2448 sequencer.c:1900 sequencer.c:2627
+#: read-cache.c:2477 sequencer.c:2102 sequencer.c:3234
 #, c-format
 msgid "could not stat '%s'"
 msgstr ""
 
-#: read-cache.c:2461
+#: read-cache.c:2490
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr ""
 
-#: read-cache.c:2473
+#: read-cache.c:2502
 #, c-format
 msgid "unable to unlink: %s"
 msgstr ""
 
-#: refs.c:706
+#: refs.c:732 sequencer.c:4334 sequencer.c:4393 wrapper.c:225 wrapper.c:395
+#: builtin/am.c:779
 #, c-format
-msgid "Could not open '%s' for writing"
+msgid "could not open '%s' for writing"
 msgstr ""
 
-#: refs.c:1850
+#: refs.c:1880
 msgid "ref updates forbidden inside quarantine environment"
 msgstr ""
 
-#: refs/files-backend.c:1189
+#: refs/files-backend.c:1191
 #, c-format
 msgid "could not remove reference %s"
 msgstr ""
 
-#: refs/files-backend.c:1203 refs/packed-backend.c:1528
-#: refs/packed-backend.c:1538
+#: refs/files-backend.c:1205 refs/packed-backend.c:1531
+#: refs/packed-backend.c:1541
 #, c-format
 msgid "could not delete reference %s: %s"
 msgstr ""
 
-#: refs/files-backend.c:1206 refs/packed-backend.c:1541
+#: refs/files-backend.c:1208 refs/packed-backend.c:1544
 #, c-format
 msgid "could not delete references: %s"
 msgstr ""
 
-#: ref-filter.c:35 wt-status.c:1842
+#: ref-filter.c:35 wt-status.c:1850
 msgid "gone"
 msgstr ""
 
@@ -2456,157 +2709,162 @@ msgstr ""
 msgid "ahead %d, behind %d"
 msgstr ""
 
-#: ref-filter.c:107
+#: ref-filter.c:121
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr ""
 
-#: ref-filter.c:109
+#: ref-filter.c:123
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr ""
 
-#: ref-filter.c:129
+#: ref-filter.c:145
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr ""
 
-#: ref-filter.c:133
+#: ref-filter.c:149
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr ""
 
-#: ref-filter.c:135
+#: ref-filter.c:151
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr ""
 
-#: ref-filter.c:184
+#: ref-filter.c:206
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr ""
 
-#: ref-filter.c:191
+#: ref-filter.c:215
 #, c-format
 msgid "%%(subject) does not take arguments"
 msgstr ""
 
-#: ref-filter.c:209
+#: ref-filter.c:235
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr ""
 
-#: ref-filter.c:232
+#: ref-filter.c:264
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr ""
 
-#: ref-filter.c:234
+#: ref-filter.c:266
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr ""
 
-#: ref-filter.c:247
+#: ref-filter.c:281
 #, c-format
 msgid "positive value expected objectname:short=%s"
 msgstr ""
 
-#: ref-filter.c:251
+#: ref-filter.c:285
 #, c-format
 msgid "unrecognized %%(objectname) argument: %s"
 msgstr ""
 
-#: ref-filter.c:278
+#: ref-filter.c:315
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr ""
 
-#: ref-filter.c:290
+#: ref-filter.c:327
 #, c-format
 msgid "unrecognized position:%s"
 msgstr ""
 
-#: ref-filter.c:294
+#: ref-filter.c:334
 #, c-format
 msgid "unrecognized width:%s"
 msgstr ""
 
-#: ref-filter.c:300
+#: ref-filter.c:343
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr ""
 
-#: ref-filter.c:304
+#: ref-filter.c:351
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr ""
 
-#: ref-filter.c:319
+#: ref-filter.c:369
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
 msgstr ""
 
-#: ref-filter.c:409
+#: ref-filter.c:464
 #, c-format
 msgid "malformed field name: %.*s"
 msgstr ""
 
-#: ref-filter.c:435
+#: ref-filter.c:491
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr ""
 
-#: ref-filter.c:547
+#: ref-filter.c:608
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr ""
 
-#: ref-filter.c:607
+#: ref-filter.c:671
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr ""
 
-#: ref-filter.c:609
+#: ref-filter.c:673
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr ""
 
-#: ref-filter.c:611
+#: ref-filter.c:675
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr ""
 
-#: ref-filter.c:637
+#: ref-filter.c:703
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr ""
 
-#: ref-filter.c:639
+#: ref-filter.c:705
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr ""
 
-#: ref-filter.c:641
+#: ref-filter.c:707
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr ""
 
-#: ref-filter.c:654
+#: ref-filter.c:722
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr ""
 
-#: ref-filter.c:709
+#: ref-filter.c:779
 #, c-format
 msgid "malformed format string %s"
 msgstr ""
 
-#: ref-filter.c:1313
+#: ref-filter.c:1387
 #, c-format
 msgid "(no branch, rebasing %s)"
 msgstr ""
 
-#: ref-filter.c:1316
+#: ref-filter.c:1390
+#, c-format
+msgid "(no branch, rebasing detached HEAD %s)"
+msgstr ""
+
+#: ref-filter.c:1393
 #, c-format
 msgid "(no branch, bisect started on %s)"
 msgstr ""
@@ -2614,7 +2872,7 @@ msgstr ""
 #. TRANSLATORS: make sure this matches "HEAD
 #. detached at " in wt-status.c
 #.
-#: ref-filter.c:1324
+#: ref-filter.c:1401
 #, c-format
 msgid "(HEAD detached at %s)"
 msgstr ""
@@ -2622,147 +2880,147 @@ msgstr ""
 #. TRANSLATORS: make sure this matches "HEAD
 #. detached from " in wt-status.c
 #.
-#: ref-filter.c:1331
+#: ref-filter.c:1408
 #, c-format
 msgid "(HEAD detached from %s)"
 msgstr ""
 
-#: ref-filter.c:1335
+#: ref-filter.c:1412
 msgid "(no branch)"
 msgstr ""
 
-#: ref-filter.c:1364
+#: ref-filter.c:1442
 #, c-format
 msgid "missing object %s for %s"
 msgstr ""
 
-#: ref-filter.c:1367
+#: ref-filter.c:1445
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr ""
 
-#: ref-filter.c:1819
+#: ref-filter.c:1902
 #, c-format
 msgid "malformed object at '%s'"
 msgstr ""
 
-#: ref-filter.c:1886
+#: ref-filter.c:1984
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr ""
 
-#: ref-filter.c:1891
+#: ref-filter.c:1989
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr ""
 
-#: ref-filter.c:2152
+#: ref-filter.c:2261
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr ""
 
-#: ref-filter.c:2246
+#: ref-filter.c:2365
 #, c-format
 msgid "malformed object name %s"
 msgstr ""
 
-#: remote.c:795
+#: remote.c:605
 #, c-format
 msgid "Cannot fetch both %s and %s to %s"
 msgstr ""
 
-#: remote.c:799
+#: remote.c:609
 #, c-format
 msgid "%s usually tracks %s, not %s"
 msgstr ""
 
-#: remote.c:803
+#: remote.c:613
 #, c-format
 msgid "%s tracks both %s and %s"
 msgstr ""
 
-#: remote.c:811
+#: remote.c:621
 msgid "Internal error"
 msgstr ""
 
-#: remote.c:1726 remote.c:1828
+#: remote.c:1534 remote.c:1635
 msgid "HEAD does not point to a branch"
 msgstr ""
 
-#: remote.c:1735
+#: remote.c:1543
 #, c-format
 msgid "no such branch: '%s'"
 msgstr ""
 
-#: remote.c:1738
+#: remote.c:1546
 #, c-format
 msgid "no upstream configured for branch '%s'"
 msgstr ""
 
-#: remote.c:1744
+#: remote.c:1552
 #, c-format
 msgid "upstream branch '%s' not stored as a remote-tracking branch"
 msgstr ""
 
-#: remote.c:1759
+#: remote.c:1567
 #, c-format
 msgid "push destination '%s' on remote '%s' has no local tracking branch"
 msgstr ""
 
-#: remote.c:1771
+#: remote.c:1579
 #, c-format
 msgid "branch '%s' has no remote for pushing"
 msgstr ""
 
-#: remote.c:1782
+#: remote.c:1589
 #, c-format
 msgid "push refspecs for '%s' do not include '%s'"
 msgstr ""
 
-#: remote.c:1795
+#: remote.c:1602
 msgid "push has no destination (push.default is 'nothing')"
 msgstr ""
 
-#: remote.c:1817
+#: remote.c:1624
 msgid "cannot resolve 'simple' push to a single destination"
 msgstr ""
 
-#: remote.c:2132
+#: remote.c:1939
 #, c-format
 msgid "Your branch is based on '%s', but the upstream is gone.\n"
 msgstr ""
 
-#: remote.c:2136
+#: remote.c:1943
 msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
 msgstr ""
 
-#: remote.c:2139
+#: remote.c:1946
 #, c-format
 msgid "Your branch is up to date with '%s'.\n"
 msgstr ""
 
-#: remote.c:2143
+#: remote.c:1950
 #, c-format
 msgid "Your branch and '%s' refer to different commits.\n"
 msgstr ""
 
-#: remote.c:2146
+#: remote.c:1953
 #, c-format
 msgid "  (use \"%s\" for details)\n"
 msgstr ""
 
-#: remote.c:2150
+#: remote.c:1957
 #, c-format
 msgid "Your branch is ahead of '%s' by %d commit.\n"
 msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: remote.c:2156
+#: remote.c:1963
 msgid "  (use \"git push\" to publish your local commits)\n"
 msgstr ""
 
-#: remote.c:2159
+#: remote.c:1966
 #, c-format
 msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
 msgid_plural ""
@@ -2770,11 +3028,11 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: remote.c:2167
+#: remote.c:1974
 msgid "  (use \"git pull\" to update your local branch)\n"
 msgstr ""
 
-#: remote.c:2170
+#: remote.c:1977
 #, c-format
 msgid ""
 "Your branch and '%s' have diverged,\n"
@@ -2785,28 +3043,28 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: remote.c:2180
+#: remote.c:1987
 msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
 msgstr ""
 
-#: revision.c:2277
+#: revision.c:2289
 msgid "your current branch appears to be broken"
 msgstr ""
 
-#: revision.c:2280
+#: revision.c:2292
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr ""
 
-#: revision.c:2477
+#: revision.c:2489
 msgid "--first-parent is incompatible with --bisect"
 msgstr ""
 
-#: run-command.c:731
+#: run-command.c:728
 msgid "open /dev/null failed"
 msgstr ""
 
-#: run-command.c:1274
+#: run-command.c:1271
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
@@ -2849,78 +3107,85 @@ msgstr ""
 msgid "the receiving end does not support push options"
 msgstr ""
 
-#: sequencer.c:158
+#: sequencer.c:175
 #, c-format
 msgid "invalid commit message cleanup mode '%s'"
 msgstr ""
 
-#: sequencer.c:267
+#: sequencer.c:275
+#, c-format
+msgid "could not delete '%s'"
+msgstr ""
+
+#: sequencer.c:301
 msgid "revert"
 msgstr ""
 
-#: sequencer.c:269
+#: sequencer.c:303
 msgid "cherry-pick"
 msgstr ""
 
-#: sequencer.c:271
+#: sequencer.c:305
 msgid "rebase -i"
 msgstr ""
 
-#: sequencer.c:273
+#: sequencer.c:307
 #, c-format
 msgid "Unknown action: %d"
 msgstr ""
 
-#: sequencer.c:330
+#: sequencer.c:364
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'"
 msgstr ""
 
-#: sequencer.c:333
+#: sequencer.c:367
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'\n"
 "and commit the result with 'git commit'"
 msgstr ""
 
-#: sequencer.c:346 sequencer.c:2245
+#: sequencer.c:380 sequencer.c:2468
 #, c-format
 msgid "could not lock '%s'"
 msgstr ""
 
-#: sequencer.c:349 sequencer.c:2124 sequencer.c:2250 sequencer.c:2264
-#: sequencer.c:3246 sequencer.c:3310 wrapper.c:656
+#: sequencer.c:382 sequencer.c:2346 sequencer.c:2472 sequencer.c:2486
+#: sequencer.c:2694 sequencer.c:4336 sequencer.c:4399 wrapper.c:656
 #, c-format
 msgid "could not write to '%s'"
 msgstr ""
 
-#: sequencer.c:353
+#: sequencer.c:387
 #, c-format
 msgid "could not write eol to '%s'"
 msgstr ""
 
-#: sequencer.c:356 sequencer.c:2128 sequencer.c:2252
+#: sequencer.c:392 sequencer.c:2351 sequencer.c:2474 sequencer.c:2488
+#: sequencer.c:2702
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr ""
 
-#: sequencer.c:379 sequencer.c:1340 sequencer.c:2148 builtin/am.c:259
-#: builtin/commit.c:722 builtin/merge.c:1047
+#: sequencer.c:415 sequencer.c:804 sequencer.c:1493 sequencer.c:2371
+#: sequencer.c:2684 sequencer.c:2788 builtin/am.c:259 builtin/commit.c:727
+#: builtin/merge.c:1046
 #, c-format
 msgid "could not read '%s'"
 msgstr ""
 
-#: sequencer.c:405
+#: sequencer.c:441
 #, c-format
 msgid "your local changes would be overwritten by %s."
 msgstr ""
 
-#: sequencer.c:409
+#: sequencer.c:445
 msgid "commit your changes or stash them to proceed."
 msgstr ""
 
-#: sequencer.c:438
+#: sequencer.c:474
 #, c-format
 msgid "%s: fast-forward"
 msgstr ""
@@ -2928,20 +3193,20 @@ msgstr ""
 #. TRANSLATORS: %s will be "revert", "cherry-pick" or
 #. "rebase -i".
 #.
-#: sequencer.c:526
+#: sequencer.c:563
 #, c-format
 msgid "%s: Unable to write new index file"
 msgstr ""
 
-#: sequencer.c:542
-msgid "could not resolve HEAD commit"
+#: sequencer.c:579
+msgid "unable to update cache tree"
 msgstr ""
 
-#: sequencer.c:562
-msgid "unable to update cache tree"
+#: sequencer.c:592
+msgid "could not resolve HEAD commit"
 msgstr ""
 
-#: sequencer.c:658
+#: sequencer.c:749
 #, c-format
 msgid ""
 "you have staged changes in your working tree\n"
@@ -2958,11 +3223,15 @@ msgid ""
 "  git rebase --continue\n"
 msgstr ""
 
-#: sequencer.c:915
+#: sequencer.c:818
+msgid "writing root commit"
+msgstr ""
+
+#: sequencer.c:1043
 msgid "'prepare-commit-msg' hook failed"
 msgstr ""
 
-#: sequencer.c:922
+#: sequencer.c:1050
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -2977,7 +3246,7 @@ msgid ""
 "    git commit --amend --reset-author\n"
 msgstr ""
 
-#: sequencer.c:935
+#: sequencer.c:1063
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -2991,321 +3260,313 @@ msgid ""
 "    git commit --amend --reset-author\n"
 msgstr ""
 
-#: sequencer.c:975
+#: sequencer.c:1103
 msgid "couldn't look up newly created commit"
 msgstr ""
 
-#: sequencer.c:977
+#: sequencer.c:1105
 msgid "could not parse newly created commit"
 msgstr ""
 
-#: sequencer.c:1023
+#: sequencer.c:1151
 msgid "unable to resolve HEAD after creating commit"
 msgstr ""
 
-#: sequencer.c:1025
+#: sequencer.c:1153
 msgid "detached HEAD"
 msgstr ""
 
-#: sequencer.c:1029
+#: sequencer.c:1157
 msgid " (root-commit)"
 msgstr ""
 
-#: sequencer.c:1050
+#: sequencer.c:1178
 msgid "could not parse HEAD"
 msgstr ""
 
-#: sequencer.c:1052
+#: sequencer.c:1180
 #, c-format
 msgid "HEAD %s is not a commit!"
 msgstr ""
 
-#: sequencer.c:1056 builtin/commit.c:1491
+#: sequencer.c:1184 builtin/commit.c:1528
 msgid "could not parse HEAD commit"
 msgstr ""
 
-#: sequencer.c:1107 sequencer.c:1673
+#: sequencer.c:1235 sequencer.c:1832
 msgid "unable to parse commit author"
 msgstr ""
 
-#: sequencer.c:1117 builtin/am.c:1630 builtin/merge.c:643
+#: sequencer.c:1245 builtin/am.c:1630 builtin/merge.c:645
 msgid "git write-tree failed to write a tree"
 msgstr ""
 
-#: sequencer.c:1134 sequencer.c:1186
+#: sequencer.c:1262 sequencer.c:1317
 #, c-format
 msgid "unable to read commit message from '%s'"
 msgstr ""
 
-#: sequencer.c:1154 builtin/am.c:1650 builtin/commit.c:1594 builtin/merge.c:826
-#: builtin/merge.c:851
+#: sequencer.c:1284 builtin/am.c:1650 builtin/commit.c:1631 builtin/merge.c:825
+#: builtin/merge.c:850
 msgid "failed to write commit object"
 msgstr ""
 
-#: sequencer.c:1213
+#: sequencer.c:1344
 #, c-format
 msgid "could not parse commit %s"
 msgstr ""
 
-#: sequencer.c:1218
+#: sequencer.c:1349
 #, c-format
 msgid "could not parse parent commit %s"
 msgstr ""
 
-#: sequencer.c:1347
-#, c-format
-msgid ""
-"unexpected 1st line of squash message:\n"
-"\n"
-"\t%.*s"
-msgstr ""
-
-#: sequencer.c:1353
-#, c-format
-msgid ""
-"invalid 1st line of squash message:\n"
-"\n"
-"\t%.*s"
-msgstr ""
-
-#: sequencer.c:1359 sequencer.c:1384
+#: sequencer.c:1500 sequencer.c:1525
 #, c-format
 msgid "This is a combination of %d commits."
 msgstr ""
 
-#: sequencer.c:1368 sequencer.c:3265
+#: sequencer.c:1510 sequencer.c:4355
 msgid "need a HEAD to fixup"
 msgstr ""
 
-#: sequencer.c:1370
+#: sequencer.c:1512 sequencer.c:2729
 msgid "could not read HEAD"
 msgstr ""
 
-#: sequencer.c:1372
+#: sequencer.c:1514
 msgid "could not read HEAD's commit message"
 msgstr ""
 
-#: sequencer.c:1378
+#: sequencer.c:1520
 #, c-format
 msgid "cannot write '%s'"
 msgstr ""
 
-#: sequencer.c:1387 git-rebase--interactive.sh:452
+#: sequencer.c:1527 git-rebase--interactive.sh:457
 msgid "This is the 1st commit message:"
 msgstr ""
 
-#: sequencer.c:1395
+#: sequencer.c:1535
 #, c-format
 msgid "could not read commit message of %s"
 msgstr ""
 
-#: sequencer.c:1402
+#: sequencer.c:1542
 #, c-format
 msgid "This is the commit message #%d:"
 msgstr ""
 
-#: sequencer.c:1407
+#: sequencer.c:1548
 #, c-format
 msgid "The commit message #%d will be skipped:"
 msgstr ""
 
-#: sequencer.c:1412
+#: sequencer.c:1553
 #, c-format
 msgid "unknown command: %d"
 msgstr ""
 
-#: sequencer.c:1479
+#: sequencer.c:1631
 msgid "your index file is unmerged."
 msgstr ""
 
-#: sequencer.c:1498
+#: sequencer.c:1638
+msgid "cannot fixup root commit"
+msgstr ""
+
+#: sequencer.c:1657
 #, c-format
 msgid "commit %s is a merge but no -m option was given."
 msgstr ""
 
-#: sequencer.c:1506
+#: sequencer.c:1665
 #, c-format
 msgid "commit %s does not have parent %d"
 msgstr ""
 
-#: sequencer.c:1510
+#: sequencer.c:1669
 #, c-format
 msgid "mainline was specified but commit %s is not a merge."
 msgstr ""
 
-#: sequencer.c:1516
+#: sequencer.c:1675
 #, c-format
 msgid "cannot get commit message for %s"
 msgstr ""
 
 #. TRANSLATORS: The first %s will be a "todo" command like
 #. "revert" or "pick", the second %s a SHA1.
-#: sequencer.c:1535
+#: sequencer.c:1694
 #, c-format
 msgid "%s: cannot parse parent commit %s"
 msgstr ""
 
-#: sequencer.c:1600 sequencer.c:2397
+#: sequencer.c:1759
 #, c-format
 msgid "could not rename '%s' to '%s'"
 msgstr ""
 
-#: sequencer.c:1654
+#: sequencer.c:1813
 #, c-format
 msgid "could not revert %s... %s"
 msgstr ""
 
-#: sequencer.c:1655
+#: sequencer.c:1814
 #, c-format
 msgid "could not apply %s... %s"
 msgstr ""
 
-#: sequencer.c:1702
+#: sequencer.c:1864
 msgid "empty commit set passed"
 msgstr ""
 
-#: sequencer.c:1712
+#: sequencer.c:1874
 #, c-format
 msgid "git %s: failed to read the index"
 msgstr ""
 
-#: sequencer.c:1718
+#: sequencer.c:1881
 #, c-format
 msgid "git %s: failed to refresh the index"
 msgstr ""
 
-#: sequencer.c:1792
+#: sequencer.c:1961
 #, c-format
 msgid "%s does not accept arguments: '%s'"
 msgstr ""
 
-#: sequencer.c:1801
+#: sequencer.c:1970
 #, c-format
 msgid "missing arguments for %s"
 msgstr ""
 
-#: sequencer.c:1844
+#: sequencer.c:2029
 #, c-format
 msgid "invalid line %d: %.*s"
 msgstr ""
 
-#: sequencer.c:1852
+#: sequencer.c:2037
 #, c-format
 msgid "cannot '%s' without a previous commit"
 msgstr ""
 
-#: sequencer.c:1883 sequencer.c:3056 sequencer.c:3091
+#: sequencer.c:2085 sequencer.c:4138 sequencer.c:4173
 #, c-format
 msgid "could not read '%s'."
 msgstr ""
 
-#: sequencer.c:1906
+#: sequencer.c:2108
 msgid "please fix this using 'git rebase --edit-todo'."
 msgstr ""
 
-#: sequencer.c:1908
+#: sequencer.c:2110
 #, c-format
 msgid "unusable instruction sheet: '%s'"
 msgstr ""
 
-#: sequencer.c:1913
+#: sequencer.c:2115
 msgid "no commits parsed."
 msgstr ""
 
-#: sequencer.c:1924
+#: sequencer.c:2126
 msgid "cannot cherry-pick during a revert."
 msgstr ""
 
-#: sequencer.c:1926
+#: sequencer.c:2128
 msgid "cannot revert during a cherry-pick."
 msgstr ""
 
-#: sequencer.c:1993
+#: sequencer.c:2195
 #, c-format
 msgid "invalid key: %s"
 msgstr ""
 
-#: sequencer.c:1996
+#: sequencer.c:2198
 #, c-format
 msgid "invalid value for %s: %s"
 msgstr ""
 
-#: sequencer.c:2062
+#: sequencer.c:2269
+msgid "unusable squash-onto"
+msgstr ""
+
+#: sequencer.c:2285
 #, c-format
 msgid "malformed options sheet: '%s'"
 msgstr ""
 
-#: sequencer.c:2100
+#: sequencer.c:2323
 msgid "a cherry-pick or revert is already in progress"
 msgstr ""
 
-#: sequencer.c:2101
+#: sequencer.c:2324
 msgid "try \"git cherry-pick (--continue | --quit | --abort)\""
 msgstr ""
 
-#: sequencer.c:2104
+#: sequencer.c:2327
 #, c-format
 msgid "could not create sequencer directory '%s'"
 msgstr ""
 
-#: sequencer.c:2118
+#: sequencer.c:2341
 msgid "could not lock HEAD"
 msgstr ""
 
-#: sequencer.c:2173 sequencer.c:2761
+#: sequencer.c:2396 sequencer.c:3403
 msgid "no cherry-pick or revert in progress"
 msgstr ""
 
-#: sequencer.c:2175
+#: sequencer.c:2398
 msgid "cannot resolve HEAD"
 msgstr ""
 
-#: sequencer.c:2177 sequencer.c:2212
+#: sequencer.c:2400 sequencer.c:2435
 msgid "cannot abort from a branch yet to be born"
 msgstr ""
 
-#: sequencer.c:2198 builtin/grep.c:720
+#: sequencer.c:2421 builtin/grep.c:720
 #, c-format
 msgid "cannot open '%s'"
 msgstr ""
 
-#: sequencer.c:2200
+#: sequencer.c:2423
 #, c-format
 msgid "cannot read '%s': %s"
 msgstr ""
 
-#: sequencer.c:2201
+#: sequencer.c:2424
 msgid "unexpected end of file"
 msgstr ""
 
-#: sequencer.c:2207
+#: sequencer.c:2430
 #, c-format
 msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
 msgstr ""
 
-#: sequencer.c:2218
+#: sequencer.c:2441
 msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
 msgstr ""
 
-#: sequencer.c:2324 sequencer.c:2679
+#: sequencer.c:2545 sequencer.c:3321
 #, c-format
 msgid "could not update %s"
 msgstr ""
 
-#: sequencer.c:2362 sequencer.c:2659
+#: sequencer.c:2583 sequencer.c:3301
 msgid "cannot read HEAD"
 msgstr ""
 
-#: sequencer.c:2402 builtin/difftool.c:639
+#: sequencer.c:2618 sequencer.c:2622 builtin/difftool.c:639
 #, c-format
 msgid "could not copy '%s' to '%s'"
 msgstr ""
 
-#: sequencer.c:2421
+#: sequencer.c:2641
 msgid "could not read index"
 msgstr ""
 
-#: sequencer.c:2426
+#: sequencer.c:2646
 #, c-format
 msgid ""
 "execution failed: %s\n"
@@ -3315,11 +3576,11 @@ msgid ""
 "\n"
 msgstr ""
 
-#: sequencer.c:2432
+#: sequencer.c:2652
 msgid "and made changes to the index and/or the working tree\n"
 msgstr ""
 
-#: sequencer.c:2438
+#: sequencer.c:2658
 #, c-format
 msgid ""
 "execution succeeded: %s\n"
@@ -3330,17 +3591,62 @@ msgid ""
 "\n"
 msgstr ""
 
-#: sequencer.c:2497
+#: sequencer.c:2771
+msgid "writing fake root commit"
+msgstr ""
+
+#: sequencer.c:2776
+msgid "writing squash-onto"
+msgstr ""
+
+#: sequencer.c:2811
+#, c-format
+msgid "failed to find tree of %s"
+msgstr ""
+
+#: sequencer.c:2829
+msgid "could not write index"
+msgstr ""
+
+#: sequencer.c:2861
+msgid "cannot merge without a current revision"
+msgstr ""
+
+#: sequencer.c:2884
+#, c-format
+msgid "could not resolve '%s'"
+msgstr ""
+
+#: sequencer.c:2906
+#, c-format
+msgid "could not get commit message of '%s'"
+msgstr ""
+
+#: sequencer.c:2916 sequencer.c:2941
+#, c-format
+msgid "could not write '%s'"
+msgstr ""
+
+#: sequencer.c:3005
+#, c-format
+msgid "could not even attempt to merge '%.*s'"
+msgstr ""
+
+#: sequencer.c:3021
+msgid "merge: Unable to write new index file"
+msgstr ""
+
+#: sequencer.c:3088
 #, c-format
 msgid "Applied autostash.\n"
 msgstr ""
 
-#: sequencer.c:2509
+#: sequencer.c:3100
 #, c-format
 msgid "cannot store %s"
 msgstr ""
 
-#: sequencer.c:2512 git-rebase.sh:178
+#: sequencer.c:3103 git-rebase.sh:188
 #, c-format
 msgid ""
 "Applying autostash resulted in conflicts.\n"
@@ -3348,103 +3654,121 @@ msgid ""
 "You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
 msgstr ""
 
-#: sequencer.c:2595
+#: sequencer.c:3134
+#, c-format
+msgid ""
+"Could not execute the todo command\n"
+"\n"
+"    %.*s\n"
+"It has been rescheduled; To edit the command before continuing, please\n"
+"edit the todo list first:\n"
+"\n"
+"    git rebase --edit-todo\n"
+"    git rebase --continue\n"
+msgstr ""
+
+#: sequencer.c:3202
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
 msgstr ""
 
-#: sequencer.c:2637
+#: sequencer.c:3264
 #, c-format
 msgid "unknown command %d"
 msgstr ""
 
-#: sequencer.c:2667
+#: sequencer.c:3309
 msgid "could not read orig-head"
 msgstr ""
 
-#: sequencer.c:2672 sequencer.c:3262
+#: sequencer.c:3314 sequencer.c:4352
 msgid "could not read 'onto'"
 msgstr ""
 
-#: sequencer.c:2686
+#: sequencer.c:3328
 #, c-format
 msgid "could not update HEAD to %s"
 msgstr ""
 
-#: sequencer.c:2770
+#: sequencer.c:3414
 msgid "cannot rebase: You have unstaged changes."
 msgstr ""
 
-#: sequencer.c:2775
-msgid "could not remove CHERRY_PICK_HEAD"
-msgstr ""
-
-#: sequencer.c:2784
+#: sequencer.c:3423
 msgid "cannot amend non-existing commit"
 msgstr ""
 
-#: sequencer.c:2786
+#: sequencer.c:3425
 #, c-format
 msgid "invalid file: '%s'"
 msgstr ""
 
-#: sequencer.c:2788
+#: sequencer.c:3427
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr ""
 
-#: sequencer.c:2791
+#: sequencer.c:3430
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
 "first and then run 'git rebase --continue' again."
 msgstr ""
 
-#: sequencer.c:2801
+#: sequencer.c:3455 sequencer.c:3493
+#, c-format
+msgid "could not write file: '%s'"
+msgstr ""
+
+#: sequencer.c:3508
+msgid "could not remove CHERRY_PICK_HEAD"
+msgstr ""
+
+#: sequencer.c:3515
 msgid "could not commit staged changes."
 msgstr ""
 
-#: sequencer.c:2881
+#: sequencer.c:3612
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr ""
 
-#: sequencer.c:2885
+#: sequencer.c:3616
 #, c-format
 msgid "%s: bad revision"
 msgstr ""
 
-#: sequencer.c:2918
+#: sequencer.c:3649
 msgid "can't revert as initial commit"
 msgstr ""
 
-#: sequencer.c:3023
+#: sequencer.c:4098
 msgid "make_script: unhandled options"
 msgstr ""
 
-#: sequencer.c:3026
+#: sequencer.c:4101
 msgid "make_script: error preparing revisions"
 msgstr ""
 
-#: sequencer.c:3060 sequencer.c:3095
+#: sequencer.c:4142 sequencer.c:4177
 #, c-format
 msgid "unusable todo list: '%s'"
 msgstr ""
 
-#: sequencer.c:3146
+#: sequencer.c:4236
 #, c-format
 msgid ""
 "unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
 msgstr ""
 
-#: sequencer.c:3212
+#: sequencer.c:4302
 #, c-format
 msgid ""
 "Warning: some commits may have been dropped accidentally.\n"
 "Dropped commits (newer to older):\n"
 msgstr ""
 
-#: sequencer.c:3219
+#: sequencer.c:4309
 #, c-format
 msgid ""
 "To avoid this message, use \"drop\" to explicitly remove a commit.\n"
@@ -3455,7 +3779,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: sequencer.c:3231
+#: sequencer.c:4321
 #, c-format
 msgid ""
 "You can fix this with 'git rebase --edit-todo' and then run 'git rebase --"
@@ -3463,34 +3787,28 @@ msgid ""
 "Or you can abort the rebase with 'git rebase --abort'.\n"
 msgstr ""
 
-#: sequencer.c:3244 sequencer.c:3304 wrapper.c:225 wrapper.c:395
-#: builtin/am.c:779
-#, c-format
-msgid "could not open '%s' for writing"
-msgstr ""
-
-#: sequencer.c:3285
+#: sequencer.c:4375
 #, c-format
 msgid "could not parse commit '%s'"
 msgstr ""
 
-#: sequencer.c:3401
+#: sequencer.c:4490
 msgid "the script was already rearranged."
 msgstr ""
 
-#: setup.c:122
+#: setup.c:123
 #, c-format
 msgid "'%s' is outside repository"
 msgstr ""
 
-#: setup.c:171
+#: setup.c:172
 #, c-format
 msgid ""
 "%s: no such path in the working tree.\n"
 "Use 'git <command> -- <path>...' to specify paths that do not exist locally."
 msgstr ""
 
-#: setup.c:184
+#: setup.c:185
 #, c-format
 msgid ""
 "ambiguous argument '%s': unknown revision or path not in the working tree.\n"
@@ -3498,12 +3816,12 @@ msgid ""
 "'git <command> [<revision>...] -- [<file>...]'"
 msgstr ""
 
-#: setup.c:233
+#: setup.c:234
 #, c-format
 msgid "option '%s' must come before non-option arguments"
 msgstr ""
 
-#: setup.c:252
+#: setup.c:253
 #, c-format
 msgid ""
 "ambiguous argument '%s': both revision and filename\n"
@@ -3511,152 +3829,152 @@ msgid ""
 "'git <command> [<revision>...] -- [<file>...]'"
 msgstr ""
 
-#: setup.c:388
+#: setup.c:389
 msgid "unable to set up work tree using invalid config"
 msgstr ""
 
-#: setup.c:395
+#: setup.c:393
 msgid "this operation must be run in a work tree"
 msgstr ""
 
-#: setup.c:506
+#: setup.c:503
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr ""
 
-#: setup.c:514
+#: setup.c:511
 msgid "unknown repository extensions found:"
 msgstr ""
 
-#: setup.c:533
+#: setup.c:530
 #, c-format
 msgid "error opening '%s'"
 msgstr ""
 
-#: setup.c:535
+#: setup.c:532
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr ""
 
-#: setup.c:537
+#: setup.c:534
 #, c-format
 msgid "error reading %s"
 msgstr ""
 
-#: setup.c:539
+#: setup.c:536
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr ""
 
-#: setup.c:541
+#: setup.c:538
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr ""
 
-#: setup.c:543
+#: setup.c:540
 #, c-format
 msgid "not a git repository: %s"
 msgstr ""
 
-#: setup.c:642
+#: setup.c:639
 #, c-format
 msgid "'$%s' too big"
 msgstr ""
 
-#: setup.c:656
+#: setup.c:653
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr ""
 
-#: setup.c:685 setup.c:687 setup.c:718
+#: setup.c:682 setup.c:684 setup.c:715
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr ""
 
-#: setup.c:690 setup.c:746 setup.c:756 setup.c:795 setup.c:803 setup.c:818
+#: setup.c:687 setup.c:743 setup.c:753 setup.c:792 setup.c:800 setup.c:815
 msgid "cannot come back to cwd"
 msgstr ""
 
-#: setup.c:816
+#: setup.c:813
 #, c-format
 msgid "not a git repository (or any of the parent directories): %s"
 msgstr ""
 
-#: setup.c:827
+#: setup.c:824
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr ""
 
-#: setup.c:1057
+#: setup.c:1054
 msgid "Unable to read current working directory"
 msgstr ""
 
-#: setup.c:1069 setup.c:1075
+#: setup.c:1066 setup.c:1072
 #, c-format
 msgid "cannot change to '%s'"
 msgstr ""
 
-#: setup.c:1088
+#: setup.c:1085
 #, 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:1172
+#: setup.c:1168
 #, 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:1215
+#: setup.c:1211
 msgid "open /dev/null or dup failed"
 msgstr ""
 
-#: setup.c:1230
+#: setup.c:1226
 msgid "fork failed"
 msgstr ""
 
-#: setup.c:1235
+#: setup.c:1231
 msgid "setsid failed"
 msgstr ""
 
-#: sha1_file.c:592
+#: sha1-file.c:625
 #, c-format
 msgid "path '%s' does not exist"
 msgstr ""
 
-#: sha1_file.c:618
+#: sha1-file.c:651
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr ""
 
-#: sha1_file.c:624
+#: sha1-file.c:657
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr ""
 
-#: sha1_file.c:630
+#: sha1-file.c:663
 #, c-format
 msgid "reference repository '%s' is shallow"
 msgstr ""
 
-#: sha1_file.c:638
+#: sha1-file.c:671
 #, c-format
 msgid "reference repository '%s' is grafted"
 msgstr ""
 
-#: sha1_name.c:422
+#: sha1-name.c:442
 #, c-format
 msgid "short SHA1 %s is ambiguous"
 msgstr ""
 
-#: sha1_name.c:433
+#: sha1-name.c:453
 msgid "The candidates are:"
 msgstr ""
 
-#: sha1_name.c:693
+#: sha1-name.c:695
 msgid ""
 "Git normally never creates a ref that ends with 40 hex characters\n"
 "because it will be ignored when you just specify 40-hex. These refs\n"
@@ -3669,86 +3987,86 @@ msgid ""
 "running \"git config advice.objectNameWarning false\""
 msgstr ""
 
-#: submodule.c:96 submodule.c:130
+#: submodule.c:97 submodule.c:131
 msgid "Cannot change unmerged .gitmodules, resolve merge conflicts first"
 msgstr ""
 
-#: submodule.c:100 submodule.c:134
+#: submodule.c:101 submodule.c:135
 #, c-format
 msgid "Could not find section in .gitmodules where path=%s"
 msgstr ""
 
-#: submodule.c:108
+#: submodule.c:109
 #, c-format
 msgid "Could not update .gitmodules entry %s"
 msgstr ""
 
-#: submodule.c:141
+#: submodule.c:142
 #, c-format
 msgid "Could not remove .gitmodules entry for %s"
 msgstr ""
 
-#: submodule.c:152
+#: submodule.c:153
 msgid "staging updated .gitmodules failed"
 msgstr ""
 
-#: submodule.c:312
+#: submodule.c:315
 #, c-format
 msgid "in unpopulated submodule '%s'"
 msgstr ""
 
-#: submodule.c:343
+#: submodule.c:346
 #, c-format
 msgid "Pathspec '%s' is in submodule '%.*s'"
 msgstr ""
 
-#: submodule.c:833
+#: submodule.c:837
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr ""
 
-#: submodule.c:1065 builtin/branch.c:648 builtin/submodule--helper.c:1724
+#: submodule.c:1069 builtin/branch.c:651 builtin/submodule--helper.c:1743
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr ""
 
-#: submodule.c:1370
+#: submodule.c:1375
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr ""
 
-#: submodule.c:1508
+#: submodule.c:1513
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr ""
 
-#: submodule.c:1521
+#: submodule.c:1526
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr ""
 
-#: submodule.c:1614
+#: submodule.c:1619
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr ""
 
-#: submodule.c:1878
+#: submodule.c:1718
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
 msgstr ""
 
-#: submodule.c:1890 submodule.c:1946
+#: submodule.c:1730 submodule.c:1786
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr ""
 
-#: submodule.c:1894 builtin/submodule--helper.c:1246
-#: builtin/submodule--helper.c:1256
+#: submodule.c:1734 builtin/submodule--helper.c:1261
+#: builtin/submodule--helper.c:1271
 #, c-format
 msgid "could not create directory '%s'"
 msgstr ""
 
-#: submodule.c:1897
+#: submodule.c:1737
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -3756,29 +4074,30 @@ msgid ""
 "'%s'\n"
 msgstr ""
 
-#: submodule.c:1981
+#: submodule.c:1821
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr ""
 
-#: submodule.c:2025
+#: submodule.c:1865
 msgid "could not start ls-files in .."
 msgstr ""
 
-#: submodule.c:2045
-msgid "BUG: returned path string doesn't match cwd?"
+#: submodule.c:1904
+#, c-format
+msgid "ls-tree returned unexpected return code %d"
 msgstr ""
 
-#: submodule.c:2064
+#: submodule-config.c:230
 #, c-format
-msgid "ls-tree returned unexpected return code %d"
+msgid "ignoring suspicious submodule name: %s"
 msgstr ""
 
-#: submodule-config.c:263
+#: submodule-config.c:294
 msgid "negative values not allowed for submodule.fetchjobs"
 msgstr ""
 
-#: submodule-config.c:436
+#: submodule-config.c:467
 #, c-format
 msgid "invalid value for %s"
 msgstr ""
@@ -3794,7 +4113,7 @@ msgstr ""
 msgid "unknown value '%s' for key '%s'"
 msgstr ""
 
-#: trailer.c:539 trailer.c:544 builtin/remote.c:290
+#: trailer.c:539 trailer.c:544 builtin/remote.c:293
 #, c-format
 msgid "more than one %s"
 msgstr ""
@@ -3837,24 +4156,28 @@ msgstr ""
 msgid "could not rename temporary file to %s"
 msgstr ""
 
-#: transport.c:63
+#: transport.c:116
 #, c-format
 msgid "Would set upstream of '%s' to '%s' of '%s'\n"
 msgstr ""
 
-#: transport.c:152
+#: transport.c:208
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr ""
 
-#: transport.c:916
+#: transport.c:584
+msgid "could not parse transport.color.* config"
+msgstr ""
+
+#: transport.c:996
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
 "not be found on any remote:\n"
 msgstr ""
 
-#: transport.c:920
+#: transport.c:1000
 #, c-format
 msgid ""
 "\n"
@@ -3870,11 +4193,11 @@ msgid ""
 "\n"
 msgstr ""
 
-#: transport.c:928
+#: transport.c:1008
 msgid "Aborting."
 msgstr ""
 
-#: transport-helper.c:1079
+#: transport-helper.c:1087
 #, c-format
 msgid "Could not read ref %s"
 msgstr ""
@@ -3891,102 +4214,102 @@ msgstr ""
 msgid "empty filename in tree entry"
 msgstr ""
 
-#: tree-walk.c:114
+#: tree-walk.c:113
 msgid "too-short tree file"
 msgstr ""
 
-#: unpack-trees.c:108
+#: unpack-trees.c:111
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by checkout:\n"
 "%%sPlease commit your changes or stash them before you switch branches."
 msgstr ""
 
-#: unpack-trees.c:110
+#: unpack-trees.c:113
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by checkout:\n"
 "%%s"
 msgstr ""
 
-#: unpack-trees.c:113
+#: unpack-trees.c:116
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
 "%%sPlease commit your changes or stash them before you merge."
 msgstr ""
 
-#: unpack-trees.c:115
+#: unpack-trees.c:118
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
 "%%s"
 msgstr ""
 
-#: unpack-trees.c:118
+#: unpack-trees.c:121
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by %s:\n"
 "%%sPlease commit your changes or stash them before you %s."
 msgstr ""
 
-#: unpack-trees.c:120
+#: unpack-trees.c:123
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by %s:\n"
 "%%s"
 msgstr ""
 
-#: unpack-trees.c:125
+#: unpack-trees.c:128
 #, c-format
 msgid ""
 "Updating the following directories would lose untracked files in them:\n"
 "%s"
 msgstr ""
 
-#: unpack-trees.c:129
+#: unpack-trees.c:132
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by checkout:\n"
 "%%sPlease move or remove them before you switch branches."
 msgstr ""
 
-#: unpack-trees.c:131
+#: unpack-trees.c:134
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by checkout:\n"
 "%%s"
 msgstr ""
 
-#: unpack-trees.c:134
+#: unpack-trees.c:137
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by merge:\n"
 "%%sPlease move or remove them before you merge."
 msgstr ""
 
-#: unpack-trees.c:136
+#: unpack-trees.c:139
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by merge:\n"
 "%%s"
 msgstr ""
 
-#: unpack-trees.c:139
+#: unpack-trees.c:142
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by %s:\n"
 "%%sPlease move or remove them before you %s."
 msgstr ""
 
-#: unpack-trees.c:141
+#: unpack-trees.c:144
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by %s:\n"
 "%%s"
 msgstr ""
 
-#: unpack-trees.c:146
+#: unpack-trees.c:150
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by "
@@ -3994,7 +4317,7 @@ msgid ""
 "%%sPlease move or remove them before you switch branches."
 msgstr ""
 
-#: unpack-trees.c:148
+#: unpack-trees.c:152
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by "
@@ -4002,47 +4325,47 @@ msgid ""
 "%%s"
 msgstr ""
 
-#: unpack-trees.c:151
+#: unpack-trees.c:155
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by merge:\n"
 "%%sPlease move or remove them before you merge."
 msgstr ""
 
-#: unpack-trees.c:153
+#: unpack-trees.c:157
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by merge:\n"
 "%%s"
 msgstr ""
 
-#: unpack-trees.c:156
+#: unpack-trees.c:160
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by %s:\n"
 "%%sPlease move or remove them before you %s."
 msgstr ""
 
-#: unpack-trees.c:158
+#: unpack-trees.c:162
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by %s:\n"
 "%%s"
 msgstr ""
 
-#: unpack-trees.c:165
+#: unpack-trees.c:170
 #, c-format
 msgid "Entry '%s' overlaps with '%s'.  Cannot bind."
 msgstr ""
 
-#: unpack-trees.c:168
+#: unpack-trees.c:173
 #, c-format
 msgid ""
 "Cannot update sparse checkout: the following entries are not up to date:\n"
 "%s"
 msgstr ""
 
-#: unpack-trees.c:170
+#: unpack-trees.c:175
 #, c-format
 msgid ""
 "The following working tree files would be overwritten by sparse checkout "
@@ -4050,7 +4373,7 @@ msgid ""
 "%s"
 msgstr ""
 
-#: unpack-trees.c:172
+#: unpack-trees.c:177
 #, c-format
 msgid ""
 "The following working tree files would be removed by sparse checkout "
@@ -4058,19 +4381,19 @@ msgid ""
 "%s"
 msgstr ""
 
-#: unpack-trees.c:174
+#: unpack-trees.c:179
 #, c-format
 msgid ""
 "Cannot update submodule:\n"
 "%s"
 msgstr ""
 
-#: unpack-trees.c:251
+#: unpack-trees.c:262
 #, c-format
 msgid "Aborting\n"
 msgstr ""
 
-#: unpack-trees.c:333
+#: unpack-trees.c:344
 msgid "Checking out files"
 msgstr ""
 
@@ -4139,7 +4462,7 @@ msgid "could not open '%s' for reading and writing"
 msgstr ""
 
 #: wrapper.c:227 wrapper.c:397 builtin/am.c:320 builtin/am.c:770
-#: builtin/am.c:862 builtin/merge.c:1044
+#: builtin/am.c:862 builtin/merge.c:1043
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr ""
@@ -4153,374 +4476,374 @@ msgstr ""
 msgid "unable to get current working directory"
 msgstr ""
 
-#: wt-status.c:151
+#: wt-status.c:154
 msgid "Unmerged paths:"
 msgstr ""
 
-#: wt-status.c:178 wt-status.c:205
+#: wt-status.c:181 wt-status.c:208
 #, c-format
 msgid "  (use \"git reset %s <file>...\" to unstage)"
 msgstr ""
 
-#: wt-status.c:180 wt-status.c:207
+#: wt-status.c:183 wt-status.c:210
 msgid "  (use \"git rm --cached <file>...\" to unstage)"
 msgstr ""
 
-#: wt-status.c:184
+#: wt-status.c:187
 msgid "  (use \"git add <file>...\" to mark resolution)"
 msgstr ""
 
-#: wt-status.c:186 wt-status.c:190
+#: wt-status.c:189 wt-status.c:193
 msgid "  (use \"git add/rm <file>...\" as appropriate to mark resolution)"
 msgstr ""
 
-#: wt-status.c:188
+#: wt-status.c:191
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr ""
 
-#: wt-status.c:199 wt-status.c:1007
+#: wt-status.c:202 wt-status.c:1015
 msgid "Changes to be committed:"
 msgstr ""
 
-#: wt-status.c:217 wt-status.c:1016
+#: wt-status.c:220 wt-status.c:1024
 msgid "Changes not staged for commit:"
 msgstr ""
 
-#: wt-status.c:221
+#: wt-status.c:224
 msgid "  (use \"git add <file>...\" to update what will be committed)"
 msgstr ""
 
-#: wt-status.c:223
+#: wt-status.c:226
 msgid "  (use \"git add/rm <file>...\" to update what will be committed)"
 msgstr ""
 
-#: wt-status.c:224
+#: wt-status.c:227
 msgid ""
 "  (use \"git checkout -- <file>...\" to discard changes in working directory)"
 msgstr ""
 
-#: wt-status.c:226
+#: wt-status.c:229
 msgid "  (commit or discard the untracked or modified content in submodules)"
 msgstr ""
 
-#: wt-status.c:238
+#: wt-status.c:241
 #, c-format
 msgid "  (use \"git %s <file>...\" to include in what will be committed)"
 msgstr ""
 
-#: wt-status.c:253
+#: wt-status.c:256
 msgid "both deleted:"
 msgstr ""
 
-#: wt-status.c:255
+#: wt-status.c:258
 msgid "added by us:"
 msgstr ""
 
-#: wt-status.c:257
+#: wt-status.c:260
 msgid "deleted by them:"
 msgstr ""
 
-#: wt-status.c:259
+#: wt-status.c:262
 msgid "added by them:"
 msgstr ""
 
-#: wt-status.c:261
+#: wt-status.c:264
 msgid "deleted by us:"
 msgstr ""
 
-#: wt-status.c:263
+#: wt-status.c:266
 msgid "both added:"
 msgstr ""
 
-#: wt-status.c:265
+#: wt-status.c:268
 msgid "both modified:"
 msgstr ""
 
-#: wt-status.c:275
+#: wt-status.c:278
 msgid "new file:"
 msgstr ""
 
-#: wt-status.c:277
+#: wt-status.c:280
 msgid "copied:"
 msgstr ""
 
-#: wt-status.c:279
+#: wt-status.c:282
 msgid "deleted:"
 msgstr ""
 
-#: wt-status.c:281
+#: wt-status.c:284
 msgid "modified:"
 msgstr ""
 
-#: wt-status.c:283
+#: wt-status.c:286
 msgid "renamed:"
 msgstr ""
 
-#: wt-status.c:285
+#: wt-status.c:288
 msgid "typechange:"
 msgstr ""
 
-#: wt-status.c:287
+#: wt-status.c:290
 msgid "unknown:"
 msgstr ""
 
-#: wt-status.c:289
+#: wt-status.c:292
 msgid "unmerged:"
 msgstr ""
 
-#: wt-status.c:369
+#: wt-status.c:372
 msgid "new commits, "
 msgstr ""
 
-#: wt-status.c:371
+#: wt-status.c:374
 msgid "modified content, "
 msgstr ""
 
-#: wt-status.c:373
+#: wt-status.c:376
 msgid "untracked content, "
 msgstr ""
 
-#: wt-status.c:847
+#: wt-status.c:853
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] ""
 msgstr[1] ""
 
-#: wt-status.c:879
+#: wt-status.c:885
 msgid "Submodules changed but not updated:"
 msgstr ""
 
-#: wt-status.c:881
+#: wt-status.c:887
 msgid "Submodule changes to be committed:"
 msgstr ""
 
-#: wt-status.c:963
+#: wt-status.c:969
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
 msgstr ""
 
-#: wt-status.c:1076
+#: wt-status.c:1084
 msgid "You have unmerged paths."
 msgstr ""
 
-#: wt-status.c:1079
+#: wt-status.c:1087
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr ""
 
-#: wt-status.c:1081
+#: wt-status.c:1089
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr ""
 
-#: wt-status.c:1086
+#: wt-status.c:1094
 msgid "All conflicts fixed but you are still merging."
 msgstr ""
 
-#: wt-status.c:1089
+#: wt-status.c:1097
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr ""
 
-#: wt-status.c:1099
+#: wt-status.c:1107
 msgid "You are in the middle of an am session."
 msgstr ""
 
-#: wt-status.c:1102
+#: wt-status.c:1110
 msgid "The current patch is empty."
 msgstr ""
 
-#: wt-status.c:1106
+#: wt-status.c:1114
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr ""
 
-#: wt-status.c:1108
+#: wt-status.c:1116
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr ""
 
-#: wt-status.c:1110
+#: wt-status.c:1118
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr ""
 
-#: wt-status.c:1242
+#: wt-status.c:1250
 msgid "git-rebase-todo is missing."
 msgstr ""
 
-#: wt-status.c:1244
+#: wt-status.c:1252
 msgid "No commands done."
 msgstr ""
 
-#: wt-status.c:1247
+#: wt-status.c:1255
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] ""
 msgstr[1] ""
 
-#: wt-status.c:1258
+#: wt-status.c:1266
 #, c-format
 msgid "  (see more in file %s)"
 msgstr ""
 
-#: wt-status.c:1263
+#: wt-status.c:1271
 msgid "No commands remaining."
 msgstr ""
 
-#: wt-status.c:1266
+#: wt-status.c:1274
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
 msgstr[0] ""
 msgstr[1] ""
 
-#: wt-status.c:1274
+#: wt-status.c:1282
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr ""
 
-#: wt-status.c:1287
+#: wt-status.c:1295
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr ""
 
-#: wt-status.c:1292
+#: wt-status.c:1300
 msgid "You are currently rebasing."
 msgstr ""
 
-#: wt-status.c:1306
+#: wt-status.c:1314
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr ""
 
-#: wt-status.c:1308
+#: wt-status.c:1316
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr ""
 
-#: wt-status.c:1310
+#: wt-status.c:1318
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr ""
 
-#: wt-status.c:1316
+#: wt-status.c:1324
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr ""
 
-#: wt-status.c:1320
+#: wt-status.c:1328
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 
-#: wt-status.c:1325
+#: wt-status.c:1333
 msgid "You are currently splitting a commit during a rebase."
 msgstr ""
 
-#: wt-status.c:1328
+#: wt-status.c:1336
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr ""
 
-#: wt-status.c:1332
+#: wt-status.c:1340
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 
-#: wt-status.c:1337
+#: wt-status.c:1345
 msgid "You are currently editing a commit during a rebase."
 msgstr ""
 
-#: wt-status.c:1340
+#: wt-status.c:1348
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr ""
 
-#: wt-status.c:1342
+#: wt-status.c:1350
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr ""
 
-#: wt-status.c:1352
+#: wt-status.c:1360
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr ""
 
-#: wt-status.c:1357
+#: wt-status.c:1365
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr ""
 
-#: wt-status.c:1360
+#: wt-status.c:1368
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr ""
 
-#: wt-status.c:1362
+#: wt-status.c:1370
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr ""
 
-#: wt-status.c:1371
+#: wt-status.c:1379
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr ""
 
-#: wt-status.c:1376
+#: wt-status.c:1384
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr ""
 
-#: wt-status.c:1379
+#: wt-status.c:1387
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr ""
 
-#: wt-status.c:1381
+#: wt-status.c:1389
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr ""
 
-#: wt-status.c:1392
+#: wt-status.c:1400
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr ""
 
-#: wt-status.c:1396
+#: wt-status.c:1404
 msgid "You are currently bisecting."
 msgstr ""
 
-#: wt-status.c:1399
+#: wt-status.c:1407
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr ""
 
-#: wt-status.c:1596
+#: wt-status.c:1604
 msgid "On branch "
 msgstr ""
 
-#: wt-status.c:1602
+#: wt-status.c:1610
 msgid "interactive rebase in progress; onto "
 msgstr ""
 
-#: wt-status.c:1604
+#: wt-status.c:1612
 msgid "rebase in progress; onto "
 msgstr ""
 
-#: wt-status.c:1609
+#: wt-status.c:1617
 msgid "HEAD detached at "
 msgstr ""
 
-#: wt-status.c:1611
+#: wt-status.c:1619
 msgid "HEAD detached from "
 msgstr ""
 
-#: wt-status.c:1614
+#: wt-status.c:1622
 msgid "Not currently on any branch."
 msgstr ""
 
-#: wt-status.c:1634
+#: wt-status.c:1642
 msgid "Initial commit"
 msgstr ""
 
-#: wt-status.c:1635
+#: wt-status.c:1643
 msgid "No commits yet"
 msgstr ""
 
-#: wt-status.c:1649
+#: wt-status.c:1657
 msgid "Untracked files"
 msgstr ""
 
-#: wt-status.c:1651
+#: wt-status.c:1659
 msgid "Ignored files"
 msgstr ""
 
-#: wt-status.c:1655
+#: wt-status.c:1663
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -4528,97 +4851,97 @@ msgid ""
 "new files yourself (see 'git help status')."
 msgstr ""
 
-#: wt-status.c:1661
+#: wt-status.c:1669
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr ""
 
-#: wt-status.c:1663
+#: wt-status.c:1671
 msgid " (use -u option to show untracked files)"
 msgstr ""
 
-#: wt-status.c:1669
+#: wt-status.c:1677
 msgid "No changes"
 msgstr ""
 
-#: wt-status.c:1674
+#: wt-status.c:1682
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr ""
 
-#: wt-status.c:1677
+#: wt-status.c:1685
 #, c-format
 msgid "no changes added to commit\n"
 msgstr ""
 
-#: wt-status.c:1680
+#: wt-status.c:1688
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
 "track)\n"
 msgstr ""
 
-#: wt-status.c:1683
+#: wt-status.c:1691
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr ""
 
-#: wt-status.c:1686
+#: wt-status.c:1694
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr ""
 
-#: wt-status.c:1689 wt-status.c:1694
+#: wt-status.c:1697 wt-status.c:1702
 #, c-format
 msgid "nothing to commit\n"
 msgstr ""
 
-#: wt-status.c:1692
+#: wt-status.c:1700
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr ""
 
-#: wt-status.c:1696
+#: wt-status.c:1704
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr ""
 
-#: wt-status.c:1809
+#: wt-status.c:1817
 msgid "No commits yet on "
 msgstr ""
 
-#: wt-status.c:1813
+#: wt-status.c:1821
 msgid "HEAD (no branch)"
 msgstr ""
 
-#: wt-status.c:1844
+#: wt-status.c:1852
 msgid "different"
 msgstr ""
 
-#: wt-status.c:1846 wt-status.c:1854
+#: wt-status.c:1854 wt-status.c:1862
 msgid "behind "
 msgstr ""
 
-#: wt-status.c:1849 wt-status.c:1852
+#: wt-status.c:1857 wt-status.c:1860
 msgid "ahead "
 msgstr ""
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2358
+#: wt-status.c:2366
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr ""
 
-#: wt-status.c:2364
+#: wt-status.c:2372
 msgid "additionally, your index contains uncommitted changes."
 msgstr ""
 
-#: wt-status.c:2366
+#: wt-status.c:2374
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr ""
 
-#: compat/precompose_utf8.c:58 builtin/clone.c:440
+#: compat/precompose_utf8.c:58 builtin/clone.c:442
 #, c-format
 msgid "failed to unlink '%s'"
 msgstr ""
@@ -4632,7 +4955,7 @@ msgstr ""
 msgid "unexpected diff status %c"
 msgstr ""
 
-#: builtin/add.c:88 builtin/commit.c:257
+#: builtin/add.c:88 builtin/commit.c:266
 msgid "updating files failed"
 msgstr ""
 
@@ -4645,7 +4968,7 @@ msgstr ""
 msgid "Unstaged changes after refreshing the index:"
 msgstr ""
 
-#: builtin/add.c:233 builtin/rev-parse.c:888
+#: builtin/add.c:233 builtin/rev-parse.c:892
 msgid "Could not read the index"
 msgstr ""
 
@@ -4676,77 +4999,77 @@ msgstr ""
 msgid "Could not apply '%s'"
 msgstr ""
 
-#: builtin/add.c:271
+#: builtin/add.c:269
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr ""
 
-#: builtin/add.c:291 builtin/clean.c:911 builtin/fetch.c:146 builtin/mv.c:124
-#: builtin/prune-packed.c:55 builtin/pull.c:207 builtin/push.c:541
-#: builtin/remote.c:1333 builtin/rm.c:242 builtin/send-pack.c:164
+#: builtin/add.c:289 builtin/clean.c:911 builtin/fetch.c:145 builtin/mv.c:123
+#: builtin/prune-packed.c:55 builtin/pull.c:212 builtin/push.c:557
+#: builtin/remote.c:1342 builtin/rm.c:240 builtin/send-pack.c:165
 msgid "dry run"
 msgstr ""
 
-#: builtin/add.c:294
+#: builtin/add.c:292
 msgid "interactive picking"
 msgstr ""
 
-#: builtin/add.c:295 builtin/checkout.c:1128 builtin/reset.c:302
+#: builtin/add.c:293 builtin/checkout.c:1135 builtin/reset.c:302
 msgid "select hunks interactively"
 msgstr ""
 
-#: builtin/add.c:296
+#: builtin/add.c:294
 msgid "edit current diff and apply"
 msgstr ""
 
-#: builtin/add.c:297
+#: builtin/add.c:295
 msgid "allow adding otherwise ignored files"
 msgstr ""
 
-#: builtin/add.c:298
+#: builtin/add.c:296
 msgid "update tracked files"
 msgstr ""
 
-#: builtin/add.c:299
+#: builtin/add.c:297
 msgid "renormalize EOL of tracked files (implies -u)"
 msgstr ""
 
-#: builtin/add.c:300
+#: builtin/add.c:298
 msgid "record only the fact that the path will be added later"
 msgstr ""
 
-#: builtin/add.c:301
+#: builtin/add.c:299
 msgid "add changes from all tracked and untracked files"
 msgstr ""
 
-#: builtin/add.c:304
+#: builtin/add.c:302
 msgid "ignore paths removed in the working tree (same as --no-all)"
 msgstr ""
 
-#: builtin/add.c:306
+#: builtin/add.c:304
 msgid "don't add, only refresh the index"
 msgstr ""
 
-#: builtin/add.c:307
+#: builtin/add.c:305
 msgid "just skip files which cannot be added because of errors"
 msgstr ""
 
-#: builtin/add.c:308
+#: builtin/add.c:306
 msgid "check if - even missing - files are ignored in dry run"
 msgstr ""
 
-#: builtin/add.c:309 builtin/update-index.c:964
+#: builtin/add.c:307 builtin/update-index.c:974
 msgid "(+/-)x"
 msgstr ""
 
-#: builtin/add.c:309 builtin/update-index.c:965
+#: builtin/add.c:307 builtin/update-index.c:975
 msgid "override the executable bit of the listed files"
 msgstr ""
 
-#: builtin/add.c:311
+#: builtin/add.c:309
 msgid "warn when adding an embedded repository"
 msgstr ""
 
-#: builtin/add.c:326
+#: builtin/add.c:324
 #, c-format
 msgid ""
 "You've added another git repository inside your current repository.\n"
@@ -4764,47 +5087,47 @@ msgid ""
 "See \"git help submodule\" for more information."
 msgstr ""
 
-#: builtin/add.c:354
+#: builtin/add.c:352
 #, c-format
 msgid "adding embedded git repository: %s"
 msgstr ""
 
-#: builtin/add.c:372
+#: builtin/add.c:370
 #, c-format
 msgid "Use -f if you really want to add them.\n"
 msgstr ""
 
-#: builtin/add.c:380
+#: builtin/add.c:378
 msgid "adding files failed"
 msgstr ""
 
-#: builtin/add.c:417
+#: builtin/add.c:416
 msgid "-A and -u are mutually incompatible"
 msgstr ""
 
-#: builtin/add.c:424
+#: builtin/add.c:423
 msgid "Option --ignore-missing can only be used together with --dry-run"
 msgstr ""
 
-#: builtin/add.c:428
+#: builtin/add.c:427
 #, c-format
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr ""
 
-#: builtin/add.c:443
+#: builtin/add.c:442
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr ""
 
-#: builtin/add.c:444
+#: builtin/add.c:443
 #, c-format
 msgid "Maybe you wanted to say 'git add .'?\n"
 msgstr ""
 
-#: builtin/add.c:449 builtin/check-ignore.c:177 builtin/checkout.c:280
-#: builtin/checkout.c:483 builtin/clean.c:958 builtin/commit.c:316
+#: builtin/add.c:448 builtin/check-ignore.c:177 builtin/checkout.c:280
+#: builtin/checkout.c:483 builtin/clean.c:958 builtin/commit.c:325
 #: builtin/diff-tree.c:114 builtin/mv.c:144 builtin/reset.c:241
-#: builtin/rm.c:271 builtin/submodule--helper.c:326
+#: builtin/rm.c:270 builtin/submodule--helper.c:328
 msgid "index file corrupt"
 msgstr ""
 
@@ -4856,7 +5179,7 @@ msgstr ""
 msgid "Patch format detection failed."
 msgstr ""
 
-#: builtin/am.c:1013 builtin/clone.c:405
+#: builtin/am.c:1013 builtin/clone.c:407
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr ""
@@ -4865,7 +5188,7 @@ msgstr ""
 msgid "Failed to split patches."
 msgstr ""
 
-#: builtin/am.c:1148 builtin/commit.c:342
+#: builtin/am.c:1148 builtin/commit.c:351
 msgid "unable to write index file"
 msgstr ""
 
@@ -5025,7 +5348,7 @@ msgid "allow fall back on 3way merging if needed"
 msgstr ""
 
 #: builtin/am.c:2222 builtin/init-db.c:484 builtin/prune-packed.c:57
-#: builtin/repack.c:182
+#: builtin/repack.c:192
 msgid "be quiet"
 msgstr ""
 
@@ -5067,16 +5390,17 @@ msgstr ""
 msgid "pass it through git-apply"
 msgstr ""
 
-#: builtin/am.c:2260 builtin/fmt-merge-msg.c:665 builtin/fmt-merge-msg.c:668
-#: builtin/grep.c:853 builtin/merge.c:206 builtin/pull.c:145 builtin/pull.c:203
-#: builtin/repack.c:191 builtin/repack.c:195 builtin/repack.c:197
-#: builtin/show-branch.c:631 builtin/show-ref.c:169 builtin/tag.c:382
-#: parse-options.h:144 parse-options.h:146 parse-options.h:257
+#: builtin/am.c:2260 builtin/commit.c:1332 builtin/fmt-merge-msg.c:665
+#: builtin/fmt-merge-msg.c:668 builtin/grep.c:853 builtin/merge.c:208
+#: builtin/pull.c:150 builtin/pull.c:208 builtin/repack.c:201
+#: builtin/repack.c:205 builtin/repack.c:207 builtin/show-branch.c:631
+#: builtin/show-ref.c:169 builtin/tag.c:383 parse-options.h:144
+#: parse-options.h:146 parse-options.h:258
 msgid "n"
 msgstr ""
 
-#: builtin/am.c:2266 builtin/branch.c:629 builtin/for-each-ref.c:38
-#: builtin/replace.c:445 builtin/tag.c:418 builtin/verify-tag.c:39
+#: builtin/am.c:2266 builtin/branch.c:632 builtin/for-each-ref.c:38
+#: builtin/replace.c:543 builtin/tag.c:419 builtin/verify-tag.c:39
 msgid "format"
 msgstr ""
 
@@ -5120,8 +5444,8 @@ msgstr ""
 msgid "use current timestamp for author date"
 msgstr ""
 
-#: builtin/am.c:2298 builtin/commit.c:1431 builtin/merge.c:237
-#: builtin/pull.c:178 builtin/revert.c:112 builtin/tag.c:398
+#: builtin/am.c:2298 builtin/commit.c:1468 builtin/merge.c:239
+#: builtin/pull.c:183 builtin/revert.c:112 builtin/tag.c:399
 msgid "key-id"
 msgstr ""
 
@@ -5256,115 +5580,141 @@ msgstr ""
 msgid "--bisect-clean-state requires no arguments"
 msgstr ""
 
-#: builtin/blame.c:27
+#: builtin/blame.c:29
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
 msgstr ""
 
-#: builtin/blame.c:32
+#: builtin/blame.c:34
 msgid "<rev-opts> are documented in git-rev-list(1)"
 msgstr ""
 
-#: builtin/blame.c:677
+#: builtin/blame.c:404
+#, c-format
+msgid "expecting a color: %s"
+msgstr ""
+
+#: builtin/blame.c:411
+msgid "must end with a color"
+msgstr ""
+
+#: builtin/blame.c:697
+#, c-format
+msgid "invalid color '%s' in color.blame.repeatedLines"
+msgstr ""
+
+#: builtin/blame.c:715
+msgid "invalid value for blame.coloring"
+msgstr ""
+
+#: builtin/blame.c:786
 msgid "Show blame entries as we find them, incrementally"
 msgstr ""
 
-#: builtin/blame.c:678
+#: builtin/blame.c:787
 msgid "Show blank SHA-1 for boundary commits (Default: off)"
 msgstr ""
 
-#: builtin/blame.c:679
+#: builtin/blame.c:788
 msgid "Do not treat root commits as boundaries (Default: off)"
 msgstr ""
 
-#: builtin/blame.c:680
+#: builtin/blame.c:789
 msgid "Show work cost statistics"
 msgstr ""
 
-#: builtin/blame.c:681
+#: builtin/blame.c:790
 msgid "Force progress reporting"
 msgstr ""
 
-#: builtin/blame.c:682
+#: builtin/blame.c:791
 msgid "Show output score for blame entries"
 msgstr ""
 
-#: builtin/blame.c:683
+#: builtin/blame.c:792
 msgid "Show original filename (Default: auto)"
 msgstr ""
 
-#: builtin/blame.c:684
+#: builtin/blame.c:793
 msgid "Show original linenumber (Default: off)"
 msgstr ""
 
-#: builtin/blame.c:685
+#: builtin/blame.c:794
 msgid "Show in a format designed for machine consumption"
 msgstr ""
 
-#: builtin/blame.c:686
+#: builtin/blame.c:795
 msgid "Show porcelain format with per-line commit information"
 msgstr ""
 
-#: builtin/blame.c:687
+#: builtin/blame.c:796
 msgid "Use the same output mode as git-annotate (Default: off)"
 msgstr ""
 
-#: builtin/blame.c:688
+#: builtin/blame.c:797
 msgid "Show raw timestamp (Default: off)"
 msgstr ""
 
-#: builtin/blame.c:689
+#: builtin/blame.c:798
 msgid "Show long commit SHA1 (Default: off)"
 msgstr ""
 
-#: builtin/blame.c:690
+#: builtin/blame.c:799
 msgid "Suppress author name and timestamp (Default: off)"
 msgstr ""
 
-#: builtin/blame.c:691
+#: builtin/blame.c:800
 msgid "Show author email instead of name (Default: off)"
 msgstr ""
 
-#: builtin/blame.c:692
+#: builtin/blame.c:801
 msgid "Ignore whitespace differences"
 msgstr ""
 
-#: builtin/blame.c:699
+#: builtin/blame.c:802
+msgid "color redundant metadata from previous line differently"
+msgstr ""
+
+#: builtin/blame.c:803
+msgid "color lines by age"
+msgstr ""
+
+#: builtin/blame.c:810
 msgid "Use an experimental heuristic to improve diffs"
 msgstr ""
 
-#: builtin/blame.c:701
+#: builtin/blame.c:812
 msgid "Spend extra cycles to find better match"
 msgstr ""
 
-#: builtin/blame.c:702
+#: builtin/blame.c:813
 msgid "Use revisions from <file> instead of calling git-rev-list"
 msgstr ""
 
-#: builtin/blame.c:703
+#: builtin/blame.c:814
 msgid "Use <file>'s contents as the final image"
 msgstr ""
 
-#: builtin/blame.c:704 builtin/blame.c:705
+#: builtin/blame.c:815 builtin/blame.c:816
 msgid "score"
 msgstr ""
 
-#: builtin/blame.c:704
+#: builtin/blame.c:815
 msgid "Find line copies within and across files"
 msgstr ""
 
-#: builtin/blame.c:705
+#: builtin/blame.c:816
 msgid "Find line movements within and across files"
 msgstr ""
 
-#: builtin/blame.c:706
+#: builtin/blame.c:817
 msgid "n,m"
 msgstr ""
 
-#: builtin/blame.c:706
+#: builtin/blame.c:817
 msgid "Process only line range n,m, counting from 1"
 msgstr ""
 
-#: builtin/blame.c:753
+#: builtin/blame.c:866
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr ""
 
@@ -5376,18 +5726,18 @@ msgstr ""
 #. your language may need more or fewer display
 #. columns.
 #.
-#: builtin/blame.c:804
+#: builtin/blame.c:917
 msgid "4 years, 11 months ago"
 msgstr ""
 
-#: builtin/blame.c:890
+#: builtin/blame.c:1003
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/blame.c:936
+#: builtin/blame.c:1049
 msgid "Blaming lines"
 msgstr ""
 
@@ -5492,65 +5842,65 @@ msgstr ""
 msgid "Deleted branch %s (was %s).\n"
 msgstr ""
 
-#: builtin/branch.c:417 builtin/tag.c:58
+#: builtin/branch.c:416 builtin/tag.c:58
 msgid "unable to parse format string"
 msgstr ""
 
-#: builtin/branch.c:450
+#: builtin/branch.c:453
 #, c-format
 msgid "Branch %s is being rebased at %s"
 msgstr ""
 
-#: builtin/branch.c:454
+#: builtin/branch.c:457
 #, c-format
 msgid "Branch %s is being bisected at %s"
 msgstr ""
 
-#: builtin/branch.c:471
+#: builtin/branch.c:474
 msgid "cannot copy the current branch while not on any."
 msgstr ""
 
-#: builtin/branch.c:473
+#: builtin/branch.c:476
 msgid "cannot rename the current branch while not on any."
 msgstr ""
 
-#: builtin/branch.c:484
+#: builtin/branch.c:487
 #, c-format
 msgid "Invalid branch name: '%s'"
 msgstr ""
 
-#: builtin/branch.c:511
+#: builtin/branch.c:514
 msgid "Branch rename failed"
 msgstr ""
 
-#: builtin/branch.c:513
+#: builtin/branch.c:516
 msgid "Branch copy failed"
 msgstr ""
 
-#: builtin/branch.c:517
+#: builtin/branch.c:520
 #, c-format
 msgid "Created a copy of a misnamed branch '%s'"
 msgstr ""
 
-#: builtin/branch.c:520
+#: builtin/branch.c:523
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
 msgstr ""
 
-#: builtin/branch.c:526
+#: builtin/branch.c:529
 #, c-format
 msgid "Branch renamed to %s, but HEAD is not updated!"
 msgstr ""
 
-#: builtin/branch.c:535
+#: builtin/branch.c:538
 msgid "Branch is renamed, but update of config-file failed"
 msgstr ""
 
-#: builtin/branch.c:537
+#: builtin/branch.c:540
 msgid "Branch is copied, but update of config-file failed"
 msgstr ""
 
-#: builtin/branch.c:553
+#: builtin/branch.c:556
 #, c-format
 msgid ""
 "Please edit the description for the branch\n"
@@ -5558,217 +5908,219 @@ msgid ""
 "Lines starting with '%c' will be stripped.\n"
 msgstr ""
 
-#: builtin/branch.c:586
+#: builtin/branch.c:589
 msgid "Generic options"
 msgstr ""
 
-#: builtin/branch.c:588
+#: builtin/branch.c:591
 msgid "show hash and subject, give twice for upstream branch"
 msgstr ""
 
-#: builtin/branch.c:589
+#: builtin/branch.c:592
 msgid "suppress informational messages"
 msgstr ""
 
-#: builtin/branch.c:590
+#: builtin/branch.c:593
 msgid "set up tracking mode (see git-pull(1))"
 msgstr ""
 
-#: builtin/branch.c:592
+#: builtin/branch.c:595
 msgid "do not use"
 msgstr ""
 
-#: builtin/branch.c:594
+#: builtin/branch.c:597
 msgid "upstream"
 msgstr ""
 
-#: builtin/branch.c:594
+#: builtin/branch.c:597
 msgid "change the upstream info"
 msgstr ""
 
-#: builtin/branch.c:595
+#: builtin/branch.c:598
 msgid "Unset the upstream info"
 msgstr ""
 
-#: builtin/branch.c:596
+#: builtin/branch.c:599
 msgid "use colored output"
 msgstr ""
 
-#: builtin/branch.c:597
+#: builtin/branch.c:600
 msgid "act on remote-tracking branches"
 msgstr ""
 
-#: builtin/branch.c:599 builtin/branch.c:601
+#: builtin/branch.c:602 builtin/branch.c:604
 msgid "print only branches that contain the commit"
 msgstr ""
 
-#: builtin/branch.c:600 builtin/branch.c:602
+#: builtin/branch.c:603 builtin/branch.c:605
 msgid "print only branches that don't contain the commit"
 msgstr ""
 
-#: builtin/branch.c:605
+#: builtin/branch.c:608
 msgid "Specific git-branch actions:"
 msgstr ""
 
-#: builtin/branch.c:606
+#: builtin/branch.c:609
 msgid "list both remote-tracking and local branches"
 msgstr ""
 
-#: builtin/branch.c:608
+#: builtin/branch.c:611
 msgid "delete fully merged branch"
 msgstr ""
 
-#: builtin/branch.c:609
+#: builtin/branch.c:612
 msgid "delete branch (even if not merged)"
 msgstr ""
 
-#: builtin/branch.c:610
+#: builtin/branch.c:613
 msgid "move/rename a branch and its reflog"
 msgstr ""
 
-#: builtin/branch.c:611
+#: builtin/branch.c:614
 msgid "move/rename a branch, even if target exists"
 msgstr ""
 
-#: builtin/branch.c:612
+#: builtin/branch.c:615
 msgid "copy a branch and its reflog"
 msgstr ""
 
-#: builtin/branch.c:613
+#: builtin/branch.c:616
 msgid "copy a branch, even if target exists"
 msgstr ""
 
-#: builtin/branch.c:614
+#: builtin/branch.c:617
 msgid "list branch names"
 msgstr ""
 
-#: builtin/branch.c:615
+#: builtin/branch.c:618
 msgid "create the branch's reflog"
 msgstr ""
 
-#: builtin/branch.c:617
+#: builtin/branch.c:620
 msgid "edit the description for the branch"
 msgstr ""
 
-#: builtin/branch.c:618
+#: builtin/branch.c:621
 msgid "force creation, move/rename, deletion"
 msgstr ""
 
-#: builtin/branch.c:619
+#: builtin/branch.c:622
 msgid "print only branches that are merged"
 msgstr ""
 
-#: builtin/branch.c:620
+#: builtin/branch.c:623
 msgid "print only branches that are not merged"
 msgstr ""
 
-#: builtin/branch.c:621
+#: builtin/branch.c:624
 msgid "list branches in columns"
 msgstr ""
 
-#: builtin/branch.c:622 builtin/for-each-ref.c:40 builtin/tag.c:411
+#: builtin/branch.c:625 builtin/for-each-ref.c:40 builtin/ls-remote.c:70
+#: builtin/tag.c:412
 msgid "key"
 msgstr ""
 
-#: builtin/branch.c:623 builtin/for-each-ref.c:41 builtin/tag.c:412
+#: builtin/branch.c:626 builtin/for-each-ref.c:41 builtin/ls-remote.c:71
+#: builtin/tag.c:413
 msgid "field name to sort on"
 msgstr ""
 
-#: builtin/branch.c:625 builtin/for-each-ref.c:43 builtin/notes.c:408
+#: builtin/branch.c:628 builtin/for-each-ref.c:43 builtin/notes.c:408
 #: builtin/notes.c:411 builtin/notes.c:571 builtin/notes.c:574
-#: builtin/tag.c:414
+#: builtin/tag.c:415
 msgid "object"
 msgstr ""
 
-#: builtin/branch.c:626
+#: builtin/branch.c:629
 msgid "print only branches of the object"
 msgstr ""
 
-#: builtin/branch.c:628 builtin/for-each-ref.c:49 builtin/tag.c:421
+#: builtin/branch.c:631 builtin/for-each-ref.c:49 builtin/tag.c:422
 msgid "sorting and filtering are case insensitive"
 msgstr ""
 
-#: builtin/branch.c:629 builtin/for-each-ref.c:38 builtin/tag.c:419
+#: builtin/branch.c:632 builtin/for-each-ref.c:38 builtin/tag.c:420
 #: builtin/verify-tag.c:39
 msgid "format to use for the output"
 msgstr ""
 
-#: builtin/branch.c:652 builtin/clone.c:735
+#: builtin/branch.c:655 builtin/clone.c:737
 msgid "HEAD not found below refs/heads!"
 msgstr ""
 
-#: builtin/branch.c:675
+#: builtin/branch.c:678
 msgid "--column and --verbose are incompatible"
 msgstr ""
 
-#: builtin/branch.c:690 builtin/branch.c:742 builtin/branch.c:751
+#: builtin/branch.c:693 builtin/branch.c:745 builtin/branch.c:754
 msgid "branch name required"
 msgstr ""
 
-#: builtin/branch.c:718
+#: builtin/branch.c:721
 msgid "Cannot give description to detached HEAD"
 msgstr ""
 
-#: builtin/branch.c:723
+#: builtin/branch.c:726
 msgid "cannot edit description of more than one branch"
 msgstr ""
 
-#: builtin/branch.c:730
+#: builtin/branch.c:733
 #, c-format
 msgid "No commit on branch '%s' yet."
 msgstr ""
 
-#: builtin/branch.c:733
+#: builtin/branch.c:736
 #, c-format
 msgid "No branch named '%s'."
 msgstr ""
 
-#: builtin/branch.c:748
+#: builtin/branch.c:751
 msgid "too many branches for a copy operation"
 msgstr ""
 
-#: builtin/branch.c:757
+#: builtin/branch.c:760
 msgid "too many arguments for a rename operation"
 msgstr ""
 
-#: builtin/branch.c:762
+#: builtin/branch.c:765
 msgid "too many arguments to set new upstream"
 msgstr ""
 
-#: builtin/branch.c:766
+#: builtin/branch.c:769
 #, c-format
 msgid ""
 "could not set upstream of HEAD to %s when it does not point to any branch."
 msgstr ""
 
-#: builtin/branch.c:769 builtin/branch.c:791 builtin/branch.c:807
+#: builtin/branch.c:772 builtin/branch.c:794 builtin/branch.c:810
 #, c-format
 msgid "no such branch '%s'"
 msgstr ""
 
-#: builtin/branch.c:773
+#: builtin/branch.c:776
 #, c-format
 msgid "branch '%s' does not exist"
 msgstr ""
 
-#: builtin/branch.c:785
+#: builtin/branch.c:788
 msgid "too many arguments to unset upstream"
 msgstr ""
 
-#: builtin/branch.c:789
+#: builtin/branch.c:792
 msgid "could not unset upstream of HEAD when it does not point to any branch."
 msgstr ""
 
-#: builtin/branch.c:795
+#: builtin/branch.c:798
 #, c-format
 msgid "Branch '%s' has no upstream information"
 msgstr ""
 
-#: builtin/branch.c:810
+#: builtin/branch.c:813
 msgid "-a and -r options to 'git branch' do not make sense with a branch name"
 msgstr ""
 
-#: builtin/branch.c:813
+#: builtin/branch.c:816
 msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
@@ -5787,75 +6139,75 @@ msgstr ""
 msgid "Need a repository to unbundle."
 msgstr ""
 
-#: builtin/cat-file.c:523
+#: builtin/cat-file.c:525
 msgid ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <type> | --textconv | --filters) [--path=<path>] <object>"
 msgstr ""
 
-#: builtin/cat-file.c:524
+#: builtin/cat-file.c:526
 msgid ""
 "git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
 "filters]"
 msgstr ""
 
-#: builtin/cat-file.c:561
+#: builtin/cat-file.c:563
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr ""
 
-#: builtin/cat-file.c:562
+#: builtin/cat-file.c:564
 msgid "show object type"
 msgstr ""
 
-#: builtin/cat-file.c:563
+#: builtin/cat-file.c:565
 msgid "show object size"
 msgstr ""
 
-#: builtin/cat-file.c:565
+#: builtin/cat-file.c:567
 msgid "exit with zero when there's no error"
 msgstr ""
 
-#: builtin/cat-file.c:566
+#: builtin/cat-file.c:568
 msgid "pretty-print object's content"
 msgstr ""
 
-#: builtin/cat-file.c:568
+#: builtin/cat-file.c:570
 msgid "for blob objects, run textconv on object's content"
 msgstr ""
 
-#: builtin/cat-file.c:570
+#: builtin/cat-file.c:572
 msgid "for blob objects, run filters on object's content"
 msgstr ""
 
-#: builtin/cat-file.c:571 git-submodule.sh:878
+#: builtin/cat-file.c:573 git-submodule.sh:894
 msgid "blob"
 msgstr ""
 
-#: builtin/cat-file.c:572
+#: builtin/cat-file.c:574
 msgid "use a specific path for --textconv/--filters"
 msgstr ""
 
-#: builtin/cat-file.c:574
+#: builtin/cat-file.c:576
 msgid "allow -s and -t to work with broken/corrupt objects"
 msgstr ""
 
-#: builtin/cat-file.c:575
+#: builtin/cat-file.c:577
 msgid "buffer --batch output"
 msgstr ""
 
-#: builtin/cat-file.c:577
+#: builtin/cat-file.c:579
 msgid "show info and content of objects fed from the standard input"
 msgstr ""
 
-#: builtin/cat-file.c:580
+#: builtin/cat-file.c:582
 msgid "show info about objects fed from the standard input"
 msgstr ""
 
-#: builtin/cat-file.c:583
+#: builtin/cat-file.c:585
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
 msgstr ""
 
-#: builtin/cat-file.c:585
+#: builtin/cat-file.c:587
 msgid "show all objects with --batch or --batch-check"
 msgstr ""
 
@@ -5883,7 +6235,7 @@ msgstr ""
 msgid "terminate input and output records by a NUL character"
 msgstr ""
 
-#: builtin/check-ignore.c:20 builtin/checkout.c:1106 builtin/gc.c:358
+#: builtin/check-ignore.c:20 builtin/checkout.c:1113 builtin/gc.c:500
 msgid "suppress progress reporting"
 msgstr ""
 
@@ -5973,9 +6325,9 @@ msgid "write the content to temporary files"
 msgstr ""
 
 #: builtin/checkout-index.c:173 builtin/column.c:31
-#: builtin/submodule--helper.c:1203 builtin/submodule--helper.c:1206
-#: builtin/submodule--helper.c:1212 builtin/submodule--helper.c:1574
-#: builtin/worktree.c:570
+#: builtin/submodule--helper.c:1216 builtin/submodule--helper.c:1219
+#: builtin/submodule--helper.c:1227 builtin/submodule--helper.c:1591
+#: builtin/worktree.c:610
 msgid "string"
 msgstr ""
 
@@ -6046,54 +6398,54 @@ msgstr ""
 msgid "path '%s' is unmerged"
 msgstr ""
 
-#: builtin/checkout.c:505
+#: builtin/checkout.c:506
 msgid "you need to resolve your current index first"
 msgstr ""
 
-#: builtin/checkout.c:636
+#: builtin/checkout.c:643
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr ""
 
-#: builtin/checkout.c:677
+#: builtin/checkout.c:684
 msgid "HEAD is now at"
 msgstr ""
 
-#: builtin/checkout.c:681 builtin/clone.c:689
+#: builtin/checkout.c:688 builtin/clone.c:691
 msgid "unable to update HEAD"
 msgstr ""
 
-#: builtin/checkout.c:685
+#: builtin/checkout.c:692
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr ""
 
-#: builtin/checkout.c:688
+#: builtin/checkout.c:695
 #, c-format
 msgid "Already on '%s'\n"
 msgstr ""
 
-#: builtin/checkout.c:692
+#: builtin/checkout.c:699
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr ""
 
-#: builtin/checkout.c:694 builtin/checkout.c:1039
+#: builtin/checkout.c:701 builtin/checkout.c:1046
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr ""
 
-#: builtin/checkout.c:696
+#: builtin/checkout.c:703
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr ""
 
-#: builtin/checkout.c:747
+#: builtin/checkout.c:754
 #, c-format
 msgid " ... and %d more.\n"
 msgstr ""
 
-#: builtin/checkout.c:753
+#: builtin/checkout.c:760
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -6108,7 +6460,7 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/checkout.c:772
+#: builtin/checkout.c:779
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -6125,160 +6477,160 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/checkout.c:804
+#: builtin/checkout.c:811
 msgid "internal error in revision walk"
 msgstr ""
 
-#: builtin/checkout.c:808
+#: builtin/checkout.c:815
 msgid "Previous HEAD position was"
 msgstr ""
 
-#: builtin/checkout.c:836 builtin/checkout.c:1034
+#: builtin/checkout.c:843 builtin/checkout.c:1041
 msgid "You are on a branch yet to be born"
 msgstr ""
 
-#: builtin/checkout.c:940
+#: builtin/checkout.c:947
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr ""
 
-#: builtin/checkout.c:980 builtin/worktree.c:249
+#: builtin/checkout.c:987 builtin/worktree.c:240 builtin/worktree.c:389
 #, c-format
 msgid "invalid reference: %s"
 msgstr ""
 
-#: builtin/checkout.c:1009
+#: builtin/checkout.c:1016
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr ""
 
-#: builtin/checkout.c:1048
+#: builtin/checkout.c:1055
 msgid "paths cannot be used with switching branches"
 msgstr ""
 
-#: builtin/checkout.c:1051 builtin/checkout.c:1055
+#: builtin/checkout.c:1058 builtin/checkout.c:1062
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr ""
 
-#: builtin/checkout.c:1059 builtin/checkout.c:1062 builtin/checkout.c:1067
-#: builtin/checkout.c:1070
+#: builtin/checkout.c:1066 builtin/checkout.c:1069 builtin/checkout.c:1074
+#: builtin/checkout.c:1077
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1075
+#: builtin/checkout.c:1082
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1107 builtin/checkout.c:1109 builtin/clone.c:116
-#: builtin/remote.c:166 builtin/remote.c:168 builtin/worktree.c:387
-#: builtin/worktree.c:389
+#: builtin/checkout.c:1114 builtin/checkout.c:1116 builtin/clone.c:118
+#: builtin/remote.c:167 builtin/remote.c:169 builtin/worktree.c:433
+#: builtin/worktree.c:435
 msgid "branch"
 msgstr ""
 
-#: builtin/checkout.c:1108
+#: builtin/checkout.c:1115
 msgid "create and checkout a new branch"
 msgstr ""
 
-#: builtin/checkout.c:1110
+#: builtin/checkout.c:1117
 msgid "create/reset and checkout a branch"
 msgstr ""
 
-#: builtin/checkout.c:1111
+#: builtin/checkout.c:1118
 msgid "create reflog for new branch"
 msgstr ""
 
-#: builtin/checkout.c:1112 builtin/worktree.c:391
+#: builtin/checkout.c:1119 builtin/worktree.c:437
 msgid "detach HEAD at named commit"
 msgstr ""
 
-#: builtin/checkout.c:1113
+#: builtin/checkout.c:1120
 msgid "set upstream info for new branch"
 msgstr ""
 
-#: builtin/checkout.c:1115
+#: builtin/checkout.c:1122
 msgid "new-branch"
 msgstr ""
 
-#: builtin/checkout.c:1115
+#: builtin/checkout.c:1122
 msgid "new unparented branch"
 msgstr ""
 
-#: builtin/checkout.c:1116
+#: builtin/checkout.c:1123
 msgid "checkout our version for unmerged files"
 msgstr ""
 
-#: builtin/checkout.c:1118
+#: builtin/checkout.c:1125
 msgid "checkout their version for unmerged files"
 msgstr ""
 
-#: builtin/checkout.c:1120
+#: builtin/checkout.c:1127
 msgid "force checkout (throw away local modifications)"
 msgstr ""
 
-#: builtin/checkout.c:1122
+#: builtin/checkout.c:1129
 msgid "perform a 3-way merge with the new branch"
 msgstr ""
 
-#: builtin/checkout.c:1124 builtin/merge.c:239
+#: builtin/checkout.c:1131 builtin/merge.c:241
 msgid "update ignored files (default)"
 msgstr ""
 
-#: builtin/checkout.c:1126 builtin/log.c:1499 parse-options.h:263
+#: builtin/checkout.c:1133 builtin/log.c:1499 parse-options.h:264
 msgid "style"
 msgstr ""
 
-#: builtin/checkout.c:1127
+#: builtin/checkout.c:1134
 msgid "conflict style (merge or diff3)"
 msgstr ""
 
-#: builtin/checkout.c:1130
+#: builtin/checkout.c:1137
 msgid "do not limit pathspecs to sparse entries only"
 msgstr ""
 
-#: builtin/checkout.c:1132
+#: builtin/checkout.c:1139
 msgid "second guess 'git checkout <no-such-branch>'"
 msgstr ""
 
-#: builtin/checkout.c:1134
+#: builtin/checkout.c:1141
 msgid "do not check if another worktree is holding the given ref"
 msgstr ""
 
-#: builtin/checkout.c:1138 builtin/clone.c:83 builtin/fetch.c:150
-#: builtin/merge.c:236 builtin/pull.c:123 builtin/push.c:556
-#: builtin/send-pack.c:173
+#: builtin/checkout.c:1145 builtin/clone.c:85 builtin/fetch.c:149
+#: builtin/merge.c:238 builtin/pull.c:128 builtin/push.c:572
+#: builtin/send-pack.c:174
 msgid "force progress reporting"
 msgstr ""
 
-#: builtin/checkout.c:1168
+#: builtin/checkout.c:1175
 msgid "-b, -B and --orphan are mutually exclusive"
 msgstr ""
 
-#: builtin/checkout.c:1185
+#: builtin/checkout.c:1192
 msgid "--track needs a branch name"
 msgstr ""
 
-#: builtin/checkout.c:1190
+#: builtin/checkout.c:1197
 msgid "Missing branch name; try -b"
 msgstr ""
 
-#: builtin/checkout.c:1226
+#: builtin/checkout.c:1233
 msgid "invalid path specification"
 msgstr ""
 
-#: builtin/checkout.c:1233
+#: builtin/checkout.c:1240
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr ""
 
-#: builtin/checkout.c:1237
+#: builtin/checkout.c:1244
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr ""
 
-#: builtin/checkout.c:1241
+#: builtin/checkout.c:1248
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -6314,7 +6666,7 @@ msgstr ""
 msgid "failed to remove %s"
 msgstr ""
 
-#: builtin/clean.c:302 git-add--interactive.perl:572
+#: builtin/clean.c:302 git-add--interactive.perl:579
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -6323,7 +6675,7 @@ msgid ""
 "           - (empty) select nothing\n"
 msgstr ""
 
-#: builtin/clean.c:306 git-add--interactive.perl:581
+#: builtin/clean.c:306 git-add--interactive.perl:588
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -6336,8 +6688,8 @@ msgid ""
 "           - (empty) finish selecting\n"
 msgstr ""
 
-#: builtin/clean.c:522 git-add--interactive.perl:547
-#: git-add--interactive.perl:552
+#: builtin/clean.c:522 git-add--interactive.perl:554
+#: git-add--interactive.perl:559
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr ""
@@ -6362,7 +6714,7 @@ msgstr ""
 msgid "Remove %s [y/N]? "
 msgstr ""
 
-#: builtin/clean.c:788 git-add--interactive.perl:1710
+#: builtin/clean.c:788 git-add--interactive.perl:1717
 #, c-format
 msgid "Bye.\n"
 msgstr ""
@@ -6378,11 +6730,11 @@ msgid ""
 "?                   - help for prompt selection"
 msgstr ""
 
-#: builtin/clean.c:823 git-add--interactive.perl:1786
+#: builtin/clean.c:823 git-add--interactive.perl:1793
 msgid "*** Commands ***"
 msgstr ""
 
-#: builtin/clean.c:824 git-add--interactive.perl:1783
+#: builtin/clean.c:824 git-add--interactive.perl:1790
 msgid "What now"
 msgstr ""
 
@@ -6447,284 +6799,286 @@ msgid ""
 "refusing to clean"
 msgstr ""
 
-#: builtin/clone.c:40
+#: builtin/clone.c:42
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr ""
 
-#: builtin/clone.c:85
+#: builtin/clone.c:87
 msgid "don't create a checkout"
 msgstr ""
 
-#: builtin/clone.c:86 builtin/clone.c:88 builtin/init-db.c:479
+#: builtin/clone.c:88 builtin/clone.c:90 builtin/init-db.c:479
 msgid "create a bare repository"
 msgstr ""
 
-#: builtin/clone.c:90
+#: builtin/clone.c:92
 msgid "create a mirror repository (implies bare)"
 msgstr ""
 
-#: builtin/clone.c:92
+#: builtin/clone.c:94
 msgid "to clone from a local repository"
 msgstr ""
 
-#: builtin/clone.c:94
+#: builtin/clone.c:96
 msgid "don't use local hardlinks, always copy"
 msgstr ""
 
-#: builtin/clone.c:96
+#: builtin/clone.c:98
 msgid "setup as shared repository"
 msgstr ""
 
-#: builtin/clone.c:98 builtin/clone.c:102
+#: builtin/clone.c:100 builtin/clone.c:104
 msgid "pathspec"
 msgstr ""
 
-#: builtin/clone.c:98 builtin/clone.c:102
+#: builtin/clone.c:100 builtin/clone.c:104
 msgid "initialize submodules in the clone"
 msgstr ""
 
-#: builtin/clone.c:105
+#: builtin/clone.c:107
 msgid "number of submodules cloned in parallel"
 msgstr ""
 
-#: builtin/clone.c:106 builtin/init-db.c:476
+#: builtin/clone.c:108 builtin/init-db.c:476
 msgid "template-directory"
 msgstr ""
 
-#: builtin/clone.c:107 builtin/init-db.c:477
+#: builtin/clone.c:109 builtin/init-db.c:477
 msgid "directory from which templates will be used"
 msgstr ""
 
-#: builtin/clone.c:109 builtin/clone.c:111 builtin/submodule--helper.c:1210
-#: builtin/submodule--helper.c:1577
+#: builtin/clone.c:111 builtin/clone.c:113 builtin/submodule--helper.c:1223
+#: builtin/submodule--helper.c:1594
 msgid "reference repository"
 msgstr ""
 
-#: builtin/clone.c:113
+#: builtin/clone.c:115 builtin/submodule--helper.c:1225
+#: builtin/submodule--helper.c:1596
 msgid "use --reference only while cloning"
 msgstr ""
 
-#: builtin/clone.c:114 builtin/column.c:27 builtin/merge-file.c:44
+#: builtin/clone.c:116 builtin/column.c:27 builtin/merge-file.c:44
+#: builtin/pack-objects.c:3166 builtin/repack.c:213
 msgid "name"
 msgstr ""
 
-#: builtin/clone.c:115
+#: builtin/clone.c:117
 msgid "use <name> instead of 'origin' to track upstream"
 msgstr ""
 
-#: builtin/clone.c:117
+#: builtin/clone.c:119
 msgid "checkout <branch> instead of the remote's HEAD"
 msgstr ""
 
-#: builtin/clone.c:119
+#: builtin/clone.c:121
 msgid "path to git-upload-pack on the remote"
 msgstr ""
 
-#: builtin/clone.c:120 builtin/fetch.c:151 builtin/grep.c:813
-#: builtin/pull.c:211
+#: builtin/clone.c:122 builtin/fetch.c:150 builtin/grep.c:813
+#: builtin/pull.c:216
 msgid "depth"
 msgstr ""
 
-#: builtin/clone.c:121
+#: builtin/clone.c:123
 msgid "create a shallow clone of that depth"
 msgstr ""
 
-#: builtin/clone.c:122 builtin/fetch.c:153 builtin/pack-objects.c:3017
+#: builtin/clone.c:124 builtin/fetch.c:152 builtin/pack-objects.c:3157
 #: parse-options.h:154
 msgid "time"
 msgstr ""
 
-#: builtin/clone.c:123
+#: builtin/clone.c:125
 msgid "create a shallow clone since a specific time"
 msgstr ""
 
-#: builtin/clone.c:124 builtin/fetch.c:155
+#: builtin/clone.c:126 builtin/fetch.c:154
 msgid "revision"
 msgstr ""
 
-#: builtin/clone.c:125 builtin/fetch.c:156
+#: builtin/clone.c:127 builtin/fetch.c:155
 msgid "deepen history of shallow clone, excluding rev"
 msgstr ""
 
-#: builtin/clone.c:127
+#: builtin/clone.c:129
 msgid "clone only one branch, HEAD or --branch"
 msgstr ""
 
-#: builtin/clone.c:129
+#: builtin/clone.c:131
 msgid "don't clone any tags, and make later fetches not to follow them"
 msgstr ""
 
-#: builtin/clone.c:131
+#: builtin/clone.c:133
 msgid "any cloned submodules will be shallow"
 msgstr ""
 
-#: builtin/clone.c:132 builtin/init-db.c:485
+#: builtin/clone.c:134 builtin/init-db.c:485
 msgid "gitdir"
 msgstr ""
 
-#: builtin/clone.c:133 builtin/init-db.c:486
+#: builtin/clone.c:135 builtin/init-db.c:486
 msgid "separate git dir from working tree"
 msgstr ""
 
-#: builtin/clone.c:134
+#: builtin/clone.c:136
 msgid "key=value"
 msgstr ""
 
-#: builtin/clone.c:135
+#: builtin/clone.c:137
 msgid "set config inside the new repository"
 msgstr ""
 
-#: builtin/clone.c:136 builtin/fetch.c:173 builtin/pull.c:224
-#: builtin/push.c:567
+#: builtin/clone.c:138 builtin/fetch.c:173 builtin/pull.c:229
+#: builtin/push.c:583
 msgid "use IPv4 addresses only"
 msgstr ""
 
-#: builtin/clone.c:138 builtin/fetch.c:175 builtin/pull.c:227
-#: builtin/push.c:569
+#: builtin/clone.c:140 builtin/fetch.c:175 builtin/pull.c:232
+#: builtin/push.c:585
 msgid "use IPv6 addresses only"
 msgstr ""
 
-#: builtin/clone.c:276
+#: builtin/clone.c:278
 msgid ""
 "No directory name could be guessed.\n"
 "Please specify a directory on the command line"
 msgstr ""
 
-#: builtin/clone.c:329
+#: builtin/clone.c:331
 #, c-format
 msgid "info: Could not add alternate for '%s': %s\n"
 msgstr ""
 
-#: builtin/clone.c:401
+#: builtin/clone.c:403
 #, c-format
 msgid "failed to open '%s'"
 msgstr ""
 
-#: builtin/clone.c:409
+#: builtin/clone.c:411
 #, c-format
 msgid "%s exists and is not a directory"
 msgstr ""
 
-#: builtin/clone.c:423
+#: builtin/clone.c:425
 #, c-format
 msgid "failed to stat %s\n"
 msgstr ""
 
-#: builtin/clone.c:445
+#: builtin/clone.c:447
 #, c-format
 msgid "failed to create link '%s'"
 msgstr ""
 
-#: builtin/clone.c:449
+#: builtin/clone.c:451
 #, c-format
 msgid "failed to copy file to '%s'"
 msgstr ""
 
-#: builtin/clone.c:475
+#: builtin/clone.c:477
 #, c-format
 msgid "done.\n"
 msgstr ""
 
-#: builtin/clone.c:489
+#: builtin/clone.c:491
 msgid ""
 "Clone succeeded, but checkout failed.\n"
 "You can inspect what was checked out with 'git status'\n"
 "and retry the checkout with 'git checkout -f HEAD'\n"
 msgstr ""
 
-#: builtin/clone.c:566
+#: builtin/clone.c:568
 #, c-format
 msgid "Could not find remote branch %s to clone."
 msgstr ""
 
-#: builtin/clone.c:661
+#: builtin/clone.c:663
 msgid "remote did not send all necessary objects"
 msgstr ""
 
-#: builtin/clone.c:677
+#: builtin/clone.c:679
 #, c-format
 msgid "unable to update %s"
 msgstr ""
 
-#: builtin/clone.c:726
+#: builtin/clone.c:728
 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
 msgstr ""
 
-#: builtin/clone.c:756
+#: builtin/clone.c:758
 msgid "unable to checkout working tree"
 msgstr ""
 
-#: builtin/clone.c:801
+#: builtin/clone.c:803
 msgid "unable to write parameters to config file"
 msgstr ""
 
-#: builtin/clone.c:864
+#: builtin/clone.c:866
 msgid "cannot repack to clean up"
 msgstr ""
 
-#: builtin/clone.c:866
+#: builtin/clone.c:868
 msgid "cannot unlink temporary alternates file"
 msgstr ""
 
-#: builtin/clone.c:906 builtin/receive-pack.c:1946
+#: builtin/clone.c:907 builtin/receive-pack.c:1947
 msgid "Too many arguments."
 msgstr ""
 
-#: builtin/clone.c:910
+#: builtin/clone.c:911
 msgid "You must specify a repository to clone."
 msgstr ""
 
-#: builtin/clone.c:923
+#: builtin/clone.c:924
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr ""
 
-#: builtin/clone.c:926
+#: builtin/clone.c:927
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr ""
 
-#: builtin/clone.c:939
+#: builtin/clone.c:940
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr ""
 
-#: builtin/clone.c:945 builtin/fetch.c:1455
+#: builtin/clone.c:946 builtin/fetch.c:1460
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr ""
 
-#: builtin/clone.c:955
+#: builtin/clone.c:956
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr ""
 
-#: builtin/clone.c:965
+#: builtin/clone.c:966
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr ""
 
-#: builtin/clone.c:980 builtin/clone.c:1001 builtin/difftool.c:270
-#: builtin/worktree.c:255 builtin/worktree.c:285
+#: builtin/clone.c:981 builtin/clone.c:1002 builtin/difftool.c:270
+#: builtin/worktree.c:246 builtin/worktree.c:276
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr ""
 
-#: builtin/clone.c:985
+#: builtin/clone.c:986
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr ""
 
-#: builtin/clone.c:1005
+#: builtin/clone.c:1006
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr ""
 
-#: builtin/clone.c:1007
+#: builtin/clone.c:1008
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr ""
 
-#: builtin/clone.c:1031
+#: builtin/clone.c:1032
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
@@ -6791,7 +7145,7 @@ msgstr ""
 msgid "Padding space between columns"
 msgstr ""
 
-#: builtin/column.c:52
+#: builtin/column.c:51
 msgid "--command must be the first argument"
 msgstr ""
 
@@ -6833,98 +7187,98 @@ msgid ""
 "the remaining commits.\n"
 msgstr ""
 
-#: builtin/commit.c:284
+#: builtin/commit.c:293
 msgid "failed to unpack HEAD tree object"
 msgstr ""
 
-#: builtin/commit.c:325
+#: builtin/commit.c:334
 msgid "unable to create temporary index"
 msgstr ""
 
-#: builtin/commit.c:331
+#: builtin/commit.c:340
 msgid "interactive add failed"
 msgstr ""
 
-#: builtin/commit.c:344
+#: builtin/commit.c:353
 msgid "unable to update temporary index"
 msgstr ""
 
-#: builtin/commit.c:346
+#: builtin/commit.c:355
 msgid "Failed to update main cache tree"
 msgstr ""
 
-#: builtin/commit.c:371 builtin/commit.c:395 builtin/commit.c:444
+#: builtin/commit.c:380 builtin/commit.c:403 builtin/commit.c:449
 msgid "unable to write new_index file"
 msgstr ""
 
-#: builtin/commit.c:427
+#: builtin/commit.c:432
 msgid "cannot do a partial commit during a merge."
 msgstr ""
 
-#: builtin/commit.c:429
+#: builtin/commit.c:434
 msgid "cannot do a partial commit during a cherry-pick."
 msgstr ""
 
-#: builtin/commit.c:437
+#: builtin/commit.c:442
 msgid "cannot read the index"
 msgstr ""
 
-#: builtin/commit.c:456
+#: builtin/commit.c:461
 msgid "unable to write temporary index file"
 msgstr ""
 
-#: builtin/commit.c:553
+#: builtin/commit.c:558
 #, c-format
 msgid "commit '%s' lacks author header"
 msgstr ""
 
-#: builtin/commit.c:555
+#: builtin/commit.c:560
 #, c-format
 msgid "commit '%s' has malformed author line"
 msgstr ""
 
-#: builtin/commit.c:574
+#: builtin/commit.c:579
 msgid "malformed --author parameter"
 msgstr ""
 
-#: builtin/commit.c:626
+#: builtin/commit.c:631
 msgid ""
 "unable to select a comment character that is not used\n"
 "in the current commit message"
 msgstr ""
 
-#: builtin/commit.c:663 builtin/commit.c:696 builtin/commit.c:1024
+#: builtin/commit.c:668 builtin/commit.c:701 builtin/commit.c:1029
 #, c-format
 msgid "could not lookup commit %s"
 msgstr ""
 
-#: builtin/commit.c:675 builtin/shortlog.c:309
+#: builtin/commit.c:680 builtin/shortlog.c:316
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr ""
 
-#: builtin/commit.c:677
+#: builtin/commit.c:682
 msgid "could not read log from standard input"
 msgstr ""
 
-#: builtin/commit.c:681
+#: builtin/commit.c:686
 #, c-format
 msgid "could not read log file '%s'"
 msgstr ""
 
-#: builtin/commit.c:710 builtin/commit.c:718
+#: builtin/commit.c:715 builtin/commit.c:723
 msgid "could not read SQUASH_MSG"
 msgstr ""
 
-#: builtin/commit.c:715
+#: builtin/commit.c:720
 msgid "could not read MERGE_MSG"
 msgstr ""
 
-#: builtin/commit.c:769
+#: builtin/commit.c:774
 msgid "could not write commit template"
 msgstr ""
 
-#: builtin/commit.c:787
+#: builtin/commit.c:792
 #, c-format
 msgid ""
 "\n"
@@ -6934,7 +7288,7 @@ msgid ""
 "and try again.\n"
 msgstr ""
 
-#: builtin/commit.c:792
+#: builtin/commit.c:797
 #, c-format
 msgid ""
 "\n"
@@ -6944,14 +7298,14 @@ msgid ""
 "and try again.\n"
 msgstr ""
 
-#: builtin/commit.c:805
+#: builtin/commit.c:810
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
 "with '%c' will be ignored, and an empty message aborts the commit.\n"
 msgstr ""
 
-#: builtin/commit.c:813
+#: builtin/commit.c:818
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -6959,484 +7313,554 @@ msgid ""
 "An empty message aborts the commit.\n"
 msgstr ""
 
-#: builtin/commit.c:830
+#: builtin/commit.c:835
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr ""
 
-#: builtin/commit.c:838
+#: builtin/commit.c:843
 #, c-format
 msgid "%sDate:      %s"
 msgstr ""
 
-#: builtin/commit.c:845
+#: builtin/commit.c:850
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr ""
 
-#: builtin/commit.c:862
+#: builtin/commit.c:867
 msgid "Cannot read index"
 msgstr ""
 
-#: builtin/commit.c:928
+#: builtin/commit.c:933
 msgid "Error building trees"
 msgstr ""
 
-#: builtin/commit.c:942 builtin/tag.c:256
+#: builtin/commit.c:947 builtin/tag.c:257
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr ""
 
-#: builtin/commit.c:986
+#: builtin/commit.c:991
 #, c-format
 msgid "--author '%s' is not 'Name <email>' and matches no existing author"
 msgstr ""
 
-#: builtin/commit.c:1000
+#: builtin/commit.c:1005
 #, c-format
 msgid "Invalid ignored mode '%s'"
 msgstr ""
 
-#: builtin/commit.c:1014 builtin/commit.c:1264
+#: builtin/commit.c:1019 builtin/commit.c:1269
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr ""
 
-#: builtin/commit.c:1052
+#: builtin/commit.c:1057
 msgid "--long and -z are incompatible"
 msgstr ""
 
-#: builtin/commit.c:1085
+#: builtin/commit.c:1090
 msgid "Using both --reset-author and --author does not make sense"
 msgstr ""
 
-#: builtin/commit.c:1094
+#: builtin/commit.c:1099
 msgid "You have nothing to amend."
 msgstr ""
 
-#: builtin/commit.c:1097
+#: builtin/commit.c:1102
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr ""
 
-#: builtin/commit.c:1099
+#: builtin/commit.c:1104
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr ""
 
-#: builtin/commit.c:1102
+#: builtin/commit.c:1107
 msgid "Options --squash and --fixup cannot be used together"
 msgstr ""
 
-#: builtin/commit.c:1112
+#: builtin/commit.c:1117
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr ""
 
-#: builtin/commit.c:1114
+#: builtin/commit.c:1119
 msgid "Option -m cannot be combined with -c/-C/-F."
 msgstr ""
 
-#: builtin/commit.c:1122
+#: builtin/commit.c:1127
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr ""
 
-#: builtin/commit.c:1139
+#: builtin/commit.c:1144
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr ""
 
-#: builtin/commit.c:1141
+#: builtin/commit.c:1146
 msgid "No paths with --include/--only does not make sense."
 msgstr ""
 
-#: builtin/commit.c:1155 builtin/tag.c:542
+#: builtin/commit.c:1160 builtin/tag.c:543
 #, c-format
 msgid "Invalid cleanup mode %s"
 msgstr ""
 
-#: builtin/commit.c:1160
+#: builtin/commit.c:1165
 msgid "Paths with -a does not make sense."
 msgstr ""
 
-#: builtin/commit.c:1278 builtin/commit.c:1443
+#: builtin/commit.c:1303 builtin/commit.c:1480
 msgid "show status concisely"
 msgstr ""
 
-#: builtin/commit.c:1280 builtin/commit.c:1445
+#: builtin/commit.c:1305 builtin/commit.c:1482
 msgid "show branch information"
 msgstr ""
 
-#: builtin/commit.c:1282
+#: builtin/commit.c:1307
 msgid "show stash information"
 msgstr ""
 
-#: builtin/commit.c:1284 builtin/commit.c:1447
+#: builtin/commit.c:1309 builtin/commit.c:1484
 msgid "compute full ahead/behind values"
 msgstr ""
 
-#: builtin/commit.c:1286
+#: builtin/commit.c:1311
 msgid "version"
 msgstr ""
 
-#: builtin/commit.c:1286 builtin/commit.c:1449 builtin/push.c:542
-#: builtin/worktree.c:541
+#: builtin/commit.c:1311 builtin/commit.c:1486 builtin/push.c:558
+#: builtin/worktree.c:581
 msgid "machine-readable output"
 msgstr ""
 
-#: builtin/commit.c:1289 builtin/commit.c:1451
+#: builtin/commit.c:1314 builtin/commit.c:1488
 msgid "show status in long format (default)"
 msgstr ""
 
-#: builtin/commit.c:1292 builtin/commit.c:1454
+#: builtin/commit.c:1317 builtin/commit.c:1491
 msgid "terminate entries with NUL"
 msgstr ""
 
-#: builtin/commit.c:1294 builtin/commit.c:1298 builtin/commit.c:1457
-#: builtin/fast-export.c:999 builtin/fast-export.c:1002 builtin/tag.c:396
+#: builtin/commit.c:1319 builtin/commit.c:1323 builtin/commit.c:1494
+#: builtin/fast-export.c:1001 builtin/fast-export.c:1004 builtin/tag.c:397
 msgid "mode"
 msgstr ""
 
-#: builtin/commit.c:1295 builtin/commit.c:1457
+#: builtin/commit.c:1320 builtin/commit.c:1494
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr ""
 
-#: builtin/commit.c:1299
+#: builtin/commit.c:1324
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
 msgstr ""
 
-#: builtin/commit.c:1301 parse-options.h:167
+#: builtin/commit.c:1326 parse-options.h:167
 msgid "when"
 msgstr ""
 
-#: builtin/commit.c:1302
+#: builtin/commit.c:1327
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
 msgstr ""
 
-#: builtin/commit.c:1304
+#: builtin/commit.c:1329
 msgid "list untracked files in columns"
 msgstr ""
 
-#: builtin/commit.c:1323
+#: builtin/commit.c:1330
+msgid "do not detect renames"
+msgstr ""
+
+#: builtin/commit.c:1332
+msgid "detect renames, optionally set similarity index"
+msgstr ""
+
+#: builtin/commit.c:1352
 msgid "Unsupported combination of ignored and untracked-files arguments"
 msgstr ""
 
-#: builtin/commit.c:1413
+#: builtin/commit.c:1450
 msgid "suppress summary after successful commit"
 msgstr ""
 
-#: builtin/commit.c:1414
+#: builtin/commit.c:1451
 msgid "show diff in commit message template"
 msgstr ""
 
-#: builtin/commit.c:1416
+#: builtin/commit.c:1453
 msgid "Commit message options"
 msgstr ""
 
-#: builtin/commit.c:1417 builtin/tag.c:393
+#: builtin/commit.c:1454 builtin/tag.c:394
 msgid "read message from file"
 msgstr ""
 
-#: builtin/commit.c:1418
+#: builtin/commit.c:1455
 msgid "author"
 msgstr ""
 
-#: builtin/commit.c:1418
+#: builtin/commit.c:1455
 msgid "override author for commit"
 msgstr ""
 
-#: builtin/commit.c:1419 builtin/gc.c:359
+#: builtin/commit.c:1456 builtin/gc.c:501
 msgid "date"
 msgstr ""
 
-#: builtin/commit.c:1419
+#: builtin/commit.c:1456
 msgid "override date for commit"
 msgstr ""
 
-#: builtin/commit.c:1420 builtin/merge.c:226 builtin/notes.c:402
-#: builtin/notes.c:565 builtin/tag.c:391
+#: builtin/commit.c:1457 builtin/merge.c:228 builtin/notes.c:402
+#: builtin/notes.c:565 builtin/tag.c:392
 msgid "message"
 msgstr ""
 
-#: builtin/commit.c:1420
+#: builtin/commit.c:1457
 msgid "commit message"
 msgstr ""
 
-#: builtin/commit.c:1421 builtin/commit.c:1422 builtin/commit.c:1423
-#: builtin/commit.c:1424 parse-options.h:269 ref-filter.h:92
+#: builtin/commit.c:1458 builtin/commit.c:1459 builtin/commit.c:1460
+#: builtin/commit.c:1461 parse-options.h:270 ref-filter.h:92
 msgid "commit"
 msgstr ""
 
-#: builtin/commit.c:1421
+#: builtin/commit.c:1458
 msgid "reuse and edit message from specified commit"
 msgstr ""
 
-#: builtin/commit.c:1422
+#: builtin/commit.c:1459
 msgid "reuse message from specified commit"
 msgstr ""
 
-#: builtin/commit.c:1423
+#: builtin/commit.c:1460
 msgid "use autosquash formatted message to fixup specified commit"
 msgstr ""
 
-#: builtin/commit.c:1424
+#: builtin/commit.c:1461
 msgid "use autosquash formatted message to squash specified commit"
 msgstr ""
 
-#: builtin/commit.c:1425
+#: builtin/commit.c:1462
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr ""
 
-#: builtin/commit.c:1426 builtin/log.c:1446 builtin/merge.c:240
-#: builtin/pull.c:149 builtin/revert.c:105
+#: builtin/commit.c:1463 builtin/log.c:1446 builtin/merge.c:242
+#: builtin/pull.c:154 builtin/revert.c:105
 msgid "add Signed-off-by:"
 msgstr ""
 
-#: builtin/commit.c:1427
+#: builtin/commit.c:1464
 msgid "use specified template file"
 msgstr ""
 
-#: builtin/commit.c:1428
+#: builtin/commit.c:1465
 msgid "force edit of commit"
 msgstr ""
 
-#: builtin/commit.c:1429
+#: builtin/commit.c:1466
 msgid "default"
 msgstr ""
 
-#: builtin/commit.c:1429 builtin/tag.c:397
+#: builtin/commit.c:1466 builtin/tag.c:398
 msgid "how to strip spaces and #comments from message"
 msgstr ""
 
-#: builtin/commit.c:1430
+#: builtin/commit.c:1467
 msgid "include status in commit message template"
 msgstr ""
 
-#: builtin/commit.c:1432 builtin/merge.c:238 builtin/pull.c:179
+#: builtin/commit.c:1469 builtin/merge.c:240 builtin/pull.c:184
 #: builtin/revert.c:113
 msgid "GPG sign commit"
 msgstr ""
 
-#: builtin/commit.c:1435
+#: builtin/commit.c:1472
 msgid "Commit contents options"
 msgstr ""
 
-#: builtin/commit.c:1436
+#: builtin/commit.c:1473
 msgid "commit all changed files"
 msgstr ""
 
-#: builtin/commit.c:1437
+#: builtin/commit.c:1474
 msgid "add specified files to index for commit"
 msgstr ""
 
-#: builtin/commit.c:1438
+#: builtin/commit.c:1475
 msgid "interactively add files"
 msgstr ""
 
-#: builtin/commit.c:1439
+#: builtin/commit.c:1476
 msgid "interactively add changes"
 msgstr ""
 
-#: builtin/commit.c:1440
+#: builtin/commit.c:1477
 msgid "commit only specified files"
 msgstr ""
 
-#: builtin/commit.c:1441
+#: builtin/commit.c:1478
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr ""
 
-#: builtin/commit.c:1442
+#: builtin/commit.c:1479
 msgid "show what would be committed"
 msgstr ""
 
-#: builtin/commit.c:1455
+#: builtin/commit.c:1492
 msgid "amend previous commit"
 msgstr ""
 
-#: builtin/commit.c:1456
+#: builtin/commit.c:1493
 msgid "bypass post-rewrite hook"
 msgstr ""
 
-#: builtin/commit.c:1461
+#: builtin/commit.c:1498
 msgid "ok to record an empty change"
 msgstr ""
 
-#: builtin/commit.c:1463
+#: builtin/commit.c:1500
 msgid "ok to record a change with an empty message"
 msgstr ""
 
-#: builtin/commit.c:1536
+#: builtin/commit.c:1573
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr ""
 
-#: builtin/commit.c:1543
+#: builtin/commit.c:1580
 msgid "could not read MERGE_MODE"
 msgstr ""
 
-#: builtin/commit.c:1562
+#: builtin/commit.c:1599
 #, c-format
 msgid "could not read commit message: %s"
 msgstr ""
 
-#: builtin/commit.c:1573
+#: builtin/commit.c:1610
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr ""
 
-#: builtin/commit.c:1578
+#: builtin/commit.c:1615
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr ""
 
-#: builtin/commit.c:1613
+#: builtin/commit.c:1650
 msgid ""
 "Repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full and quota is\n"
 "not exceeded, and then \"git reset HEAD\" to recover."
 msgstr ""
 
+#: builtin/commit-graph.c:9
+msgid "git commit-graph [--object-dir <objdir>]"
+msgstr ""
+
+#: builtin/commit-graph.c:10 builtin/commit-graph.c:16
+msgid "git commit-graph read [--object-dir <objdir>]"
+msgstr ""
+
+#: builtin/commit-graph.c:11 builtin/commit-graph.c:21
+msgid ""
+"git commit-graph write [--object-dir <objdir>] [--append] [--stdin-packs|--"
+"stdin-commits]"
+msgstr ""
+
+#: builtin/commit-graph.c:39 builtin/commit-graph.c:92
+#: builtin/commit-graph.c:147 builtin/fetch.c:161 builtin/log.c:1466
+msgid "dir"
+msgstr ""
+
+#: builtin/commit-graph.c:40 builtin/commit-graph.c:93
+#: builtin/commit-graph.c:148
+msgid "The object directory to store the graph"
+msgstr ""
+
+#: builtin/commit-graph.c:95
+msgid "scan pack-indexes listed by stdin for commits"
+msgstr ""
+
+#: builtin/commit-graph.c:97
+msgid "start walk at commits listed by stdin"
+msgstr ""
+
+#: builtin/commit-graph.c:99
+msgid "include all commits already in the commit-graph file"
+msgstr ""
+
+#: builtin/commit-graph.c:108
+msgid "cannot use both --stdin-commits and --stdin-packs"
+msgstr ""
+
 #: builtin/config.c:10
 msgid "git config [<options>]"
 msgstr ""
 
-#: builtin/config.c:58
+#: builtin/config.c:101
+#, c-format
+msgid "unrecognized --type argument, %s"
+msgstr ""
+
+#: builtin/config.c:123
 msgid "Config file location"
 msgstr ""
 
-#: builtin/config.c:59
+#: builtin/config.c:124
 msgid "use global config file"
 msgstr ""
 
-#: builtin/config.c:60
+#: builtin/config.c:125
 msgid "use system config file"
 msgstr ""
 
-#: builtin/config.c:61
+#: builtin/config.c:126
 msgid "use repository config file"
 msgstr ""
 
-#: builtin/config.c:62
+#: builtin/config.c:127
 msgid "use given config file"
 msgstr ""
 
-#: builtin/config.c:63
+#: builtin/config.c:128
 msgid "blob-id"
 msgstr ""
 
-#: builtin/config.c:63
+#: builtin/config.c:128
 msgid "read config from given blob object"
 msgstr ""
 
-#: builtin/config.c:64
+#: builtin/config.c:129
 msgid "Action"
 msgstr ""
 
-#: builtin/config.c:65
+#: builtin/config.c:130
 msgid "get value: name [value-regex]"
 msgstr ""
 
-#: builtin/config.c:66
+#: builtin/config.c:131
 msgid "get all values: key [value-regex]"
 msgstr ""
 
-#: builtin/config.c:67
+#: builtin/config.c:132
 msgid "get values for regexp: name-regex [value-regex]"
 msgstr ""
 
-#: builtin/config.c:68
+#: builtin/config.c:133
 msgid "get value specific for the URL: section[.var] URL"
 msgstr ""
 
-#: builtin/config.c:69
+#: builtin/config.c:134
 msgid "replace all matching variables: name value [value_regex]"
 msgstr ""
 
-#: builtin/config.c:70
+#: builtin/config.c:135
 msgid "add a new variable: name value"
 msgstr ""
 
-#: builtin/config.c:71
+#: builtin/config.c:136
 msgid "remove a variable: name [value-regex]"
 msgstr ""
 
-#: builtin/config.c:72
+#: builtin/config.c:137
 msgid "remove all matches: name [value-regex]"
 msgstr ""
 
-#: builtin/config.c:73
+#: builtin/config.c:138
 msgid "rename section: old-name new-name"
 msgstr ""
 
-#: builtin/config.c:74
+#: builtin/config.c:139
 msgid "remove a section: name"
 msgstr ""
 
-#: builtin/config.c:75
+#: builtin/config.c:140
 msgid "list all"
 msgstr ""
 
-#: builtin/config.c:76
+#: builtin/config.c:141
 msgid "open an editor"
 msgstr ""
 
-#: builtin/config.c:77
+#: builtin/config.c:142
 msgid "find the color configured: slot [default]"
 msgstr ""
 
-#: builtin/config.c:78
+#: builtin/config.c:143
 msgid "find the color setting: slot [stdout-is-tty]"
 msgstr ""
 
-#: builtin/config.c:79
+#: builtin/config.c:144
 msgid "Type"
 msgstr ""
 
-#: builtin/config.c:80
+#: builtin/config.c:145
+msgid "value is given this type"
+msgstr ""
+
+#: builtin/config.c:146
 msgid "value is \"true\" or \"false\""
 msgstr ""
 
-#: builtin/config.c:81
+#: builtin/config.c:147
 msgid "value is decimal number"
 msgstr ""
 
-#: builtin/config.c:82
+#: builtin/config.c:148
 msgid "value is --bool or --int"
 msgstr ""
 
-#: builtin/config.c:83
+#: builtin/config.c:149
 msgid "value is a path (file or directory name)"
 msgstr ""
 
-#: builtin/config.c:84
+#: builtin/config.c:150
 msgid "value is an expiry date"
 msgstr ""
 
-#: builtin/config.c:85
+#: builtin/config.c:151
 msgid "Other"
 msgstr ""
 
-#: builtin/config.c:86
+#: builtin/config.c:152
 msgid "terminate values with NUL byte"
 msgstr ""
 
-#: builtin/config.c:87
+#: builtin/config.c:153
 msgid "show variable names only"
 msgstr ""
 
-#: builtin/config.c:88
+#: builtin/config.c:154
 msgid "respect include directives on lookup"
 msgstr ""
 
-#: builtin/config.c:89
+#: builtin/config.c:155
 msgid "show origin of config (file, standard input, blob, command line)"
 msgstr ""
 
-#: builtin/config.c:335
+#: builtin/config.c:156
+msgid "value"
+msgstr ""
+
+#: builtin/config.c:156
+msgid "with --get, use default value when missing entry"
+msgstr ""
+
+#: builtin/config.c:332
+#, c-format
+msgid "failed to format default config value: %s"
+msgstr ""
+
+#: builtin/config.c:431
 msgid "unable to parse default color value"
 msgstr ""
 
-#: builtin/config.c:479
+#: builtin/config.c:575
 #, c-format
 msgid ""
 "# This is Git's per-user configuration file.\n"
@@ -7446,27 +7870,31 @@ msgid ""
 "#\temail = %s\n"
 msgstr ""
 
-#: builtin/config.c:507
+#: builtin/config.c:603
 msgid "--local can only be used inside a git repository"
 msgstr ""
 
-#: builtin/config.c:632
+#: builtin/config.c:606
+msgid "--blob can only be used inside a git repository"
+msgstr ""
+
+#: builtin/config.c:735
 #, c-format
 msgid "cannot create configuration file %s"
 msgstr ""
 
-#: builtin/config.c:645
+#: builtin/config.c:748
 #, c-format
 msgid ""
 "cannot overwrite multiple values with a single value\n"
 "       Use a regexp, --add or --replace-all to change %s."
 msgstr ""
 
-#: builtin/count-objects.c:88
+#: builtin/count-objects.c:90
 msgid "git count-objects [-v] [-H | --human-readable]"
 msgstr ""
 
-#: builtin/count-objects.c:98
+#: builtin/count-objects.c:100
 msgid "print sizes in human readable format"
 msgstr ""
 
@@ -7722,371 +8150,377 @@ msgstr ""
 msgid "do not prompt before launching a diff tool"
 msgstr ""
 
-#: builtin/difftool.c:705
+#: builtin/difftool.c:704
 msgid "use symlinks in dir-diff mode"
 msgstr ""
 
-#: builtin/difftool.c:706
+#: builtin/difftool.c:705
 msgid "<tool>"
 msgstr ""
 
-#: builtin/difftool.c:707
+#: builtin/difftool.c:706
 msgid "use the specified diff tool"
 msgstr ""
 
-#: builtin/difftool.c:709
+#: builtin/difftool.c:708
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr ""
 
-#: builtin/difftool.c:712
+#: builtin/difftool.c:711
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
 msgstr ""
 
-#: builtin/difftool.c:714
+#: builtin/difftool.c:713
 msgid "<command>"
 msgstr ""
 
-#: builtin/difftool.c:715
+#: builtin/difftool.c:714
 msgid "specify a custom command for viewing diffs"
 msgstr ""
 
-#: builtin/difftool.c:739
+#: builtin/difftool.c:738
 msgid "no <tool> given for --tool=<tool>"
 msgstr ""
 
-#: builtin/difftool.c:746
+#: builtin/difftool.c:745
 msgid "no <cmd> given for --extcmd=<cmd>"
 msgstr ""
 
-#: builtin/fast-export.c:26
+#: builtin/fast-export.c:27
 msgid "git fast-export [rev-list-opts]"
 msgstr ""
 
-#: builtin/fast-export.c:998
+#: builtin/fast-export.c:1000
 msgid "show progress after <n> objects"
 msgstr ""
 
-#: builtin/fast-export.c:1000
+#: builtin/fast-export.c:1002
 msgid "select handling of signed tags"
 msgstr ""
 
-#: builtin/fast-export.c:1003
+#: builtin/fast-export.c:1005
 msgid "select handling of tags that tag filtered objects"
 msgstr ""
 
-#: builtin/fast-export.c:1006
+#: builtin/fast-export.c:1008
 msgid "Dump marks to this file"
 msgstr ""
 
-#: builtin/fast-export.c:1008
+#: builtin/fast-export.c:1010
 msgid "Import marks from this file"
 msgstr ""
 
-#: builtin/fast-export.c:1010
+#: builtin/fast-export.c:1012
 msgid "Fake a tagger when tags lack one"
 msgstr ""
 
-#: builtin/fast-export.c:1012
+#: builtin/fast-export.c:1014
 msgid "Output full tree for each commit"
 msgstr ""
 
-#: builtin/fast-export.c:1014
+#: builtin/fast-export.c:1016
 msgid "Use the done feature to terminate the stream"
 msgstr ""
 
-#: builtin/fast-export.c:1015
+#: builtin/fast-export.c:1017
 msgid "Skip output of blob data"
 msgstr ""
 
-#: builtin/fast-export.c:1016
+#: builtin/fast-export.c:1018
 msgid "refspec"
 msgstr ""
 
-#: builtin/fast-export.c:1017
+#: builtin/fast-export.c:1019
 msgid "Apply refspec to exported refs"
 msgstr ""
 
-#: builtin/fast-export.c:1018
+#: builtin/fast-export.c:1020
 msgid "anonymize output"
 msgstr ""
 
-#: builtin/fetch.c:25
+#: builtin/fetch.c:26
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
 msgstr ""
 
-#: builtin/fetch.c:26
+#: builtin/fetch.c:27
 msgid "git fetch [<options>] <group>"
 msgstr ""
 
-#: builtin/fetch.c:27
+#: builtin/fetch.c:28
 msgid "git fetch --multiple [<options>] [(<repository> | <group>)...]"
 msgstr ""
 
-#: builtin/fetch.c:28
+#: builtin/fetch.c:29
 msgid "git fetch --all [<options>]"
 msgstr ""
 
-#: builtin/fetch.c:124 builtin/pull.c:188
+#: builtin/fetch.c:123 builtin/pull.c:193
 msgid "fetch from all remotes"
 msgstr ""
 
-#: builtin/fetch.c:126 builtin/pull.c:191
+#: builtin/fetch.c:125 builtin/pull.c:196
 msgid "append to .git/FETCH_HEAD instead of overwriting"
 msgstr ""
 
-#: builtin/fetch.c:128 builtin/pull.c:194
+#: builtin/fetch.c:127 builtin/pull.c:199
 msgid "path to upload pack on remote end"
 msgstr ""
 
-#: builtin/fetch.c:129 builtin/pull.c:196
+#: builtin/fetch.c:128 builtin/pull.c:201
 msgid "force overwrite of local branch"
 msgstr ""
 
-#: builtin/fetch.c:131
+#: builtin/fetch.c:130
 msgid "fetch from multiple remotes"
 msgstr ""
 
-#: builtin/fetch.c:133 builtin/pull.c:198
+#: builtin/fetch.c:132 builtin/pull.c:203
 msgid "fetch all tags and associated objects"
 msgstr ""
 
-#: builtin/fetch.c:135
+#: builtin/fetch.c:134
 msgid "do not fetch all tags (--no-tags)"
 msgstr ""
 
-#: builtin/fetch.c:137
+#: builtin/fetch.c:136
 msgid "number of submodules fetched in parallel"
 msgstr ""
 
-#: builtin/fetch.c:139 builtin/pull.c:201
+#: builtin/fetch.c:138 builtin/pull.c:206
 msgid "prune remote-tracking branches no longer on remote"
 msgstr ""
 
-#: builtin/fetch.c:141
+#: builtin/fetch.c:140
 msgid "prune local tags no longer on remote and clobber changed tags"
 msgstr ""
 
-#: builtin/fetch.c:142 builtin/fetch.c:165 builtin/pull.c:126
+#: builtin/fetch.c:141 builtin/fetch.c:164 builtin/pull.c:131
 msgid "on-demand"
 msgstr ""
 
-#: builtin/fetch.c:143
+#: builtin/fetch.c:142
 msgid "control recursive fetching of submodules"
 msgstr ""
 
-#: builtin/fetch.c:147 builtin/pull.c:209
+#: builtin/fetch.c:146 builtin/pull.c:214
 msgid "keep downloaded pack"
 msgstr ""
 
-#: builtin/fetch.c:149
+#: builtin/fetch.c:148
 msgid "allow updating of HEAD ref"
 msgstr ""
 
-#: builtin/fetch.c:152 builtin/fetch.c:158 builtin/pull.c:212
+#: builtin/fetch.c:151 builtin/fetch.c:157 builtin/pull.c:217
 msgid "deepen history of shallow clone"
 msgstr ""
 
-#: builtin/fetch.c:154
+#: builtin/fetch.c:153
 msgid "deepen history of shallow repository based on time"
 msgstr ""
 
-#: builtin/fetch.c:160 builtin/pull.c:215
+#: builtin/fetch.c:159 builtin/pull.c:220
 msgid "convert to a complete repository"
 msgstr ""
 
-#: builtin/fetch.c:162 builtin/log.c:1466
-msgid "dir"
-msgstr ""
-
-#: builtin/fetch.c:163
+#: builtin/fetch.c:162
 msgid "prepend this to submodule path output"
 msgstr ""
 
-#: builtin/fetch.c:166
+#: builtin/fetch.c:165
 msgid ""
 "default for recursive fetching of submodules (lower priority than config "
 "files)"
 msgstr ""
 
-#: builtin/fetch.c:170 builtin/pull.c:218
+#: builtin/fetch.c:169 builtin/pull.c:223
 msgid "accept refs that update .git/shallow"
 msgstr ""
 
-#: builtin/fetch.c:171 builtin/pull.c:220
+#: builtin/fetch.c:170 builtin/pull.c:225
 msgid "refmap"
 msgstr ""
 
-#: builtin/fetch.c:172 builtin/pull.c:221
+#: builtin/fetch.c:171 builtin/pull.c:226
 msgid "specify fetch refmap"
 msgstr ""
 
-#: builtin/fetch.c:431
+#: builtin/fetch.c:172 builtin/ls-remote.c:77 builtin/push.c:582
+#: builtin/send-pack.c:172
+msgid "server-specific"
+msgstr ""
+
+#: builtin/fetch.c:172 builtin/ls-remote.c:77 builtin/push.c:582
+#: builtin/send-pack.c:173
+msgid "option to transmit"
+msgstr ""
+
+#: builtin/fetch.c:442
 msgid "Couldn't find remote ref HEAD"
 msgstr ""
 
-#: builtin/fetch.c:549
+#: builtin/fetch.c:560
 #, c-format
 msgid "configuration fetch.output contains invalid value %s"
 msgstr ""
 
-#: builtin/fetch.c:642
+#: builtin/fetch.c:653
 #, c-format
 msgid "object %s not found"
 msgstr ""
 
-#: builtin/fetch.c:646
+#: builtin/fetch.c:657
 msgid "[up to date]"
 msgstr ""
 
-#: builtin/fetch.c:659 builtin/fetch.c:739
+#: builtin/fetch.c:670 builtin/fetch.c:750
 msgid "[rejected]"
 msgstr ""
 
-#: builtin/fetch.c:660
+#: builtin/fetch.c:671
 msgid "can't fetch in current branch"
 msgstr ""
 
-#: builtin/fetch.c:669
+#: builtin/fetch.c:680
 msgid "[tag update]"
 msgstr ""
 
-#: builtin/fetch.c:670 builtin/fetch.c:703 builtin/fetch.c:719
-#: builtin/fetch.c:734
+#: builtin/fetch.c:681 builtin/fetch.c:714 builtin/fetch.c:730
+#: builtin/fetch.c:745
 msgid "unable to update local ref"
 msgstr ""
 
-#: builtin/fetch.c:689
+#: builtin/fetch.c:700
 msgid "[new tag]"
 msgstr ""
 
-#: builtin/fetch.c:692
+#: builtin/fetch.c:703
 msgid "[new branch]"
 msgstr ""
 
-#: builtin/fetch.c:695
+#: builtin/fetch.c:706
 msgid "[new ref]"
 msgstr ""
 
-#: builtin/fetch.c:734
+#: builtin/fetch.c:745
 msgid "forced update"
 msgstr ""
 
-#: builtin/fetch.c:739
+#: builtin/fetch.c:750
 msgid "non-fast-forward"
 msgstr ""
 
-#: builtin/fetch.c:784
+#: builtin/fetch.c:795
 #, c-format
 msgid "%s did not send all necessary objects\n"
 msgstr ""
 
-#: builtin/fetch.c:804
+#: builtin/fetch.c:815
 #, c-format
 msgid "reject %s because shallow roots are not allowed to be updated"
 msgstr ""
 
-#: builtin/fetch.c:892 builtin/fetch.c:988
+#: builtin/fetch.c:903 builtin/fetch.c:999
 #, c-format
 msgid "From %.*s\n"
 msgstr ""
 
-#: builtin/fetch.c:903
+#: builtin/fetch.c:914
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
 " 'git remote prune %s' to remove any old, conflicting branches"
 msgstr ""
 
-#: builtin/fetch.c:958
+#: builtin/fetch.c:969
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr ""
 
-#: builtin/fetch.c:959
+#: builtin/fetch.c:970
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr ""
 
-#: builtin/fetch.c:991
+#: builtin/fetch.c:1002
 msgid "[deleted]"
 msgstr ""
 
-#: builtin/fetch.c:992 builtin/remote.c:1024
+#: builtin/fetch.c:1003 builtin/remote.c:1033
 msgid "(none)"
 msgstr ""
 
-#: builtin/fetch.c:1015
+#: builtin/fetch.c:1026
 #, c-format
 msgid "Refusing to fetch into current branch %s of non-bare repository"
 msgstr ""
 
-#: builtin/fetch.c:1034
+#: builtin/fetch.c:1045
 #, c-format
 msgid "Option \"%s\" value \"%s\" is not valid for %s"
 msgstr ""
 
-#: builtin/fetch.c:1037
+#: builtin/fetch.c:1048
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr ""
 
-#: builtin/fetch.c:1277
+#: builtin/fetch.c:1287
 #, c-format
 msgid "Fetching %s\n"
 msgstr ""
 
-#: builtin/fetch.c:1279 builtin/remote.c:97
+#: builtin/fetch.c:1289 builtin/remote.c:98
 #, c-format
 msgid "Could not fetch %s"
 msgstr ""
 
-#: builtin/fetch.c:1325 builtin/fetch.c:1498
+#: builtin/fetch.c:1335 builtin/fetch.c:1503
 msgid ""
 "--filter can only be used with the remote configured in core.partialClone"
 msgstr ""
 
-#: builtin/fetch.c:1350
+#: builtin/fetch.c:1358
 msgid ""
 "No remote repository specified.  Please, specify either a URL or a\n"
 "remote name from which new revisions should be fetched."
 msgstr ""
 
-#: builtin/fetch.c:1394
+#: builtin/fetch.c:1395
 msgid "You need to specify a tag name."
 msgstr ""
 
-#: builtin/fetch.c:1439
+#: builtin/fetch.c:1444
 msgid "Negative depth in --deepen is not supported"
 msgstr ""
 
-#: builtin/fetch.c:1441
+#: builtin/fetch.c:1446
 msgid "--deepen and --depth are mutually exclusive"
 msgstr ""
 
-#: builtin/fetch.c:1446
+#: builtin/fetch.c:1451
 msgid "--depth and --unshallow cannot be used together"
 msgstr ""
 
-#: builtin/fetch.c:1448
+#: builtin/fetch.c:1453
 msgid "--unshallow on a complete repository does not make sense"
 msgstr ""
 
-#: builtin/fetch.c:1464
+#: builtin/fetch.c:1469
 msgid "fetch --all does not take a repository argument"
 msgstr ""
 
-#: builtin/fetch.c:1466
+#: builtin/fetch.c:1471
 msgid "fetch --all does not make sense with refspecs"
 msgstr ""
 
-#: builtin/fetch.c:1475
+#: builtin/fetch.c:1480
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr ""
 
-#: builtin/fetch.c:1482
+#: builtin/fetch.c:1487
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr ""
 
@@ -8151,7 +8585,7 @@ msgstr ""
 msgid "show only <n> matched refs"
 msgstr ""
 
-#: builtin/for-each-ref.c:39 builtin/tag.c:420
+#: builtin/for-each-ref.c:39 builtin/tag.c:421
 msgid "respect format colors"
 msgstr ""
 
@@ -8175,81 +8609,81 @@ msgstr ""
 msgid "print only refs which don't contain the commit"
 msgstr ""
 
-#: builtin/fsck.c:568
+#: builtin/fsck.c:569
 msgid "Checking object directories"
 msgstr ""
 
-#: builtin/fsck.c:660
+#: builtin/fsck.c:661
 msgid "git fsck [<options>] [<object>...]"
 msgstr ""
 
-#: builtin/fsck.c:666
+#: builtin/fsck.c:667
 msgid "show unreachable objects"
 msgstr ""
 
-#: builtin/fsck.c:667
+#: builtin/fsck.c:668
 msgid "show dangling objects"
 msgstr ""
 
-#: builtin/fsck.c:668
+#: builtin/fsck.c:669
 msgid "report tags"
 msgstr ""
 
-#: builtin/fsck.c:669
+#: builtin/fsck.c:670
 msgid "report root nodes"
 msgstr ""
 
-#: builtin/fsck.c:670
+#: builtin/fsck.c:671
 msgid "make index objects head nodes"
 msgstr ""
 
-#: builtin/fsck.c:671
+#: builtin/fsck.c:672
 msgid "make reflogs head nodes (default)"
 msgstr ""
 
-#: builtin/fsck.c:672
+#: builtin/fsck.c:673
 msgid "also consider packs and alternate objects"
 msgstr ""
 
-#: builtin/fsck.c:673
+#: builtin/fsck.c:674
 msgid "check only connectivity"
 msgstr ""
 
-#: builtin/fsck.c:674
+#: builtin/fsck.c:675
 msgid "enable more strict checking"
 msgstr ""
 
-#: builtin/fsck.c:676
+#: builtin/fsck.c:677
 msgid "write dangling objects in .git/lost-found"
 msgstr ""
 
-#: builtin/fsck.c:677 builtin/prune.c:108
+#: builtin/fsck.c:678 builtin/prune.c:109
 msgid "show progress"
 msgstr ""
 
-#: builtin/fsck.c:678
+#: builtin/fsck.c:679
 msgid "show verbose names for reachable objects"
 msgstr ""
 
-#: builtin/fsck.c:742
+#: builtin/fsck.c:745
 msgid "Checking objects"
 msgstr ""
 
-#: builtin/gc.c:27
+#: builtin/gc.c:33
 msgid "git gc [<options>]"
 msgstr ""
 
-#: builtin/gc.c:80
+#: builtin/gc.c:88
 #, c-format
 msgid "Failed to fstat %s: %s"
 msgstr ""
 
-#: builtin/gc.c:312
+#: builtin/gc.c:452
 #, c-format
 msgid "Can't stat %s"
 msgstr ""
 
-#: builtin/gc.c:321
+#: builtin/gc.c:461
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -8259,63 +8693,72 @@ msgid ""
 "%s"
 msgstr ""
 
-#: builtin/gc.c:360
+#: builtin/gc.c:502
 msgid "prune unreferenced objects"
 msgstr ""
 
-#: builtin/gc.c:362
+#: builtin/gc.c:504
 msgid "be more thorough (increased runtime)"
 msgstr ""
 
-#: builtin/gc.c:363
+#: builtin/gc.c:505
 msgid "enable auto-gc mode"
 msgstr ""
 
-#: builtin/gc.c:366
+#: builtin/gc.c:508
 msgid "force running gc even if there may be another gc running"
 msgstr ""
 
-#: builtin/gc.c:384
+#: builtin/gc.c:511
+msgid "repack all other packs except the largest pack"
+msgstr ""
+
+#: builtin/gc.c:528
+#, c-format
+msgid "failed to parse gc.logexpiry value %s"
+msgstr ""
+
+#: builtin/gc.c:539
 #, c-format
-msgid "Failed to parse gc.logexpiry value %s"
+msgid "failed to parse prune expiry value %s"
 msgstr ""
 
-#: builtin/gc.c:412
+#: builtin/gc.c:559
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
 msgstr ""
 
-#: builtin/gc.c:414
+#: builtin/gc.c:561
 #, c-format
 msgid "Auto packing the repository for optimum performance.\n"
 msgstr ""
 
-#: builtin/gc.c:415
+#: builtin/gc.c:562
 #, c-format
 msgid "See \"git help gc\" for manual housekeeping.\n"
 msgstr ""
 
-#: builtin/gc.c:440
+#: builtin/gc.c:598
 #, c-format
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
 msgstr ""
 
-#: builtin/gc.c:487
+#: builtin/gc.c:645
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove them."
 msgstr ""
 
-#: builtin/grep.c:27
+#: builtin/grep.c:28
 msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
 msgstr ""
 
-#: builtin/grep.c:225
+#: builtin/grep.c:226
 #, c-format
 msgid "grep: failed to create thread: %s"
 msgstr ""
 
-#: builtin/grep.c:283
+#: builtin/grep.c:284
 #, c-format
 msgid "invalid number of threads specified (%d) for %s"
 msgstr ""
@@ -8324,17 +8767,17 @@ msgstr ""
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:292 builtin/index-pack.c:1523 builtin/index-pack.c:1712
+#: builtin/grep.c:293 builtin/index-pack.c:1535 builtin/index-pack.c:1727
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr ""
 
-#: builtin/grep.c:460 builtin/grep.c:580 builtin/grep.c:622
+#: builtin/grep.c:461 builtin/grep.c:582 builtin/grep.c:623
 #, c-format
 msgid "unable to read tree (%s)"
 msgstr ""
 
-#: builtin/grep.c:637
+#: builtin/grep.c:638
 #, c-format
 msgid "unable to grep from object of type %s"
 msgstr ""
@@ -8533,7 +8976,7 @@ msgstr ""
 msgid "unable to resolve revision: %s"
 msgstr ""
 
-#: builtin/grep.c:1036 builtin/index-pack.c:1519
+#: builtin/grep.c:1036 builtin/index-pack.c:1531
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr ""
@@ -8601,423 +9044,395 @@ msgstr ""
 msgid "process file as it were from this path"
 msgstr ""
 
-#: builtin/help.c:43
+#: builtin/help.c:45
 msgid "print all available commands"
 msgstr ""
 
-#: builtin/help.c:44
+#: builtin/help.c:46
 msgid "exclude guides"
 msgstr ""
 
-#: builtin/help.c:45
+#: builtin/help.c:47
 msgid "print list of useful guides"
 msgstr ""
 
-#: builtin/help.c:46
+#: builtin/help.c:48
 msgid "show man page"
 msgstr ""
 
-#: builtin/help.c:47
+#: builtin/help.c:49
 msgid "show manual in web browser"
 msgstr ""
 
-#: builtin/help.c:49
+#: builtin/help.c:51
 msgid "show info page"
 msgstr ""
 
-#: builtin/help.c:55
+#: builtin/help.c:53
+msgid "print command description"
+msgstr ""
+
+#: builtin/help.c:58
 msgid "git help [--all] [--guides] [--man | --web | --info] [<command>]"
 msgstr ""
 
-#: builtin/help.c:67
+#: builtin/help.c:70
 #, c-format
 msgid "unrecognized help format '%s'"
 msgstr ""
 
-#: builtin/help.c:94
+#: builtin/help.c:97
 msgid "Failed to start emacsclient."
 msgstr ""
 
-#: builtin/help.c:107
+#: builtin/help.c:110
 msgid "Failed to parse emacsclient version."
 msgstr ""
 
-#: builtin/help.c:115
+#: builtin/help.c:118
 #, c-format
 msgid "emacsclient version '%d' too old (< 22)."
 msgstr ""
 
-#: builtin/help.c:133 builtin/help.c:155 builtin/help.c:165 builtin/help.c:173
+#: builtin/help.c:136 builtin/help.c:158 builtin/help.c:168 builtin/help.c:176
 #, c-format
 msgid "failed to exec '%s'"
 msgstr ""
 
-#: builtin/help.c:211
+#: builtin/help.c:214
 #, c-format
 msgid ""
 "'%s': path for unsupported man viewer.\n"
 "Please consider using 'man.<tool>.cmd' instead."
 msgstr ""
 
-#: builtin/help.c:223
+#: builtin/help.c:226
 #, c-format
 msgid ""
 "'%s': cmd for supported man viewer.\n"
 "Please consider using 'man.<tool>.path' instead."
 msgstr ""
 
-#: builtin/help.c:340
+#: builtin/help.c:343
 #, c-format
 msgid "'%s': unknown man viewer."
 msgstr ""
 
-#: builtin/help.c:357
+#: builtin/help.c:360
 msgid "no man viewer handled the request"
 msgstr ""
 
-#: builtin/help.c:365
+#: builtin/help.c:368
 msgid "no info viewer handled the request"
 msgstr ""
 
-#: builtin/help.c:407
-msgid "Defining attributes per path"
-msgstr ""
-
-#: builtin/help.c:408
-msgid "Everyday Git With 20 Commands Or So"
-msgstr ""
-
-#: builtin/help.c:409
-msgid "A Git glossary"
-msgstr ""
-
-#: builtin/help.c:410
-msgid "Specifies intentionally untracked files to ignore"
-msgstr ""
-
-#: builtin/help.c:411
-msgid "Defining submodule properties"
-msgstr ""
-
-#: builtin/help.c:412
-msgid "Specifying revisions and ranges for Git"
-msgstr ""
-
-#: builtin/help.c:413
-msgid "A tutorial introduction to Git (for version 1.5.1 or newer)"
-msgstr ""
-
-#: builtin/help.c:414
-msgid "An overview of recommended workflows with Git"
-msgstr ""
-
-#: builtin/help.c:426
-msgid "The common Git guides are:\n"
-msgstr ""
-
-#: builtin/help.c:444
+#: builtin/help.c:415
 #, c-format
 msgid "'%s' is aliased to '%s'"
 msgstr ""
 
-#: builtin/help.c:466 builtin/help.c:483
+#: builtin/help.c:442 builtin/help.c:459
 #, c-format
 msgid "usage: %s%s"
 msgstr ""
 
-#: builtin/index-pack.c:157
+#: builtin/index-pack.c:158
 #, c-format
 msgid "unable to open %s"
 msgstr ""
 
-#: builtin/index-pack.c:207
+#: builtin/index-pack.c:208
 #, c-format
 msgid "object type mismatch at %s"
 msgstr ""
 
-#: builtin/index-pack.c:227
+#: builtin/index-pack.c:228
 #, c-format
 msgid "did not receive expected object %s"
 msgstr ""
 
-#: builtin/index-pack.c:230
+#: builtin/index-pack.c:231
 #, c-format
 msgid "object %s: expected type %s, found %s"
 msgstr ""
 
-#: builtin/index-pack.c:272
+#: builtin/index-pack.c:273
 #, c-format
 msgid "cannot fill %d byte"
 msgid_plural "cannot fill %d bytes"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/index-pack.c:282
+#: builtin/index-pack.c:283
 msgid "early EOF"
 msgstr ""
 
-#: builtin/index-pack.c:283
+#: builtin/index-pack.c:284
 msgid "read error on input"
 msgstr ""
 
-#: builtin/index-pack.c:295
+#: builtin/index-pack.c:296
 msgid "used more bytes than were available"
 msgstr ""
 
-#: builtin/index-pack.c:302
+#: builtin/index-pack.c:303
 msgid "pack too large for current definition of off_t"
 msgstr ""
 
-#: builtin/index-pack.c:305 builtin/unpack-objects.c:93
+#: builtin/index-pack.c:306 builtin/unpack-objects.c:93
 msgid "pack exceeds maximum allowed size"
 msgstr ""
 
-#: builtin/index-pack.c:320
+#: builtin/index-pack.c:321
 #, c-format
 msgid "unable to create '%s'"
 msgstr ""
 
-#: builtin/index-pack.c:326
+#: builtin/index-pack.c:327
 #, c-format
 msgid "cannot open packfile '%s'"
 msgstr ""
 
-#: builtin/index-pack.c:340
+#: builtin/index-pack.c:341
 msgid "pack signature mismatch"
 msgstr ""
 
-#: builtin/index-pack.c:342
+#: builtin/index-pack.c:343
 #, c-format
 msgid "pack version %<PRIu32> unsupported"
 msgstr ""
 
-#: builtin/index-pack.c:360
+#: builtin/index-pack.c:361
 #, c-format
 msgid "pack has bad object at offset %<PRIuMAX>: %s"
 msgstr ""
 
-#: builtin/index-pack.c:481
+#: builtin/index-pack.c:482
 #, c-format
 msgid "inflate returned %d"
 msgstr ""
 
-#: builtin/index-pack.c:530
+#: builtin/index-pack.c:531
 msgid "offset value overflow for delta base object"
 msgstr ""
 
-#: builtin/index-pack.c:538
+#: builtin/index-pack.c:539
 msgid "delta base offset is out of bound"
 msgstr ""
 
-#: builtin/index-pack.c:546
+#: builtin/index-pack.c:547
 #, c-format
 msgid "unknown object type %d"
 msgstr ""
 
-#: builtin/index-pack.c:577
+#: builtin/index-pack.c:578
 msgid "cannot pread pack file"
 msgstr ""
 
-#: builtin/index-pack.c:579
+#: builtin/index-pack.c:580
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/index-pack.c:605
+#: builtin/index-pack.c:606
 msgid "serious inflate inconsistency"
 msgstr ""
 
-#: builtin/index-pack.c:750 builtin/index-pack.c:756 builtin/index-pack.c:779
-#: builtin/index-pack.c:818 builtin/index-pack.c:827
+#: builtin/index-pack.c:751 builtin/index-pack.c:757 builtin/index-pack.c:780
+#: builtin/index-pack.c:819 builtin/index-pack.c:828
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr ""
 
-#: builtin/index-pack.c:753 builtin/pack-objects.c:182
-#: builtin/pack-objects.c:276
+#: builtin/index-pack.c:754 builtin/pack-objects.c:198
+#: builtin/pack-objects.c:292
 #, c-format
 msgid "unable to read %s"
 msgstr ""
 
-#: builtin/index-pack.c:816
+#: builtin/index-pack.c:817
 #, c-format
 msgid "cannot read existing object info %s"
 msgstr ""
 
-#: builtin/index-pack.c:824
+#: builtin/index-pack.c:825
 #, c-format
 msgid "cannot read existing object %s"
 msgstr ""
 
-#: builtin/index-pack.c:838
+#: builtin/index-pack.c:839
 #, c-format
 msgid "invalid blob object %s"
 msgstr ""
 
-#: builtin/index-pack.c:853
-#, c-format
-msgid "invalid %s"
+#: builtin/index-pack.c:842 builtin/index-pack.c:860
+msgid "fsck error in packed object"
 msgstr ""
 
-#: builtin/index-pack.c:856
-msgid "Error in object"
+#: builtin/index-pack.c:857
+#, c-format
+msgid "invalid %s"
 msgstr ""
 
-#: builtin/index-pack.c:858
+#: builtin/index-pack.c:862
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr ""
 
-#: builtin/index-pack.c:930 builtin/index-pack.c:961
+#: builtin/index-pack.c:934 builtin/index-pack.c:965
 msgid "failed to apply delta"
 msgstr ""
 
-#: builtin/index-pack.c:1131
+#: builtin/index-pack.c:1135
 msgid "Receiving objects"
 msgstr ""
 
-#: builtin/index-pack.c:1131
+#: builtin/index-pack.c:1135
 msgid "Indexing objects"
 msgstr ""
 
-#: builtin/index-pack.c:1165
+#: builtin/index-pack.c:1169
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr ""
 
-#: builtin/index-pack.c:1170
+#: builtin/index-pack.c:1174
 msgid "cannot fstat packfile"
 msgstr ""
 
-#: builtin/index-pack.c:1173
+#: builtin/index-pack.c:1177
 msgid "pack has junk at the end"
 msgstr ""
 
-#: builtin/index-pack.c:1185
+#: builtin/index-pack.c:1189
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr ""
 
-#: builtin/index-pack.c:1208
+#: builtin/index-pack.c:1212
 msgid "Resolving deltas"
 msgstr ""
 
-#: builtin/index-pack.c:1219
+#: builtin/index-pack.c:1223
 #, c-format
 msgid "unable to create thread: %s"
 msgstr ""
 
-#: builtin/index-pack.c:1261
+#: builtin/index-pack.c:1265
 msgid "confusion beyond insanity"
 msgstr ""
 
-#: builtin/index-pack.c:1267
+#: builtin/index-pack.c:1271
 #, c-format
 msgid "completed with %d local object"
 msgid_plural "completed with %d local objects"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/index-pack.c:1279
+#: builtin/index-pack.c:1283
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr ""
 
-#: builtin/index-pack.c:1283
+#: builtin/index-pack.c:1287
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/index-pack.c:1307
+#: builtin/index-pack.c:1311
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr ""
 
-#: builtin/index-pack.c:1383
+#: builtin/index-pack.c:1388
 #, c-format
 msgid "local object %s is corrupt"
 msgstr ""
 
-#: builtin/index-pack.c:1397
+#: builtin/index-pack.c:1402
 #, c-format
 msgid "packfile name '%s' does not end with '.pack'"
 msgstr ""
 
-#: builtin/index-pack.c:1422
+#: builtin/index-pack.c:1427
 #, c-format
 msgid "cannot write %s file '%s'"
 msgstr ""
 
-#: builtin/index-pack.c:1430
+#: builtin/index-pack.c:1435
 #, c-format
 msgid "cannot close written %s file '%s'"
 msgstr ""
 
-#: builtin/index-pack.c:1454
+#: builtin/index-pack.c:1459
 msgid "error while closing pack file"
 msgstr ""
 
-#: builtin/index-pack.c:1468
+#: builtin/index-pack.c:1473
 msgid "cannot store pack file"
 msgstr ""
 
-#: builtin/index-pack.c:1476
+#: builtin/index-pack.c:1481
 msgid "cannot store index file"
 msgstr ""
 
-#: builtin/index-pack.c:1513
+#: builtin/index-pack.c:1525
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr ""
 
-#: builtin/index-pack.c:1581
+#: builtin/index-pack.c:1594
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr ""
 
-#: builtin/index-pack.c:1583
+#: builtin/index-pack.c:1596
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr ""
 
-#: builtin/index-pack.c:1631
+#: builtin/index-pack.c:1644
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/index-pack.c:1638
+#: builtin/index-pack.c:1651
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/index-pack.c:1675
+#: builtin/index-pack.c:1688
 msgid "Cannot come back to cwd"
 msgstr ""
 
-#: builtin/index-pack.c:1724 builtin/index-pack.c:1727
-#: builtin/index-pack.c:1743 builtin/index-pack.c:1747
+#: builtin/index-pack.c:1739 builtin/index-pack.c:1742
+#: builtin/index-pack.c:1758 builtin/index-pack.c:1762
 #, c-format
 msgid "bad %s"
 msgstr ""
 
-#: builtin/index-pack.c:1763
+#: builtin/index-pack.c:1778
 msgid "--fix-thin cannot be used without --stdin"
 msgstr ""
 
-#: builtin/index-pack.c:1765
+#: builtin/index-pack.c:1780
 msgid "--stdin requires a git repository"
 msgstr ""
 
-#: builtin/index-pack.c:1771
+#: builtin/index-pack.c:1786
 msgid "--verify with no packfile name given"
 msgstr ""
 
+#: builtin/index-pack.c:1836 builtin/unpack-objects.c:578
+msgid "fsck error in pack objects"
+msgstr ""
+
 #: builtin/init-db.c:55
 #, c-format
 msgid "cannot stat '%s'"
@@ -9055,7 +9470,7 @@ msgstr ""
 
 #: builtin/init-db.c:120
 #, c-format
-msgid "templates not found %s"
+msgid "templates not found in %s"
 msgstr ""
 
 #: builtin/init-db.c:135
@@ -9112,11 +9527,6 @@ msgstr ""
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr ""
 
-#: builtin/init-db.c:516 builtin/init-db.c:521
-#, c-format
-msgid "cannot mkdir %s"
-msgstr ""
-
 #: builtin/init-db.c:525
 #, c-format
 msgid "cannot chdir to %s"
@@ -9296,7 +9706,7 @@ msgstr ""
 msgid "Unknown commit %s"
 msgstr ""
 
-#: builtin/log.c:1289 builtin/notes.c:887 builtin/tag.c:522
+#: builtin/log.c:1289 builtin/notes.c:887 builtin/tag.c:523
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr ""
@@ -9641,46 +10051,46 @@ msgstr ""
 msgid "show debugging data"
 msgstr ""
 
-#: builtin/ls-remote.c:7
+#: builtin/ls-remote.c:9
 msgid ""
 "git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
 "                     [--symref] [<repository> [<refs>...]]"
 msgstr ""
 
-#: builtin/ls-remote.c:52
+#: builtin/ls-remote.c:59
 msgid "do not print remote URL"
 msgstr ""
 
-#: builtin/ls-remote.c:53 builtin/ls-remote.c:55
+#: builtin/ls-remote.c:60 builtin/ls-remote.c:62
 msgid "exec"
 msgstr ""
 
-#: builtin/ls-remote.c:54 builtin/ls-remote.c:56
+#: builtin/ls-remote.c:61 builtin/ls-remote.c:63
 msgid "path of git-upload-pack on the remote host"
 msgstr ""
 
-#: builtin/ls-remote.c:58
+#: builtin/ls-remote.c:65
 msgid "limit to tags"
 msgstr ""
 
-#: builtin/ls-remote.c:59
+#: builtin/ls-remote.c:66
 msgid "limit to heads"
 msgstr ""
 
-#: builtin/ls-remote.c:60
+#: builtin/ls-remote.c:67
 msgid "do not show peeled tags"
 msgstr ""
 
-#: builtin/ls-remote.c:62
+#: builtin/ls-remote.c:69
 msgid "take url.<base>.insteadOf into account"
 msgstr ""
 
-#: builtin/ls-remote.c:64
+#: builtin/ls-remote.c:73
 msgid "exit with exit code 2 if no matching refs are found"
 msgstr ""
 
-#: builtin/ls-remote.c:67
+#: builtin/ls-remote.c:76
 msgid "show underlying ref in addition to the object pointed by it"
 msgstr ""
 
@@ -9725,165 +10135,165 @@ msgstr ""
 msgid "empty mbox: '%s'"
 msgstr ""
 
-#: builtin/merge.c:49
+#: builtin/merge.c:51
 msgid "git merge [<options>] [<commit>...]"
 msgstr ""
 
-#: builtin/merge.c:50
+#: builtin/merge.c:52
 msgid "git merge --abort"
 msgstr ""
 
-#: builtin/merge.c:51
+#: builtin/merge.c:53
 msgid "git merge --continue"
 msgstr ""
 
-#: builtin/merge.c:108
+#: builtin/merge.c:110
 msgid "switch `m' requires a value"
 msgstr ""
 
-#: builtin/merge.c:145
+#: builtin/merge.c:147
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
 msgstr ""
 
-#: builtin/merge.c:146
+#: builtin/merge.c:148
 #, c-format
 msgid "Available strategies are:"
 msgstr ""
 
-#: builtin/merge.c:151
+#: builtin/merge.c:153
 #, c-format
 msgid "Available custom strategies are:"
 msgstr ""
 
-#: builtin/merge.c:201 builtin/pull.c:137
+#: builtin/merge.c:203 builtin/pull.c:142
 msgid "do not show a diffstat at the end of the merge"
 msgstr ""
 
-#: builtin/merge.c:204 builtin/pull.c:140
+#: builtin/merge.c:206 builtin/pull.c:145
 msgid "show a diffstat at the end of the merge"
 msgstr ""
 
-#: builtin/merge.c:205 builtin/pull.c:143
+#: builtin/merge.c:207 builtin/pull.c:148
 msgid "(synonym to --stat)"
 msgstr ""
 
-#: builtin/merge.c:207 builtin/pull.c:146
+#: builtin/merge.c:209 builtin/pull.c:151
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr ""
 
-#: builtin/merge.c:210 builtin/pull.c:152
+#: builtin/merge.c:212 builtin/pull.c:157
 msgid "create a single commit instead of doing a merge"
 msgstr ""
 
-#: builtin/merge.c:212 builtin/pull.c:155
+#: builtin/merge.c:214 builtin/pull.c:160
 msgid "perform a commit if the merge succeeds (default)"
 msgstr ""
 
-#: builtin/merge.c:214 builtin/pull.c:158
+#: builtin/merge.c:216 builtin/pull.c:163
 msgid "edit message before committing"
 msgstr ""
 
-#: builtin/merge.c:215
+#: builtin/merge.c:217
 msgid "allow fast-forward (default)"
 msgstr ""
 
-#: builtin/merge.c:217 builtin/pull.c:164
+#: builtin/merge.c:219 builtin/pull.c:169
 msgid "abort if fast-forward is not possible"
 msgstr ""
 
-#: builtin/merge.c:221 builtin/pull.c:167
+#: builtin/merge.c:223 builtin/pull.c:172
 msgid "verify that the named commit has a valid GPG signature"
 msgstr ""
 
-#: builtin/merge.c:222 builtin/notes.c:777 builtin/pull.c:171
+#: builtin/merge.c:224 builtin/notes.c:777 builtin/pull.c:176
 #: builtin/revert.c:109
 msgid "strategy"
 msgstr ""
 
-#: builtin/merge.c:223 builtin/pull.c:172
+#: builtin/merge.c:225 builtin/pull.c:177
 msgid "merge strategy to use"
 msgstr ""
 
-#: builtin/merge.c:224 builtin/pull.c:175
+#: builtin/merge.c:226 builtin/pull.c:180
 msgid "option=value"
 msgstr ""
 
-#: builtin/merge.c:225 builtin/pull.c:176
+#: builtin/merge.c:227 builtin/pull.c:181
 msgid "option for selected merge strategy"
 msgstr ""
 
-#: builtin/merge.c:227
+#: builtin/merge.c:229
 msgid "merge commit message (for a non-fast-forward merge)"
 msgstr ""
 
-#: builtin/merge.c:231
+#: builtin/merge.c:233
 msgid "abort the current in-progress merge"
 msgstr ""
 
-#: builtin/merge.c:233
+#: builtin/merge.c:235
 msgid "continue the current in-progress merge"
 msgstr ""
 
-#: builtin/merge.c:235 builtin/pull.c:183
+#: builtin/merge.c:237 builtin/pull.c:188
 msgid "allow merging unrelated histories"
 msgstr ""
 
-#: builtin/merge.c:241
+#: builtin/merge.c:243
 msgid "verify commit-msg hook"
 msgstr ""
 
-#: builtin/merge.c:266
+#: builtin/merge.c:268
 msgid "could not run stash."
 msgstr ""
 
-#: builtin/merge.c:271
+#: builtin/merge.c:273
 msgid "stash failed"
 msgstr ""
 
-#: builtin/merge.c:276
+#: builtin/merge.c:278
 #, c-format
 msgid "not a valid object: %s"
 msgstr ""
 
-#: builtin/merge.c:298 builtin/merge.c:315
+#: builtin/merge.c:300 builtin/merge.c:317
 msgid "read-tree failed"
 msgstr ""
 
-#: builtin/merge.c:345
+#: builtin/merge.c:347
 msgid " (nothing to squash)"
 msgstr ""
 
-#: builtin/merge.c:356
+#: builtin/merge.c:358
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
 msgstr ""
 
-#: builtin/merge.c:406
+#: builtin/merge.c:408
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
 msgstr ""
 
-#: builtin/merge.c:456
+#: builtin/merge.c:458
 #, c-format
 msgid "'%s' does not point to a commit"
 msgstr ""
 
-#: builtin/merge.c:546
+#: builtin/merge.c:548
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr ""
 
-#: builtin/merge.c:668
+#: builtin/merge.c:669
 msgid "Not handling anything other than two heads merge."
 msgstr ""
 
-#: builtin/merge.c:682
+#: builtin/merge.c:683
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr ""
 
-#: builtin/merge.c:697
+#: builtin/merge.c:698
 #, c-format
 msgid "unable to write %s"
 msgstr ""
@@ -9912,181 +10322,181 @@ msgstr ""
 msgid "Empty commit message."
 msgstr ""
 
-#: builtin/merge.c:820
+#: builtin/merge.c:819
 #, c-format
 msgid "Wonderful.\n"
 msgstr ""
 
-#: builtin/merge.c:873
+#: builtin/merge.c:872
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr ""
 
-#: builtin/merge.c:912
+#: builtin/merge.c:911
 msgid "No current branch."
 msgstr ""
 
-#: builtin/merge.c:914
+#: builtin/merge.c:913
 msgid "No remote for the current branch."
 msgstr ""
 
-#: builtin/merge.c:916
+#: builtin/merge.c:915
 msgid "No default upstream defined for the current branch."
 msgstr ""
 
-#: builtin/merge.c:921
+#: builtin/merge.c:920
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr ""
 
-#: builtin/merge.c:974
+#: builtin/merge.c:973
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr ""
 
-#: builtin/merge.c:1076
+#: builtin/merge.c:1075
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr ""
 
-#: builtin/merge.c:1110
+#: builtin/merge.c:1109
 msgid "not something we can merge"
 msgstr ""
 
-#: builtin/merge.c:1212
+#: builtin/merge.c:1211
 msgid "--abort expects no arguments"
 msgstr ""
 
-#: builtin/merge.c:1216
+#: builtin/merge.c:1215
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr ""
 
-#: builtin/merge.c:1228
+#: builtin/merge.c:1227
 msgid "--continue expects no arguments"
 msgstr ""
 
-#: builtin/merge.c:1232
+#: builtin/merge.c:1231
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr ""
 
-#: builtin/merge.c:1248
+#: builtin/merge.c:1247
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
 msgstr ""
 
-#: builtin/merge.c:1255
+#: builtin/merge.c:1254
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
 msgstr ""
 
-#: builtin/merge.c:1258
+#: builtin/merge.c:1257
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr ""
 
-#: builtin/merge.c:1267
+#: builtin/merge.c:1266
 msgid "You cannot combine --squash with --no-ff."
 msgstr ""
 
-#: builtin/merge.c:1275
+#: builtin/merge.c:1274
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr ""
 
-#: builtin/merge.c:1292
+#: builtin/merge.c:1291
 msgid "Squash commit into empty head not supported yet"
 msgstr ""
 
-#: builtin/merge.c:1294
+#: builtin/merge.c:1293
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr ""
 
-#: builtin/merge.c:1299
+#: builtin/merge.c:1298
 #, c-format
 msgid "%s - not something we can merge"
 msgstr ""
 
-#: builtin/merge.c:1301
+#: builtin/merge.c:1300
 msgid "Can merge only exactly one commit into empty head"
 msgstr ""
 
-#: builtin/merge.c:1335
+#: builtin/merge.c:1334
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr ""
 
-#: builtin/merge.c:1338
+#: builtin/merge.c:1337
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr ""
 
-#: builtin/merge.c:1341
+#: builtin/merge.c:1340
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr ""
 
-#: builtin/merge.c:1344
+#: builtin/merge.c:1343
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr ""
 
-#: builtin/merge.c:1403
+#: builtin/merge.c:1402
 msgid "refusing to merge unrelated histories"
 msgstr ""
 
-#: builtin/merge.c:1412
+#: builtin/merge.c:1411
 msgid "Already up to date."
 msgstr ""
 
-#: builtin/merge.c:1422
+#: builtin/merge.c:1421
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr ""
 
-#: builtin/merge.c:1463
+#: builtin/merge.c:1462
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr ""
 
-#: builtin/merge.c:1470
+#: builtin/merge.c:1469
 #, c-format
 msgid "Nope.\n"
 msgstr ""
 
-#: builtin/merge.c:1495
+#: builtin/merge.c:1494
 msgid "Already up to date. Yeeah!"
 msgstr ""
 
-#: builtin/merge.c:1501
+#: builtin/merge.c:1500
 msgid "Not possible to fast-forward, aborting."
 msgstr ""
 
-#: builtin/merge.c:1524 builtin/merge.c:1603
+#: builtin/merge.c:1523 builtin/merge.c:1602
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr ""
 
-#: builtin/merge.c:1528
+#: builtin/merge.c:1527
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr ""
 
-#: builtin/merge.c:1594
+#: builtin/merge.c:1593
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr ""
 
-#: builtin/merge.c:1596
+#: builtin/merge.c:1595
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr ""
 
-#: builtin/merge.c:1605
+#: builtin/merge.c:1604
 #, c-format
 msgid "Using the %s to prepare resolving by hand.\n"
 msgstr ""
 
-#: builtin/merge.c:1617
+#: builtin/merge.c:1616
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
@@ -10220,25 +10630,25 @@ msgstr ""
 msgid "git mv [<options>] <source>... <destination>"
 msgstr ""
 
-#: builtin/mv.c:83
+#: builtin/mv.c:82
 #, c-format
 msgid "Directory %s is in index and no submodule?"
 msgstr ""
 
-#: builtin/mv.c:85 builtin/rm.c:289
+#: builtin/mv.c:84 builtin/rm.c:288
 msgid "Please stage your changes to .gitmodules or stash them to proceed"
 msgstr ""
 
-#: builtin/mv.c:103
+#: builtin/mv.c:102
 #, c-format
 msgid "%.*s is in index"
 msgstr ""
 
-#: builtin/mv.c:125
+#: builtin/mv.c:124
 msgid "force move/rename even if target exists"
 msgstr ""
 
-#: builtin/mv.c:127
+#: builtin/mv.c:126
 msgid "skip move/rename errors"
 msgstr ""
 
@@ -10303,7 +10713,7 @@ msgstr ""
 msgid "Renaming %s to %s\n"
 msgstr ""
 
-#: builtin/mv.c:276 builtin/remote.c:712 builtin/repack.c:394
+#: builtin/mv.c:276 builtin/remote.c:715 builtin/repack.c:409
 #, c-format
 msgid "renaming '%s' failed"
 msgstr ""
@@ -10488,12 +10898,12 @@ msgstr ""
 msgid "the note contents have been left in %s"
 msgstr ""
 
-#: builtin/notes.c:234 builtin/tag.c:506
+#: builtin/notes.c:234 builtin/tag.c:507
 #, c-format
 msgid "cannot read '%s'"
 msgstr ""
 
-#: builtin/notes.c:236 builtin/tag.c:509
+#: builtin/notes.c:236 builtin/tag.c:510
 #, c-format
 msgid "could not open or read '%s'"
 msgstr ""
@@ -10727,7 +11137,7 @@ msgstr ""
 msgid "read object names from the standard input"
 msgstr ""
 
-#: builtin/notes.c:943 builtin/prune.c:106 builtin/worktree.c:160
+#: builtin/notes.c:943 builtin/prune.c:107 builtin/worktree.c:151
 msgid "do not remove, show only"
 msgstr ""
 
@@ -10748,208 +11158,236 @@ msgstr ""
 msgid "unknown subcommand: %s"
 msgstr ""
 
-#: builtin/pack-objects.c:33
+#: builtin/pack-objects.c:48
 msgid ""
 "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
 msgstr ""
 
-#: builtin/pack-objects.c:34
+#: builtin/pack-objects.c:49
 msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr ""
 
-#: builtin/pack-objects.c:195 builtin/pack-objects.c:198
+#: builtin/pack-objects.c:211 builtin/pack-objects.c:214
 #, c-format
 msgid "deflate error (%d)"
 msgstr ""
 
-#: builtin/pack-objects.c:791
+#: builtin/pack-objects.c:810
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr ""
 
-#: builtin/pack-objects.c:804
+#: builtin/pack-objects.c:823
 msgid "Writing objects"
 msgstr ""
 
-#: builtin/pack-objects.c:1084
+#: builtin/pack-objects.c:1106
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr ""
 
-#: builtin/pack-objects.c:2454
+#: builtin/pack-objects.c:1765
+msgid "Counting objects"
+msgstr ""
+
+#: builtin/pack-objects.c:1895
+#, c-format
+msgid "unable to get size of %s"
+msgstr ""
+
+#: builtin/pack-objects.c:1910
+#, c-format
+msgid "unable to parse object header of %s"
+msgstr ""
+
+#: builtin/pack-objects.c:2564
 msgid "Compressing objects"
 msgstr ""
 
-#: builtin/pack-objects.c:2625
+#: builtin/pack-objects.c:2735
 msgid "invalid value for --missing"
 msgstr ""
 
-#: builtin/pack-objects.c:2928
+#: builtin/pack-objects.c:3067
 #, c-format
 msgid "unsupported index version %s"
 msgstr ""
 
-#: builtin/pack-objects.c:2932
+#: builtin/pack-objects.c:3071
 #, c-format
 msgid "bad index version '%s'"
 msgstr ""
 
-#: builtin/pack-objects.c:2962
+#: builtin/pack-objects.c:3102
 msgid "do not show progress meter"
 msgstr ""
 
-#: builtin/pack-objects.c:2964
+#: builtin/pack-objects.c:3104
 msgid "show progress meter"
 msgstr ""
 
-#: builtin/pack-objects.c:2966
+#: builtin/pack-objects.c:3106
 msgid "show progress meter during object writing phase"
 msgstr ""
 
-#: builtin/pack-objects.c:2969
+#: builtin/pack-objects.c:3109
 msgid "similar to --all-progress when progress meter is shown"
 msgstr ""
 
-#: builtin/pack-objects.c:2970
+#: builtin/pack-objects.c:3110
 msgid "version[,offset]"
 msgstr ""
 
-#: builtin/pack-objects.c:2971
+#: builtin/pack-objects.c:3111
 msgid "write the pack index file in the specified idx format version"
 msgstr ""
 
-#: builtin/pack-objects.c:2974
+#: builtin/pack-objects.c:3114
 msgid "maximum size of each output pack file"
 msgstr ""
 
-#: builtin/pack-objects.c:2976
+#: builtin/pack-objects.c:3116
 msgid "ignore borrowed objects from alternate object store"
 msgstr ""
 
-#: builtin/pack-objects.c:2978
+#: builtin/pack-objects.c:3118
 msgid "ignore packed objects"
 msgstr ""
 
-#: builtin/pack-objects.c:2980
+#: builtin/pack-objects.c:3120
 msgid "limit pack window by objects"
 msgstr ""
 
-#: builtin/pack-objects.c:2982
+#: builtin/pack-objects.c:3122
 msgid "limit pack window by memory in addition to object limit"
 msgstr ""
 
-#: builtin/pack-objects.c:2984
+#: builtin/pack-objects.c:3124
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr ""
 
-#: builtin/pack-objects.c:2986
+#: builtin/pack-objects.c:3126
 msgid "reuse existing deltas"
 msgstr ""
 
-#: builtin/pack-objects.c:2988
+#: builtin/pack-objects.c:3128
 msgid "reuse existing objects"
 msgstr ""
 
-#: builtin/pack-objects.c:2990
+#: builtin/pack-objects.c:3130
 msgid "use OFS_DELTA objects"
 msgstr ""
 
-#: builtin/pack-objects.c:2992
+#: builtin/pack-objects.c:3132
 msgid "use threads when searching for best delta matches"
 msgstr ""
 
-#: builtin/pack-objects.c:2994
+#: builtin/pack-objects.c:3134
 msgid "do not create an empty pack output"
 msgstr ""
 
-#: builtin/pack-objects.c:2996
+#: builtin/pack-objects.c:3136
 msgid "read revision arguments from standard input"
 msgstr ""
 
-#: builtin/pack-objects.c:2998
+#: builtin/pack-objects.c:3138
 msgid "limit the objects to those that are not yet packed"
 msgstr ""
 
-#: builtin/pack-objects.c:3001
+#: builtin/pack-objects.c:3141
 msgid "include objects reachable from any reference"
 msgstr ""
 
-#: builtin/pack-objects.c:3004
+#: builtin/pack-objects.c:3144
 msgid "include objects referred by reflog entries"
 msgstr ""
 
-#: builtin/pack-objects.c:3007
+#: builtin/pack-objects.c:3147
 msgid "include objects referred to by the index"
 msgstr ""
 
-#: builtin/pack-objects.c:3010
+#: builtin/pack-objects.c:3150
 msgid "output pack to stdout"
 msgstr ""
 
-#: builtin/pack-objects.c:3012
+#: builtin/pack-objects.c:3152
 msgid "include tag objects that refer to objects to be packed"
 msgstr ""
 
-#: builtin/pack-objects.c:3014
+#: builtin/pack-objects.c:3154
 msgid "keep unreachable objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3016
+#: builtin/pack-objects.c:3156
 msgid "pack loose unreachable objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3018
+#: builtin/pack-objects.c:3158
 msgid "unpack unreachable objects newer than <time>"
 msgstr ""
 
-#: builtin/pack-objects.c:3021
+#: builtin/pack-objects.c:3161
 msgid "create thin packs"
 msgstr ""
 
-#: builtin/pack-objects.c:3023
+#: builtin/pack-objects.c:3163
 msgid "create packs suitable for shallow fetches"
 msgstr ""
 
-#: builtin/pack-objects.c:3025
+#: builtin/pack-objects.c:3165
 msgid "ignore packs that have companion .keep file"
 msgstr ""
 
-#: builtin/pack-objects.c:3027
+#: builtin/pack-objects.c:3167
+msgid "ignore this pack"
+msgstr ""
+
+#: builtin/pack-objects.c:3169
 msgid "pack compression level"
 msgstr ""
 
-#: builtin/pack-objects.c:3029
+#: builtin/pack-objects.c:3171
 msgid "do not hide commits by grafts"
 msgstr ""
 
-#: builtin/pack-objects.c:3031
+#: builtin/pack-objects.c:3173
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3033
+#: builtin/pack-objects.c:3175
 msgid "write a bitmap index together with the pack index"
 msgstr ""
 
-#: builtin/pack-objects.c:3036
+#: builtin/pack-objects.c:3178
 msgid "handling for missing objects"
 msgstr ""
 
-#: builtin/pack-objects.c:3039
+#: builtin/pack-objects.c:3181
 msgid "do not pack objects in promisor packfiles"
 msgstr ""
 
-#: builtin/pack-objects.c:3178
-msgid "Counting objects"
+#: builtin/pack-objects.c:3205
+#, c-format
+msgid "delta chain depth %d is too deep, forcing %d"
+msgstr ""
+
+#: builtin/pack-objects.c:3210
+#, c-format
+msgid "pack.deltaCacheLimit is too high, forcing %d"
+msgstr ""
+
+#: builtin/pack-objects.c:3338
+msgid "Enumerating objects"
 msgstr ""
 
-#: builtin/pack-refs.c:6
+#: builtin/pack-refs.c:7
 msgid "git pack-refs [<options>]"
 msgstr ""
 
-#: builtin/pack-refs.c:14
+#: builtin/pack-refs.c:15
 msgid "pack everything"
 msgstr ""
 
-#: builtin/pack-refs.c:15
+#: builtin/pack-refs.c:16
 msgid "prune loose refs (default)"
 msgstr ""
 
@@ -10965,82 +11403,82 @@ msgstr ""
 msgid "git prune [-n] [-v] [--progress] [--expire <time>] [--] [<head>...]"
 msgstr ""
 
-#: builtin/prune.c:107
+#: builtin/prune.c:108
 msgid "report pruned objects"
 msgstr ""
 
-#: builtin/prune.c:110
+#: builtin/prune.c:111
 msgid "expire objects older than <time>"
 msgstr ""
 
-#: builtin/prune.c:112
+#: builtin/prune.c:113
 msgid "limit traversal to objects outside promisor packfiles"
 msgstr ""
 
-#: builtin/prune.c:126
+#: builtin/prune.c:127
 msgid "cannot prune in a precious-objects repo"
 msgstr ""
 
-#: builtin/pull.c:54 builtin/pull.c:56
+#: builtin/pull.c:59 builtin/pull.c:61
 #, c-format
 msgid "Invalid value for %s: %s"
 msgstr ""
 
-#: builtin/pull.c:76
+#: builtin/pull.c:81
 msgid "git pull [<options>] [<repository> [<refspec>...]]"
 msgstr ""
 
-#: builtin/pull.c:127
+#: builtin/pull.c:132
 msgid "control for recursive fetching of submodules"
 msgstr ""
 
-#: builtin/pull.c:131
+#: builtin/pull.c:136
 msgid "Options related to merging"
 msgstr ""
 
-#: builtin/pull.c:134
+#: builtin/pull.c:139
 msgid "incorporate changes by rebasing rather than merging"
 msgstr ""
 
-#: builtin/pull.c:161 builtin/rebase--helper.c:23 builtin/revert.c:121
+#: builtin/pull.c:166 builtin/rebase--helper.c:23 builtin/revert.c:121
 msgid "allow fast-forward"
 msgstr ""
 
-#: builtin/pull.c:170
+#: builtin/pull.c:175
 msgid "automatically stash/stash pop before and after rebase"
 msgstr ""
 
-#: builtin/pull.c:186
+#: builtin/pull.c:191
 msgid "Options related to fetching"
 msgstr ""
 
-#: builtin/pull.c:204
+#: builtin/pull.c:209
 msgid "number of submodules pulled in parallel"
 msgstr ""
 
-#: builtin/pull.c:299
+#: builtin/pull.c:304
 #, c-format
 msgid "Invalid value for pull.ff: %s"
 msgstr ""
 
-#: builtin/pull.c:415
+#: builtin/pull.c:420
 msgid ""
 "There is no candidate for rebasing against among the refs that you just "
 "fetched."
 msgstr ""
 
-#: builtin/pull.c:417
+#: builtin/pull.c:422
 msgid ""
 "There are no candidates for merging among the refs that you just fetched."
 msgstr ""
 
-#: builtin/pull.c:418
+#: builtin/pull.c:423
 msgid ""
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
 msgstr ""
 
-#: builtin/pull.c:421
+#: builtin/pull.c:426
 #, c-format
 msgid ""
 "You asked to pull from the remote '%s', but did not specify\n"
@@ -11048,69 +11486,69 @@ msgid ""
 "for your current branch, you must specify a branch on the command line."
 msgstr ""
 
-#: builtin/pull.c:426 git-parse-remote.sh:73
+#: builtin/pull.c:431 git-parse-remote.sh:73
 msgid "You are not currently on a branch."
 msgstr ""
 
-#: builtin/pull.c:428 builtin/pull.c:443 git-parse-remote.sh:79
+#: builtin/pull.c:433 builtin/pull.c:448 git-parse-remote.sh:79
 msgid "Please specify which branch you want to rebase against."
 msgstr ""
 
-#: builtin/pull.c:430 builtin/pull.c:445 git-parse-remote.sh:82
+#: builtin/pull.c:435 builtin/pull.c:450 git-parse-remote.sh:82
 msgid "Please specify which branch you want to merge with."
 msgstr ""
 
-#: builtin/pull.c:431 builtin/pull.c:446
+#: builtin/pull.c:436 builtin/pull.c:451
 msgid "See git-pull(1) for details."
 msgstr ""
 
-#: builtin/pull.c:433 builtin/pull.c:439 builtin/pull.c:448
+#: builtin/pull.c:438 builtin/pull.c:444 builtin/pull.c:453
 #: git-parse-remote.sh:64
 msgid "<remote>"
 msgstr ""
 
-#: builtin/pull.c:433 builtin/pull.c:448 builtin/pull.c:453 git-rebase.sh:477
+#: builtin/pull.c:438 builtin/pull.c:453 builtin/pull.c:458 git-rebase.sh:523
 #: git-parse-remote.sh:65
 msgid "<branch>"
 msgstr ""
 
-#: builtin/pull.c:441 git-parse-remote.sh:75
+#: builtin/pull.c:446 git-parse-remote.sh:75
 msgid "There is no tracking information for the current branch."
 msgstr ""
 
-#: builtin/pull.c:450 git-parse-remote.sh:95
+#: builtin/pull.c:455 git-parse-remote.sh:95
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:"
 msgstr ""
 
-#: builtin/pull.c:455
+#: builtin/pull.c:460
 #, c-format
 msgid ""
 "Your configuration specifies to merge with the ref '%s'\n"
 "from the remote, but no such ref was fetched."
 msgstr ""
 
-#: builtin/pull.c:819
+#: builtin/pull.c:826
 msgid "ignoring --verify-signatures for rebase"
 msgstr ""
 
-#: builtin/pull.c:867
+#: builtin/pull.c:874
 msgid "--[no-]autostash option is only valid with --rebase."
 msgstr ""
 
-#: builtin/pull.c:875
+#: builtin/pull.c:882
 msgid "Updating an unborn branch with changes added to the index."
 msgstr ""
 
-#: builtin/pull.c:878
+#: builtin/pull.c:885
 msgid "pull with rebase"
 msgstr ""
 
-#: builtin/pull.c:879
+#: builtin/pull.c:886
 msgid "please commit or stash them."
 msgstr ""
 
-#: builtin/pull.c:904
+#: builtin/pull.c:911
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -11118,7 +11556,7 @@ msgid ""
 "commit %s."
 msgstr ""
 
-#: builtin/pull.c:909
+#: builtin/pull.c:916
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -11129,37 +11567,37 @@ msgid ""
 "to recover."
 msgstr ""
 
-#: builtin/pull.c:924
+#: builtin/pull.c:931
 msgid "Cannot merge multiple branches into empty head."
 msgstr ""
 
-#: builtin/pull.c:928
+#: builtin/pull.c:935
 msgid "Cannot rebase onto multiple branches."
 msgstr ""
 
-#: builtin/pull.c:935
+#: builtin/pull.c:942
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr ""
 
-#: builtin/push.c:17
+#: builtin/push.c:19
 msgid "git push [<options>] [<repository> [<refspec>...]]"
 msgstr ""
 
-#: builtin/push.c:92
+#: builtin/push.c:111
 msgid "tag shorthand without <tag>"
 msgstr ""
 
-#: builtin/push.c:102
+#: builtin/push.c:121
 msgid "--delete only accepts plain target ref names"
 msgstr ""
 
-#: builtin/push.c:146
+#: builtin/push.c:165
 msgid ""
 "\n"
 "To choose either option permanently, see push.default in 'git help config'."
 msgstr ""
 
-#: builtin/push.c:149
+#: builtin/push.c:168
 #, c-format
 msgid ""
 "The upstream branch of your current branch does not match\n"
@@ -11174,7 +11612,7 @@ msgid ""
 "%s"
 msgstr ""
 
-#: builtin/push.c:164
+#: builtin/push.c:183
 #, c-format
 msgid ""
 "You are not currently on a branch.\n"
@@ -11184,7 +11622,7 @@ msgid ""
 "    git push %s HEAD:<name-of-remote-branch>\n"
 msgstr ""
 
-#: builtin/push.c:178
+#: builtin/push.c:197
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -11193,12 +11631,12 @@ msgid ""
 "    git push --set-upstream %s %s\n"
 msgstr ""
 
-#: builtin/push.c:186
+#: builtin/push.c:205
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
 msgstr ""
 
-#: builtin/push.c:189
+#: builtin/push.c:208
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -11206,12 +11644,12 @@ msgid ""
 "to update which remote branch."
 msgstr ""
 
-#: builtin/push.c:248
+#: builtin/push.c:267
 msgid ""
 "You didn't specify any refspecs to push, and push.default is \"nothing\"."
 msgstr ""
 
-#: builtin/push.c:255
+#: builtin/push.c:274
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
@@ -11219,7 +11657,7 @@ msgid ""
 "See the 'Note about fast-forwards' in 'git push --help' for details."
 msgstr ""
 
-#: builtin/push.c:261
+#: builtin/push.c:280
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. Check out this branch and integrate the remote changes\n"
@@ -11227,7 +11665,7 @@ msgid ""
 "See the 'Note about fast-forwards' in 'git push --help' for details."
 msgstr ""
 
-#: builtin/push.c:267
+#: builtin/push.c:286
 msgid ""
 "Updates were rejected because the remote contains work that you do\n"
 "not have locally. This is usually caused by another repository pushing\n"
@@ -11236,33 +11674,33 @@ msgid ""
 "See the 'Note about fast-forwards' in 'git push --help' for details."
 msgstr ""
 
-#: builtin/push.c:274
+#: builtin/push.c:293
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr ""
 
-#: builtin/push.c:277
+#: builtin/push.c:296
 msgid ""
 "You cannot update a remote ref that points at a non-commit object,\n"
 "or update a remote ref to make it point at a non-commit object,\n"
 "without using the '--force' option.\n"
 msgstr ""
 
-#: builtin/push.c:337
+#: builtin/push.c:357
 #, c-format
 msgid "Pushing to %s\n"
 msgstr ""
 
-#: builtin/push.c:341
+#: builtin/push.c:361
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr ""
 
-#: builtin/push.c:372
+#: builtin/push.c:395
 #, c-format
 msgid "bad repository '%s'"
 msgstr ""
 
-#: builtin/push.c:373
+#: builtin/push.c:396
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -11275,112 +11713,104 @@ msgid ""
 "    git push <name>\n"
 msgstr ""
 
-#: builtin/push.c:391
-msgid "--all and --tags are incompatible"
-msgstr ""
-
-#: builtin/push.c:392
-msgid "--all can't be combined with refspecs"
-msgstr ""
-
-#: builtin/push.c:397
-msgid "--mirror and --tags are incompatible"
-msgstr ""
-
-#: builtin/push.c:398
-msgid "--mirror can't be combined with refspecs"
-msgstr ""
-
-#: builtin/push.c:403
-msgid "--all and --mirror are incompatible"
-msgstr ""
-
-#: builtin/push.c:535
+#: builtin/push.c:551
 msgid "repository"
 msgstr ""
 
-#: builtin/push.c:536 builtin/send-pack.c:163
+#: builtin/push.c:552 builtin/send-pack.c:164
 msgid "push all refs"
 msgstr ""
 
-#: builtin/push.c:537 builtin/send-pack.c:165
+#: builtin/push.c:553 builtin/send-pack.c:166
 msgid "mirror all refs"
 msgstr ""
 
-#: builtin/push.c:539
+#: builtin/push.c:555
 msgid "delete refs"
 msgstr ""
 
-#: builtin/push.c:540
+#: builtin/push.c:556
 msgid "push tags (can't be used with --all or --mirror)"
 msgstr ""
 
-#: builtin/push.c:543 builtin/send-pack.c:166
+#: builtin/push.c:559 builtin/send-pack.c:167
 msgid "force updates"
 msgstr ""
 
-#: builtin/push.c:545 builtin/send-pack.c:180
+#: builtin/push.c:561 builtin/send-pack.c:181
 msgid "refname>:<expect"
 msgstr ""
 
-#: builtin/push.c:546 builtin/send-pack.c:181
+#: builtin/push.c:562 builtin/send-pack.c:182
 msgid "require old value of ref to be at this value"
 msgstr ""
 
-#: builtin/push.c:549
+#: builtin/push.c:565
 msgid "control recursive pushing of submodules"
 msgstr ""
 
-#: builtin/push.c:551 builtin/send-pack.c:174
+#: builtin/push.c:567 builtin/send-pack.c:175
 msgid "use thin pack"
 msgstr ""
 
-#: builtin/push.c:552 builtin/push.c:553 builtin/send-pack.c:160
-#: builtin/send-pack.c:161
+#: builtin/push.c:568 builtin/push.c:569 builtin/send-pack.c:161
+#: builtin/send-pack.c:162
 msgid "receive pack program"
 msgstr ""
 
-#: builtin/push.c:554
+#: builtin/push.c:570
 msgid "set upstream for git pull/status"
 msgstr ""
 
-#: builtin/push.c:557
+#: builtin/push.c:573
 msgid "prune locally removed refs"
 msgstr ""
 
-#: builtin/push.c:559
+#: builtin/push.c:575
 msgid "bypass pre-push hook"
 msgstr ""
 
-#: builtin/push.c:560
+#: builtin/push.c:576
 msgid "push missing but relevant tags"
 msgstr ""
 
-#: builtin/push.c:563 builtin/send-pack.c:168
+#: builtin/push.c:579 builtin/send-pack.c:169
 msgid "GPG sign the push"
 msgstr ""
 
-#: builtin/push.c:565 builtin/send-pack.c:175
+#: builtin/push.c:581 builtin/send-pack.c:176
 msgid "request atomic transaction on remote side"
 msgstr ""
 
-#: builtin/push.c:566 builtin/send-pack.c:171
-msgid "server-specific"
+#: builtin/push.c:599
+msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr ""
 
-#: builtin/push.c:566 builtin/send-pack.c:172
-msgid "option to transmit"
+#: builtin/push.c:601
+msgid "--delete doesn't make sense without any refs"
 msgstr ""
 
-#: builtin/push.c:583
-msgid "--delete is incompatible with --all, --mirror and --tags"
+#: builtin/push.c:604
+msgid "--all and --tags are incompatible"
 msgstr ""
 
-#: builtin/push.c:585
-msgid "--delete doesn't make sense without any refs"
+#: builtin/push.c:606
+msgid "--all can't be combined with refspecs"
 msgstr ""
 
-#: builtin/push.c:604
+#: builtin/push.c:610
+msgid "--mirror and --tags are incompatible"
+msgstr ""
+
+#: builtin/push.c:612
+msgid "--mirror can't be combined with refspecs"
+msgstr ""
+
+#: builtin/push.c:615
+msgid "--all and --mirror are incompatible"
+msgstr ""
+
+#: builtin/push.c:634
 msgid "push options must not have new line characters"
 msgstr ""
 
@@ -11391,67 +11821,67 @@ msgid ""
 "index-output=<file>] (--empty | <tree-ish1> [<tree-ish2> [<tree-ish3>]])"
 msgstr ""
 
-#: builtin/read-tree.c:121
+#: builtin/read-tree.c:120
 msgid "write resulting index to <file>"
 msgstr ""
 
-#: builtin/read-tree.c:124
+#: builtin/read-tree.c:123
 msgid "only empty the index"
 msgstr ""
 
-#: builtin/read-tree.c:126
+#: builtin/read-tree.c:125
 msgid "Merging"
 msgstr ""
 
-#: builtin/read-tree.c:128
+#: builtin/read-tree.c:127
 msgid "perform a merge in addition to a read"
 msgstr ""
 
-#: builtin/read-tree.c:130
+#: builtin/read-tree.c:129
 msgid "3-way merge if no file level merging required"
 msgstr ""
 
-#: builtin/read-tree.c:132
+#: builtin/read-tree.c:131
 msgid "3-way merge in presence of adds and removes"
 msgstr ""
 
-#: builtin/read-tree.c:134
+#: builtin/read-tree.c:133
 msgid "same as -m, but discard unmerged entries"
 msgstr ""
 
-#: builtin/read-tree.c:135
+#: builtin/read-tree.c:134
 msgid "<subdirectory>/"
 msgstr ""
 
-#: builtin/read-tree.c:136
+#: builtin/read-tree.c:135
 msgid "read the tree into the index under <subdirectory>/"
 msgstr ""
 
-#: builtin/read-tree.c:139
+#: builtin/read-tree.c:138
 msgid "update working tree with merge result"
 msgstr ""
 
-#: builtin/read-tree.c:141
+#: builtin/read-tree.c:140
 msgid "gitignore"
 msgstr ""
 
-#: builtin/read-tree.c:142
+#: builtin/read-tree.c:141
 msgid "allow explicitly ignored files to be overwritten"
 msgstr ""
 
-#: builtin/read-tree.c:145
+#: builtin/read-tree.c:144
 msgid "don't check the working tree after merging"
 msgstr ""
 
-#: builtin/read-tree.c:146
+#: builtin/read-tree.c:145
 msgid "don't update the index or the work tree"
 msgstr ""
 
-#: builtin/read-tree.c:148
+#: builtin/read-tree.c:147
 msgid "skip applying sparse checkout filter"
 msgstr ""
 
-#: builtin/read-tree.c:150
+#: builtin/read-tree.c:149
 msgid "debug unpack-trees"
 msgstr ""
 
@@ -11468,46 +11898,58 @@ msgid "allow commits with empty messages"
 msgstr ""
 
 #: builtin/rebase--helper.c:27
-msgid "continue rebase"
+msgid "rebase merge commits"
 msgstr ""
 
 #: builtin/rebase--helper.c:29
-msgid "abort rebase"
+msgid "keep original branch points of cousins"
+msgstr ""
+
+#: builtin/rebase--helper.c:30
+msgid "continue rebase"
 msgstr ""
 
 #: builtin/rebase--helper.c:32
+msgid "abort rebase"
+msgstr ""
+
+#: builtin/rebase--helper.c:35
 msgid "make rebase script"
 msgstr ""
 
-#: builtin/rebase--helper.c:34
+#: builtin/rebase--helper.c:37
 msgid "shorten commit ids in the todo list"
 msgstr ""
 
-#: builtin/rebase--helper.c:36
+#: builtin/rebase--helper.c:39
 msgid "expand commit ids in the todo list"
 msgstr ""
 
-#: builtin/rebase--helper.c:38
+#: builtin/rebase--helper.c:41
 msgid "check the todo list"
 msgstr ""
 
-#: builtin/rebase--helper.c:40
+#: builtin/rebase--helper.c:43
 msgid "skip unnecessary picks"
 msgstr ""
 
-#: builtin/rebase--helper.c:42
+#: builtin/rebase--helper.c:45
 msgid "rearrange fixup/squash lines"
 msgstr ""
 
-#: builtin/rebase--helper.c:44
+#: builtin/rebase--helper.c:47
 msgid "insert exec commands in todo list"
 msgstr ""
 
-#: builtin/receive-pack.c:30
+#: builtin/rebase--helper.c:68
+msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
+msgstr ""
+
+#: builtin/receive-pack.c:31
 msgid "git receive-pack <git-dir>"
 msgstr ""
 
-#: builtin/receive-pack.c:841
+#: builtin/receive-pack.c:842
 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"
@@ -11524,7 +11966,7 @@ msgid ""
 "'receive.denyCurrentBranch' configuration variable to 'refuse'."
 msgstr ""
 
-#: builtin/receive-pack.c:861
+#: builtin/receive-pack.c:862
 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"
@@ -11536,11 +11978,11 @@ msgid ""
 "To squelch this message, you can set it to 'refuse'."
 msgstr ""
 
-#: builtin/receive-pack.c:1934
+#: builtin/receive-pack.c:1935
 msgid "quiet"
 msgstr ""
 
-#: builtin/receive-pack.c:1948
+#: builtin/receive-pack.c:1949
 msgid "You must specify a directory."
 msgstr ""
 
@@ -11549,176 +11991,176 @@ msgstr ""
 msgid "'%s' is not a valid timestamp"
 msgstr ""
 
-#: builtin/remote.c:13
+#: builtin/remote.c:14
 msgid "git remote [-v | --verbose]"
 msgstr ""
 
-#: builtin/remote.c:14
+#: builtin/remote.c:15
 msgid ""
 "git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
 "mirror=<fetch|push>] <name> <url>"
 msgstr ""
 
-#: builtin/remote.c:15 builtin/remote.c:35
+#: builtin/remote.c:16 builtin/remote.c:36
 msgid "git remote rename <old> <new>"
 msgstr ""
 
-#: builtin/remote.c:16 builtin/remote.c:40
+#: builtin/remote.c:17 builtin/remote.c:41
 msgid "git remote remove <name>"
 msgstr ""
 
-#: builtin/remote.c:17 builtin/remote.c:45
+#: builtin/remote.c:18 builtin/remote.c:46
 msgid "git remote set-head <name> (-a | --auto | -d | --delete | <branch>)"
 msgstr ""
 
-#: builtin/remote.c:18
+#: builtin/remote.c:19
 msgid "git remote [-v | --verbose] show [-n] <name>"
 msgstr ""
 
-#: builtin/remote.c:19
+#: builtin/remote.c:20
 msgid "git remote prune [-n | --dry-run] <name>"
 msgstr ""
 
-#: builtin/remote.c:20
+#: builtin/remote.c:21
 msgid ""
 "git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]"
 msgstr ""
 
-#: builtin/remote.c:21
+#: builtin/remote.c:22
 msgid "git remote set-branches [--add] <name> <branch>..."
 msgstr ""
 
-#: builtin/remote.c:22 builtin/remote.c:71
+#: builtin/remote.c:23 builtin/remote.c:72
 msgid "git remote get-url [--push] [--all] <name>"
 msgstr ""
 
-#: builtin/remote.c:23 builtin/remote.c:76
+#: builtin/remote.c:24 builtin/remote.c:77
 msgid "git remote set-url [--push] <name> <newurl> [<oldurl>]"
 msgstr ""
 
-#: builtin/remote.c:24 builtin/remote.c:77
+#: builtin/remote.c:25 builtin/remote.c:78
 msgid "git remote set-url --add <name> <newurl>"
 msgstr ""
 
-#: builtin/remote.c:25 builtin/remote.c:78
+#: builtin/remote.c:26 builtin/remote.c:79
 msgid "git remote set-url --delete <name> <url>"
 msgstr ""
 
-#: builtin/remote.c:30
+#: builtin/remote.c:31
 msgid "git remote add [<options>] <name> <url>"
 msgstr ""
 
-#: builtin/remote.c:50
+#: builtin/remote.c:51
 msgid "git remote set-branches <name> <branch>..."
 msgstr ""
 
-#: builtin/remote.c:51
+#: builtin/remote.c:52
 msgid "git remote set-branches --add <name> <branch>..."
 msgstr ""
 
-#: builtin/remote.c:56
+#: builtin/remote.c:57
 msgid "git remote show [<options>] <name>"
 msgstr ""
 
-#: builtin/remote.c:61
+#: builtin/remote.c:62
 msgid "git remote prune [<options>] <name>"
 msgstr ""
 
-#: builtin/remote.c:66
+#: builtin/remote.c:67
 msgid "git remote update [<options>] [<group> | <remote>]..."
 msgstr ""
 
-#: builtin/remote.c:95
+#: builtin/remote.c:96
 #, c-format
 msgid "Updating %s"
 msgstr ""
 
-#: builtin/remote.c:127
+#: builtin/remote.c:128
 msgid ""
 "--mirror is dangerous and deprecated; please\n"
 "\t use --mirror=fetch or --mirror=push instead"
 msgstr ""
 
-#: builtin/remote.c:144
+#: builtin/remote.c:145
 #, c-format
 msgid "unknown mirror argument: %s"
 msgstr ""
 
-#: builtin/remote.c:160
+#: builtin/remote.c:161
 msgid "fetch the remote branches"
 msgstr ""
 
-#: builtin/remote.c:162
+#: builtin/remote.c:163
 msgid "import all tags and associated objects when fetching"
 msgstr ""
 
-#: builtin/remote.c:165
+#: builtin/remote.c:166
 msgid "or do not fetch any tag at all (--no-tags)"
 msgstr ""
 
-#: builtin/remote.c:167
+#: builtin/remote.c:168
 msgid "branch(es) to track"
 msgstr ""
 
-#: builtin/remote.c:168
+#: builtin/remote.c:169
 msgid "master branch"
 msgstr ""
 
-#: builtin/remote.c:169
+#: builtin/remote.c:170
 msgid "push|fetch"
 msgstr ""
 
-#: builtin/remote.c:170
+#: builtin/remote.c:171
 msgid "set up remote as a mirror to push to or fetch from"
 msgstr ""
 
-#: builtin/remote.c:182
+#: builtin/remote.c:183
 msgid "specifying a master branch makes no sense with --mirror"
 msgstr ""
 
-#: builtin/remote.c:184
+#: builtin/remote.c:185
 msgid "specifying branches to track makes sense only with fetch mirrors"
 msgstr ""
 
-#: builtin/remote.c:191 builtin/remote.c:631
+#: builtin/remote.c:192 builtin/remote.c:634
 #, c-format
 msgid "remote %s already exists."
 msgstr ""
 
-#: builtin/remote.c:195 builtin/remote.c:635
+#: builtin/remote.c:196 builtin/remote.c:638
 #, c-format
 msgid "'%s' is not a valid remote name"
 msgstr ""
 
-#: builtin/remote.c:235
+#: builtin/remote.c:236
 #, c-format
 msgid "Could not setup master '%s'"
 msgstr ""
 
-#: builtin/remote.c:337
+#: builtin/remote.c:342
 #, c-format
 msgid "Could not get fetch map for refspec %s"
 msgstr ""
 
-#: builtin/remote.c:438 builtin/remote.c:446
+#: builtin/remote.c:441 builtin/remote.c:449
 msgid "(matching)"
 msgstr ""
 
-#: builtin/remote.c:450
+#: builtin/remote.c:453
 msgid "(delete)"
 msgstr ""
 
-#: builtin/remote.c:624 builtin/remote.c:759 builtin/remote.c:858
+#: builtin/remote.c:627 builtin/remote.c:762 builtin/remote.c:861
 #, c-format
 msgid "No such remote: %s"
 msgstr ""
 
-#: builtin/remote.c:641
+#: builtin/remote.c:644
 #, c-format
 msgid "Could not rename config section '%s' to '%s'"
 msgstr ""
 
-#: builtin/remote.c:661
+#: builtin/remote.c:664
 #, c-format
 msgid ""
 "Not updating non-default fetch refspec\n"
@@ -11726,17 +12168,17 @@ msgid ""
 "\tPlease update the configuration manually if necessary."
 msgstr ""
 
-#: builtin/remote.c:697
+#: builtin/remote.c:700
 #, c-format
 msgid "deleting '%s' failed"
 msgstr ""
 
-#: builtin/remote.c:731
+#: builtin/remote.c:734
 #, c-format
 msgid "creating '%s' failed"
 msgstr ""
 
-#: builtin/remote.c:796
+#: builtin/remote.c:799
 msgid ""
 "Note: A branch outside the refs/remotes/ hierarchy was not removed;\n"
 "to delete it, use:"
@@ -11746,113 +12188,118 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/remote.c:810
+#: builtin/remote.c:813
 #, c-format
 msgid "Could not remove config section '%s'"
 msgstr ""
 
-#: builtin/remote.c:911
+#: builtin/remote.c:914
 #, c-format
 msgid " new (next fetch will store in remotes/%s)"
 msgstr ""
 
-#: builtin/remote.c:914
+#: builtin/remote.c:917
 msgid " tracked"
 msgstr ""
 
-#: builtin/remote.c:916
+#: builtin/remote.c:919
 msgid " stale (use 'git remote prune' to remove)"
 msgstr ""
 
-#: builtin/remote.c:918
+#: builtin/remote.c:921
 msgid " ???"
 msgstr ""
 
-#: builtin/remote.c:959
+#: builtin/remote.c:962
 #, c-format
 msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch"
 msgstr ""
 
-#: builtin/remote.c:967
+#: builtin/remote.c:971
 #, c-format
 msgid "rebases interactively onto remote %s"
 msgstr ""
 
-#: builtin/remote.c:968
+#: builtin/remote.c:973
+#, c-format
+msgid "rebases interactively (with merges) onto remote %s"
+msgstr ""
+
+#: builtin/remote.c:976
 #, c-format
 msgid "rebases onto remote %s"
 msgstr ""
 
-#: builtin/remote.c:971
+#: builtin/remote.c:980
 #, c-format
 msgid " merges with remote %s"
 msgstr ""
 
-#: builtin/remote.c:974
+#: builtin/remote.c:983
 #, c-format
 msgid "merges with remote %s"
 msgstr ""
 
-#: builtin/remote.c:977
+#: builtin/remote.c:986
 #, c-format
 msgid "%-*s    and with remote %s\n"
 msgstr ""
 
-#: builtin/remote.c:1020
+#: builtin/remote.c:1029
 msgid "create"
 msgstr ""
 
-#: builtin/remote.c:1023
+#: builtin/remote.c:1032
 msgid "delete"
 msgstr ""
 
-#: builtin/remote.c:1027
+#: builtin/remote.c:1036
 msgid "up to date"
 msgstr ""
 
-#: builtin/remote.c:1030
+#: builtin/remote.c:1039
 msgid "fast-forwardable"
 msgstr ""
 
-#: builtin/remote.c:1033
+#: builtin/remote.c:1042
 msgid "local out of date"
 msgstr ""
 
-#: builtin/remote.c:1040
+#: builtin/remote.c:1049
 #, c-format
 msgid "    %-*s forces to %-*s (%s)"
 msgstr ""
 
-#: builtin/remote.c:1043
+#: builtin/remote.c:1052
 #, c-format
 msgid "    %-*s pushes to %-*s (%s)"
 msgstr ""
 
-#: builtin/remote.c:1047
+#: builtin/remote.c:1056
 #, c-format
 msgid "    %-*s forces to %s"
 msgstr ""
 
-#: builtin/remote.c:1050
+#: builtin/remote.c:1059
 #, c-format
 msgid "    %-*s pushes to %s"
 msgstr ""
 
-#: builtin/remote.c:1118
+#: builtin/remote.c:1127
 msgid "do not query remotes"
 msgstr ""
 
-#: builtin/remote.c:1145
+#: builtin/remote.c:1154
 #, c-format
 msgid "* remote %s"
 msgstr ""
 
-#: builtin/remote.c:1146
+#: builtin/remote.c:1155
 #, c-format
 msgid "  Fetch URL: %s"
 msgstr ""
 
-#: builtin/remote.c:1147 builtin/remote.c:1163 builtin/remote.c:1302
+#: builtin/remote.c:1156 builtin/remote.c:1172 builtin/remote.c:1311
 msgid "(no URL)"
 msgstr ""
 
@@ -11860,184 +12307,184 @@ msgstr ""
 #. with the one in " Fetch URL: %s"
 #. translation.
 #.
-#: builtin/remote.c:1161 builtin/remote.c:1163
+#: builtin/remote.c:1170 builtin/remote.c:1172
 #, c-format
 msgid "  Push  URL: %s"
 msgstr ""
 
-#: builtin/remote.c:1165 builtin/remote.c:1167 builtin/remote.c:1169
+#: builtin/remote.c:1174 builtin/remote.c:1176 builtin/remote.c:1178
 #, c-format
 msgid "  HEAD branch: %s"
 msgstr ""
 
-#: builtin/remote.c:1165
+#: builtin/remote.c:1174
 msgid "(not queried)"
 msgstr ""
 
-#: builtin/remote.c:1167
+#: builtin/remote.c:1176
 msgid "(unknown)"
 msgstr ""
 
-#: builtin/remote.c:1171
+#: builtin/remote.c:1180
 #, c-format
 msgid ""
 "  HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
 msgstr ""
 
-#: builtin/remote.c:1183
+#: builtin/remote.c:1192
 #, c-format
 msgid "  Remote branch:%s"
 msgid_plural "  Remote branches:%s"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/remote.c:1186 builtin/remote.c:1212
+#: builtin/remote.c:1195 builtin/remote.c:1221
 msgid " (status not queried)"
 msgstr ""
 
-#: builtin/remote.c:1195
+#: builtin/remote.c:1204
 msgid "  Local branch configured for 'git pull':"
 msgid_plural "  Local branches configured for 'git pull':"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/remote.c:1203
+#: builtin/remote.c:1212
 msgid "  Local refs will be mirrored by 'git push'"
 msgstr ""
 
-#: builtin/remote.c:1209
+#: builtin/remote.c:1218
 #, c-format
 msgid "  Local ref configured for 'git push'%s:"
 msgid_plural "  Local refs configured for 'git push'%s:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/remote.c:1230
+#: builtin/remote.c:1239
 msgid "set refs/remotes/<name>/HEAD according to remote"
 msgstr ""
 
-#: builtin/remote.c:1232
+#: builtin/remote.c:1241
 msgid "delete refs/remotes/<name>/HEAD"
 msgstr ""
 
-#: builtin/remote.c:1247
+#: builtin/remote.c:1256
 msgid "Cannot determine remote HEAD"
 msgstr ""
 
-#: builtin/remote.c:1249
+#: builtin/remote.c:1258
 msgid "Multiple remote HEAD branches. Please choose one explicitly with:"
 msgstr ""
 
-#: builtin/remote.c:1259
+#: builtin/remote.c:1268
 #, c-format
 msgid "Could not delete %s"
 msgstr ""
 
-#: builtin/remote.c:1267
+#: builtin/remote.c:1276
 #, c-format
 msgid "Not a valid ref: %s"
 msgstr ""
 
-#: builtin/remote.c:1269
+#: builtin/remote.c:1278
 #, c-format
 msgid "Could not setup %s"
 msgstr ""
 
-#: builtin/remote.c:1287
+#: builtin/remote.c:1296
 #, c-format
 msgid " %s will become dangling!"
 msgstr ""
 
-#: builtin/remote.c:1288
+#: builtin/remote.c:1297
 #, c-format
 msgid " %s has become dangling!"
 msgstr ""
 
-#: builtin/remote.c:1298
+#: builtin/remote.c:1307
 #, c-format
 msgid "Pruning %s"
 msgstr ""
 
-#: builtin/remote.c:1299
+#: builtin/remote.c:1308
 #, c-format
 msgid "URL: %s"
 msgstr ""
 
-#: builtin/remote.c:1315
+#: builtin/remote.c:1324
 #, c-format
 msgid " * [would prune] %s"
 msgstr ""
 
-#: builtin/remote.c:1318
+#: builtin/remote.c:1327
 #, c-format
 msgid " * [pruned] %s"
 msgstr ""
 
-#: builtin/remote.c:1363
+#: builtin/remote.c:1372
 msgid "prune remotes after fetching"
 msgstr ""
 
-#: builtin/remote.c:1426 builtin/remote.c:1480 builtin/remote.c:1548
+#: builtin/remote.c:1435 builtin/remote.c:1489 builtin/remote.c:1557
 #, c-format
 msgid "No such remote '%s'"
 msgstr ""
 
-#: builtin/remote.c:1442
+#: builtin/remote.c:1451
 msgid "add branch"
 msgstr ""
 
-#: builtin/remote.c:1449
+#: builtin/remote.c:1458
 msgid "no remote specified"
 msgstr ""
 
-#: builtin/remote.c:1466
+#: builtin/remote.c:1475
 msgid "query push URLs rather than fetch URLs"
 msgstr ""
 
-#: builtin/remote.c:1468
+#: builtin/remote.c:1477
 msgid "return all URLs"
 msgstr ""
 
-#: builtin/remote.c:1496
+#: builtin/remote.c:1505
 #, c-format
 msgid "no URLs configured for remote '%s'"
 msgstr ""
 
-#: builtin/remote.c:1522
+#: builtin/remote.c:1531
 msgid "manipulate push URLs"
 msgstr ""
 
-#: builtin/remote.c:1524
+#: builtin/remote.c:1533
 msgid "add URL"
 msgstr ""
 
-#: builtin/remote.c:1526
+#: builtin/remote.c:1535
 msgid "delete URLs"
 msgstr ""
 
-#: builtin/remote.c:1533
+#: builtin/remote.c:1542
 msgid "--add --delete doesn't make sense"
 msgstr ""
 
-#: builtin/remote.c:1572
+#: builtin/remote.c:1581
 #, c-format
 msgid "Invalid old URL pattern: %s"
 msgstr ""
 
-#: builtin/remote.c:1580
+#: builtin/remote.c:1589
 #, c-format
 msgid "No such URL found: %s"
 msgstr ""
 
-#: builtin/remote.c:1582
+#: builtin/remote.c:1591
 msgid "Will not delete all non-push URLs"
 msgstr ""
 
-#: builtin/remote.c:1598
+#: builtin/remote.c:1607
 msgid "be verbose; must be placed before a subcommand"
 msgstr ""
 
-#: builtin/remote.c:1629
+#: builtin/remote.c:1638
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr ""
@@ -12052,172 +12499,191 @@ msgid ""
 "--no-write-bitmap-index or disable the pack.writebitmaps configuration."
 msgstr ""
 
-#: builtin/repack.c:170
+#: builtin/repack.c:180
 msgid "pack everything in a single pack"
 msgstr ""
 
-#: builtin/repack.c:172
+#: builtin/repack.c:182
 msgid "same as -a, and turn unreachable objects loose"
 msgstr ""
 
-#: builtin/repack.c:175
+#: builtin/repack.c:185
 msgid "remove redundant packs, and run git-prune-packed"
 msgstr ""
 
-#: builtin/repack.c:177
+#: builtin/repack.c:187
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr ""
 
-#: builtin/repack.c:179
+#: builtin/repack.c:189
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr ""
 
-#: builtin/repack.c:181
+#: builtin/repack.c:191
 msgid "do not run git-update-server-info"
 msgstr ""
 
-#: builtin/repack.c:184
+#: builtin/repack.c:194
 msgid "pass --local to git-pack-objects"
 msgstr ""
 
-#: builtin/repack.c:186
+#: builtin/repack.c:196
 msgid "write bitmap index"
 msgstr ""
 
-#: builtin/repack.c:187
+#: builtin/repack.c:197
 msgid "approxidate"
 msgstr ""
 
-#: builtin/repack.c:188
+#: builtin/repack.c:198
 msgid "with -A, do not loosen objects older than this"
 msgstr ""
 
-#: builtin/repack.c:190
+#: builtin/repack.c:200
 msgid "with -a, repack unreachable objects"
 msgstr ""
 
-#: builtin/repack.c:192
+#: builtin/repack.c:202
 msgid "size of the window used for delta compression"
 msgstr ""
 
-#: builtin/repack.c:193 builtin/repack.c:199
+#: builtin/repack.c:203 builtin/repack.c:209
 msgid "bytes"
 msgstr ""
 
-#: builtin/repack.c:194
+#: builtin/repack.c:204
 msgid "same as the above, but limit memory size instead of entries count"
 msgstr ""
 
-#: builtin/repack.c:196
+#: builtin/repack.c:206
 msgid "limits the maximum delta depth"
 msgstr ""
 
-#: builtin/repack.c:198
+#: builtin/repack.c:208
 msgid "limits the maximum number of threads"
 msgstr ""
 
-#: builtin/repack.c:200
+#: builtin/repack.c:210
 msgid "maximum size of each packfile"
 msgstr ""
 
-#: builtin/repack.c:202
+#: builtin/repack.c:212
 msgid "repack objects in packs marked with .keep"
 msgstr ""
 
-#: builtin/repack.c:212
+#: builtin/repack.c:214
+msgid "do not repack this pack"
+msgstr ""
+
+#: builtin/repack.c:224
 msgid "cannot delete packs in a precious-objects repo"
 msgstr ""
 
-#: builtin/repack.c:216
+#: builtin/repack.c:228
 msgid "--keep-unreachable and -A are incompatible"
 msgstr ""
 
-#: builtin/repack.c:410 builtin/worktree.c:148
+#: builtin/repack.c:425 builtin/worktree.c:139
 #, c-format
 msgid "failed to remove '%s'"
 msgstr ""
 
-#: builtin/replace.c:20
+#: builtin/replace.c:22
 msgid "git replace [-f] <object> <replacement>"
 msgstr ""
 
-#: builtin/replace.c:21
+#: builtin/replace.c:23
 msgid "git replace [-f] --edit <object>"
 msgstr ""
 
-#: builtin/replace.c:22
+#: builtin/replace.c:24
 msgid "git replace [-f] --graft <commit> [<parent>...]"
 msgstr ""
 
-#: builtin/replace.c:23
+#: builtin/replace.c:25
+msgid "git replace [-f] --convert-graft-file"
+msgstr ""
+
+#: builtin/replace.c:26
 msgid "git replace -d <object>..."
 msgstr ""
 
-#: builtin/replace.c:24
+#: builtin/replace.c:27
 msgid "git replace [--format=<format>] [-l [<pattern>]]"
 msgstr ""
 
-#: builtin/replace.c:331 builtin/replace.c:369 builtin/replace.c:397
+#: builtin/replace.c:371 builtin/replace.c:415 builtin/replace.c:445
 #, c-format
 msgid "Not a valid object name: '%s'"
 msgstr ""
 
-#: builtin/replace.c:361
+#: builtin/replace.c:407
 #, c-format
 msgid "bad mergetag in commit '%s'"
 msgstr ""
 
-#: builtin/replace.c:363
+#: builtin/replace.c:409
 #, c-format
 msgid "malformed mergetag in commit '%s'"
 msgstr ""
 
-#: builtin/replace.c:374
+#: builtin/replace.c:421
 #, c-format
 msgid ""
 "original commit '%s' contains mergetag '%s' that is discarded; use --edit "
 "instead of --graft"
 msgstr ""
 
-#: builtin/replace.c:407
+#: builtin/replace.c:460
 #, c-format
 msgid "the original commit '%s' has a gpg signature."
 msgstr ""
 
-#: builtin/replace.c:408
+#: builtin/replace.c:461
 msgid "the signature will be removed in the replacement commit!"
 msgstr ""
 
-#: builtin/replace.c:414
+#: builtin/replace.c:471
 #, c-format
 msgid "could not write replacement commit for: '%s'"
 msgstr ""
 
-#: builtin/replace.c:438
+#: builtin/replace.c:514
+#, c-format
+msgid ""
+"could not convert the following graft(s):\n"
+"%s"
+msgstr ""
+
+#: builtin/replace.c:535
 msgid "list replace refs"
 msgstr ""
 
-#: builtin/replace.c:439
+#: builtin/replace.c:536
 msgid "delete replace refs"
 msgstr ""
 
-#: builtin/replace.c:440
+#: builtin/replace.c:537
 msgid "edit existing object"
 msgstr ""
 
-#: builtin/replace.c:441
+#: builtin/replace.c:538
 msgid "change a commit's parents"
 msgstr ""
 
-#: builtin/replace.c:442
+#: builtin/replace.c:539
+msgid "convert existing graft file"
+msgstr ""
+
+#: builtin/replace.c:540
 msgid "replace the ref if it exists"
 msgstr ""
 
-#: builtin/replace.c:444
+#: builtin/replace.c:542
 msgid "do not pretty-print contents for --edit"
 msgstr ""
 
-#: builtin/replace.c:445
+#: builtin/replace.c:543
 msgid "use this format"
 msgstr ""
 
@@ -12375,23 +12841,23 @@ msgstr ""
 msgid "cannot combine --use-bitmap-index with object filtering"
 msgstr ""
 
-#: builtin/rev-parse.c:402
+#: builtin/rev-parse.c:406
 msgid "git rev-parse --parseopt [<options>] -- [<args>...]"
 msgstr ""
 
-#: builtin/rev-parse.c:407
+#: builtin/rev-parse.c:411
 msgid "keep the `--` passed as an arg"
 msgstr ""
 
-#: builtin/rev-parse.c:409
+#: builtin/rev-parse.c:413
 msgid "stop parsing after the first non-option argument"
 msgstr ""
 
-#: builtin/rev-parse.c:412
+#: builtin/rev-parse.c:416
 msgid "output in stuck long form"
 msgstr ""
 
-#: builtin/rev-parse.c:545
+#: builtin/rev-parse.c:549
 msgid ""
 "git rev-parse --parseopt [<options>] -- [<args>...]\n"
 "   or: git rev-parse --sq-quote [<arg>...]\n"
@@ -12519,42 +12985,42 @@ msgid_plural "the following files have local modifications:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/rm.c:243
+#: builtin/rm.c:241
 msgid "do not list removed files"
 msgstr ""
 
-#: builtin/rm.c:244
+#: builtin/rm.c:242
 msgid "only remove from the index"
 msgstr ""
 
-#: builtin/rm.c:245
+#: builtin/rm.c:243
 msgid "override the up-to-date check"
 msgstr ""
 
-#: builtin/rm.c:246
+#: builtin/rm.c:244
 msgid "allow recursive removal"
 msgstr ""
 
-#: builtin/rm.c:248
+#: builtin/rm.c:246
 msgid "exit with a zero status even if nothing matched"
 msgstr ""
 
-#: builtin/rm.c:307
+#: builtin/rm.c:306
 #, c-format
 msgid "not removing '%s' recursively without -r"
 msgstr ""
 
-#: builtin/rm.c:346
+#: builtin/rm.c:345
 #, c-format
 msgid "git rm: unable to remove %s"
 msgstr ""
 
-#: builtin/rm.c:369
+#: builtin/rm.c:368
 #, c-format
 msgid "could not remove '%s'"
 msgstr ""
 
-#: builtin/send-pack.c:19
+#: builtin/send-pack.c:20
 msgid ""
 "git send-pack [--all | --mirror] [--dry-run] [--force] [--receive-pack=<git-"
 "receive-pack>] [--verbose] [--thin] [--atomic] [<host>:]<directory> "
@@ -12562,50 +13028,70 @@ msgid ""
 "  --all and explicit <ref> specification are mutually exclusive."
 msgstr ""
 
-#: builtin/send-pack.c:162
+#: builtin/send-pack.c:163
 msgid "remote name"
 msgstr ""
 
-#: builtin/send-pack.c:176
+#: builtin/send-pack.c:177
 msgid "use stateless RPC protocol"
 msgstr ""
 
-#: builtin/send-pack.c:177
+#: builtin/send-pack.c:178
 msgid "read refs from stdin"
 msgstr ""
 
-#: builtin/send-pack.c:178
+#: builtin/send-pack.c:179
 msgid "print status from remote helper"
 msgstr ""
 
-#: builtin/shortlog.c:14
-msgid "git shortlog [<options>] [<revision-range>] [[--] [<path>...]]"
+#: builtin/serve.c:7
+msgid "git serve [<options>]"
 msgstr ""
 
-#: builtin/shortlog.c:263
-msgid "Group by committer rather than author"
+#: builtin/serve.c:17 builtin/upload-pack.c:23
+msgid "quit after a single request/response exchange"
 msgstr ""
 
-#: builtin/shortlog.c:265
-msgid "sort output according to the number of commits per author"
+#: builtin/serve.c:19
+msgid "exit immediately after advertising capabilities"
 msgstr ""
 
-#: builtin/shortlog.c:267
-msgid "Suppress commit descriptions, only provides commit count"
+#: builtin/shortlog.c:14
+msgid "git shortlog [<options>] [<revision-range>] [[--] <path>...]"
 msgstr ""
 
-#: builtin/shortlog.c:269
-msgid "Show the email address of each author"
+#: builtin/shortlog.c:15
+msgid "git log --pretty=short | git shortlog [<options>]"
+msgstr ""
+
+#: builtin/shortlog.c:264
+msgid "Group by committer rather than author"
+msgstr ""
+
+#: builtin/shortlog.c:266
+msgid "sort output according to the number of commits per author"
+msgstr ""
+
+#: builtin/shortlog.c:268
+msgid "Suppress commit descriptions, only provides commit count"
 msgstr ""
 
 #: builtin/shortlog.c:270
-msgid "w[,i1[,i2]]"
+msgid "Show the email address of each author"
 msgstr ""
 
 #: builtin/shortlog.c:271
+msgid "w[,i1[,i2]]"
+msgstr ""
+
+#: builtin/shortlog.c:272
 msgid "Linewrap output"
 msgstr ""
 
+#: builtin/shortlog.c:298
+msgid "too many arguments given outside repository"
+msgstr ""
+
 #: builtin/show-branch.c:12
 msgid ""
 "git show-branch [-a | --all] [-r | --remotes] [--topo-order | --date-order]\n"
@@ -12794,330 +13280,330 @@ msgstr ""
 msgid "prepend comment character and space to each line"
 msgstr ""
 
-#: builtin/submodule--helper.c:35 builtin/submodule--helper.c:1669
+#: builtin/submodule--helper.c:37 builtin/submodule--helper.c:1688
 #, c-format
 msgid "No such ref: %s"
 msgstr ""
 
-#: builtin/submodule--helper.c:42 builtin/submodule--helper.c:1678
+#: builtin/submodule--helper.c:44 builtin/submodule--helper.c:1697
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr ""
 
-#: builtin/submodule--helper.c:59
+#: builtin/submodule--helper.c:61
 msgid "submodule--helper print-default-remote takes no arguments"
 msgstr ""
 
-#: builtin/submodule--helper.c:96
+#: builtin/submodule--helper.c:98
 #, c-format
 msgid "cannot strip one component off url '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:404 builtin/submodule--helper.c:1198
+#: builtin/submodule--helper.c:406 builtin/submodule--helper.c:1211
 msgid "alternative anchor for relative paths"
 msgstr ""
 
-#: builtin/submodule--helper.c:409
+#: builtin/submodule--helper.c:411
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr ""
 
-#: builtin/submodule--helper.c:460 builtin/submodule--helper.c:483
+#: builtin/submodule--helper.c:462 builtin/submodule--helper.c:485
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr ""
 
-#: builtin/submodule--helper.c:498
+#: builtin/submodule--helper.c:500
 #, c-format
 msgid ""
 "could not lookup configuration '%s'. Assuming this repository is its own "
 "authoritative upstream."
 msgstr ""
 
-#: builtin/submodule--helper.c:509
+#: builtin/submodule--helper.c:511
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:513
+#: builtin/submodule--helper.c:515
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr ""
 
-#: builtin/submodule--helper.c:523
+#: builtin/submodule--helper.c:525
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
 msgstr ""
 
-#: builtin/submodule--helper.c:530
+#: builtin/submodule--helper.c:532
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:552
+#: builtin/submodule--helper.c:554
 msgid "Suppress output for initializing a submodule"
 msgstr ""
 
-#: builtin/submodule--helper.c:557
+#: builtin/submodule--helper.c:559
 msgid "git submodule--helper init [<path>]"
 msgstr ""
 
-#: builtin/submodule--helper.c:625 builtin/submodule--helper.c:747
+#: builtin/submodule--helper.c:631 builtin/submodule--helper.c:757
 #, c-format
 msgid "no submodule mapping found in .gitmodules for path '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:660
+#: builtin/submodule--helper.c:670
 #, c-format
 msgid "could not resolve HEAD ref inside the submodule '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:687 builtin/submodule--helper.c:856
+#: builtin/submodule--helper.c:697 builtin/submodule--helper.c:866
 #, c-format
 msgid "failed to recurse into submodule '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:711 builtin/submodule--helper.c:1021
+#: builtin/submodule--helper.c:721 builtin/submodule--helper.c:1031
 msgid "Suppress submodule status output"
 msgstr ""
 
-#: builtin/submodule--helper.c:712
+#: builtin/submodule--helper.c:722
 msgid ""
 "Use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
 msgstr ""
 
-#: builtin/submodule--helper.c:713
+#: builtin/submodule--helper.c:723
 msgid "recurse into nested submodules"
 msgstr ""
 
-#: builtin/submodule--helper.c:718
+#: builtin/submodule--helper.c:728
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr ""
 
-#: builtin/submodule--helper.c:742
+#: builtin/submodule--helper.c:752
 msgid "git submodule--helper name <path>"
 msgstr ""
 
-#: builtin/submodule--helper.c:806
+#: builtin/submodule--helper.c:816
 #, c-format
 msgid "Synchronizing submodule url for '%s'\n"
 msgstr ""
 
-#: builtin/submodule--helper.c:812
+#: builtin/submodule--helper.c:822
 #, c-format
 msgid "failed to register url for submodule path '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:826
+#: builtin/submodule--helper.c:836
 #, c-format
 msgid "failed to get the default remote for submodule '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:837
+#: builtin/submodule--helper.c:847
 #, c-format
 msgid "failed to update remote for submodule '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:885
+#: builtin/submodule--helper.c:895
 msgid "Suppress output of synchronizing submodule url"
 msgstr ""
 
-#: builtin/submodule--helper.c:887
+#: builtin/submodule--helper.c:897
 msgid "Recurse into nested submodules"
 msgstr ""
 
-#: builtin/submodule--helper.c:892
+#: builtin/submodule--helper.c:902
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
 msgstr ""
 
-#: builtin/submodule--helper.c:946
+#: builtin/submodule--helper.c:956
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
 "really want to remove it including all of its history)"
 msgstr ""
 
-#: builtin/submodule--helper.c:958
+#: builtin/submodule--helper.c:968
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains local modifications; use '-f' to discard "
 "them"
 msgstr ""
 
-#: builtin/submodule--helper.c:966
+#: builtin/submodule--helper.c:976
 #, c-format
 msgid "Cleared directory '%s'\n"
 msgstr ""
 
-#: builtin/submodule--helper.c:968
+#: builtin/submodule--helper.c:978
 #, c-format
 msgid "Could not remove submodule work tree '%s'\n"
 msgstr ""
 
-#: builtin/submodule--helper.c:977
+#: builtin/submodule--helper.c:987
 #, c-format
 msgid "could not create empty submodule directory %s"
 msgstr ""
 
-#: builtin/submodule--helper.c:993
+#: builtin/submodule--helper.c:1003
 #, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr ""
 
-#: builtin/submodule--helper.c:1022
+#: builtin/submodule--helper.c:1032
 msgid "Remove submodule working trees even if they contain local changes"
 msgstr ""
 
-#: builtin/submodule--helper.c:1023
+#: builtin/submodule--helper.c:1033
 msgid "Unregister all submodules"
 msgstr ""
 
-#: builtin/submodule--helper.c:1028
+#: builtin/submodule--helper.c:1038
 msgid ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
 msgstr ""
 
-#: builtin/submodule--helper.c:1042
+#: builtin/submodule--helper.c:1052
 msgid "Use '--all' if you really want to deinitialize all submodules"
 msgstr ""
 
-#: builtin/submodule--helper.c:1133 builtin/submodule--helper.c:1136
+#: builtin/submodule--helper.c:1145 builtin/submodule--helper.c:1148
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
 msgstr ""
 
-#: builtin/submodule--helper.c:1172
+#: builtin/submodule--helper.c:1184
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
 msgstr ""
 
-#: builtin/submodule--helper.c:1179
+#: builtin/submodule--helper.c:1191
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
 msgstr ""
 
-#: builtin/submodule--helper.c:1201
+#: builtin/submodule--helper.c:1214
 msgid "where the new submodule will be cloned to"
 msgstr ""
 
-#: builtin/submodule--helper.c:1204
+#: builtin/submodule--helper.c:1217
 msgid "name of the new submodule"
 msgstr ""
 
-#: builtin/submodule--helper.c:1207
+#: builtin/submodule--helper.c:1220
 msgid "url where to clone the submodule from"
 msgstr ""
 
-#: builtin/submodule--helper.c:1213
+#: builtin/submodule--helper.c:1228
 msgid "depth for shallow clones"
 msgstr ""
 
-#: builtin/submodule--helper.c:1216 builtin/submodule--helper.c:1587
+#: builtin/submodule--helper.c:1231 builtin/submodule--helper.c:1606
 msgid "force cloning progress"
 msgstr ""
 
-#: builtin/submodule--helper.c:1221
+#: builtin/submodule--helper.c:1236
 msgid ""
 "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
 "<repository>] [--name <name>] [--depth <depth>] --url <url> --path <path>"
 msgstr ""
 
-#: builtin/submodule--helper.c:1252
+#: builtin/submodule--helper.c:1267
 #, c-format
 msgid "clone of '%s' into submodule path '%s' failed"
 msgstr ""
 
-#: builtin/submodule--helper.c:1267
+#: builtin/submodule--helper.c:1281
 #, c-format
 msgid "could not get submodule directory for '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:1332
+#: builtin/submodule--helper.c:1347
 #, c-format
 msgid "Submodule path '%s' not initialized"
 msgstr ""
 
-#: builtin/submodule--helper.c:1336
+#: builtin/submodule--helper.c:1351
 msgid "Maybe you want to use 'update --init'?"
 msgstr ""
 
-#: builtin/submodule--helper.c:1365
+#: builtin/submodule--helper.c:1380
 #, c-format
 msgid "Skipping unmerged submodule %s"
 msgstr ""
 
-#: builtin/submodule--helper.c:1394
+#: builtin/submodule--helper.c:1409
 #, c-format
 msgid "Skipping submodule '%s'"
 msgstr ""
 
-#: builtin/submodule--helper.c:1527
+#: builtin/submodule--helper.c:1544
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
 msgstr ""
 
-#: builtin/submodule--helper.c:1538
+#: builtin/submodule--helper.c:1555
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
 msgstr ""
 
-#: builtin/submodule--helper.c:1568 builtin/submodule--helper.c:1788
+#: builtin/submodule--helper.c:1585 builtin/submodule--helper.c:1808
 msgid "path into the working tree"
 msgstr ""
 
-#: builtin/submodule--helper.c:1571
+#: builtin/submodule--helper.c:1588
 msgid "path into the working tree, across nested submodule boundaries"
 msgstr ""
 
-#: builtin/submodule--helper.c:1575
+#: builtin/submodule--helper.c:1592
 msgid "rebase, merge, checkout or none"
 msgstr ""
 
-#: builtin/submodule--helper.c:1579
+#: builtin/submodule--helper.c:1598
 msgid "Create a shallow clone truncated to the specified number of revisions"
 msgstr ""
 
-#: builtin/submodule--helper.c:1582
+#: builtin/submodule--helper.c:1601
 msgid "parallel jobs"
 msgstr ""
 
-#: builtin/submodule--helper.c:1584
+#: builtin/submodule--helper.c:1603
 msgid "whether the initial clone should follow the shallow recommendation"
 msgstr ""
 
-#: builtin/submodule--helper.c:1585
+#: builtin/submodule--helper.c:1604
 msgid "don't print cloning progress"
 msgstr ""
 
-#: builtin/submodule--helper.c:1592
+#: builtin/submodule--helper.c:1611
 msgid "git submodule--helper update_clone [--prefix=<path>] [<path>...]"
 msgstr ""
 
-#: builtin/submodule--helper.c:1605
+#: builtin/submodule--helper.c:1624
 msgid "bad value for update parameter"
 msgstr ""
 
-#: builtin/submodule--helper.c:1673
+#: builtin/submodule--helper.c:1692
 #, c-format
 msgid ""
 "Submodule (%s) branch configured to inherit branch from superproject, but "
 "the superproject is not on any branch"
 msgstr ""
 
-#: builtin/submodule--helper.c:1789
+#: builtin/submodule--helper.c:1809
 msgid "recurse into submodules"
 msgstr ""
 
-#: builtin/submodule--helper.c:1795
+#: builtin/submodule--helper.c:1815
 msgid "git submodule--helper embed-git-dir [<path>...]"
 msgstr ""
 
-#: builtin/submodule--helper.c:1857
+#: builtin/submodule--helper.c:1901
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr ""
 
-#: builtin/submodule--helper.c:1863
+#: builtin/submodule--helper.c:1907
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr ""
@@ -13181,7 +13667,7 @@ msgstr ""
 msgid "Deleted tag '%s' (was %s)\n"
 msgstr ""
 
-#: builtin/tag.c:131
+#: builtin/tag.c:132
 #, c-format
 msgid ""
 "\n"
@@ -13190,7 +13676,7 @@ msgid ""
 "Lines starting with '%c' will be ignored.\n"
 msgstr ""
 
-#: builtin/tag.c:135
+#: builtin/tag.c:136
 #, c-format
 msgid ""
 "\n"
@@ -13200,146 +13686,146 @@ msgid ""
 "want to.\n"
 msgstr ""
 
-#: builtin/tag.c:189
+#: builtin/tag.c:190
 msgid "unable to sign the tag"
 msgstr ""
 
-#: builtin/tag.c:191
+#: builtin/tag.c:192
 msgid "unable to write tag file"
 msgstr ""
 
-#: builtin/tag.c:216
+#: builtin/tag.c:217
 msgid "bad object type."
 msgstr ""
 
-#: builtin/tag.c:265
+#: builtin/tag.c:266
 msgid "no tag message?"
 msgstr ""
 
-#: builtin/tag.c:272
+#: builtin/tag.c:273
 #, c-format
 msgid "The tag message has been left in %s\n"
 msgstr ""
 
-#: builtin/tag.c:381
+#: builtin/tag.c:382
 msgid "list tag names"
 msgstr ""
 
-#: builtin/tag.c:383
+#: builtin/tag.c:384
 msgid "print <n> lines of each tag message"
 msgstr ""
 
-#: builtin/tag.c:385
+#: builtin/tag.c:386
 msgid "delete tags"
 msgstr ""
 
-#: builtin/tag.c:386
+#: builtin/tag.c:387
 msgid "verify tags"
 msgstr ""
 
-#: builtin/tag.c:388
+#: builtin/tag.c:389
 msgid "Tag creation options"
 msgstr ""
 
-#: builtin/tag.c:390
+#: builtin/tag.c:391
 msgid "annotated tag, needs a message"
 msgstr ""
 
-#: builtin/tag.c:392
+#: builtin/tag.c:393
 msgid "tag message"
 msgstr ""
 
-#: builtin/tag.c:394
+#: builtin/tag.c:395
 msgid "force edit of tag message"
 msgstr ""
 
-#: builtin/tag.c:395
+#: builtin/tag.c:396
 msgid "annotated and GPG-signed tag"
 msgstr ""
 
-#: builtin/tag.c:399
+#: builtin/tag.c:400
 msgid "use another key to sign the tag"
 msgstr ""
 
-#: builtin/tag.c:400
+#: builtin/tag.c:401
 msgid "replace the tag if exists"
 msgstr ""
 
-#: builtin/tag.c:401 builtin/update-ref.c:368
+#: builtin/tag.c:402 builtin/update-ref.c:368
 msgid "create a reflog"
 msgstr ""
 
-#: builtin/tag.c:403
+#: builtin/tag.c:404
 msgid "Tag listing options"
 msgstr ""
 
-#: builtin/tag.c:404
+#: builtin/tag.c:405
 msgid "show tag list in columns"
 msgstr ""
 
-#: builtin/tag.c:405 builtin/tag.c:407
+#: builtin/tag.c:406 builtin/tag.c:408
 msgid "print only tags that contain the commit"
 msgstr ""
 
-#: builtin/tag.c:406 builtin/tag.c:408
+#: builtin/tag.c:407 builtin/tag.c:409
 msgid "print only tags that don't contain the commit"
 msgstr ""
 
-#: builtin/tag.c:409
+#: builtin/tag.c:410
 msgid "print only tags that are merged"
 msgstr ""
 
-#: builtin/tag.c:410
+#: builtin/tag.c:411
 msgid "print only tags that are not merged"
 msgstr ""
 
-#: builtin/tag.c:415
+#: builtin/tag.c:416
 msgid "print only tags of the object"
 msgstr ""
 
-#: builtin/tag.c:459
+#: builtin/tag.c:460
 msgid "--column and -n are incompatible"
 msgstr ""
 
-#: builtin/tag.c:481
+#: builtin/tag.c:482
 msgid "-n option is only allowed in list mode"
 msgstr ""
 
-#: builtin/tag.c:483
+#: builtin/tag.c:484
 msgid "--contains option is only allowed in list mode"
 msgstr ""
 
-#: builtin/tag.c:485
+#: builtin/tag.c:486
 msgid "--no-contains option is only allowed in list mode"
 msgstr ""
 
-#: builtin/tag.c:487
+#: builtin/tag.c:488
 msgid "--points-at option is only allowed in list mode"
 msgstr ""
 
-#: builtin/tag.c:489
+#: builtin/tag.c:490
 msgid "--merged and --no-merged options are only allowed in list mode"
 msgstr ""
 
-#: builtin/tag.c:500
+#: builtin/tag.c:501
 msgid "only one -F or -m option is allowed."
 msgstr ""
 
-#: builtin/tag.c:519
+#: builtin/tag.c:520
 msgid "too many params"
 msgstr ""
 
-#: builtin/tag.c:525
+#: builtin/tag.c:526
 #, c-format
 msgid "'%s' is not a valid tag name."
 msgstr ""
 
-#: builtin/tag.c:530
+#: builtin/tag.c:531
 #, c-format
 msgid "tag '%s' already exists"
 msgstr ""
 
-#: builtin/tag.c:561
+#: builtin/tag.c:562
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
 msgstr ""
@@ -13406,189 +13892,189 @@ msgstr ""
 msgid " OK"
 msgstr ""
 
-#: builtin/update-index.c:579
+#: builtin/update-index.c:589
 msgid "git update-index [<options>] [--] [<file>...]"
 msgstr ""
 
-#: builtin/update-index.c:936
+#: builtin/update-index.c:946
 msgid "continue refresh even when index needs update"
 msgstr ""
 
-#: builtin/update-index.c:939
+#: builtin/update-index.c:949
 msgid "refresh: ignore submodules"
 msgstr ""
 
-#: builtin/update-index.c:942
+#: builtin/update-index.c:952
 msgid "do not ignore new files"
 msgstr ""
 
-#: builtin/update-index.c:944
+#: builtin/update-index.c:954
 msgid "let files replace directories and vice-versa"
 msgstr ""
 
-#: builtin/update-index.c:946
+#: builtin/update-index.c:956
 msgid "notice files missing from worktree"
 msgstr ""
 
-#: builtin/update-index.c:948
+#: builtin/update-index.c:958
 msgid "refresh even if index contains unmerged entries"
 msgstr ""
 
-#: builtin/update-index.c:951
+#: builtin/update-index.c:961
 msgid "refresh stat information"
 msgstr ""
 
-#: builtin/update-index.c:955
+#: builtin/update-index.c:965
 msgid "like --refresh, but ignore assume-unchanged setting"
 msgstr ""
 
-#: builtin/update-index.c:959
+#: builtin/update-index.c:969
 msgid "<mode>,<object>,<path>"
 msgstr ""
 
-#: builtin/update-index.c:960
+#: builtin/update-index.c:970
 msgid "add the specified entry to the index"
 msgstr ""
 
-#: builtin/update-index.c:969
+#: builtin/update-index.c:979
 msgid "mark files as \"not changing\""
 msgstr ""
 
-#: builtin/update-index.c:972
+#: builtin/update-index.c:982
 msgid "clear assumed-unchanged bit"
 msgstr ""
 
-#: builtin/update-index.c:975
+#: builtin/update-index.c:985
 msgid "mark files as \"index-only\""
 msgstr ""
 
-#: builtin/update-index.c:978
+#: builtin/update-index.c:988
 msgid "clear skip-worktree bit"
 msgstr ""
 
-#: builtin/update-index.c:981
+#: builtin/update-index.c:991
 msgid "add to index only; do not add content to object database"
 msgstr ""
 
-#: builtin/update-index.c:983
+#: builtin/update-index.c:993
 msgid "remove named paths even if present in worktree"
 msgstr ""
 
-#: builtin/update-index.c:985
+#: builtin/update-index.c:995
 msgid "with --stdin: input lines are terminated by null bytes"
 msgstr ""
 
-#: builtin/update-index.c:987
+#: builtin/update-index.c:997
 msgid "read list of paths to be updated from standard input"
 msgstr ""
 
-#: builtin/update-index.c:991
+#: builtin/update-index.c:1001
 msgid "add entries from standard input to the index"
 msgstr ""
 
-#: builtin/update-index.c:995
+#: builtin/update-index.c:1005
 msgid "repopulate stages #2 and #3 for the listed paths"
 msgstr ""
 
-#: builtin/update-index.c:999
+#: builtin/update-index.c:1009
 msgid "only update entries that differ from HEAD"
 msgstr ""
 
-#: builtin/update-index.c:1003
+#: builtin/update-index.c:1013
 msgid "ignore files missing from worktree"
 msgstr ""
 
-#: builtin/update-index.c:1006
+#: builtin/update-index.c:1016
 msgid "report actions to standard output"
 msgstr ""
 
-#: builtin/update-index.c:1008
+#: builtin/update-index.c:1018
 msgid "(for porcelains) forget saved unresolved conflicts"
 msgstr ""
 
-#: builtin/update-index.c:1012
+#: builtin/update-index.c:1022
 msgid "write index in this format"
 msgstr ""
 
-#: builtin/update-index.c:1014
+#: builtin/update-index.c:1024
 msgid "enable or disable split index"
 msgstr ""
 
-#: builtin/update-index.c:1016
+#: builtin/update-index.c:1026
 msgid "enable/disable untracked cache"
 msgstr ""
 
-#: builtin/update-index.c:1018
+#: builtin/update-index.c:1028
 msgid "test if the filesystem supports untracked cache"
 msgstr ""
 
-#: builtin/update-index.c:1020
+#: builtin/update-index.c:1030
 msgid "enable untracked cache without testing the filesystem"
 msgstr ""
 
-#: builtin/update-index.c:1022
+#: builtin/update-index.c:1032
 msgid "write out the index even if is not flagged as changed"
 msgstr ""
 
-#: builtin/update-index.c:1024
+#: builtin/update-index.c:1034
 msgid "enable or disable file system monitor"
 msgstr ""
 
-#: builtin/update-index.c:1026
+#: builtin/update-index.c:1036
 msgid "mark files as fsmonitor valid"
 msgstr ""
 
-#: builtin/update-index.c:1029
+#: builtin/update-index.c:1039
 msgid "clear fsmonitor valid bit"
 msgstr ""
 
-#: builtin/update-index.c:1127
+#: builtin/update-index.c:1138
 msgid ""
 "core.splitIndex is set to false; remove or change it, if you really want to "
 "enable split index"
 msgstr ""
 
-#: builtin/update-index.c:1136
+#: builtin/update-index.c:1147
 msgid ""
 "core.splitIndex is set to true; remove or change it, if you really want to "
 "disable split index"
 msgstr ""
 
-#: builtin/update-index.c:1147
+#: builtin/update-index.c:1158
 msgid ""
 "core.untrackedCache is set to true; remove or change it, if you really want "
 "to disable the untracked cache"
 msgstr ""
 
-#: builtin/update-index.c:1151
+#: builtin/update-index.c:1162
 msgid "Untracked cache disabled"
 msgstr ""
 
-#: builtin/update-index.c:1159
+#: builtin/update-index.c:1170
 msgid ""
 "core.untrackedCache is set to false; remove or change it, if you really want "
 "to enable the untracked cache"
 msgstr ""
 
-#: builtin/update-index.c:1163
+#: builtin/update-index.c:1174
 #, c-format
 msgid "Untracked cache enabled for '%s'"
 msgstr ""
 
-#: builtin/update-index.c:1171
+#: builtin/update-index.c:1182
 msgid "core.fsmonitor is unset; set it if you really want to enable fsmonitor"
 msgstr ""
 
-#: builtin/update-index.c:1175
+#: builtin/update-index.c:1186
 msgid "fsmonitor enabled"
 msgstr ""
 
-#: builtin/update-index.c:1178
+#: builtin/update-index.c:1189
 msgid ""
 "core.fsmonitor is set; remove it if you really want to disable fsmonitor"
 msgstr ""
 
-#: builtin/update-index.c:1182
+#: builtin/update-index.c:1193
 msgid "fsmonitor disabled"
 msgstr ""
 
@@ -13628,6 +14114,22 @@ msgstr ""
 msgid "update the info files from scratch"
 msgstr ""
 
+#: builtin/upload-pack.c:11
+msgid "git upload-pack [<options>] <dir>"
+msgstr ""
+
+#: builtin/upload-pack.c:25
+msgid "exit immediately after initial ref advertisement"
+msgstr ""
+
+#: builtin/upload-pack.c:27
+msgid "do not try <directory>/.git/ if <directory> is no Git directory"
+msgstr ""
+
+#: builtin/upload-pack.c:29
+msgid "interrupt transfer after <n> seconds of inactivity"
+msgstr ""
+
 #: builtin/verify-commit.c:18
 msgid "git verify-commit [-v | --verbose] <commit>..."
 msgstr ""
@@ -13688,198 +14190,213 @@ msgstr ""
 msgid "git worktree unlock <path>"
 msgstr ""
 
-#: builtin/worktree.c:60
+#: builtin/worktree.c:58
 #, c-format
 msgid "Removing worktrees/%s: not a valid directory"
 msgstr ""
 
-#: builtin/worktree.c:66
+#: builtin/worktree.c:64
 #, c-format
 msgid "Removing worktrees/%s: gitdir file does not exist"
 msgstr ""
 
-#: builtin/worktree.c:71 builtin/worktree.c:80
+#: builtin/worktree.c:69 builtin/worktree.c:78
 #, c-format
 msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
 msgstr ""
 
-#: builtin/worktree.c:90
+#: builtin/worktree.c:88
 #, c-format
 msgid ""
 "Removing worktrees/%s: short read (expected %<PRIuMAX> bytes, read "
 "%<PRIuMAX>)"
 msgstr ""
 
-#: builtin/worktree.c:98
+#: builtin/worktree.c:96
 #, c-format
 msgid "Removing worktrees/%s: invalid gitdir file"
 msgstr ""
 
-#: builtin/worktree.c:114
+#: builtin/worktree.c:105
 #, c-format
 msgid "Removing worktrees/%s: gitdir file points to non-existent location"
 msgstr ""
 
-#: builtin/worktree.c:161
+#: builtin/worktree.c:152
 msgid "report pruned working trees"
 msgstr ""
 
-#: builtin/worktree.c:163
+#: builtin/worktree.c:154
 msgid "expire working trees older than <time>"
 msgstr ""
 
-#: builtin/worktree.c:238
+#: builtin/worktree.c:229
 #, c-format
 msgid "'%s' already exists"
 msgstr ""
 
-#: builtin/worktree.c:269
+#: builtin/worktree.c:260
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr ""
 
-#: builtin/worktree.c:308
+#: builtin/worktree.c:373 builtin/worktree.c:379
 #, c-format
-msgid "Preparing %s (identifier %s)"
+msgid "Preparing worktree (new branch '%s')"
 msgstr ""
 
-#: builtin/worktree.c:385
+#: builtin/worktree.c:375
+#, c-format
+msgid "Preparing worktree (resetting branch '%s'; was at %s)"
+msgstr ""
+
+#: builtin/worktree.c:384
+#, c-format
+msgid "Preparing worktree (checking out '%s')"
+msgstr ""
+
+#: builtin/worktree.c:390
+#, c-format
+msgid "Preparing worktree (detached HEAD %s)"
+msgstr ""
+
+#: builtin/worktree.c:431
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr ""
 
-#: builtin/worktree.c:388
+#: builtin/worktree.c:434
 msgid "create a new branch"
 msgstr ""
 
-#: builtin/worktree.c:390
+#: builtin/worktree.c:436
 msgid "create or reset a branch"
 msgstr ""
 
-#: builtin/worktree.c:392
+#: builtin/worktree.c:438
 msgid "populate the new working tree"
 msgstr ""
 
-#: builtin/worktree.c:393
+#: builtin/worktree.c:439
 msgid "keep the new working tree locked"
 msgstr ""
 
-#: builtin/worktree.c:395
+#: builtin/worktree.c:441
 msgid "set up tracking mode (see git-branch(1))"
 msgstr ""
 
-#: builtin/worktree.c:398
+#: builtin/worktree.c:444
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr ""
 
-#: builtin/worktree.c:406
+#: builtin/worktree.c:452
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr ""
 
-#: builtin/worktree.c:471
+#: builtin/worktree.c:511
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr ""
 
-#: builtin/worktree.c:571
+#: builtin/worktree.c:611
 msgid "reason for locking"
 msgstr ""
 
-#: builtin/worktree.c:583 builtin/worktree.c:616 builtin/worktree.c:670
-#: builtin/worktree.c:809
+#: builtin/worktree.c:623 builtin/worktree.c:656 builtin/worktree.c:710
+#: builtin/worktree.c:850
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr ""
 
-#: builtin/worktree.c:585 builtin/worktree.c:618
+#: builtin/worktree.c:625 builtin/worktree.c:658
 msgid "The main working tree cannot be locked or unlocked"
 msgstr ""
 
-#: builtin/worktree.c:590
+#: builtin/worktree.c:630
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr ""
 
-#: builtin/worktree.c:592
+#: builtin/worktree.c:632
 #, c-format
 msgid "'%s' is already locked"
 msgstr ""
 
-#: builtin/worktree.c:620
+#: builtin/worktree.c:660
 #, c-format
 msgid "'%s' is not locked"
 msgstr ""
 
-#: builtin/worktree.c:645
+#: builtin/worktree.c:685
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr ""
 
-#: builtin/worktree.c:672 builtin/worktree.c:811
+#: builtin/worktree.c:712 builtin/worktree.c:852
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr ""
 
-#: builtin/worktree.c:677
+#: builtin/worktree.c:717
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr ""
 
-#: builtin/worktree.c:683
+#: builtin/worktree.c:723
 #, c-format
 msgid "target '%s' already exists"
 msgstr ""
 
-#: builtin/worktree.c:690
+#: builtin/worktree.c:730
 #, c-format
 msgid "cannot move a locked working tree, lock reason: %s"
 msgstr ""
 
-#: builtin/worktree.c:692
+#: builtin/worktree.c:732
 msgid "cannot move a locked working tree"
 msgstr ""
 
-#: builtin/worktree.c:695
+#: builtin/worktree.c:735
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr ""
 
-#: builtin/worktree.c:700
+#: builtin/worktree.c:740
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr ""
 
-#: builtin/worktree.c:748
+#: builtin/worktree.c:788
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr ""
 
-#: builtin/worktree.c:752
+#: builtin/worktree.c:792
 #, c-format
 msgid "'%s' is dirty, use --force to delete it"
 msgstr ""
 
-#: builtin/worktree.c:757
+#: builtin/worktree.c:797
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr ""
 
-#: builtin/worktree.c:768 builtin/worktree.c:782
+#: builtin/worktree.c:808 builtin/worktree.c:822
 #, c-format
 msgid "failed to delete '%s'"
 msgstr ""
 
-#: builtin/worktree.c:794
+#: builtin/worktree.c:834
 msgid "force removing even if the worktree is dirty"
 msgstr ""
 
-#: builtin/worktree.c:815
+#: builtin/worktree.c:856
 #, c-format
 msgid "cannot remove a locked working tree, lock reason: %s"
 msgstr ""
 
-#: builtin/worktree.c:817
+#: builtin/worktree.c:858
 msgid "cannot remove a locked working tree"
 msgstr ""
 
-#: builtin/worktree.c:820
+#: builtin/worktree.c:861
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr ""
@@ -13900,26 +14417,6 @@ msgstr ""
 msgid "only useful for debugging"
 msgstr ""
 
-#: upload-pack.c:27
-msgid "git upload-pack [<options>] <dir>"
-msgstr ""
-
-#: upload-pack.c:1070
-msgid "quit after a single request/response exchange"
-msgstr ""
-
-#: upload-pack.c:1072
-msgid "exit immediately after initial ref advertisement"
-msgstr ""
-
-#: upload-pack.c:1074
-msgid "do not try <directory>/.git/ if <directory> is no Git directory"
-msgstr ""
-
-#: upload-pack.c:1076
-msgid "interrupt transfer after <n> seconds of inactivity"
-msgstr ""
-
 #: credential-cache--daemon.c:222
 #, c-format
 msgid ""
@@ -13933,81 +14430,82 @@ msgstr ""
 msgid "print debugging messages to stderr"
 msgstr ""
 
-#: git.c:8
+#: git.c:27
 msgid ""
 "git [--version] [--help] [-C <path>] [-c <name>=<value>]\n"
 "           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
-"           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]\n"
+"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
+"bare]\n"
 "           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
 "           <command> [<args>]"
 msgstr ""
 
-#: git.c:15
+#: git.c:34
 msgid ""
 "'git help -a' and 'git help -g' list available subcommands and some\n"
 "concept guides. See 'git help <command>' or 'git help <concept>'\n"
 "to read about a specific subcommand or concept."
 msgstr ""
 
-#: git.c:95
+#: git.c:173
 #, c-format
 msgid "no directory given for --git-dir\n"
 msgstr ""
 
-#: git.c:109
+#: git.c:187
 #, c-format
 msgid "no namespace given for --namespace\n"
 msgstr ""
 
-#: git.c:123
+#: git.c:201
 #, c-format
 msgid "no directory given for --work-tree\n"
 msgstr ""
 
-#: git.c:137
+#: git.c:215
 #, c-format
 msgid "no prefix given for --super-prefix\n"
 msgstr ""
 
-#: git.c:159
+#: git.c:237
 #, c-format
 msgid "-c expects a configuration string\n"
 msgstr ""
 
-#: git.c:197
+#: git.c:275
 #, c-format
 msgid "no directory given for -C\n"
 msgstr ""
 
-#: git.c:212
+#: git.c:300
 #, c-format
 msgid "unknown option: %s\n"
 msgstr ""
 
-#: git.c:687
+#: git.c:765
 #, c-format
 msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
 msgstr ""
 
-#: git.c:699
+#: git.c:777
 #, c-format
 msgid "failed to run command '%s': %s\n"
 msgstr ""
 
-#: http.c:342
+#: http.c:348
 #, c-format
 msgid "negative value for http.postbuffer; defaulting to %d"
 msgstr ""
 
-#: http.c:363
+#: http.c:369
 msgid "Delegation control is not supported with cURL < 7.22.0"
 msgstr ""
 
-#: http.c:372
+#: http.c:378
 msgid "Public key pinning not supported with cURL < 7.44.0"
 msgstr ""
 
-#: http.c:1857
+#: http.c:1854
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -14015,7 +14513,7 @@ msgid ""
 "   redirect: %s"
 msgstr ""
 
-#: remote-curl.c:345
+#: remote-curl.c:401
 #, c-format
 msgid "redirecting to %s"
 msgstr ""
@@ -14028,128 +14526,652 @@ msgstr ""
 msgid "object filtering"
 msgstr ""
 
-#: common-cmds.h:9
-msgid "start a working area (see also: git help tutorial)"
+#: parse-options.h:157
+msgid "expiry-date"
 msgstr ""
 
-#: common-cmds.h:10
-msgid "work on the current change (see also: git help everyday)"
+#: parse-options.h:172
+msgid "no-op (backward compatibility)"
 msgstr ""
 
-#: common-cmds.h:11
-msgid "examine the history and state (see also: git help revisions)"
+#: parse-options.h:251
+msgid "be more verbose"
 msgstr ""
 
-#: common-cmds.h:12
-msgid "grow, mark and tweak your common history"
+#: parse-options.h:253
+msgid "be more quiet"
 msgstr ""
 
-#: common-cmds.h:13
-msgid "collaborate (see also: git help workflows)"
+#: parse-options.h:259
+msgid "use <n> digits to display SHA-1s"
 msgstr ""
 
-#: common-cmds.h:17
+#: command-list.h:50
 msgid "Add file contents to the index"
 msgstr ""
 
-#: common-cmds.h:18
+#: command-list.h:51
+msgid "Apply a series of patches from a mailbox"
+msgstr ""
+
+#: command-list.h:52
+msgid "Annotate file lines with commit information"
+msgstr ""
+
+#: command-list.h:53
+msgid "Apply a patch to files and/or to the index"
+msgstr ""
+
+#: command-list.h:54
+msgid "Import an Arch repository into Git"
+msgstr ""
+
+#: command-list.h:55
+msgid "Create an archive of files from a named tree"
+msgstr ""
+
+#: command-list.h:56
 msgid "Use binary search to find the commit that introduced a bug"
 msgstr ""
 
-#: common-cmds.h:19
+#: command-list.h:57
+msgid "Show what revision and author last modified each line of a file"
+msgstr ""
+
+#: command-list.h:58
 msgid "List, create, or delete branches"
 msgstr ""
 
-#: common-cmds.h:20
+#: command-list.h:59
+msgid "Move objects and refs by archive"
+msgstr ""
+
+#: command-list.h:60
+msgid "Provide content or type and size information for repository objects"
+msgstr ""
+
+#: command-list.h:61
+msgid "Display gitattributes information"
+msgstr ""
+
+#: command-list.h:62
+msgid "Debug gitignore / exclude files"
+msgstr ""
+
+#: command-list.h:63
+msgid "Show canonical names and email addresses of contacts"
+msgstr ""
+
+#: command-list.h:64
 msgid "Switch branches or restore working tree files"
 msgstr ""
 
-#: common-cmds.h:21
+#: command-list.h:65
+msgid "Copy files from the index to the working tree"
+msgstr ""
+
+#: command-list.h:66
+msgid "Ensures that a reference name is well formed"
+msgstr ""
+
+#: command-list.h:67
+msgid "Find commits yet to be applied to upstream"
+msgstr ""
+
+#: command-list.h:68
+msgid "Apply the changes introduced by some existing commits"
+msgstr ""
+
+#: command-list.h:69
+msgid "Graphical alternative to git-commit"
+msgstr ""
+
+#: command-list.h:70
+msgid "Remove untracked files from the working tree"
+msgstr ""
+
+#: command-list.h:71
 msgid "Clone a repository into a new directory"
 msgstr ""
 
-#: common-cmds.h:22
+#: command-list.h:72
+msgid "Display data in columns"
+msgstr ""
+
+#: command-list.h:73
 msgid "Record changes to the repository"
 msgstr ""
 
-#: common-cmds.h:23
+#: command-list.h:74
+msgid "Write and verify Git commit graph files"
+msgstr ""
+
+#: command-list.h:75
+msgid "Create a new commit object"
+msgstr ""
+
+#: command-list.h:76
+msgid "Get and set repository or global options"
+msgstr ""
+
+#: command-list.h:77
+msgid "Count unpacked number of objects and their disk consumption"
+msgstr ""
+
+#: command-list.h:78
+msgid "Retrieve and store user credentials"
+msgstr ""
+
+#: command-list.h:79
+msgid "Helper to temporarily store passwords in memory"
+msgstr ""
+
+#: command-list.h:80
+msgid "Helper to store credentials on disk"
+msgstr ""
+
+#: command-list.h:81
+msgid "Export a single commit to a CVS checkout"
+msgstr ""
+
+#: command-list.h:82
+msgid "Salvage your data out of another SCM people love to hate"
+msgstr ""
+
+#: command-list.h:83
+msgid "A CVS server emulator for Git"
+msgstr ""
+
+#: command-list.h:84
+msgid "A really simple server for Git repositories"
+msgstr ""
+
+#: command-list.h:85
+msgid "Give an object a human readable name based on an available ref"
+msgstr ""
+
+#: command-list.h:86
 msgid "Show changes between commits, commit and working tree, etc"
 msgstr ""
 
-#: common-cmds.h:24
+#: command-list.h:87
+msgid "Compares files in the working tree and the index"
+msgstr ""
+
+#: command-list.h:88
+msgid "Compare a tree to the working tree or index"
+msgstr ""
+
+#: command-list.h:89
+msgid "Compares the content and mode of blobs found via two tree objects"
+msgstr ""
+
+#: command-list.h:90
+msgid "Show changes using common diff tools"
+msgstr ""
+
+#: command-list.h:91
+msgid "Git data exporter"
+msgstr ""
+
+#: command-list.h:92
+msgid "Backend for fast Git data importers"
+msgstr ""
+
+#: command-list.h:93
 msgid "Download objects and refs from another repository"
 msgstr ""
 
-#: common-cmds.h:25
+#: command-list.h:94
+msgid "Receive missing objects from another repository"
+msgstr ""
+
+#: command-list.h:95
+msgid "Rewrite branches"
+msgstr ""
+
+#: command-list.h:96
+msgid "Produce a merge commit message"
+msgstr ""
+
+#: command-list.h:97
+msgid "Output information on each ref"
+msgstr ""
+
+#: command-list.h:98
+msgid "Prepare patches for e-mail submission"
+msgstr ""
+
+#: command-list.h:99
+msgid "Verifies the connectivity and validity of the objects in the database"
+msgstr ""
+
+#: command-list.h:100
+msgid "Cleanup unnecessary files and optimize the local repository"
+msgstr ""
+
+#: command-list.h:101
+msgid "Extract commit ID from an archive created using git-archive"
+msgstr ""
+
+#: command-list.h:102
 msgid "Print lines matching a pattern"
 msgstr ""
 
-#: common-cmds.h:26
+#: command-list.h:103
+msgid "A portable graphical interface to Git"
+msgstr ""
+
+#: command-list.h:104
+msgid "Compute object ID and optionally creates a blob from a file"
+msgstr ""
+
+#: command-list.h:105
+msgid "Display help information about Git"
+msgstr ""
+
+#: command-list.h:106
+msgid "Server side implementation of Git over HTTP"
+msgstr ""
+
+#: command-list.h:107
+msgid "Download from a remote Git repository via HTTP"
+msgstr ""
+
+#: command-list.h:108
+msgid "Push objects over HTTP/DAV to another repository"
+msgstr ""
+
+#: command-list.h:109
+msgid "Send a collection of patches from stdin to an IMAP folder"
+msgstr ""
+
+#: command-list.h:110
+msgid "Build pack index file for an existing packed archive"
+msgstr ""
+
+#: command-list.h:111
 msgid "Create an empty Git repository or reinitialize an existing one"
 msgstr ""
 
-#: common-cmds.h:27
+#: command-list.h:112
+msgid "Instantly browse your working repository in gitweb"
+msgstr ""
+
+#: command-list.h:113
+msgid "add or parse structured information in commit messages"
+msgstr ""
+
+#: command-list.h:114
+msgid "The Git repository browser"
+msgstr ""
+
+#: command-list.h:115
 msgid "Show commit logs"
 msgstr ""
 
-#: common-cmds.h:28
+#: command-list.h:116
+msgid "Show information about files in the index and the working tree"
+msgstr ""
+
+#: command-list.h:117
+msgid "List references in a remote repository"
+msgstr ""
+
+#: command-list.h:118
+msgid "List the contents of a tree object"
+msgstr ""
+
+#: command-list.h:119
+msgid "Extracts patch and authorship from a single e-mail message"
+msgstr ""
+
+#: command-list.h:120
+msgid "Simple UNIX mbox splitter program"
+msgstr ""
+
+#: command-list.h:121
 msgid "Join two or more development histories together"
 msgstr ""
 
-#: common-cmds.h:29
+#: command-list.h:122
+msgid "Find as good common ancestors as possible for a merge"
+msgstr ""
+
+#: command-list.h:123
+msgid "Run a three-way file merge"
+msgstr ""
+
+#: command-list.h:124
+msgid "Run a merge for files needing merging"
+msgstr ""
+
+#: command-list.h:125
+msgid "The standard helper program to use with git-merge-index"
+msgstr ""
+
+#: command-list.h:126
+msgid "Run merge conflict resolution tools to resolve merge conflicts"
+msgstr ""
+
+#: command-list.h:127
+msgid "Show three-way merge without touching index"
+msgstr ""
+
+#: command-list.h:128
+msgid "Creates a tag object"
+msgstr ""
+
+#: command-list.h:129
+msgid "Build a tree-object from ls-tree formatted text"
+msgstr ""
+
+#: command-list.h:130
 msgid "Move or rename a file, a directory, or a symlink"
 msgstr ""
 
-#: common-cmds.h:30
+#: command-list.h:131
+msgid "Find symbolic names for given revs"
+msgstr ""
+
+#: command-list.h:132
+msgid "Add or inspect object notes"
+msgstr ""
+
+#: command-list.h:133
+msgid "Import from and submit to Perforce repositories"
+msgstr ""
+
+#: command-list.h:134
+msgid "Create a packed archive of objects"
+msgstr ""
+
+#: command-list.h:135
+msgid "Find redundant pack files"
+msgstr ""
+
+#: command-list.h:136
+msgid "Pack heads and tags for efficient repository access"
+msgstr ""
+
+#: command-list.h:137
+msgid "Routines to help parsing remote repository access parameters"
+msgstr ""
+
+#: command-list.h:138
+msgid "Compute unique ID for a patch"
+msgstr ""
+
+#: command-list.h:139
+msgid "Prune all unreachable objects from the object database"
+msgstr ""
+
+#: command-list.h:140
+msgid "Remove extra objects that are already in pack files"
+msgstr ""
+
+#: command-list.h:141
 msgid "Fetch from and integrate with another repository or a local branch"
 msgstr ""
 
-#: common-cmds.h:31
+#: command-list.h:142
 msgid "Update remote refs along with associated objects"
 msgstr ""
 
-#: common-cmds.h:32
+#: command-list.h:143
+msgid "Applies a quilt patchset onto the current branch"
+msgstr ""
+
+#: command-list.h:144
+msgid "Reads tree information into the index"
+msgstr ""
+
+#: command-list.h:145
 msgid "Reapply commits on top of another base tip"
 msgstr ""
 
-#: common-cmds.h:33
+#: command-list.h:146
+msgid "Receive what is pushed into the repository"
+msgstr ""
+
+#: command-list.h:147
+msgid "Manage reflog information"
+msgstr ""
+
+#: command-list.h:148
+msgid "Manage set of tracked repositories"
+msgstr ""
+
+#: command-list.h:149
+msgid "Pack unpacked objects in a repository"
+msgstr ""
+
+#: command-list.h:150
+msgid "Create, list, delete refs to replace objects"
+msgstr ""
+
+#: command-list.h:151
+msgid "Generates a summary of pending changes"
+msgstr ""
+
+#: command-list.h:152
+msgid "Reuse recorded resolution of conflicted merges"
+msgstr ""
+
+#: command-list.h:153
 msgid "Reset current HEAD to the specified state"
 msgstr ""
 
-#: common-cmds.h:34
+#: command-list.h:154
+msgid "Revert some existing commits"
+msgstr ""
+
+#: command-list.h:155
+msgid "Lists commit objects in reverse chronological order"
+msgstr ""
+
+#: command-list.h:156
+msgid "Pick out and massage parameters"
+msgstr ""
+
+#: command-list.h:157
 msgid "Remove files from the working tree and from the index"
 msgstr ""
 
-#: common-cmds.h:35
+#: command-list.h:158
+msgid "Send a collection of patches as emails"
+msgstr ""
+
+#: command-list.h:159
+msgid "Push objects over Git protocol to another repository"
+msgstr ""
+
+#: command-list.h:160
+msgid "Restricted login shell for Git-only SSH access"
+msgstr ""
+
+#: command-list.h:161
+msgid "Summarize 'git log' output"
+msgstr ""
+
+#: command-list.h:162
 msgid "Show various types of objects"
 msgstr ""
 
-#: common-cmds.h:36
+#: command-list.h:163
+msgid "Show branches and their commits"
+msgstr ""
+
+#: command-list.h:164
+msgid "Show packed archive index"
+msgstr ""
+
+#: command-list.h:165
+msgid "List references in a local repository"
+msgstr ""
+
+#: command-list.h:166
+msgid "Git's i18n setup code for shell scripts"
+msgstr ""
+
+#: command-list.h:167
+msgid "Common Git shell script setup code"
+msgstr ""
+
+#: command-list.h:168
+msgid "Stash the changes in a dirty working directory away"
+msgstr ""
+
+#: command-list.h:169
+msgid "Add file contents to the staging area"
+msgstr ""
+
+#: command-list.h:170
 msgid "Show the working tree status"
 msgstr ""
 
-#: common-cmds.h:37
+#: command-list.h:171
+msgid "Remove unnecessary whitespace"
+msgstr ""
+
+#: command-list.h:172
+msgid "Initialize, update or inspect submodules"
+msgstr ""
+
+#: command-list.h:173
+msgid "Bidirectional operation between a Subversion repository and Git"
+msgstr ""
+
+#: command-list.h:174
+msgid "Read, modify and delete symbolic refs"
+msgstr ""
+
+#: command-list.h:175
 msgid "Create, list, delete or verify a tag object signed with GPG"
 msgstr ""
 
-#: parse-options.h:157
-msgid "expiry-date"
+#: command-list.h:176
+msgid "Creates a temporary file with a blob's contents"
 msgstr ""
 
-#: parse-options.h:172
-msgid "no-op (backward compatibility)"
+#: command-list.h:177
+msgid "Unpack objects from a packed archive"
 msgstr ""
 
-#: parse-options.h:250
-msgid "be more verbose"
+#: command-list.h:178
+msgid "Register file contents in the working tree to the index"
 msgstr ""
 
-#: parse-options.h:252
-msgid "be more quiet"
+#: command-list.h:179
+msgid "Update the object name stored in a ref safely"
 msgstr ""
 
-#: parse-options.h:258
-msgid "use <n> digits to display SHA-1s"
+#: command-list.h:180
+msgid "Update auxiliary info file to help dumb servers"
+msgstr ""
+
+#: command-list.h:181
+msgid "Send archive back to git-archive"
+msgstr ""
+
+#: command-list.h:182
+msgid "Send objects packed back to git-fetch-pack"
+msgstr ""
+
+#: command-list.h:183
+msgid "Show a Git logical variable"
+msgstr ""
+
+#: command-list.h:184
+msgid "Check the GPG signature of commits"
+msgstr ""
+
+#: command-list.h:185
+msgid "Validate packed Git archive files"
+msgstr ""
+
+#: command-list.h:186
+msgid "Check the GPG signature of tags"
+msgstr ""
+
+#: command-list.h:187
+msgid "Git web interface (web frontend to Git repositories)"
+msgstr ""
+
+#: command-list.h:188
+msgid "Show logs with difference each commit introduces"
+msgstr ""
+
+#: command-list.h:189
+msgid "Manage multiple working trees"
+msgstr ""
+
+#: command-list.h:190
+msgid "Create a tree object from the current index"
+msgstr ""
+
+#: command-list.h:191
+msgid "Defining attributes per path"
+msgstr ""
+
+#: command-list.h:192
+msgid "Git command-line interface and conventions"
+msgstr ""
+
+#: command-list.h:193
+msgid "A Git core tutorial for developers"
+msgstr ""
+
+#: command-list.h:194
+msgid "Git for CVS users"
+msgstr ""
+
+#: command-list.h:195
+msgid "Tweaking diff output"
+msgstr ""
+
+#: command-list.h:196
+msgid "A useful minimum set of commands for Everyday Git"
+msgstr ""
+
+#: command-list.h:197
+msgid "A Git Glossary"
+msgstr ""
+
+#: command-list.h:198
+msgid "Hooks used by Git"
+msgstr ""
+
+#: command-list.h:199
+msgid "Specifies intentionally untracked files to ignore"
+msgstr ""
+
+#: command-list.h:200
+msgid "Defining submodule properties"
+msgstr ""
+
+#: command-list.h:201
+msgid "Git namespaces"
+msgstr ""
+
+#: command-list.h:202
+msgid "Git Repository Layout"
+msgstr ""
+
+#: command-list.h:203
+msgid "Specifying revisions and ranges for Git"
+msgstr ""
+
+#: command-list.h:204
+msgid "A tutorial introduction to Git: part two"
+msgstr ""
+
+#: command-list.h:205
+msgid "A tutorial introduction to Git"
+msgstr ""
+
+#: command-list.h:206
+msgid "An overview of recommended workflows with Git"
 msgstr ""
 
 #: rerere.h:40
@@ -14361,7 +15383,7 @@ msgstr ""
 msgid "Simple merge did not work, trying automatic merge."
 msgstr ""
 
-#: git-rebase.sh:60
+#: git-rebase.sh:61
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
@@ -14370,47 +15392,47 @@ msgid ""
 "abort\"."
 msgstr ""
 
-#: git-rebase.sh:163 git-rebase.sh:409
+#: git-rebase.sh:173 git-rebase.sh:442
 #, sh-format
 msgid "Could not move back to $head_name"
 msgstr ""
 
-#: git-rebase.sh:174
+#: git-rebase.sh:184
 msgid "Applied autostash."
 msgstr ""
 
-#: git-rebase.sh:177
+#: git-rebase.sh:187
 #, sh-format
 msgid "Cannot store $stash_sha1"
 msgstr ""
 
-#: git-rebase.sh:218
+#: git-rebase.sh:229
 msgid "The pre-rebase hook refused to rebase."
 msgstr ""
 
-#: git-rebase.sh:223
+#: git-rebase.sh:234
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr ""
 
-#: git-rebase.sh:370
+#: git-rebase.sh:403
 msgid "No rebase in progress?"
 msgstr ""
 
-#: git-rebase.sh:381
+#: git-rebase.sh:414
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr ""
 
-#: git-rebase.sh:388
+#: git-rebase.sh:421
 msgid "Cannot read HEAD"
 msgstr ""
 
-#: git-rebase.sh:391
+#: git-rebase.sh:424
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
 msgstr ""
 
-#: git-rebase.sh:435
+#: git-rebase.sh:468
 #, sh-format
 msgid ""
 "It seems that there is already a $state_dir_base directory, and\n"
@@ -14423,74 +15445,78 @@ msgid ""
 "valuable there."
 msgstr ""
 
-#: git-rebase.sh:491
+#: git-rebase.sh:509
+msgid "error: cannot combine '--signoff' with '--preserve-merges'"
+msgstr ""
+
+#: git-rebase.sh:537
 #, sh-format
 msgid "invalid upstream '$upstream_name'"
 msgstr ""
 
-#: git-rebase.sh:515
+#: git-rebase.sh:561
 #, sh-format
 msgid "$onto_name: there are more than one merge bases"
 msgstr ""
 
-#: git-rebase.sh:518 git-rebase.sh:522
+#: git-rebase.sh:564 git-rebase.sh:568
 #, sh-format
 msgid "$onto_name: there is no merge base"
 msgstr ""
 
-#: git-rebase.sh:527
+#: git-rebase.sh:573
 #, sh-format
 msgid "Does not point to a valid commit: $onto_name"
 msgstr ""
 
-#: git-rebase.sh:553
+#: git-rebase.sh:599
 #, sh-format
 msgid "fatal: no such branch/commit '$branch_name'"
 msgstr ""
 
-#: git-rebase.sh:586
+#: git-rebase.sh:632
 msgid "Cannot autostash"
 msgstr ""
 
-#: git-rebase.sh:591
+#: git-rebase.sh:637
 #, sh-format
 msgid "Created autostash: $stash_abbrev"
 msgstr ""
 
-#: git-rebase.sh:595
+#: git-rebase.sh:641
 msgid "Please commit or stash them."
 msgstr ""
 
-#: git-rebase.sh:618
+#: git-rebase.sh:664
 #, sh-format
 msgid "HEAD is up to date."
 msgstr ""
 
-#: git-rebase.sh:620
+#: git-rebase.sh:666
 #, sh-format
 msgid "Current branch $branch_name is up to date."
 msgstr ""
 
-#: git-rebase.sh:628
+#: git-rebase.sh:674
 #, sh-format
 msgid "HEAD is up to date, rebase forced."
 msgstr ""
 
-#: git-rebase.sh:630
+#: git-rebase.sh:676
 #, sh-format
 msgid "Current branch $branch_name is up to date, rebase forced."
 msgstr ""
 
-#: git-rebase.sh:642
+#: git-rebase.sh:688
 #, sh-format
 msgid "Changes from $mb to $onto:"
 msgstr ""
 
-#: git-rebase.sh:651
+#: git-rebase.sh:697
 msgid "First, rewinding head to replay your work on top of it..."
 msgstr ""
 
-#: git-rebase.sh:661
+#: git-rebase.sh:707
 #, sh-format
 msgid "Fast-forwarded $branch_name to $onto_name."
 msgstr ""
@@ -14558,109 +15584,109 @@ msgstr ""
 msgid "Saved working directory and index state $stash_msg"
 msgstr ""
 
-#: git-stash.sh:340
+#: git-stash.sh:342
 msgid "Cannot remove worktree changes"
 msgstr ""
 
-#: git-stash.sh:488
+#: git-stash.sh:490
 #, sh-format
 msgid "unknown option: $opt"
 msgstr ""
 
-#: git-stash.sh:501
+#: git-stash.sh:503
 msgid "No stash entries found."
 msgstr ""
 
-#: git-stash.sh:508
+#: git-stash.sh:510
 #, sh-format
 msgid "Too many revisions specified: $REV"
 msgstr ""
 
-#: git-stash.sh:523
+#: git-stash.sh:525
 #, sh-format
 msgid "$reference is not a valid reference"
 msgstr ""
 
-#: git-stash.sh:551
+#: git-stash.sh:553
 #, sh-format
 msgid "'$args' is not a stash-like commit"
 msgstr ""
 
-#: git-stash.sh:562
+#: git-stash.sh:564
 #, sh-format
 msgid "'$args' is not a stash reference"
 msgstr ""
 
-#: git-stash.sh:570
+#: git-stash.sh:572
 msgid "unable to refresh index"
 msgstr ""
 
-#: git-stash.sh:574
+#: git-stash.sh:576
 msgid "Cannot apply a stash in the middle of a merge"
 msgstr ""
 
-#: git-stash.sh:582
+#: git-stash.sh:584
 msgid "Conflicts in index. Try without --index."
 msgstr ""
 
-#: git-stash.sh:584
+#: git-stash.sh:586
 msgid "Could not save index tree"
 msgstr ""
 
-#: git-stash.sh:593
+#: git-stash.sh:595
 msgid "Could not restore untracked files from stash entry"
 msgstr ""
 
-#: git-stash.sh:618
+#: git-stash.sh:620
 msgid "Cannot unstage modified files"
 msgstr ""
 
-#: git-stash.sh:633
+#: git-stash.sh:635
 msgid "Index was not unstashed."
 msgstr ""
 
-#: git-stash.sh:647
+#: git-stash.sh:649
 msgid "The stash entry is kept in case you need it again."
 msgstr ""
 
-#: git-stash.sh:656
+#: git-stash.sh:658
 #, sh-format
 msgid "Dropped ${REV} ($s)"
 msgstr ""
 
-#: git-stash.sh:657
+#: git-stash.sh:659
 #, sh-format
 msgid "${REV}: Could not drop stash entry"
 msgstr ""
 
-#: git-stash.sh:665
+#: git-stash.sh:667
 msgid "No branch name specified"
 msgstr ""
 
-#: git-stash.sh:744
+#: git-stash.sh:746
 msgid "(To restore them type \"git stash apply\")"
 msgstr ""
 
-#: git-submodule.sh:181
+#: git-submodule.sh:188
 msgid "Relative path can only be used from the toplevel of the working tree"
 msgstr ""
 
-#: git-submodule.sh:191
+#: git-submodule.sh:198
 #, sh-format
 msgid "repo URL: '$repo' must be absolute or begin with ./|../"
 msgstr ""
 
-#: git-submodule.sh:210
+#: git-submodule.sh:217
 #, sh-format
 msgid "'$sm_path' already exists in the index"
 msgstr ""
 
-#: git-submodule.sh:213
+#: git-submodule.sh:220
 #, sh-format
 msgid "'$sm_path' already exists in the index and is not a submodule"
 msgstr ""
 
-#: git-submodule.sh:219
+#: git-submodule.sh:226
 #, sh-format
 msgid ""
 "The following path is ignored by one of your .gitignore files:\n"
@@ -14668,22 +15694,22 @@ msgid ""
 "Use -f if you really want to add it."
 msgstr ""
 
-#: git-submodule.sh:237
+#: git-submodule.sh:249
 #, sh-format
 msgid "Adding existing repo at '$sm_path' to the index"
 msgstr ""
 
-#: git-submodule.sh:239
+#: git-submodule.sh:251
 #, sh-format
 msgid "'$sm_path' already exists and is not a valid git repo"
 msgstr ""
 
-#: git-submodule.sh:247
+#: git-submodule.sh:259
 #, sh-format
 msgid "A git directory for '$sm_name' is found locally with remote(s):"
 msgstr ""
 
-#: git-submodule.sh:249
+#: git-submodule.sh:261
 #, sh-format
 msgid ""
 "If you want to reuse this local git directory instead of cloning again from\n"
@@ -14694,130 +15720,130 @@ msgid ""
 "option."
 msgstr ""
 
-#: git-submodule.sh:255
+#: git-submodule.sh:267
 #, sh-format
 msgid "Reactivating local git directory for submodule '$sm_name'."
 msgstr ""
 
-#: git-submodule.sh:267
+#: git-submodule.sh:279
 #, sh-format
 msgid "Unable to checkout submodule '$sm_path'"
 msgstr ""
 
-#: git-submodule.sh:272
+#: git-submodule.sh:284
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr ""
 
-#: git-submodule.sh:281
+#: git-submodule.sh:293
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
 msgstr ""
 
-#: git-submodule.sh:342
+#: git-submodule.sh:354
 #, sh-format
 msgid "Entering '$displaypath'"
 msgstr ""
 
-#: git-submodule.sh:362
+#: git-submodule.sh:374
 #, sh-format
 msgid "Stopping at '$displaypath'; script returned non-zero status."
 msgstr ""
 
-#: git-submodule.sh:584
+#: git-submodule.sh:600
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
 msgstr ""
 
-#: git-submodule.sh:594
+#: git-submodule.sh:610
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr ""
 
-#: git-submodule.sh:599
+#: git-submodule.sh:615
 #, sh-format
 msgid ""
 "Unable to find current ${remote_name}/${branch} revision in submodule path "
 "'$sm_path'"
 msgstr ""
 
-#: git-submodule.sh:617
+#: git-submodule.sh:633
 #, sh-format
 msgid "Unable to fetch in submodule path '$displaypath'"
 msgstr ""
 
-#: git-submodule.sh:623
+#: git-submodule.sh:639
 #, sh-format
 msgid ""
 "Fetched in submodule path '$displaypath', but it did not contain $sha1. "
 "Direct fetching of that commit failed."
 msgstr ""
 
-#: git-submodule.sh:630
+#: git-submodule.sh:646
 #, sh-format
 msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
 msgstr ""
 
-#: git-submodule.sh:631
+#: git-submodule.sh:647
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
 msgstr ""
 
-#: git-submodule.sh:635
+#: git-submodule.sh:651
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
 msgstr ""
 
-#: git-submodule.sh:636
+#: git-submodule.sh:652
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
 msgstr ""
 
-#: git-submodule.sh:641
+#: git-submodule.sh:657
 #, sh-format
 msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
 msgstr ""
 
-#: git-submodule.sh:642
+#: git-submodule.sh:658
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
 msgstr ""
 
-#: git-submodule.sh:647
+#: git-submodule.sh:663
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
 msgstr ""
 
-#: git-submodule.sh:648
+#: git-submodule.sh:664
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr ""
 
-#: git-submodule.sh:679
+#: git-submodule.sh:695
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr ""
 
-#: git-submodule.sh:775
+#: git-submodule.sh:791
 msgid "The --cached option cannot be used with the --files option"
 msgstr ""
 
-#: git-submodule.sh:827
+#: git-submodule.sh:843
 #, sh-format
 msgid "unexpected mode $mod_dst"
 msgstr ""
 
-#: git-submodule.sh:847
+#: git-submodule.sh:863
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_src"
 msgstr ""
 
-#: git-submodule.sh:850
+#: git-submodule.sh:866
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_dst"
 msgstr ""
 
-#: git-submodule.sh:853
+#: git-submodule.sh:869
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
 msgstr ""
@@ -14827,39 +15853,45 @@ msgstr ""
 msgid "See git-${cmd}(1) for details."
 msgstr ""
 
-#: git-rebase--interactive.sh:140
+#: git-rebase--interactive.sh:142
 #, sh-format
 msgid "Rebasing ($new_count/$total)"
 msgstr ""
 
-#: git-rebase--interactive.sh:156
+#: git-rebase--interactive.sh:158
 msgid ""
 "\n"
 "Commands:\n"
-"p, pick = use commit\n"
-"r, reword = use commit, but edit the commit message\n"
-"e, edit = use commit, but stop for amending\n"
-"s, squash = use commit, but meld into previous commit\n"
-"f, fixup = like \"squash\", but discard this commit's log message\n"
-"x, exec = run command (the rest of the line) using shell\n"
-"d, drop = remove commit\n"
+"p, pick <commit> = use commit\n"
+"r, reword <commit> = use commit, but edit the commit message\n"
+"e, edit <commit> = use commit, but stop for amending\n"
+"s, squash <commit> = use commit, but meld into previous commit\n"
+"f, fixup <commit> = like \"squash\", but discard this commit's log message\n"
+"x, exec <command> = run command (the rest of the line) using shell\n"
+"d, drop <commit> = remove commit\n"
+"l, label <label> = label current HEAD with a name\n"
+"t, reset <label> = reset HEAD to a label\n"
+"m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]\n"
+".       create a merge commit using the original merge commit's\n"
+".       message (or the oneline, if no original merge commit was\n"
+".       specified). Use -c <commit> to reword the commit message.\n"
 "\n"
 "These lines can be re-ordered; they are executed from top to bottom.\n"
 msgstr ""
 
-#: git-rebase--interactive.sh:171
+#: git-rebase--interactive.sh:179
 msgid ""
 "\n"
 "Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
 msgstr ""
 
-#: git-rebase--interactive.sh:175
+#: git-rebase--interactive.sh:183
 msgid ""
 "\n"
 "If you remove a line here THAT COMMIT WILL BE LOST.\n"
 msgstr ""
 
-#: git-rebase--interactive.sh:213
+#: git-rebase--interactive.sh:221
 #, sh-format
 msgid ""
 "You can amend the commit now, with\n"
@@ -14871,83 +15903,83 @@ msgid ""
 "\tgit rebase --continue"
 msgstr ""
 
-#: git-rebase--interactive.sh:238
+#: git-rebase--interactive.sh:246
 #, sh-format
 msgid "$sha1: not a commit that can be picked"
 msgstr ""
 
-#: git-rebase--interactive.sh:277
+#: git-rebase--interactive.sh:285
 #, sh-format
 msgid "Invalid commit name: $sha1"
 msgstr ""
 
-#: git-rebase--interactive.sh:319
+#: git-rebase--interactive.sh:325
 msgid "Cannot write current commit's replacement sha1"
 msgstr ""
 
-#: git-rebase--interactive.sh:371
+#: git-rebase--interactive.sh:376
 #, sh-format
 msgid "Fast-forward to $sha1"
 msgstr ""
 
-#: git-rebase--interactive.sh:373
+#: git-rebase--interactive.sh:378
 #, sh-format
 msgid "Cannot fast-forward to $sha1"
 msgstr ""
 
-#: git-rebase--interactive.sh:382
+#: git-rebase--interactive.sh:387
 #, sh-format
 msgid "Cannot move HEAD to $first_parent"
 msgstr ""
 
-#: git-rebase--interactive.sh:387
+#: git-rebase--interactive.sh:392
 #, sh-format
 msgid "Refusing to squash a merge: $sha1"
 msgstr ""
 
-#: git-rebase--interactive.sh:405
+#: git-rebase--interactive.sh:410
 #, sh-format
 msgid "Error redoing merge $sha1"
 msgstr ""
 
-#: git-rebase--interactive.sh:414
+#: git-rebase--interactive.sh:419
 #, sh-format
 msgid "Could not pick $sha1"
 msgstr ""
 
-#: git-rebase--interactive.sh:423
+#: git-rebase--interactive.sh:428
 #, sh-format
 msgid "This is the commit message #${n}:"
 msgstr ""
 
-#: git-rebase--interactive.sh:428
+#: git-rebase--interactive.sh:433
 #, sh-format
 msgid "The commit message #${n} will be skipped:"
 msgstr ""
 
-#: git-rebase--interactive.sh:439
+#: git-rebase--interactive.sh:444
 #, sh-format
 msgid "This is a combination of $count commit."
 msgid_plural "This is a combination of $count commits."
 msgstr[0] ""
 msgstr[1] ""
 
-#: git-rebase--interactive.sh:448
+#: git-rebase--interactive.sh:453
 #, sh-format
 msgid "Cannot write $fixup_msg"
 msgstr ""
 
-#: git-rebase--interactive.sh:451
+#: git-rebase--interactive.sh:456
 msgid "This is a combination of 2 commits."
 msgstr ""
 
-#: git-rebase--interactive.sh:492 git-rebase--interactive.sh:535
-#: git-rebase--interactive.sh:538
+#: git-rebase--interactive.sh:497 git-rebase--interactive.sh:540
+#: git-rebase--interactive.sh:543
 #, sh-format
 msgid "Could not apply $sha1... $rest"
 msgstr ""
 
-#: git-rebase--interactive.sh:567
+#: git-rebase--interactive.sh:572
 #, sh-format
 msgid ""
 "Could not amend commit after successfully picking $sha1... $rest\n"
@@ -14957,31 +15989,31 @@ msgid ""
 "you are able to reword the commit."
 msgstr ""
 
-#: git-rebase--interactive.sh:582
+#: git-rebase--interactive.sh:587
 #, sh-format
 msgid "Stopped at $sha1_abbrev... $rest"
 msgstr ""
 
-#: git-rebase--interactive.sh:597
+#: git-rebase--interactive.sh:602
 #, sh-format
 msgid "Cannot '$squash_style' without a previous commit"
 msgstr ""
 
-#: git-rebase--interactive.sh:639
+#: git-rebase--interactive.sh:644
 #, sh-format
 msgid "Executing: $rest"
 msgstr ""
 
-#: git-rebase--interactive.sh:647
+#: git-rebase--interactive.sh:652
 #, sh-format
 msgid "Execution failed: $rest"
 msgstr ""
 
-#: git-rebase--interactive.sh:649
+#: git-rebase--interactive.sh:654
 msgid "and made changes to the index and/or the working tree"
 msgstr ""
 
-#: git-rebase--interactive.sh:651
+#: git-rebase--interactive.sh:656
 msgid ""
 "You can fix the problem, and then run\n"
 "\n"
@@ -14989,7 +16021,7 @@ msgid ""
 msgstr ""
 
 #. TRANSLATORS: after these lines is a command to be issued by the user
-#: git-rebase--interactive.sh:664
+#: git-rebase--interactive.sh:669
 #, sh-format
 msgid ""
 "Execution succeeded: $rest\n"
@@ -14999,29 +16031,29 @@ msgid ""
 "\tgit rebase --continue"
 msgstr ""
 
-#: git-rebase--interactive.sh:675
+#: git-rebase--interactive.sh:680
 #, sh-format
 msgid "Unknown command: $command $sha1 $rest"
 msgstr ""
 
-#: git-rebase--interactive.sh:676
+#: git-rebase--interactive.sh:681
 msgid "Please fix this using 'git rebase --edit-todo'."
 msgstr ""
 
-#: git-rebase--interactive.sh:711
+#: git-rebase--interactive.sh:716
 #, sh-format
 msgid "Successfully rebased and updated $head_name."
 msgstr ""
 
-#: git-rebase--interactive.sh:735
+#: git-rebase--interactive.sh:740
 msgid "could not detach HEAD"
 msgstr ""
 
-#: git-rebase--interactive.sh:771
+#: git-rebase--interactive.sh:778
 msgid "Could not remove CHERRY_PICK_HEAD"
 msgstr ""
 
-#: git-rebase--interactive.sh:776
+#: git-rebase--interactive.sh:783
 #, sh-format
 msgid ""
 "You have staged changes in your working tree.\n"
@@ -15039,21 +16071,21 @@ msgid ""
 "  git rebase --continue\n"
 msgstr ""
 
-#: git-rebase--interactive.sh:793
+#: git-rebase--interactive.sh:800
 msgid "Error trying to find the author identity to amend commit"
 msgstr ""
 
-#: git-rebase--interactive.sh:798
+#: git-rebase--interactive.sh:805
 msgid ""
 "You have uncommitted changes in your working tree. Please commit them\n"
 "first and then run 'git rebase --continue' again."
 msgstr ""
 
-#: git-rebase--interactive.sh:803 git-rebase--interactive.sh:807
+#: git-rebase--interactive.sh:810 git-rebase--interactive.sh:814
 msgid "Could not commit staged changes."
 msgstr ""
 
-#: git-rebase--interactive.sh:836
+#: git-rebase--interactive.sh:843
 msgid ""
 "\n"
 "You are editing the todo file of an ongoing interactive rebase.\n"
@@ -15062,54 +16094,55 @@ msgid ""
 "\n"
 msgstr ""
 
-#: git-rebase--interactive.sh:844 git-rebase--interactive.sh:1008
+#: git-rebase--interactive.sh:851 git-rebase--interactive.sh:937
 msgid "Could not execute editor"
 msgstr ""
 
-#: git-rebase--interactive.sh:860
+#: git-rebase--interactive.sh:872
 #, sh-format
 msgid "Could not checkout $switch_to"
 msgstr ""
 
-#: git-rebase--interactive.sh:865
+#: git-rebase--interactive.sh:879
 msgid "No HEAD?"
 msgstr ""
 
-#: git-rebase--interactive.sh:866
+#: git-rebase--interactive.sh:880
 #, sh-format
 msgid "Could not create temporary $state_dir"
 msgstr ""
 
-#: git-rebase--interactive.sh:869
+#: git-rebase--interactive.sh:883
 msgid "Could not mark as interactive"
 msgstr ""
 
-#: git-rebase--interactive.sh:879 git-rebase--interactive.sh:884
-msgid "Could not init rewritten commits"
-msgstr ""
-
-#: git-rebase--interactive.sh:910
-msgid "Could not generate todo list"
-msgstr ""
-
-#: git-rebase--interactive.sh:986
+#: git-rebase--interactive.sh:915
 #, sh-format
 msgid "Rebase $shortrevisions onto $shortonto ($todocount command)"
 msgid_plural "Rebase $shortrevisions onto $shortonto ($todocount commands)"
 msgstr[0] ""
 msgstr[1] ""
 
-#: git-rebase--interactive.sh:991
+#: git-rebase--interactive.sh:920
 msgid ""
 "\n"
-"However, if you remove everything, the rebase will be aborted.\n"
+"\tHowever, if you remove everything, the rebase will be aborted.\n"
 "\n"
+"\t"
 msgstr ""
 
-#: git-rebase--interactive.sh:998
+#: git-rebase--interactive.sh:927
 msgid "Note that empty commits are commented out"
 msgstr ""
 
+#: git-rebase--interactive.sh:980
+msgid "Could not generate todo list"
+msgstr ""
+
+#: git-rebase--interactive.sh:1001 git-rebase--interactive.sh:1006
+msgid "Could not init rewritten commits"
+msgstr ""
+
 #: git-sh-setup.sh:89 git-sh-setup.sh:94
 #, sh-format
 msgid "usage: $dashless $USAGE"
@@ -15181,107 +16214,107 @@ msgstr ""
 msgid "unstaged"
 msgstr ""
 
-#: git-add--interactive.perl:246 git-add--interactive.perl:271
+#: git-add--interactive.perl:253 git-add--interactive.perl:278
 msgid "binary"
 msgstr ""
 
-#: git-add--interactive.perl:255 git-add--interactive.perl:309
+#: git-add--interactive.perl:262 git-add--interactive.perl:316
 msgid "nothing"
 msgstr ""
 
-#: git-add--interactive.perl:291 git-add--interactive.perl:306
+#: git-add--interactive.perl:298 git-add--interactive.perl:313
 msgid "unchanged"
 msgstr ""
 
-#: git-add--interactive.perl:602
+#: git-add--interactive.perl:609
 #, perl-format
 msgid "added %d path\n"
 msgid_plural "added %d paths\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: git-add--interactive.perl:605
+#: git-add--interactive.perl:612
 #, perl-format
 msgid "updated %d path\n"
 msgid_plural "updated %d paths\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: git-add--interactive.perl:608
+#: git-add--interactive.perl:615
 #, perl-format
 msgid "reverted %d path\n"
 msgid_plural "reverted %d paths\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: git-add--interactive.perl:611
+#: git-add--interactive.perl:618
 #, perl-format
 msgid "touched %d path\n"
 msgid_plural "touched %d paths\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: git-add--interactive.perl:620
+#: git-add--interactive.perl:627
 msgid "Update"
 msgstr ""
 
-#: git-add--interactive.perl:632
+#: git-add--interactive.perl:639
 msgid "Revert"
 msgstr ""
 
-#: git-add--interactive.perl:655
+#: git-add--interactive.perl:662
 #, perl-format
 msgid "note: %s is untracked now.\n"
 msgstr ""
 
-#: git-add--interactive.perl:666
+#: git-add--interactive.perl:673
 msgid "Add untracked"
 msgstr ""
 
-#: git-add--interactive.perl:672
+#: git-add--interactive.perl:679
 msgid "No untracked files.\n"
 msgstr ""
 
-#: git-add--interactive.perl:1026
+#: git-add--interactive.perl:1033
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
 msgstr ""
 
-#: git-add--interactive.perl:1029
+#: git-add--interactive.perl:1036
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
 msgstr ""
 
-#: git-add--interactive.perl:1032
+#: git-add--interactive.perl:1039
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
 msgstr ""
 
-#: git-add--interactive.perl:1035 git-add--interactive.perl:1044
+#: git-add--interactive.perl:1042 git-add--interactive.perl:1051
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
 msgstr ""
 
-#: git-add--interactive.perl:1038 git-add--interactive.perl:1041
+#: git-add--interactive.perl:1045 git-add--interactive.perl:1048
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
 msgstr ""
 
-#: git-add--interactive.perl:1078
+#: git-add--interactive.perl:1085
 #, perl-format
 msgid "failed to open hunk edit file for writing: %s"
 msgstr ""
 
-#: git-add--interactive.perl:1079
+#: git-add--interactive.perl:1086
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr ""
 
-#: git-add--interactive.perl:1085
+#: git-add--interactive.perl:1092
 #, perl-format
 msgid ""
 "---\n"
@@ -15291,14 +16324,14 @@ msgid ""
 msgstr ""
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: git-add--interactive.perl:1093
+#: git-add--interactive.perl:1100
 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 ""
 
-#: git-add--interactive.perl:1107
+#: git-add--interactive.perl:1114
 #, perl-format
 msgid "failed to open hunk edit file for reading: %s"
 msgstr ""
@@ -15309,12 +16342,12 @@ msgstr ""
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: git-add--interactive.perl:1206
+#: git-add--interactive.perl:1213
 msgid ""
 "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr ""
 
-#: git-add--interactive.perl:1215
+#: git-add--interactive.perl:1222
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -15323,7 +16356,7 @@ msgid ""
 "d - do not stage this hunk or any of the later hunks in the file"
 msgstr ""
 
-#: git-add--interactive.perl:1221
+#: git-add--interactive.perl:1228
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -15332,7 +16365,7 @@ msgid ""
 "d - do not stash this hunk or any of the later hunks in the file"
 msgstr ""
 
-#: git-add--interactive.perl:1227
+#: git-add--interactive.perl:1234
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -15341,7 +16374,7 @@ msgid ""
 "d - do not unstage this hunk or any of the later hunks in the file"
 msgstr ""
 
-#: git-add--interactive.perl:1233
+#: git-add--interactive.perl:1240
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -15350,7 +16383,7 @@ msgid ""
 "d - do not apply this hunk or any of the later hunks in the file"
 msgstr ""
 
-#: git-add--interactive.perl:1239
+#: git-add--interactive.perl:1246
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -15359,7 +16392,7 @@ msgid ""
 "d - do not discard this hunk or any of the later hunks in the file"
 msgstr ""
 
-#: git-add--interactive.perl:1245
+#: git-add--interactive.perl:1252
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -15368,7 +16401,7 @@ msgid ""
 "d - do not discard this hunk or any of the later hunks in the file"
 msgstr ""
 
-#: git-add--interactive.perl:1251
+#: git-add--interactive.perl:1258
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -15377,7 +16410,7 @@ msgid ""
 "d - do not apply this hunk or any of the later hunks in the file"
 msgstr ""
 
-#: git-add--interactive.perl:1266
+#: git-add--interactive.perl:1273
 msgid ""
 "g - select a hunk to go to\n"
 "/ - search for a hunk matching the given regex\n"
@@ -15390,211 +16423,211 @@ msgid ""
 "? - print help\n"
 msgstr ""
 
-#: git-add--interactive.perl:1297
+#: git-add--interactive.perl:1304
 msgid "The selected hunks do not apply to the index!\n"
 msgstr ""
 
-#: git-add--interactive.perl:1298
+#: git-add--interactive.perl:1305
 msgid "Apply them to the worktree anyway? "
 msgstr ""
 
-#: git-add--interactive.perl:1301
+#: git-add--interactive.perl:1308
 msgid "Nothing was applied.\n"
 msgstr ""
 
-#: git-add--interactive.perl:1312
+#: git-add--interactive.perl:1319
 #, perl-format
 msgid "ignoring unmerged: %s\n"
 msgstr ""
 
-#: git-add--interactive.perl:1321
+#: git-add--interactive.perl:1328
 msgid "Only binary files changed.\n"
 msgstr ""
 
-#: git-add--interactive.perl:1323
+#: git-add--interactive.perl:1330
 msgid "No changes.\n"
 msgstr ""
 
-#: git-add--interactive.perl:1331
+#: git-add--interactive.perl:1338
 msgid "Patch update"
 msgstr ""
 
-#: git-add--interactive.perl:1383
+#: git-add--interactive.perl:1390
 #, perl-format
 msgid "Stage mode change [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1384
+#: git-add--interactive.perl:1391
 #, perl-format
 msgid "Stage deletion [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1385
+#: git-add--interactive.perl:1392
 #, perl-format
 msgid "Stage this hunk [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1388
+#: git-add--interactive.perl:1395
 #, perl-format
 msgid "Stash mode change [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1389
+#: git-add--interactive.perl:1396
 #, perl-format
 msgid "Stash deletion [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1390
+#: git-add--interactive.perl:1397
 #, perl-format
 msgid "Stash this hunk [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1393
+#: git-add--interactive.perl:1400
 #, perl-format
 msgid "Unstage mode change [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1394
+#: git-add--interactive.perl:1401
 #, perl-format
 msgid "Unstage deletion [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1395
+#: git-add--interactive.perl:1402
 #, perl-format
 msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1398
+#: git-add--interactive.perl:1405
 #, perl-format
 msgid "Apply mode change to index [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1399
+#: git-add--interactive.perl:1406
 #, perl-format
 msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1400
+#: git-add--interactive.perl:1407
 #, perl-format
 msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1403
+#: git-add--interactive.perl:1410
 #, perl-format
 msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1404
+#: git-add--interactive.perl:1411
 #, perl-format
 msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1405
+#: git-add--interactive.perl:1412
 #, perl-format
 msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1408
+#: git-add--interactive.perl:1415
 #, perl-format
 msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1409
+#: git-add--interactive.perl:1416
 #, perl-format
 msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1410
+#: git-add--interactive.perl:1417
 #, perl-format
 msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1413
+#: git-add--interactive.perl:1420
 #, perl-format
 msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1414
+#: git-add--interactive.perl:1421
 #, perl-format
 msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1415
+#: git-add--interactive.perl:1422
 #, perl-format
 msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
 msgstr ""
 
-#: git-add--interactive.perl:1515
+#: git-add--interactive.perl:1522
 msgid "No other hunks to goto\n"
 msgstr ""
 
-#: git-add--interactive.perl:1522
+#: git-add--interactive.perl:1529
 msgid "go to which hunk (<ret> to see more)? "
 msgstr ""
 
-#: git-add--interactive.perl:1524
+#: git-add--interactive.perl:1531
 msgid "go to which hunk? "
 msgstr ""
 
-#: git-add--interactive.perl:1533
+#: git-add--interactive.perl:1540
 #, perl-format
 msgid "Invalid number: '%s'\n"
 msgstr ""
 
-#: git-add--interactive.perl:1538
+#: git-add--interactive.perl:1545
 #, 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:1564
+#: git-add--interactive.perl:1571
 msgid "No other hunks to search\n"
 msgstr ""
 
-#: git-add--interactive.perl:1568
+#: git-add--interactive.perl:1575
 msgid "search for regex? "
 msgstr ""
 
-#: git-add--interactive.perl:1581
+#: git-add--interactive.perl:1588
 #, perl-format
 msgid "Malformed search regexp %s: %s\n"
 msgstr ""
 
-#: git-add--interactive.perl:1591
+#: git-add--interactive.perl:1598
 msgid "No hunk matches the given pattern\n"
 msgstr ""
 
-#: git-add--interactive.perl:1603 git-add--interactive.perl:1625
+#: git-add--interactive.perl:1610 git-add--interactive.perl:1632
 msgid "No previous hunk\n"
 msgstr ""
 
-#: git-add--interactive.perl:1612 git-add--interactive.perl:1631
+#: git-add--interactive.perl:1619 git-add--interactive.perl:1638
 msgid "No next hunk\n"
 msgstr ""
 
-#: git-add--interactive.perl:1637
+#: git-add--interactive.perl:1644
 msgid "Sorry, cannot split this hunk\n"
 msgstr ""
 
-#: git-add--interactive.perl:1643
+#: git-add--interactive.perl:1650
 #, perl-format
 msgid "Split into %d hunk.\n"
 msgid_plural "Split into %d hunks.\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: git-add--interactive.perl:1653
+#: git-add--interactive.perl:1660
 msgid "Sorry, cannot edit this hunk\n"
 msgstr ""
 
-#: git-add--interactive.perl:1699
+#: git-add--interactive.perl:1706
 msgid "Review diff"
 msgstr ""
 
 #. TRANSLATORS: please do not translate the command names
 #. 'status', 'update', 'revert', etc.
-#: git-add--interactive.perl:1718
+#: git-add--interactive.perl:1725
 msgid ""
 "status        - show paths with changes\n"
 "update        - add working tree state to the staged set of changes\n"
@@ -15605,18 +16638,18 @@ msgid ""
 "changes\n"
 msgstr ""
 
-#: git-add--interactive.perl:1735 git-add--interactive.perl:1740
-#: git-add--interactive.perl:1743 git-add--interactive.perl:1750
-#: git-add--interactive.perl:1754 git-add--interactive.perl:1760
+#: git-add--interactive.perl:1742 git-add--interactive.perl:1747
+#: git-add--interactive.perl:1750 git-add--interactive.perl:1757
+#: git-add--interactive.perl:1761 git-add--interactive.perl:1767
 msgid "missing --"
 msgstr ""
 
-#: git-add--interactive.perl:1756
+#: git-add--interactive.perl:1763
 #, perl-format
 msgid "unknown --patch mode: %s"
 msgstr ""
 
-#: git-add--interactive.perl:1762 git-add--interactive.perl:1768
+#: git-add--interactive.perl:1769 git-add--interactive.perl:1775
 #, perl-format
 msgid "invalid argument %s, expecting --"
 msgstr ""
@@ -15805,7 +16838,7 @@ msgstr ""
 msgid "CA path \"%s\" does not exist"
 msgstr ""
 
-#: git-send-email.perl:1395
+#: git-send-email.perl:1400
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -15819,131 +16852,131 @@ msgid ""
 "\n"
 msgstr ""
 
-#. TRANSLATORS: Make sure to include [y] [n] [q] [a] in your
+#. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1410
-msgid "Send this email? ([y]es|[n]o|[q]uit|[a]ll): "
+#: git-send-email.perl:1415
+msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
 msgstr ""
 
-#: git-send-email.perl:1413
+#: git-send-email.perl:1418
 msgid "Send this email reply required"
 msgstr ""
 
-#: git-send-email.perl:1439
+#: git-send-email.perl:1446
 msgid "The required SMTP server is not properly defined."
 msgstr ""
 
-#: git-send-email.perl:1486
+#: git-send-email.perl:1493
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
 msgstr ""
 
-#: git-send-email.perl:1491 git-send-email.perl:1495
+#: git-send-email.perl:1498 git-send-email.perl:1502
 #, perl-format
 msgid "STARTTLS failed! %s"
 msgstr ""
 
-#: git-send-email.perl:1505
+#: git-send-email.perl:1512
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
 msgstr ""
 
-#: git-send-email.perl:1523
+#: git-send-email.perl:1530
 #, perl-format
 msgid "Failed to send %s\n"
 msgstr ""
 
-#: git-send-email.perl:1526
+#: git-send-email.perl:1533
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr ""
 
-#: git-send-email.perl:1526
+#: git-send-email.perl:1533
 #, perl-format
 msgid "Sent %s\n"
 msgstr ""
 
-#: git-send-email.perl:1528
+#: git-send-email.perl:1535
 msgid "Dry-OK. Log says:\n"
 msgstr ""
 
-#: git-send-email.perl:1528
+#: git-send-email.perl:1535
 msgid "OK. Log says:\n"
 msgstr ""
 
-#: git-send-email.perl:1540
+#: git-send-email.perl:1547
 msgid "Result: "
 msgstr ""
 
-#: git-send-email.perl:1543
+#: git-send-email.perl:1550
 msgid "Result: OK\n"
 msgstr ""
 
-#: git-send-email.perl:1556
+#: git-send-email.perl:1568
 #, perl-format
 msgid "can't open file %s"
 msgstr ""
 
-#: git-send-email.perl:1603 git-send-email.perl:1623
+#: git-send-email.perl:1615 git-send-email.perl:1635
 #, perl-format
 msgid "(mbox) Adding cc: %s from line '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:1609
+#: git-send-email.perl:1621
 #, perl-format
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:1657
+#: git-send-email.perl:1674
 #, perl-format
 msgid "(non-mbox) Adding cc: %s from line '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:1682
+#: git-send-email.perl:1699
 #, perl-format
 msgid "(body) Adding cc: %s from line '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:1788
+#: git-send-email.perl:1817
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr ""
 
-#: git-send-email.perl:1795
+#: git-send-email.perl:1824
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr ""
 
-#: git-send-email.perl:1799
+#: git-send-email.perl:1828
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr ""
 
-#: git-send-email.perl:1826
+#: git-send-email.perl:1855
 msgid "cannot send message as 7bit"
 msgstr ""
 
-#: git-send-email.perl:1834
+#: git-send-email.perl:1863
 msgid "invalid transfer encoding"
 msgstr ""
 
-#: git-send-email.perl:1872 git-send-email.perl:1923 git-send-email.perl:1933
+#: git-send-email.perl:1901 git-send-email.perl:1952 git-send-email.perl:1962
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr ""
 
-#: git-send-email.perl:1875
+#: git-send-email.perl:1904
 #, perl-format
 msgid "%s: patch contains a line longer than 998 characters"
 msgstr ""
 
-#: git-send-email.perl:1891
+#: git-send-email.perl:1920
 #, perl-format
 msgid "Skipping %s with backup suffix '%s'.\n"
 msgstr ""
 
 #. TRANSLATORS: please keep "[y|N]" as is.
-#: git-send-email.perl:1895
+#: git-send-email.perl:1924
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr ""
index f833709acbb4dbc942f464305b7e69a7ed9fe3b9..dcfe21c223513488116977ed03ac624c2ff4f200 100644 (file)
--- a/po/ko.po
+++ b/po/ko.po
@@ -36,6 +36,7 @@
 #  | fast-forward | 정방향 진행                                  |
 #  | fsmonitor    | 파일 시스템 모니터                           |
 #  | Git          | 깃                                           |
+#  | graft        | 그래프트                                     |
 #  | head         | 헤드                                         |
 #  | hook         | 후크                                         |
 #  | history      | (커밋) 내역                                  |
@@ -63,8 +64,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2018-03-16 07:29+0800\n"
-"PO-Revision-Date: 2018-03-28 23:28+0900\n"
+"POT-Creation-Date: 2018-06-16 22:06+0800\n"
+"PO-Revision-Date: 2018-06-19 02:00+0900\n"
 "Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
 "Language-Team: Git Korean translation <http://github.com/changwoo/git-l10n-"
 "ko>\n"
@@ -75,37 +76,37 @@ msgstr ""
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Generator: Poedit 2.0.6\n"
 
-#: advice.c:62
+#: advice.c:92
 #, c-format
-msgid "hint: %.*s\n"
-msgstr "힌트: %.*s\n"
+msgid "%shint: %.*s%s\n"
+msgstr "%s힌트: %.*s%s\n"
 
-#: advice.c:90
+#: advice.c:137
 msgid "Cherry-picking is not possible because you have unmerged files."
 msgstr "병합하지 않은 파일이 있으므로, 커밋 빼오기를 할 수 없습니다."
 
-#: advice.c:92
+#: advice.c:139
 msgid "Committing is not possible because you have unmerged files."
 msgstr "병합하지 않은 파일이 있으므로, 커밋할 수 없습니다."
 
-#: advice.c:94
+#: advice.c:141
 msgid "Merging is not possible because you have unmerged files."
 msgstr "병합하지 않은 파일이 있으므로, 병합할 수 없습니다."
 
-#: advice.c:96
+#: advice.c:143
 msgid "Pulling is not possible because you have unmerged files."
 msgstr "병합하지 않은 파일이 있으므로, 풀을 할 수 없습니다."
 
-#: advice.c:98
+#: advice.c:145
 msgid "Reverting is not possible because you have unmerged files."
 msgstr "병합하지 않은 파일이 있으므로, 되돌리기를 할 수 없습니다."
 
-#: advice.c:100
+#: advice.c:147
 #, c-format
 msgid "It is not possible to %s because you have unmerged files."
 msgstr "병합하지 않은 파일이 있으므로, %s 할 수 없습니다."
 
-#: advice.c:108
+#: advice.c:155
 msgid ""
 "Fix them up in the work tree, and then use 'git add/rm <file>'\n"
 "as appropriate to mark resolution and make a commit."
@@ -113,23 +114,23 @@ msgstr ""
 "작업 폴더에서 문제를 바로잡은 다음, 'git add/rm <파일>'을 적절히\n"
 "사용해 해결 표시하고 커밋하십시오."
 
-#: advice.c:116
+#: advice.c:163
 msgid "Exiting because of an unresolved conflict."
 msgstr "해결하지 못한 충돌 때문에 끝납니다."
 
-#: advice.c:121 builtin/merge.c:1251
+#: advice.c:168 builtin/merge.c:1250
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "병합 작업을 다 마치지 않았습니다 (MERGE_HEAD 파일이 있습니다)."
 
-#: advice.c:123
+#: advice.c:170
 msgid "Please, commit your changes before merging."
 msgstr "병합하기 전에 변경 사항을 커밋하십시오."
 
-#: advice.c:124
+#: advice.c:171
 msgid "Exiting because of unfinished merge."
 msgstr "병합을 마치지 못했기 때문에 끝납니다."
 
-#: advice.c:130
+#: advice.c:177
 #, c-format
 msgid ""
 "Note: checking out '%s'.\n"
@@ -395,7 +396,7 @@ msgstr "패치 실패: %s:%ld"
 msgid "cannot checkout %s"
 msgstr "%s을(를) 가져올 수 없습니다"
 
-#: apply.c:3396 apply.c:3407 apply.c:3453 setup.c:277
+#: apply.c:3396 apply.c:3407 apply.c:3453 setup.c:278
 #, c-format
 msgid "failed to read %s"
 msgstr "%s을(를) 읽는데 실패했습니다"
@@ -593,7 +594,7 @@ msgstr[0] "%%s 패치를 (%d개 거부) 적용..."
 msgid "truncating .rej filename to %.*s.rej"
 msgstr "truncating .rej 파일 이름을 '%.*s.rej'(으)로 자름"
 
-#: apply.c:4545 builtin/fetch.c:775 builtin/fetch.c:1025
+#: apply.c:4545 builtin/fetch.c:786 builtin/fetch.c:1036
 #, c-format
 msgid "cannot open %s"
 msgstr "%s을(를) 열 수 없습니다"
@@ -644,15 +645,15 @@ msgid "%d line applied after fixing whitespace errors."
 msgid_plural "%d lines applied after fixing whitespace errors."
 msgstr[0] "공백 오류를 바로잡은 뒤에 %d번 줄 적용."
 
-#: apply.c:4894 builtin/add.c:539 builtin/mv.c:298 builtin/rm.c:390
+#: apply.c:4894 builtin/add.c:538 builtin/mv.c:300 builtin/rm.c:389
 msgid "Unable to write new index file"
 msgstr "새 인덱스 파일에 쓸 수 없습니다"
 
 #: apply.c:4921 apply.c:4924 builtin/am.c:2254 builtin/am.c:2257
-#: builtin/clone.c:118 builtin/fetch.c:127 builtin/pull.c:193
-#: builtin/submodule--helper.c:403 builtin/submodule--helper.c:1197
-#: builtin/submodule--helper.c:1200 builtin/submodule--helper.c:1567
-#: builtin/submodule--helper.c:1570 builtin/submodule--helper.c:1787
+#: builtin/clone.c:120 builtin/fetch.c:126 builtin/pull.c:198
+#: builtin/submodule--helper.c:405 builtin/submodule--helper.c:1210
+#: builtin/submodule--helper.c:1213 builtin/submodule--helper.c:1584
+#: builtin/submodule--helper.c:1587 builtin/submodule--helper.c:1807
 #: git-add--interactive.perl:197
 msgid "path"
 msgstr "경로"
@@ -727,7 +728,7 @@ msgstr "최소한 <n>줄이 컨텍스트와 일치하는지 확인합니다"
 
 #: apply.c:4960 builtin/am.c:2242 builtin/interpret-trailers.c:95
 #: builtin/interpret-trailers.c:97 builtin/interpret-trailers.c:99
-#: builtin/pack-objects.c:3035
+#: builtin/pack-objects.c:3177
 msgid "action"
 msgstr "동작"
 
@@ -755,9 +756,9 @@ msgstr "거부된 패치 부분을 대응되는 *.rej 파일에 남겨둡니다"
 msgid "allow overlapping hunks"
 msgstr "패치 부분이 겹쳐도 허용합니다"
 
-#: apply.c:4977 builtin/add.c:292 builtin/check-ignore.c:21
-#: builtin/commit.c:1276 builtin/count-objects.c:96 builtin/fsck.c:665
-#: builtin/log.c:1901 builtin/mv.c:123 builtin/read-tree.c:125
+#: apply.c:4977 builtin/add.c:290 builtin/check-ignore.c:21
+#: builtin/commit.c:1301 builtin/count-objects.c:98 builtin/fsck.c:666
+#: builtin/log.c:1901 builtin/mv.c:122 builtin/read-tree.c:124
 msgid "be verbose"
 msgstr "자세히 표시"
 
@@ -796,98 +797,98 @@ msgstr ""
 msgid "git archive --remote <repo> [--exec <cmd>] --list"
 msgstr "git archive --remote <저장소> [--exec <명령>] --list"
 
-#: archive.c:351 builtin/add.c:176 builtin/add.c:515 builtin/rm.c:299
+#: archive.c:351 builtin/add.c:176 builtin/add.c:514 builtin/rm.c:298
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "'%s' 경로명세가 어떤 파일과도 일치하지 않습니다"
 
-#: archive.c:436
+#: archive.c:434
 msgid "fmt"
 msgstr "형식"
 
-#: archive.c:436
+#: archive.c:434
 msgid "archive format"
 msgstr "압축 형식"
 
-#: archive.c:437 builtin/log.c:1462
+#: archive.c:435 builtin/log.c:1462
 msgid "prefix"
 msgstr "접두어"
 
-#: archive.c:438
+#: archive.c:436
 msgid "prepend prefix to each pathname in the archive"
 msgstr "아카이브의 각 경로 이름의 앞에 지정한 경로를 붙입니다"
 
-#: archive.c:439 builtin/blame.c:702 builtin/blame.c:703 builtin/config.c:62
-#: builtin/fast-export.c:1005 builtin/fast-export.c:1007 builtin/grep.c:869
+#: archive.c:437 builtin/blame.c:813 builtin/blame.c:814 builtin/config.c:127
+#: builtin/fast-export.c:1007 builtin/fast-export.c:1009 builtin/grep.c:869
 #: builtin/hash-object.c:103 builtin/ls-files.c:551 builtin/ls-files.c:554
-#: builtin/notes.c:405 builtin/notes.c:568 builtin/read-tree.c:120
+#: builtin/notes.c:405 builtin/notes.c:568 builtin/read-tree.c:119
 #: parse-options.h:165
 msgid "file"
 msgstr "파일"
 
-#: archive.c:440 builtin/archive.c:89
+#: archive.c:438 builtin/archive.c:89
 msgid "write the archive to this file"
 msgstr "아카이브를 이 파일에 씁니다"
 
-#: archive.c:442
+#: archive.c:440
 msgid "read .gitattributes in working directory"
 msgstr "작업 폴더의 .gitattributes를 읽습니다"
 
-#: archive.c:443
+#: archive.c:441
 msgid "report archived files on stderr"
 msgstr "아카이브에 포함된 파일을 표준오류로 표시합니다"
 
-#: archive.c:444
+#: archive.c:442
 msgid "store only"
 msgstr "저장만 하기"
 
-#: archive.c:445
+#: archive.c:443
 msgid "compress faster"
 msgstr "더 빠르게 압축"
 
-#: archive.c:453
+#: archive.c:451
 msgid "compress better"
 msgstr "더 작게 압축"
 
-#: archive.c:456
+#: archive.c:454
 msgid "list supported archive formats"
 msgstr "지원하는 압축 형식의 목록을 표시합니다"
 
-#: archive.c:458 builtin/archive.c:90 builtin/clone.c:108 builtin/clone.c:111
-#: builtin/submodule--helper.c:1209 builtin/submodule--helper.c:1576
+#: archive.c:456 builtin/archive.c:90 builtin/clone.c:110 builtin/clone.c:113
+#: builtin/submodule--helper.c:1222 builtin/submodule--helper.c:1593
 msgid "repo"
 msgstr "저장소"
 
-#: archive.c:459 builtin/archive.c:91
+#: archive.c:457 builtin/archive.c:91
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "원격 저장소 <저장소>에서 아카이브를 가져옵니다"
 
-#: archive.c:460 builtin/archive.c:92 builtin/notes.c:489
+#: archive.c:458 builtin/archive.c:92 builtin/notes.c:489
 msgid "command"
 msgstr "명령"
 
-#: archive.c:461 builtin/archive.c:93
+#: archive.c:459 builtin/archive.c:93
 msgid "path to the remote git-upload-archive command"
 msgstr "원격 git-upload-archive 명령의 경로"
 
-#: archive.c:468
+#: archive.c:466
 msgid "Unexpected option --remote"
 msgstr "예상치 못한 옵션 --remote"
 
-#: archive.c:470
+#: archive.c:468
 msgid "Option --exec can only be used together with --remote"
 msgstr "--exec 옵션은 --remote 옵션과 같이 사용할 경우에만 쓸 수 있습니다."
 
-#: archive.c:472
+#: archive.c:470
 msgid "Unexpected option --output"
 msgstr "예상치 못한 옵션 --output"
 
-#: archive.c:494
+#: archive.c:492
 #, c-format
 msgid "Unknown archive format '%s'"
 msgstr "알 수 없는 아카이브 형식 '%s'"
 
-#: archive.c:501
+#: archive.c:499
 #, c-format
 msgid "Argument not supported for format '%s': -%d"
 msgstr "'%s' 형식에서는 지원하지 않는 인자: -%d"
@@ -905,22 +906,22 @@ msgstr ""
 "git attributes에서 반대 패턴은 무시됩니다.\n"
 "앞에 느낌표를 쓰려면 '\\!'를 사용하십시오."
 
-#: bisect.c:460
+#: bisect.c:461
 #, c-format
 msgid "Badly quoted content in file '%s': %s"
 msgstr "'%s' 파일 안에 잘못된 따옴표가 붙은 내용: %s"
 
-#: bisect.c:668
+#: bisect.c:669
 #, c-format
 msgid "We cannot bisect more!\n"
 msgstr "더 이상 이등분할 수 없습니다!\n"
 
-#: bisect.c:722
+#: bisect.c:723
 #, c-format
 msgid "Not a valid commit name %s"
 msgstr "올바른 커밋 이름이 아닙니다 (%s)"
 
-#: bisect.c:746
+#: bisect.c:747
 #, c-format
 msgid ""
 "The merge base %s is bad.\n"
@@ -929,7 +930,7 @@ msgstr ""
 "%s 병합 베이스가 비정상입니다.\n"
 "버그가 %s 및 [%s] 사이에서 고쳐졌다는 뜻입니다.\n"
 
-#: bisect.c:751
+#: bisect.c:752
 #, c-format
 msgid ""
 "The merge base %s is new.\n"
@@ -938,7 +939,7 @@ msgstr ""
 "%s 병합 베이스가 새롭습니다.\n"
 "속성이 %s 및 [%s] 사이에서 변경되었습니다.\n"
 
-#: bisect.c:756
+#: bisect.c:757
 #, c-format
 msgid ""
 "The merge base %s is %s.\n"
@@ -947,7 +948,7 @@ msgstr ""
 "%s 병합 베이스가 %s입니다.\n"
 "처음 '%s' 커밋이 %s 및 [%s] 사이라는 뜻입니다.\n"
 
-#: bisect.c:764
+#: bisect.c:765
 #, c-format
 msgid ""
 "Some %s revs are not ancestors of the %s rev.\n"
@@ -958,47 +959,47 @@ msgstr ""
 "git bisect 명령은 이 경우에는 올바르게 동작하지 않습니다.\n"
 "%s 및 %s 리비전을 잘못 쓴 것 아닙니까?\n"
 
-#: bisect.c:777
+#: bisect.c:778
 #, c-format
 msgid ""
 "the merge base between %s and [%s] must be skipped.\n"
 "So we cannot be sure the first %s commit is between %s and %s.\n"
 "We continue anyway."
 msgstr ""
-"%s ë°\8f %s ì\82¬ì\9d´ì\9d\98 ë¨¸ì§\80 베이스를 건너뜁니다.\n"
+"%s ë°\8f %s ì\82¬ì\9d´ì\9d\98 ë³\91í\95© 베이스를 건너뜁니다.\n"
 "그러므로 처음 %s 커밋이 %s 및 %s 사이에 있는지 확신할 수 없습니다.\n"
 "어쨌든 계속합니다."
 
-#: bisect.c:810
+#: bisect.c:811
 #, c-format
 msgid "Bisecting: a merge base must be tested\n"
 msgstr "이등분: 병합 베이스를 시험해야 합니다\n"
 
-#: bisect.c:850
+#: bisect.c:851
 #, c-format
 msgid "a %s revision is needed"
 msgstr "하나의 %s 리비전이 필요합니다"
 
-#: bisect.c:869 builtin/notes.c:175 builtin/tag.c:235
+#: bisect.c:870 builtin/notes.c:175 builtin/tag.c:236
 #, c-format
 msgid "could not create file '%s'"
 msgstr "'%s' 파일을 만들 수 없습니다"
 
-#: bisect.c:920
+#: bisect.c:921
 #, c-format
 msgid "could not read file '%s'"
 msgstr "'%s' 파일을 읽을 수 없습니다"
 
-#: bisect.c:950
+#: bisect.c:951
 msgid "reading bisect refs failed"
 msgstr "이등분 레퍼런스 읽기에 실패했습니다"
 
-#: bisect.c:969
+#: bisect.c:970
 #, c-format
 msgid "%s was both %s and %s\n"
 msgstr "%s은(는) %s 및 %s 모두에 해당됩니다\n"
 
-#: bisect.c:977
+#: bisect.c:978
 #, c-format
 msgid ""
 "No testable commit found.\n"
@@ -1007,7 +1008,7 @@ msgstr ""
 "시험 가능한 커밋이 없습니다.\n"
 "잘못된 경로 파라미터로 시작하지 않았습니까?\n"
 
-#: bisect.c:996
+#: bisect.c:997
 #, c-format
 msgid "(roughly %d step)"
 msgid_plural "(roughly %d steps)"
@@ -1016,50 +1017,50 @@ msgstr[0] "(대략 %d 단계)"
 #. TRANSLATORS: the last %s will be replaced with "(roughly %d
 #. steps)" translation.
 #.
-#: bisect.c:1002
+#: bisect.c:1003
 #, c-format
 msgid "Bisecting: %d revision left to test after this %s\n"
 msgid_plural "Bisecting: %d revisions left to test after this %s\n"
 msgstr[0] "이등분: %2$s 뒤에 시험할 리비전이 %1$d개 남았습니다\n"
 
-#: blame.c:1758
+#: blame.c:1756
 msgid "--contents and --reverse do not blend well."
 msgstr "--contents 및 --reverse 옵션은 호환되지 않습니다."
 
-#: blame.c:1769
+#: blame.c:1767
 msgid "cannot use --contents with final commit object name"
 msgstr "--contents 옵션을 마지막 오브젝트 이름에 사용할 수 없습니다"
 
-#: blame.c:1789
+#: blame.c:1787
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr ""
 "--reverse 및 --first-parent 옵션을 같이 쓰면 최근 커밋을 지정해야 합니다"
 
-#: blame.c:1798 bundle.c:160 ref-filter.c:1978 sequencer.c:1699
-#: sequencer.c:2901 builtin/commit.c:976 builtin/log.c:366 builtin/log.c:920
-#: builtin/log.c:1371 builtin/log.c:1702 builtin/log.c:1950 builtin/merge.c:370
-#: builtin/shortlog.c:191
+#: blame.c:1796 bundle.c:160 ref-filter.c:2075 sequencer.c:1861
+#: sequencer.c:3632 builtin/commit.c:981 builtin/log.c:366 builtin/log.c:920
+#: builtin/log.c:1371 builtin/log.c:1702 builtin/log.c:1950 builtin/merge.c:372
+#: builtin/shortlog.c:192
 msgid "revision walk setup failed"
 msgstr "리비전 walk 준비가 실패했습니다"
 
-#: blame.c:1816
+#: blame.c:1814
 msgid ""
 "--reverse --first-parent together require range along first-parent chain"
 msgstr ""
 "--reverse 및 --first-parent 옵션을 같이 쓰면 최초-상위 체인과 범위가 필요합니"
 "다"
 
-#: blame.c:1827
+#: blame.c:1825
 #, c-format
 msgid "no such path %s in %s"
 msgstr "%s 경로가 %s 안에 없습니다"
 
-#: blame.c:1838
+#: blame.c:1836
 #, c-format
 msgid "cannot read blob %s for path %s"
 msgstr "%s 경로에 대해 %s 블롭을 읽을 수 없음"
 
-#: branch.c:53
+#: branch.c:54
 #, c-format
 msgid ""
 "\n"
@@ -1072,95 +1073,95 @@ msgstr ""
 "\"git branch --set-upstream-to=%s%s%s\" 명령을\n"
 "실행해 수정할 수 있습니다."
 
-#: branch.c:67
+#: branch.c:68
 #, c-format
 msgid "Not setting branch %s as its own upstream."
 msgstr "%s 브랜치를 자신의 업스트림으로 지정하지 않음."
 
-#: branch.c:93
+#: branch.c:94
 #, c-format
 msgid "Branch '%s' set up to track remote branch '%s' from '%s' by rebasing."
 msgstr ""
 "'%s' 브랜치가 리베이스를 통해 리모트의 '%s' 브랜치를 ('%s'에서) 따라가도록 설"
 "정되었습니다."
 
-#: branch.c:94
+#: branch.c:95
 #, c-format
 msgid "Branch '%s' set up to track remote branch '%s' from '%s'."
 msgstr ""
 "'%s' 브랜치가 리모트의 '%s' 브랜치를 ('%s'에서) 따라가도록 설정되었습니다."
 
-#: branch.c:98
+#: branch.c:99
 #, c-format
 msgid "Branch '%s' set up to track local branch '%s' by rebasing."
 msgstr ""
 "'%s' 브랜치가 리베이스를 통해 리모트의 '%s' 브랜치를 따라가도록 설정되었습니"
 "다."
 
-#: branch.c:99
+#: branch.c:100
 #, c-format
 msgid "Branch '%s' set up to track local branch '%s'."
 msgstr "'%s' 브랜치가 '%s' 브랜치를 따라가도록 설정되었습니다."
 
-#: branch.c:104
+#: branch.c:105
 #, c-format
 msgid "Branch '%s' set up to track remote ref '%s' by rebasing."
 msgstr ""
 "'%s' 브랜치가 리베이스를 통해 리모트의 '%s' 레퍼런스를 따라가도록 설정되었습"
 "니다."
 
-#: branch.c:105
+#: branch.c:106
 #, c-format
 msgid "Branch '%s' set up to track remote ref '%s'."
 msgstr "'%s' 브랜치가 리모트의 '%s' 레퍼런스를 따라가도록 설정되었습니다."
 
-#: branch.c:109
+#: branch.c:110
 #, c-format
 msgid "Branch '%s' set up to track local ref '%s' by rebasing."
 msgstr ""
 "'%s' 브랜치가 리베이스를 통해 로컬의 '%s' 레퍼런스를 따라가도록 설정되었습니"
 "다."
 
-#: branch.c:110
+#: branch.c:111
 #, c-format
 msgid "Branch '%s' set up to track local ref '%s'."
 msgstr "'%s' 브랜치가 로컬의 '%s' 레퍼런스를 따라가도록 설정되었습니다."
 
-#: branch.c:119
+#: branch.c:120
 msgid "Unable to write upstream branch configuration"
 msgstr "업스트림 브랜치 설정을 쓸 수 없습니다"
 
-#: branch.c:156
+#: branch.c:157
 #, c-format
 msgid "Not tracking: ambiguous information for ref %s"
 msgstr "따라가지 않음: %s 레퍼런스에 대해 애매한 정보"
 
-#: branch.c:189
+#: branch.c:190
 #, c-format
 msgid "'%s' is not a valid branch name."
 msgstr "'%s'은(는) 올바른 브랜치 이름이 아닙니다."
 
-#: branch.c:208
+#: branch.c:209
 #, c-format
 msgid "A branch named '%s' already exists."
 msgstr "이름이 '%s'인 브랜치가 이미 있습니다."
 
-#: branch.c:213
+#: branch.c:214
 msgid "Cannot force update the current branch."
 msgstr "현재 브랜치를 강제로 업데이트할 수 없습니다."
 
-#: branch.c:233
+#: branch.c:234
 #, c-format
 msgid "Cannot setup tracking information; starting point '%s' is not a branch."
 msgstr ""
 "따라가기 정보를 설정할 수 없습니다. 시작 위치 '%s'이(가) 브랜치가 아닙니다."
 
-#: branch.c:235
+#: branch.c:236
 #, c-format
 msgid "the requested upstream branch '%s' does not exist"
 msgstr "요청한 업스트림 '%s' 브랜치가 없습니다"
 
-#: branch.c:237
+#: branch.c:238
 msgid ""
 "\n"
 "If you are planning on basing your work on an upstream\n"
@@ -1178,27 +1179,27 @@ msgstr ""
 "새 로컬 브랜치를 거기에 해당하는 리모트 브랜치로 push하려면,\n"
 "\"git push -u\"로 push하는 업스트림을 설정할 수 있습니다."
 
-#: branch.c:280
+#: branch.c:281
 #, c-format
 msgid "Not a valid object name: '%s'."
 msgstr "올바른 오브젝트 이름이 아닙니다: '%s'."
 
-#: branch.c:300
+#: branch.c:301
 #, c-format
 msgid "Ambiguous object name: '%s'."
 msgstr "애매한 오브젝트 이름: '%s'."
 
-#: branch.c:305
+#: branch.c:306
 #, c-format
 msgid "Not a valid branch point: '%s'."
 msgstr "올바른 브랜치 위치가 아닙니다: '%s'."
 
-#: branch.c:359
+#: branch.c:360
 #, c-format
 msgid "'%s' is already checked out at '%s'"
 msgstr "'%s'은(는) 이미 '%s' 위치에 받아져 있습니다"
 
-#: branch.c:382
+#: branch.c:383
 #, c-format
 msgid "HEAD of working tree %s is not updated"
 msgstr "작업 폴더 %s의 헤드가 업데이트되지 않았습니다"
@@ -1213,7 +1214,7 @@ msgstr "'%s' 파일이 버전2 번들 파일로 보이지 않습니다"
 msgid "unrecognized header: %s%s (%d)"
 msgstr "인식할 수 없는 헤더: %s%s (%d)"
 
-#: bundle.c:88 sequencer.c:1879 sequencer.c:2337 builtin/commit.c:750
+#: bundle.c:88 sequencer.c:2081 sequencer.c:2558 builtin/commit.c:755
 #, c-format
 msgid "could not open '%s'"
 msgstr "'%s'을(를) 열 수 없습니다"
@@ -1255,7 +1256,7 @@ msgstr "rev-list 명령이 죽었습니다"
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "rev-list 옵션에서 '%s' 레퍼런스가 제외되었습니다"
 
-#: bundle.c:450 builtin/log.c:183 builtin/log.c:1607 builtin/shortlog.c:296
+#: bundle.c:450 builtin/log.c:183 builtin/log.c:1607 builtin/shortlog.c:303
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "알 수 없는 인자: %s"
@@ -1278,18 +1279,41 @@ msgstr "index-pack 명령이 죽었습니다"
 msgid "invalid color value: %.*s"
 msgstr "잘못된 색 값: %.*s"
 
-#: commit.c:41 sequencer.c:2141 builtin/am.c:421 builtin/am.c:465
-#: builtin/am.c:1436 builtin/am.c:2072
+#: commit.c:43 sequencer.c:2364 builtin/am.c:421 builtin/am.c:465
+#: builtin/am.c:1436 builtin/am.c:2072 builtin/replace.c:376
+#: builtin/replace.c:448
 #, c-format
 msgid "could not parse %s"
 msgstr "parse %s을(를) 파싱할 수 없습니다"
 
-#: commit.c:43
+#: commit.c:45
 #, c-format
 msgid "%s %s is not a commit!"
 msgstr "%s %s, 커밋이 아닙니다"
 
-#: commit.c:1506
+#: commit.c:182
+msgid ""
+"Support for <GIT_DIR>/info/grafts is deprecated\n"
+"and will be removed in a future Git version.\n"
+"\n"
+"Please use \"git replace --convert-graft-file\"\n"
+"to convert the grafts into replace refs.\n"
+"\n"
+"Turn this message off by running\n"
+"\"git config advice.graftFileDeprecated false\""
+msgstr ""
+"<GIT_DIR>/info/grafts에 대한 지원은 다음 깃\n"
+"버전에서 제거될 예정입니다.\n"
+"\n"
+"그래프트를 레퍼런스로 전환하려면\n"
+"\"git replace --convert-graft-file\" 명령을\n"
+"사용하십시오.\n"
+"\n"
+"이 메시지를 보지 않으려면\n"
+"\"git config advice.graftFileDeprecated false\"\n"
+"명령을 사용하십시오"
+
+#: commit.c:1540
 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"
@@ -1299,170 +1323,184 @@ msgstr ""
 "메시지를 수정한 다음 커밋을 수정하거나, 설정의 i18n.commitencoding\n"
 "변수를 프로젝트가 사용 중인 인코딩으로 맞추십시오.\n"
 
+#: commit-graph.c:669
+#, c-format
+msgid "the commit graph format cannot write %d commits"
+msgstr "커밋 그래프 포맷에서 커밋 %d개를 쓸 수 없습니다"
+
+#: commit-graph.c:696
+msgid "too many commits to write graph"
+msgstr "그래프를 쓰기에는 커밋 수가 너무 많습니다"
+
+#: commit-graph.c:707 builtin/init-db.c:516 builtin/init-db.c:521
+#, c-format
+msgid "cannot mkdir %s"
+msgstr "%s에 대해 mkdir를 할 수 없습니다"
+
 #: compat/obstack.c:405 compat/obstack.c:407
 msgid "memory exhausted"
 msgstr "메모리 바닥남"
 
-#: config.c:186
+#: config.c:187
 msgid "relative config include conditionals must come from files"
 msgstr "상대 경로 설정 include 조건은 파일에서 와야 합니다"
 
-#: config.c:720
+#: config.c:788
 #, c-format
 msgid "bad config line %d in blob %s"
 msgstr "블롭 %2$s 안에 %1$d번 줄에 잘못된 설정"
 
-#: config.c:724
+#: config.c:792
 #, c-format
 msgid "bad config line %d in file %s"
 msgstr "파일 %2$s 안에 %1$d번 줄에 잘못된 설정"
 
-#: config.c:728
+#: config.c:796
 #, c-format
 msgid "bad config line %d in standard input"
 msgstr "표준 입력 안에 %d번 줄에 잘못된 설정"
 
-#: config.c:732
+#: config.c:800
 #, c-format
 msgid "bad config line %d in submodule-blob %s"
 msgstr "하위 모듈 블롭 %2$s 안에 %1$d번 줄에 잘못된 설정"
 
-#: config.c:736
+#: config.c:804
 #, c-format
 msgid "bad config line %d in command line %s"
 msgstr "명령행 %2$s 안에 %1$d번 줄에 잘못된 설정"
 
-#: config.c:740
+#: config.c:808
 #, c-format
 msgid "bad config line %d in %s"
 msgstr "%2$s 안에 %1$d번 줄에 잘못된 설정"
 
-#: config.c:868
+#: config.c:936
 msgid "out of range"
 msgstr "범위를 벗어남"
 
-#: config.c:868
+#: config.c:936
 msgid "invalid unit"
 msgstr "단위가 잘못됨"
 
-#: config.c:874
+#: config.c:942
 #, c-format
 msgid "bad numeric config value '%s' for '%s': %s"
 msgstr "잘못된 수치 설정 값 '%s' (키 '%s'): %s"
 
-#: config.c:879
+#: config.c:947
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
 msgstr "잘못된 수치 설정 값 '%s' (키 '%s', 블롭 %s): %s"
 
-#: config.c:882
+#: config.c:950
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in file %s: %s"
 msgstr "잘못된 수치 설정 값 '%s' (키 '%s', 파일 %s): %s"
 
-#: config.c:885
+#: config.c:953
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
 msgstr "잘못된 수치 설정 값 '%s' (키 '%s', 표준입력): %s"
 
-#: config.c:888
+#: config.c:956
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
 msgstr "잘못된 수치 설정 값 '%s' (키 '%s', 하위 모듈 블롭 %s): %s"
 
-#: config.c:891
+#: config.c:959
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
 msgstr "잘못된 수치 설정 값 '%s' (키 '%s', 명령행 %s): %s"
 
-#: config.c:894
+#: config.c:962
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in %s: %s"
 msgstr "잘못된 수치 설정 값 '%s' (키 '%s', %s 안에): %s"
 
-#: config.c:989
+#: config.c:1057
 #, c-format
 msgid "failed to expand user dir in: '%s'"
 msgstr "다음에 사용자 디렉터리 확장에 실패: '%s'"
 
-#: config.c:998
+#: config.c:1066
 #, c-format
 msgid "'%s' for '%s' is not a valid timestamp"
 msgstr "'%s' 값이 '%s'에 대해 올바른 시각 값이 아닙니다"
 
-#: config.c:1094 config.c:1105
+#: config.c:1171 config.c:1182
 #, c-format
 msgid "bad zlib compression level %d"
 msgstr "%d번은 올바른 zlib 압축 단계가 아닙니다"
 
-#: config.c:1225
+#: config.c:1307
 #, c-format
 msgid "invalid mode for object creation: %s"
 msgstr "오브젝트 생성 모드가 올바르지 않습니다: %s"
 
-#: config.c:1386
+#: config.c:1473
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "잘못 묶음 압축 단계 %d"
 
-#: config.c:1582
+#: config.c:1681
 msgid "unable to parse command-line config"
 msgstr "명령행 설정을 파싱할 수 없습니다"
 
-#: config.c:1914
+#: config.c:2013
 msgid "unknown error occurred while reading the configuration files"
 msgstr "설정 파일을 읽는 중 알 수 없는 오류가 생겼습니다"
 
-#: config.c:2101
+#: config.c:2200
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "잘못된 %s: '%s'"
 
-#: config.c:2144
+#: config.c:2243
 #, c-format
 msgid "unknown core.untrackedCache value '%s'; using 'keep' default value"
-msgstr "알 수 없는 core.untrackedCache 값 '%s'; 기본값으로 'keep' 사용"
+msgstr "알 수 없는 core.untrackedCache 값 '%s'. 기본값으로 'keep' 사용"
 
-#: config.c:2170
+#: config.c:2269
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr "splitIndex.maxPercentChange 값('%d')은 0에서 100 사이여야 합니다"
 
-#: config.c:2195
+#: config.c:2294
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "명령행 설정에서 '%s'을(를) 설정할 수 없습니다"
 
-#: config.c:2197
+#: config.c:2296
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "'%2$s' 파일의 %3$d번 줄 '%1$s' 설정 변수가 잘못되었습니다"
 
-#: config.c:2256
+#: config.c:2402
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s은(는) 여러 개 값이 있습니다"
 
-#: config.c:2599 config.c:2816
+#: config.c:2766 config.c:3019
 #, c-format
 msgid "fstat on %s failed"
 msgstr "%s에 대해 fstat 실패"
 
-#: config.c:2706
+#: config.c:2905
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "'%s'을(를) '%s'(으)로 설정할 수 없습니다"
 
-#: config.c:2708 builtin/remote.c:776
+#: config.c:2907 builtin/remote.c:779
 #, c-format
 msgid "could not unset '%s'"
 msgstr "'%s' 설정을 지울 수 없습니다"
 
-#: connect.c:52
+#: connect.c:61
 msgid "The remote end hung up upon initial contact"
 msgstr "리모트 측이 최초 연결했을 때 연결을 끊었습니다"
 
-#: connect.c:54
+#: connect.c:63
 msgid ""
 "Could not read from remote repository.\n"
 "\n"
@@ -1474,7 +1512,7 @@ msgstr ""
 "올바른 접근 권한이 있는지, 그리고 저장소가 있는지\n"
 "확인하십시오."
 
-#: connected.c:66 builtin/fsck.c:198 builtin/prune.c:144
+#: connected.c:66 builtin/fsck.c:201 builtin/prune.c:145
 msgid "Checking connectivity"
 msgstr "연결을 확인하는 중입니다"
 
@@ -1490,12 +1528,12 @@ msgstr "rev-list 쓰기에 실패했습니다"
 msgid "failed to close rev-list's stdin"
 msgstr "rev-list의 표준입력을 닫는데 실패했습니다"
 
-#: convert.c:205
+#: convert.c:206
 #, c-format
 msgid "CRLF would be replaced by LF in %s."
 msgstr "%s에서 CRLF는 LF로 바뀝니다."
 
-#: convert.c:207
+#: convert.c:208
 #, c-format
 msgid ""
 "CRLF will be replaced by LF in %s.\n"
@@ -1504,12 +1542,12 @@ msgstr ""
 "%s에서 CRLF는 LF로 바뀝니다.\n"
 "작업 디렉터리에서는 원래 줄 바꿈 형식을 유지합니다."
 
-#: convert.c:215
+#: convert.c:216
 #, c-format
 msgid "LF would be replaced by CRLF in %s"
 msgstr "%s에서 LF는 CRLF로 바뀝니다."
 
-#: convert.c:217
+#: convert.c:218
 #, c-format
 msgid ""
 "LF will be replaced by CRLF in %s.\n"
@@ -1518,6 +1556,50 @@ msgstr ""
 "%s에서 LF는 CRLF로 바뀝니다.\n"
 "작업 디렉터리에서는 원래 줄 바꿈 형식을 유지합니다."
 
+#: convert.c:279
+#, c-format
+msgid "BOM is prohibited in '%s' if encoded as %s"
+msgstr "'%s'에서 인코딩이 %s이면 BOM이 금지됩니다"
+
+#: convert.c:286
+#, c-format
+msgid ""
+"The file '%s' contains a byte order mark (BOM). Please use UTF-%s as working-"
+"tree-encoding."
+msgstr ""
+"'%s' 파일에 BOM(byte order mark)이 들어 있습니다. working-tree-encoding으로 "
+"UTF-%s 값을 사용하십시오."
+
+#: convert.c:304
+#, c-format
+msgid "BOM is required in '%s' if encoded as %s"
+msgstr "'%s'에서 인코딩이 %s이면 BOM이 필요합니다"
+
+#: convert.c:306
+#, c-format
+msgid ""
+"The file '%s' is missing a byte order mark (BOM). Please use UTF-%sBE or UTF-"
+"%sLE (depending on the byte order) as working-tree-encoding."
+msgstr ""
+"'%s' 파일에 BOM(byte order mark)이 없습니다. (바이트 순서에 따라) UTF-%sBE 또"
+"는 UTF-%sLE 값을 working-tree-encoding으로 사용하십시오."
+
+#: convert.c:424
+#, c-format
+msgid "failed to encode '%s' from %s to %s"
+msgstr "'%s'의 인코딩을 %s에서 %s(으)로 변환하는데 실패했습니다"
+
+#: convert.c:467
+#, c-format
+msgid "encoding '%s' from %s to %s and back is not the same"
+msgstr ""
+"'%s'의 인코딩을 %s에서 %s(으)로 변환하고 다시 역으로 변환했을 때 원래 내용과 "
+"다릅니다."
+
+#: convert.c:1225
+msgid "true/false are no valid working-tree-encodings"
+msgstr "true/false는 올바른 working-tree-encodings 값이 아닙니다"
+
 #: date.c:116
 msgid "in the future"
 msgstr "미래에"
@@ -1623,25 +1705,25 @@ msgstr ""
 "'diff.submodule' 설정 변수에 오류:\n"
 "%s'"
 
-#: diff.c:3822
+#: diff.c:3823
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "외부 diff 프로그램이 죽음, %s 위치에서 멈춤"
 
-#: diff.c:4146
+#: diff.c:4153
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr ""
 "\"--name-only, --name-status, --check, -s 옵션 중 하나만 쓸 수 있습니다"
 
-#: diff.c:4149
+#: diff.c:4156
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S, --find-object 옵션 중 하나만 쓸 수 있습니다"
 
-#: diff.c:4237
+#: diff.c:4244
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow 옵션에는 정확히 하나의 경로명세가 필요합니다"
 
-#: diff.c:4403
+#: diff.c:4410
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -1650,44 +1732,44 @@ msgstr ""
 "--dirstat/-X 옵션 파라미터를 파싱하는데 실패했습니다:\n"
 "%s"
 
-#: diff.c:4417
+#: diff.c:4424
 #, c-format
 msgid "Failed to parse --submodule option parameter: '%s'"
 msgstr "--submodule 옵션 파라미터 파싱에 실패했습니다: '%s'"
 
-#: diff.c:5493
+#: diff.c:5500
 msgid "inexact rename detection was skipped due to too many files."
 msgstr "파일이 너무 많아서 부정확한 이름 바꾸기 검색 기능을 건너뜁니다."
 
-#: diff.c:5496
+#: diff.c:5503
 msgid "only found copies from modified paths due to too many files."
 msgstr "파일이 너무 많아서 수정한 경로의 복사본만 찾았습니다."
 
-#: diff.c:5499
+#: diff.c:5506
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
 msgstr "%s 변수를 최소한 %d(으)로 설정하고 명령을 다시 시도해 보십시오."
 
-#: dir.c:1866
+#: dir.c:1867
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "'%s' 디렉터리를 열 수 없습니다"
 
-#: dir.c:2108
+#: dir.c:2109
 msgid "failed to get kernel name and information"
 msgstr "커널 이름과 정보를 가져오는데 실패했습니다"
 
-#: dir.c:2232
+#: dir.c:2233
 msgid "Untracked cache is disabled on this system or location."
 msgstr "이 시스템 또는 위치에서는 추적되지 않는 캐시를 사용하지 않습니다."
 
-#: dir.c:3024 dir.c:3029
+#: dir.c:3075 dir.c:3080
 #, c-format
 msgid "could not create directories for %s"
 msgstr "%s에 필요한 디렉터리를 만들 수 없습니다"
 
-#: dir.c:3054
+#: dir.c:3109
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "'%s'에서 '%s'(으)로 git 디렉터리를 옮겨올 수 없습니다"
@@ -1710,201 +1792,205 @@ msgstr "'%s' 파일에 stat을 할 수 없습니다"
 msgid "Remote with no URL"
 msgstr "URL 없는 리모트"
 
-#: fetch-pack.c:253
+#: fetch-pack.c:254
 msgid "git fetch-pack: expected shallow list"
 msgstr "git fetch-pack: 얕은 목록을 예상함"
 
-#: fetch-pack.c:265
+#: fetch-pack.c:266
 msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
 msgstr "git fetch-pack: ACK/NAK가 와야 하지만, 플러시 패킷을 받았습니다"
 
-#: fetch-pack.c:284 builtin/archive.c:63
+#: fetch-pack.c:285 builtin/archive.c:63
 #, c-format
 msgid "remote error: %s"
 msgstr "리모트 오류: %s"
 
-#: fetch-pack.c:285
+#: fetch-pack.c:286
 #, c-format
 msgid "git fetch-pack: expected ACK/NAK, got '%s'"
 msgstr "git fetch-pack: ACK/NAK가 와야 하지만, '%s'을(를) 받았습니다"
 
-#: fetch-pack.c:337
+#: fetch-pack.c:338
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc 옵션은 multi_ack_detailed가 필요합니다"
 
-#: fetch-pack.c:428
+#: fetch-pack.c:429 fetch-pack.c:1310
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "shallow 줄이 잘못됨: %s"
 
-#: fetch-pack.c:434
+#: fetch-pack.c:435 fetch-pack.c:1316
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "unshallow 줄이 잘못됨: %s"
 
-#: fetch-pack.c:436
+#: fetch-pack.c:437 fetch-pack.c:1318
 #, c-format
 msgid "object not found: %s"
 msgstr "오브젝트가 없습니다: %s"
 
-#: fetch-pack.c:439
+#: fetch-pack.c:440 fetch-pack.c:1321
 #, c-format
 msgid "error in object: %s"
 msgstr "오브젝트에 오류: %s"
 
-#: fetch-pack.c:441
+#: fetch-pack.c:442 fetch-pack.c:1323
 #, c-format
 msgid "no shallow found: %s"
 msgstr "shallow가 없습니다: %s"
 
-#: fetch-pack.c:444
+#: fetch-pack.c:445 fetch-pack.c:1326
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "shallow/unshallow가 와야 하지만, %s을(를) 받았습니다"
 
-#: fetch-pack.c:485
+#: fetch-pack.c:486
 #, c-format
 msgid "got %s %d %s"
 msgstr "받음: %s %d %s"
 
-#: fetch-pack.c:499
+#: fetch-pack.c:500
 #, c-format
 msgid "invalid commit %s"
 msgstr "잘못된 커밋 %s"
 
-#: fetch-pack.c:532
+#: fetch-pack.c:533
 msgid "giving up"
 msgstr "포기함"
 
-#: fetch-pack.c:542 progress.c:229
+#: fetch-pack.c:543 progress.c:229
 msgid "done"
 msgstr "완료"
 
-#: fetch-pack.c:554
+#: fetch-pack.c:555
 #, c-format
 msgid "got %s (%d) %s"
 msgstr "받음: %s (%d) %s"
 
-#: fetch-pack.c:600
+#: fetch-pack.c:601
 #, c-format
 msgid "Marking %s as complete"
 msgstr "%s 항목을 완료로 표시"
 
-#: fetch-pack.c:788
+#: fetch-pack.c:828
 #, c-format
 msgid "already have %s (%s)"
 msgstr "이미 %s (%s) 있음"
 
-#: fetch-pack.c:829
+#: fetch-pack.c:869
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack: 사이드밴드 디멀티플렉서를 fork할 수 없습니다"
 
-#: fetch-pack.c:837
+#: fetch-pack.c:877
 msgid "protocol error: bad pack header"
 msgstr "프로토콜 오류: 잘못된 묶음 헤더"
 
-#: fetch-pack.c:895
+#: fetch-pack.c:944
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack: %s 명령을 fork할 수 없습니다"
 
-#: fetch-pack.c:911
+#: fetch-pack.c:960
 #, c-format
 msgid "%s failed"
 msgstr "%s 실패"
 
-#: fetch-pack.c:913
+#: fetch-pack.c:962
 msgid "error in sideband demultiplexer"
 msgstr "사이드밴드 디멀티플렉서에 오류"
 
-#: fetch-pack.c:940
+#: fetch-pack.c:989
 msgid "Server does not support shallow clients"
 msgstr "서버에서 shallow 클라이언트를 지원하지 않습니다"
 
-#: fetch-pack.c:944
+#: fetch-pack.c:993
 msgid "Server supports multi_ack_detailed"
 msgstr "서버에서 multi_ack_detailed를 지원합니다"
 
-#: fetch-pack.c:947
+#: fetch-pack.c:996
 msgid "Server supports no-done"
 msgstr "서버에서 no-done을 지원합니다"
 
-#: fetch-pack.c:953
+#: fetch-pack.c:1002
 msgid "Server supports multi_ack"
 msgstr "서버에서 multi_ack를 지원합니다"
 
-#: fetch-pack.c:957
+#: fetch-pack.c:1006
 msgid "Server supports side-band-64k"
 msgstr "서버에서 side-band-64k를 지원합니다"
 
-#: fetch-pack.c:961
+#: fetch-pack.c:1010
 msgid "Server supports side-band"
 msgstr "서버에서 side-band를 지원합니다"
 
-#: fetch-pack.c:965
+#: fetch-pack.c:1014
 msgid "Server supports allow-tip-sha1-in-want"
 msgstr "서버에서 allow-tip-sha1-in-want를 지원합니다"
 
-#: fetch-pack.c:969
+#: fetch-pack.c:1018
 msgid "Server supports allow-reachable-sha1-in-want"
 msgstr "서버에서 allow-reachable-sha1-in-want를 지원합니다"
 
-#: fetch-pack.c:979
+#: fetch-pack.c:1028
 msgid "Server supports ofs-delta"
 msgstr "서버에서 ofs-delta를 지원합니다"
 
-#: fetch-pack.c:985
+#: fetch-pack.c:1034 fetch-pack.c:1204
 msgid "Server supports filter"
 msgstr "서버에서 필터를 지원합니다"
 
-#: fetch-pack.c:993
+#: fetch-pack.c:1042
 #, c-format
 msgid "Server version is %.*s"
 msgstr "서버 버전이 %.*s입니다"
 
-#: fetch-pack.c:999
+#: fetch-pack.c:1048
 msgid "Server does not support --shallow-since"
 msgstr "서버에서 --shallow-signed 옵션을 지원하지 않습니다"
 
-#: fetch-pack.c:1003
+#: fetch-pack.c:1052
 msgid "Server does not support --shallow-exclude"
 msgstr "서버에서 --shallow-exclude 옵션을 지원하지 않습니다"
 
-#: fetch-pack.c:1005
+#: fetch-pack.c:1054
 msgid "Server does not support --deepen"
 msgstr "서버에서 --deepen 옵션을 지원하지 않습니다"
 
-#: fetch-pack.c:1016
+#: fetch-pack.c:1065
 msgid "no common commits"
 msgstr "공통 커밋 없음"
 
-#: fetch-pack.c:1028
+#: fetch-pack.c:1077 fetch-pack.c:1414
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: 가져오기 실패."
 
-#: fetch-pack.c:1190
+#: fetch-pack.c:1199
+msgid "Server does not support shallow requests"
+msgstr "서버에서 shallow 요청을 지원하지 않습니다"
+
+#: fetch-pack.c:1584
 msgid "no matching remote head"
 msgstr "해당하는 리모트 헤드가 없습니다"
 
-#: fetch-pack.c:1212
+#: fetch-pack.c:1610
 #, c-format
 msgid "no such remote ref %s"
 msgstr "그런 리모트가 레퍼런스가 없습니다: %s"
 
-#: fetch-pack.c:1215
+#: fetch-pack.c:1613
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "서버에서 알려지지 않은 %s 오브젝트에 대한 요청을 허용하지 않습니다"
 
-#: gpg-interface.c:181
+#: gpg-interface.c:185
 msgid "gpg failed to sign the data"
 msgstr "gpg에서 데이터를 서명하는데 실패했습니다."
 
-#: gpg-interface.c:211
+#: gpg-interface.c:210
 msgid "could not create temporary file"
 msgstr "임시 파일을 만들 수 없습니다"
 
-#: gpg-interface.c:214
+#: gpg-interface.c:213
 #, c-format
 msgid "failed writing detached signature to '%s'"
 msgstr "분리된 서명을 '%s'에 쓰는데 실패했습니다"
@@ -1914,36 +2000,97 @@ msgstr "분리된 서명을 '%s'에 쓰는데 실패했습니다"
 msgid "ignore invalid color '%.*s' in log.graphColors"
 msgstr "log.graphColors에 잘못된 색을 ('%.*s') 무시합니다"
 
-#: grep.c:2022
+#: grep.c:2020
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "'%s': %s을(를) 읽을 수 없습니다"
 
-#: grep.c:2039 setup.c:163 builtin/clone.c:407 builtin/diff.c:81
+#: grep.c:2037 setup.c:164 builtin/clone.c:409 builtin/diff.c:81
 #: builtin/rm.c:134
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "'%s'에 대해 stat()이 실패했습니다"
 
-#: grep.c:2050
+#: grep.c:2048
 #, c-format
 msgid "'%s': short read"
 msgstr "'%s': 읽다가 잘림"
 
-#: help.c:179
+#: help.c:23
+msgid "start a working area (see also: git help tutorial)"
+msgstr "작업 공간 시작 (참고: git help tutorial)"
+
+#: help.c:24
+msgid "work on the current change (see also: git help everyday)"
+msgstr "변경 사항에 대한 작업 (참고: git help everyday)"
+
+#: help.c:25
+msgid "examine the history and state (see also: git help revisions)"
+msgstr "커밋 내역과 상태 보기 (참고: git help revisions)"
+
+#: help.c:26
+msgid "grow, mark and tweak your common history"
+msgstr "커밋 내역을 키우고, 표시하고, 조작하기"
+
+#: help.c:27
+msgid "collaborate (see also: git help workflows)"
+msgstr "협동 작업 (참고: git help workflows)"
+
+#: help.c:31
+msgid "Main Porcelain Commands"
+msgstr "주요 사용자용 명령"
+
+#: help.c:32
+msgid "Ancillary Commands / Manipulators"
+msgstr "보조 명령 / 조작 기능"
+
+#: help.c:33
+msgid "Ancillary Commands / Interrogators"
+msgstr "보조 명령 / 정보 획득 기능"
+
+#: help.c:34
+msgid "Interacting with Others"
+msgstr "다른 사람과 소통"
+
+#: help.c:35
+msgid "Low-level Commands / Manipulators"
+msgstr "저수준 명령/ 조작 기능"
+
+#: help.c:36
+msgid "Low-level Commands / Interrogators"
+msgstr "보조 명령 / 정보 획득 기능"
+
+#: help.c:37
+msgid "Low-level Commands / Synching Repositories"
+msgstr "보조 명령 / 저장소 동기화 기능"
+
+#: help.c:38
+msgid "Low-level Commands / Internal Helpers"
+msgstr "보조 명령 / 내부 사용 기능"
+
+#: help.c:293
 #, c-format
 msgid "available git commands in '%s'"
 msgstr "'%s'에 있는 깃 명령"
 
-#: help.c:186
+#: help.c:300
 msgid "git commands available from elsewhere on your $PATH"
 msgstr "다른 $PATH에 있는 깃 명령"
 
-#: help.c:217
+#: help.c:309
 msgid "These are common Git commands used in various situations:"
 msgstr "다음은 여러가지 상황에서 자주 사용하는 깃 명령입니다:"
 
-#: help.c:281
+#: help.c:358 git.c:90
+#, c-format
+msgid "unsupported command listing type '%s'"
+msgstr "지원하지 명령 열거 방식 '%s'"
+
+#: help.c:405
+msgid "The common Git guides are:"
+msgstr "자주 사용하는 깃 안내서는 다음과 같습니다:"
+
+#: help.c:467
 #, c-format
 msgid ""
 "'%s' appears to be a git command, but we were not\n"
@@ -1952,31 +2099,31 @@ msgstr ""
 "'%s'은(는) 깃 명령으로 보이지만, 실행할 수\n"
 "없습니다. 아마도 git-%s 망가진 것 같습니다."
 
-#: help.c:336
+#: help.c:526
 msgid "Uh oh. Your system reports no Git commands at all."
 msgstr "어라라. 시스템에 깃 명령이 하나도 없다고 나옵니다."
 
-#: help.c:358
+#: help.c:548
 #, c-format
 msgid "WARNING: You called a Git command named '%s', which does not exist."
 msgstr "경고: 이름이 '%s'인 깃 명령을 실행했지만, 그 명령이 없습니다."
 
-#: help.c:363
+#: help.c:553
 #, c-format
 msgid "Continuing under the assumption that you meant '%s'."
 msgstr "'%s' 명령이라고 가정하고 계속합니다."
 
-#: help.c:368
+#: help.c:558
 #, c-format
 msgid "Continuing in %0.1f seconds, assuming that you meant '%s'."
 msgstr "%0.1f초 뒤에 '%s' 명령이라고 가정하고 계속합니다."
 
-#: help.c:376
+#: help.c:566
 #, c-format
 msgid "git: '%s' is not a git command. See 'git --help'."
 msgstr "git: '%s'은(는) 깃 명령이 아닙니다. 'git --help'를 참고하십시오."
 
-#: help.c:380
+#: help.c:570
 msgid ""
 "\n"
 "The most similar command is"
@@ -1987,16 +2134,16 @@ msgstr[0] ""
 "\n"
 "가장 비슷한 명령은"
 
-#: help.c:395
+#: help.c:585
 msgid "git version [<options>]"
 msgstr "git version [<옵션>]"
 
-#: help.c:462
+#: help.c:652
 #, c-format
 msgid "%s: %s - %s"
 msgstr "%s: %s - %s"
 
-#: help.c:466
+#: help.c:656
 msgid ""
 "\n"
 "Did you mean this?"
@@ -2061,7 +2208,7 @@ msgstr "빈 이름의 신원 정보는 (<%s>에 대해) 허용하지 않습니
 msgid "name consists only of disallowed characters: %s"
 msgstr "이름이 허용하지 않는 문자로만 이루어져 있습니다: %s"
 
-#: ident.c:416 builtin/commit.c:582
+#: ident.c:416 builtin/commit.c:587
 #, c-format
 msgid "invalid date format: %s"
 msgstr "시각 형식이 잘못되었습니다: %s"
@@ -2098,273 +2245,409 @@ msgstr ""
 msgid "Unable to create '%s.lock': %s"
 msgstr "'%s.lock'을 만들 수 없습니다: %s"
 
-#: merge.c:74
+#: merge.c:71
 msgid "failed to read the cache"
 msgstr "캐시를 읽는데 실패했습니다"
 
-#: merge.c:134 builtin/am.c:1946 builtin/am.c:1980 builtin/checkout.c:378
-#: builtin/checkout.c:599 builtin/clone.c:759
+#: merge.c:136 builtin/am.c:1946 builtin/am.c:1980 builtin/checkout.c:378
+#: builtin/checkout.c:606 builtin/clone.c:761
 msgid "unable to write new index file"
 msgstr "새 인덱스 파일을 쓸 수 없습니다"
 
-#: merge-recursive.c:235
+#: merge-recursive.c:298
 msgid "(bad commit)\n"
 msgstr "(잘못된 커밋)\n"
 
-#: merge-recursive.c:257 merge-recursive.c:265
+#: merge-recursive.c:320
+#, c-format
+msgid "add_cacheinfo failed for path '%s'; merge aborting."
+msgstr "'%s' 경로에 대해 addinfo_cache 실패. 병합 중지."
+
+#: merge-recursive.c:328
 #, c-format
-msgid "addinfo_cache failed for path '%s'"
-msgstr "'%s' 경로에 대해 addinfo_cache가 실패했습니다"
+msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+msgstr "'%s' 경로에 대해 addinfo_cache 새로 고침 실패. 병합 중지."
 
-#: merge-recursive.c:329
+#: merge-recursive.c:410
 msgid "error building trees"
 msgstr "트리 빌드에 오류"
 
-#: merge-recursive.c:771
+#: merge-recursive.c:881
 #, c-format
 msgid "failed to create path '%s'%s"
 msgstr "'%s' 경로 만들기에 실패했습니다%s"
 
-#: merge-recursive.c:782
+#: merge-recursive.c:892
 #, c-format
 msgid "Removing %s to make room for subdirectory\n"
 msgstr "하위 디렉터리에 공간을 만드려고 %s을(를) 제거합니다\n"
 
-#: merge-recursive.c:796 merge-recursive.c:815
+#: merge-recursive.c:906 merge-recursive.c:925
 msgid ": perhaps a D/F conflict?"
 msgstr ": 아마도 D/F 충돌?"
 
-#: merge-recursive.c:805
+#: merge-recursive.c:915
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
 msgstr "'%s' 위치의 추적되지 않는 파일을 잃기를 거부합니다"
 
-#: merge-recursive.c:847 builtin/cat-file.c:37
+#: merge-recursive.c:957 builtin/cat-file.c:37
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr "%s '%s' 오브젝트를 읽을 수 없음"
 
-#: merge-recursive.c:849
+#: merge-recursive.c:959
 #, c-format
 msgid "blob expected for %s '%s'"
 msgstr "%s '%s'에 대해 블롭을 예상"
 
-#: merge-recursive.c:873
+#: merge-recursive.c:983
 #, c-format
 msgid "failed to open '%s': %s"
 msgstr "'%s'을(를) 여는데 실패: %s"
 
-#: merge-recursive.c:884
+#: merge-recursive.c:994
 #, c-format
 msgid "failed to symlink '%s': %s"
 msgstr "'%s' 심볼릭 링크에 실패: %s"
 
-#: merge-recursive.c:889
+#: merge-recursive.c:999
 #, c-format
 msgid "do not know what to do with %06o %s '%s'"
 msgstr "다음을 어떻게 할지 알 수 없습니다: %06o %s '%s'"
 
-#: merge-recursive.c:1029
+#: merge-recursive.c:1186
+#, c-format
+msgid "Failed to merge submodule %s (not checked out)"
+msgstr "%s 하위 모듈 병합 실패 (가져오지 않음)"
+
+#: merge-recursive.c:1193
+#, c-format
+msgid "Failed to merge submodule %s (commits not present)"
+msgstr "%s 하위 모듈 병합 실패 (커밋이 없습니다)"
+
+#: merge-recursive.c:1200
+#, c-format
+msgid "Failed to merge submodule %s (commits don't follow merge-base)"
+msgstr "%s 하위 모듈 병합 실패 (커밋이 병합 베이스를 따르지 않습니다)"
+
+#: merge-recursive.c:1208 merge-recursive.c:1220
+#, c-format
+msgid "Fast-forwarding submodule %s to the following commit:"
+msgstr "%s 하위 모듈을 다음 커밋으로 정방향 진행:"
+
+#: merge-recursive.c:1211 merge-recursive.c:1223
+#, c-format
+msgid "Fast-forwarding submodule %s"
+msgstr "%s 하위 모듈을 정방향 진행"
+
+#: merge-recursive.c:1245
+#, c-format
+msgid "Failed to merge submodule %s (merge following commits not found)"
+msgstr "%s 하위 모듈 병합 실패 (병합할 때 따라갈 커밋이 없습니다)"
+
+#: merge-recursive.c:1249
+#, c-format
+msgid "Failed to merge submodule %s (not fast-forward)"
+msgstr "%s 하위 모듈 병합 실패 (정방향이 아닙니다)"
+
+#: merge-recursive.c:1250
+msgid "Found a possible merge resolution for the submodule:\n"
+msgstr "하위 모듈에 대해 가능한 병합 방법을 찾았습니다:\n"
+
+#: merge-recursive.c:1253
+#, c-format
+msgid ""
+"If this is correct simply add it to the index for example\n"
+"by using:\n"
+"\n"
+"  git update-index --cacheinfo 160000 %s \"%s\"\n"
+"\n"
+"which will accept this suggestion.\n"
+msgstr ""
+"이 제안이 맞으면 인덱스에 추가하면 됩니다. 예를 들어\n"
+"다음 명령을 사용하면:\n"
+"\n"
+"  git update-index --cacheinfo 160000 %s \"%s\"\n"
+"\n"
+"제안을 받아들이게 됩니다.\n"
+
+#: merge-recursive.c:1262
+#, c-format
+msgid "Failed to merge submodule %s (multiple merges found)"
+msgstr "%s 하위 모듈 병합 실패 (병합이 여러개 있습니다)"
+
+#: merge-recursive.c:1321
 msgid "Failed to execute internal merge"
 msgstr "내부 병합 실행에 실패"
 
-#: merge-recursive.c:1034
+#: merge-recursive.c:1326
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "%s을(를) 데이터베이스에 추가할 수 없습니다"
 
-#: merge-recursive.c:1146
+#: merge-recursive.c:1358
+#, c-format
+msgid "Auto-merging %s"
+msgstr "자동 병합: %s"
+
+#: merge-recursive.c:1423
+#, c-format
+msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+msgstr ""
+"오류: %s 위치의 추적되지 않는 파일을 잃기를 거부합니다. 대신 %s에 씁니다."
+
+#: merge-recursive.c:1475
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
 "in tree."
 msgstr ""
-"충돌! (%s/삭제): %s (위치 %s) 및 %s (%s에서) 삭제. %s 버전의 %s 트리에 남음."
+"충돌 (%s/삭제): %s (위치 %s) 및 %s (%s에서) 삭제. %s 버전의 %s 트리에 남음."
 
-#: merge-recursive.c:1151
+#: merge-recursive.c:1480
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
 "left in tree."
 msgstr ""
-"충돌! (%s/삭제): %s (위치 %s) 삭제, %s에서 %s(으)로 (위치 %s). %s 버전의 %s "
-"리에 남음."
+"충돌 (%s/삭제): %s (위치 %s) 삭제, %s에서 %s(으)로 (위치 %s). %s 버전의 %s 트"
+"리에 남음."
 
-#: merge-recursive.c:1158
+#: merge-recursive.c:1487
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
 "in tree at %s."
 msgstr ""
-"충돌! (%s/삭제): %s (위치 %s) 및 %s (위치 %s) 삭제. %s 버전의 %s 트리에 "
-"%s(으)로 남음."
+"충돌 (%s/삭제): %s (위치 %s) 및 %s (위치 %s) 삭제. %s 버전의 %s 트리에 %s(으)"
+"로 남음."
 
-#: merge-recursive.c:1163
+#: merge-recursive.c:1492
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
 "left in tree at %s."
 msgstr ""
-"충돌! (%s/삭제): %s (위치 %s) 삭제, %s에서 %s(으)로 (위치 %s). %s 버전의 %s "
-"리에 남음 (위치 %s)."
+"충돌 (%s/삭제): %s (위치 %s) 삭제, %s에서 %s(으)로 (위치 %s). %s 버전의 %s 트"
+"리에 남음 (위치 %s)."
 
-#: merge-recursive.c:1197
+#: merge-recursive.c:1526
 msgid "rename"
 msgstr "이름바꾸기"
 
-#: merge-recursive.c:1197
+#: merge-recursive.c:1526
 msgid "renamed"
 msgstr "이름바꿈"
 
-#: merge-recursive.c:1254
+#: merge-recursive.c:1580 merge-recursive.c:1736 merge-recursive.c:2368
+#: merge-recursive.c:3086
+#, c-format
+msgid "Refusing to lose dirty file at %s"
+msgstr "%s 위치의 변경된 파일을 잃기를 거부합니다"
+
+#: merge-recursive.c:1594
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr "%s은(는) %s에 있는 디렉터리로 %s(으)로 이름을 바꿉니다"
 
-#: merge-recursive.c:1279
+#: merge-recursive.c:1599
+#, c-format
+msgid "Refusing to lose untracked file at %s; adding as %s instead"
+msgstr "%s 위치의 추적되지 않는 파일을 잃기를 거부합니다. 대신 %s 추가"
+
+#: merge-recursive.c:1625
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
 "\"->\"%s\" in \"%s\"%s"
 msgstr ""
-"충돌! (이름바꾸기/이름바꾸기): \"%3$s\" 브랜치에서 이름바꾸기 \"%1$s\"->"
-"\"%2$s\" \"%6$s\" 브랜치에서 이름 바꾸기 \"%4$s\"->\"%5$s\"%7$s"
+"충돌 (이름바꾸기/이름바꾸기): \"%3$s\" 브랜치에서 이름바꾸기 \"%1$s\"->\"%2$s"
+"\" \"%6$s\" 브랜치에서 이름 바꾸기 \"%4$s\"->\"%5$s\"%7$s"
 
-#: merge-recursive.c:1284
+#: merge-recursive.c:1630
 msgid " (left unresolved)"
 msgstr " (해결되지 않음)"
 
-#: merge-recursive.c:1346
+#: merge-recursive.c:1694
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
 msgstr ""
-"충돌! (rename/rename): 이름 바꾸기 %s->%s (위치 %s). 이름 바꾸기 %s->%s (위"
-"치 %s)"
+"충돌 (rename/rename): 이름 바꾸기 %s->%s (위치 %s). 이름 바꾸기 %s->%s (위치 "
+"%s)"
 
-#: merge-recursive.c:1379
+#: merge-recursive.c:1733
 #, c-format
 msgid "Renaming %s to %s and %s to %s instead"
 msgstr "대신 이름을 %s에서 %s(으)로 바꾸고 %s에서 %s(으)로 바꿉니다"
 
-#: merge-recursive.c:1582
+#: merge-recursive.c:1745
+#, c-format
+msgid "Refusing to lose untracked file at %s, even though it's in the way."
+msgstr ""
+"%s 위치의 추적되지 않는 파일을 잃기를 (잃어버릴 예정이지만) 거부합니다."
+
+#: merge-recursive.c:1951
+#, c-format
+msgid ""
+"CONFLICT (directory rename split): Unclear where to place %s because "
+"directory %s was renamed to multiple other directories, with no destination "
+"getting a majority of the files."
+msgstr ""
+"충돌 (디렉터리 이름 바꾸기 분리): %s 파일을 어디에 놓을지 불분명합니다. %s 디"
+"렉터리가 여러 개의 다른 디렉터리로 이름이 바뀌었고 파일 다수가 들어 있는 대상"
+"이 없기 때문입니다."
+
+#: merge-recursive.c:1983
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
+"implicit directory rename(s) putting the following path(s) there: %s."
+msgstr ""
+"충돌 (묵시적인 디렉터리 이름 바꾸기): %s 위치의 기존 파일/디렉터리가 묵시적으"
+"로 디렉터리 이름이 바뀌어 다음 경로가 들어갈 예정입니다: %s."
+
+#: merge-recursive.c:1993
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
+"implicit directory renames tried to put these paths there: %s"
+msgstr ""
+"충돌 (묵시적인 디렉터리 이름 바꾸기): 여러 개의 경로를 %s에 대응할 수 없습니"
+"다. 묵시적인 디렉터리 이름 바꾸기 기능은 이들 경로를 해당 위치에 놓도록 시도"
+"합니다: %s"
+
+#: merge-recursive.c:2085
+#, c-format
+msgid ""
+"CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
+">%s in %s"
+msgstr ""
+"충돌 (rename/rename): 이름 바꾸기 %s->%s (위치 %s). 이름 바꾸기 %s->%s (위치 "
+"%s)"
+
+#: merge-recursive.c:2330
+#, c-format
+msgid ""
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
+msgstr ""
+"경고: %s -> %s 이름 바꾸기 (대상 %s) 적용 거부. %s 자체가 이미 이름이 바뀌었"
+"습니다."
+
+#: merge-recursive.c:2736
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s. %s added in %s"
-msgstr "충돌! (rename/add): 이름 바꾸기 %s->%s (위치 %s). %s 추가 (위치 %s)"
+msgstr "충돌 (rename/add): 이름 바꾸기 %s->%s (위치 %s). %s 추가 (위치 %s)"
 
-#: merge-recursive.c:1597
+#: merge-recursive.c:2751
 #, c-format
 msgid "Adding merged %s"
 msgstr "병합된 %s을(를) 추가합니다"
 
-#: merge-recursive.c:1604 merge-recursive.c:1834
+#: merge-recursive.c:2758 merge-recursive.c:3089
 #, c-format
 msgid "Adding as %s instead"
 msgstr "대신 %s(으)로 추가합니다"
 
-#: merge-recursive.c:1661
+#: merge-recursive.c:2914
 #, c-format
 msgid "cannot read object %s"
 msgstr "%s 오브젝트를 읽을 수 없습니다"
 
-#: merge-recursive.c:1664
+#: merge-recursive.c:2917
 #, c-format
 msgid "object %s is not a blob"
 msgstr "%s 오브젝트는 블롭이 아닙니다"
 
-#: merge-recursive.c:1733
+#: merge-recursive.c:2986
 msgid "modify"
 msgstr "수정"
 
-#: merge-recursive.c:1733
+#: merge-recursive.c:2986
 msgid "modified"
 msgstr "수정됨"
 
-#: merge-recursive.c:1743
+#: merge-recursive.c:2997
 msgid "content"
 msgstr "내용"
 
-#: merge-recursive.c:1750
+#: merge-recursive.c:3004
 msgid "add/add"
 msgstr "추가/추가"
 
-#: merge-recursive.c:1786
+#: merge-recursive.c:3046
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "건너뛰기: %s (기존과 같게 병합)"
 
-#: merge-recursive.c:1800
-#, c-format
-msgid "Auto-merging %s"
-msgstr "자동 병합: %s"
-
-#: merge-recursive.c:1804 git-submodule.sh:879
+#: merge-recursive.c:3055 git-submodule.sh:895
 msgid "submodule"
 msgstr "하위 모듈"
 
-#: merge-recursive.c:1805
+#: merge-recursive.c:3056
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
-msgstr "충돌! (%s): %s에 병합 충돌"
+msgstr "충돌 (%s): %s에 병합 충돌"
 
-#: merge-recursive.c:1899
+#: merge-recursive.c:3178
 #, c-format
 msgid "Removing %s"
 msgstr "제거: %s"
 
-#: merge-recursive.c:1925
+#: merge-recursive.c:3204
 msgid "file/directory"
 msgstr "파일/디렉터리"
 
-#: merge-recursive.c:1931
+#: merge-recursive.c:3210
 msgid "directory/file"
 msgstr "디렉터리/파일"
 
-#: merge-recursive.c:1938
+#: merge-recursive.c:3217
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
 msgstr ""
-"충돌! (%s): 이름이 %s인 디렉터리가 %s에 있습니다. %s을(를) %s(으)로 추가합니"
-"다"
+"충돌 (%s): 이름이 %s인 디렉터리가 %s에 있습니다. %s을(를) %s(으)로 추가합니다"
 
-#: merge-recursive.c:1947
+#: merge-recursive.c:3226
 #, c-format
 msgid "Adding %s"
 msgstr "추가: %s"
 
-#: merge-recursive.c:1987
+#: merge-recursive.c:3267
 #, c-format
 msgid "Dirty index: cannot merge (dirty: %s)"
 msgstr "변경된 인덱스: 병합할 수 없습니다 (dirty: %s)"
 
-#: merge-recursive.c:1991
+#: merge-recursive.c:3271
 msgid "Already up to date!"
 msgstr "이미 업데이트 상태입니다!"
 
-#: merge-recursive.c:2000
+#: merge-recursive.c:3280
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr "%s 및 %s 트리의 병합이 실패했습니다"
 
-#: merge-recursive.c:2097
+#: merge-recursive.c:3379
 msgid "Merging:"
 msgstr "병합:"
 
-#: merge-recursive.c:2110
+#: merge-recursive.c:3392
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] "과거의 공통 커밋 %u개 발견:"
 
-#: merge-recursive.c:2149
+#: merge-recursive.c:3431
 msgid "merge returned no commit"
 msgstr "병합 결과에 커밋이 없습니다"
 
-#: merge-recursive.c:2212
+#: merge-recursive.c:3495
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "'%s' 오브젝트를 파싱할 수 없습니다"
 
-#: merge-recursive.c:2228 builtin/merge.c:657 builtin/merge.c:816
+#: merge-recursive.c:3511 builtin/merge.c:659 builtin/merge.c:816
 msgid "Unable to write index."
 msgstr "인덱스를 쓸 수 없습니다."
 
@@ -2407,30 +2690,30 @@ msgstr "%s에서 노트를 다시 쓰기를 거부합니다 (refs/notes/ 밖임)
 msgid "Bad %s value: '%s'"
 msgstr "잘못된 %s 값: '%s'"
 
-#: object.c:239
+#: object.c:242
 #, c-format
 msgid "unable to parse object: %s"
 msgstr "오브젝트를 파싱할 수 없습니다: %s"
 
-#: packfile.c:561
+#: packfile.c:563
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "오프셋이 묶음 파일 앞입니다 (망가진 .idx?)"
 
-#: packfile.c:1694
+#: packfile.c:1742
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr "오프셋이 %s의 묶음 인덱스 시작보다 앞입니다 (망가진 인덱스?)"
 
-#: packfile.c:1698
+#: packfile.c:1746
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr "오프셋이 %s의 묶음 인덱스 끝보다 뒤입니다 (망가진 인덱스?)"
 
-#: parse-options.c:619
+#: parse-options.c:621
 msgid "..."
 msgstr "..."
 
-#: parse-options.c:638
+#: parse-options.c:640
 #, c-format
 msgid "usage: %s"
 msgstr "사용법: %s"
@@ -2438,26 +2721,31 @@ msgstr "사용법: %s"
 #. TRANSLATORS: the colon here should align with the
 #. one in "usage: %s" translation.
 #.
-#: parse-options.c:644
+#: parse-options.c:646
 #, c-format
 msgid "   or: %s"
 msgstr "  또는: %s"
 
-#: parse-options.c:647
+#: parse-options.c:649
 #, c-format
 msgid "    %s"
 msgstr "    %s"
 
-#: parse-options.c:686
+#: parse-options.c:688
 msgid "-NUM"
 msgstr "-NUM"
 
-#: parse-options-cb.c:108
+#: parse-options-cb.c:44
+#, c-format
+msgid "malformed expiration date '%s'"
+msgstr "형식이 잘못된 만료 시각: '%s'"
+
+#: parse-options-cb.c:112
 #, c-format
 msgid "malformed object name '%s'"
 msgstr "잘못된 형식의 오브젝트 이름 '%s'"
 
-#: path.c:891
+#: path.c:892
 #, c-format
 msgid "Could not make %s writable by group"
 msgstr "%s을(를) 그룹에서 쓰기 가능하도록 만들 수 없습니다"
@@ -2538,7 +2826,7 @@ msgstr "'%s' 경로명세는 심볼릭 링크 아래에 있습니다"
 msgid "unable to parse --pretty format"
 msgstr "--pretty 형식을 파싱할 수 없습니다"
 
-#: read-cache.c:1473
+#: read-cache.c:1500
 #, c-format
 msgid ""
 "index.version set, but the value is invalid.\n"
@@ -2547,7 +2835,7 @@ msgstr ""
 "index.version이 설정되었지만, 이 값이 잘못되었습니다.\n"
 "%i 버전을 사용합니다"
 
-#: read-cache.c:1483
+#: read-cache.c:1510
 #, c-format
 msgid ""
 "GIT_INDEX_VERSION set, but the value is invalid.\n"
@@ -2556,52 +2844,53 @@ msgstr ""
 "GIT_INDEX_VERSION이 설정되었지만, 이 값이 잘못되었습니다.\n"
 "%i 버전을 사용합니다"
 
-#: read-cache.c:2375 sequencer.c:3248 wrapper.c:658 builtin/merge.c:1049
+#: read-cache.c:2404 sequencer.c:4338 wrapper.c:658 builtin/merge.c:1048
 #, c-format
 msgid "could not close '%s'"
 msgstr "'%s'을(를) 닫을 수 없습니다"
 
-#: read-cache.c:2448 sequencer.c:1900 sequencer.c:2627
+#: read-cache.c:2477 sequencer.c:2102 sequencer.c:3234
 #, c-format
 msgid "could not stat '%s'"
 msgstr "'%s'을(를) stat()할 수 없습니다"
 
-#: read-cache.c:2461
+#: read-cache.c:2490
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr "git 디렉터리를 열 수 없습니다: %s"
 
-#: read-cache.c:2473
+#: read-cache.c:2502
 #, c-format
 msgid "unable to unlink: %s"
 msgstr "링크 해제할 수 없습니다: %s"
 
-#: refs.c:706
+#: refs.c:732 sequencer.c:4334 sequencer.c:4393 wrapper.c:225 wrapper.c:395
+#: builtin/am.c:779
 #, c-format
-msgid "Could not open '%s' for writing"
+msgid "could not open '%s' for writing"
 msgstr "'%s'을(를) 쓰기용으로 열 수 없습니다"
 
-#: refs.c:1850
+#: refs.c:1880
 msgid "ref updates forbidden inside quarantine environment"
 msgstr "격리된 환경에서 레퍼런스 업데이트가 금지됩니다"
 
-#: refs/files-backend.c:1189
+#: refs/files-backend.c:1191
 #, c-format
 msgid "could not remove reference %s"
 msgstr "%s 레퍼런스를 제거할 수 없습니다"
 
-#: refs/files-backend.c:1203 refs/packed-backend.c:1528
-#: refs/packed-backend.c:1538
+#: refs/files-backend.c:1205 refs/packed-backend.c:1531
+#: refs/packed-backend.c:1541
 #, c-format
 msgid "could not delete reference %s: %s"
 msgstr "%s 레퍼런스를 삭제할 수 없습니다: %s"
 
-#: refs/files-backend.c:1206 refs/packed-backend.c:1541
+#: refs/files-backend.c:1208 refs/packed-backend.c:1544
 #, c-format
 msgid "could not delete references: %s"
 msgstr "레퍼런스를 삭제할 수 없습니다: %s"
 
-#: ref-filter.c:35 wt-status.c:1842
+#: ref-filter.c:35 wt-status.c:1850
 msgid "gone"
 msgstr "없음"
 
@@ -2620,157 +2909,162 @@ msgstr "%d개 뒤"
 msgid "ahead %d, behind %d"
 msgstr "%d개 앞, %d개 뒤"
 
-#: ref-filter.c:107
+#: ref-filter.c:121
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr "예상한 형식: %%(color:<색>)"
 
-#: ref-filter.c:109
+#: ref-filter.c:123
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr "인식할 수 없는 색: %%(color:%s)"
 
-#: ref-filter.c:129
+#: ref-filter.c:145
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr "정수 값이 와야 합니다 refname:lstrip=%s"
 
-#: ref-filter.c:133
+#: ref-filter.c:149
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr "정수 값이 와야 합니다 refname:rstrip=%s"
 
-#: ref-filter.c:135
+#: ref-filter.c:151
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr "인식할 수 없는 %%(%s) 인자: %s"
 
-#: ref-filter.c:184
+#: ref-filter.c:206
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr "%%(body)에 인자를 받지 않습니다"
 
-#: ref-filter.c:191
+#: ref-filter.c:215
 #, c-format
 msgid "%%(subject) does not take arguments"
 msgstr "%%(subject)에 인자를 받지 않습니다"
 
-#: ref-filter.c:209
+#: ref-filter.c:235
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr "알 수 없는 %%(trailers) 옵션 인자: %s"
 
-#: ref-filter.c:232
+#: ref-filter.c:264
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr "'contents:lines=%s'에서 0보다 큰 값이 와야 합니다"
 
-#: ref-filter.c:234
+#: ref-filter.c:266
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr "알 수 없는 %%(contents) 인자: %s"
 
-#: ref-filter.c:247
+#: ref-filter.c:281
 #, c-format
 msgid "positive value expected objectname:short=%s"
 msgstr "'contents:short=%s'에서 0보다 큰 값이 와야 합니다"
 
-#: ref-filter.c:251
+#: ref-filter.c:285
 #, c-format
 msgid "unrecognized %%(objectname) argument: %s"
 msgstr "알 수 없는 %%(objectname) 인자: %s"
 
-#: ref-filter.c:278
+#: ref-filter.c:315
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr "예상한 형식: %%(align:<너비>,<위치>)"
 
-#: ref-filter.c:290
+#: ref-filter.c:327
 #, c-format
 msgid "unrecognized position:%s"
 msgstr "인식할 수 없는 위치:%s"
 
-#: ref-filter.c:294
+#: ref-filter.c:334
 #, c-format
 msgid "unrecognized width:%s"
 msgstr "인식할 수 없는 너비:%s"
 
-#: ref-filter.c:300
+#: ref-filter.c:343
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr "인식할 수 없는 %%(align) 인자:%s"
 
-#: ref-filter.c:304
+#: ref-filter.c:351
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr "%%(align) 아톰에 너비가 0보다 커야 합니다"
 
-#: ref-filter.c:319
+#: ref-filter.c:369
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
 msgstr "인식할 수 없는 %%(if) 인자: %s"
 
-#: ref-filter.c:409
+#: ref-filter.c:464
 #, c-format
 msgid "malformed field name: %.*s"
 msgstr "잘못된 형식의 필드 이름: %.*s"
 
-#: ref-filter.c:435
+#: ref-filter.c:491
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr "알 수 없는 필드 이름: %.*s"
 
-#: ref-filter.c:547
+#: ref-filter.c:608
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr "형식: %%(if) 아톰이 %%(then) 아톰 없이 사용되었습니다"
 
-#: ref-filter.c:607
+#: ref-filter.c:671
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr "형식: %%(then) 아톰이 %%(if) 아톰 없이 사용되었습니다"
 
-#: ref-filter.c:609
+#: ref-filter.c:673
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr "형식: %%(then) 아톰이 여러번 사용되었습니다"
 
-#: ref-filter.c:611
+#: ref-filter.c:675
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr "형식: %%(then) 아톰이 %%(else) 뒤에 사용되었습니다"
 
-#: ref-filter.c:637
+#: ref-filter.c:703
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr "형식: %%(else) 아톰이 %%(if) 아톰 없이 사용되었습니다"
 
-#: ref-filter.c:639
+#: ref-filter.c:705
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr "형식: %%(else) 아톰이 %%(then) 아톰 없이 사용되었습니다"
 
-#: ref-filter.c:641
+#: ref-filter.c:707
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr "형식: %%(else) 아톰이 여러번 사용되었습니다"
 
-#: ref-filter.c:654
+#: ref-filter.c:722
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr "형식: %%(end) 아톰이 대응되는 아톰 없이 사용되었습니다"
 
-#: ref-filter.c:709
+#: ref-filter.c:779
 #, c-format
 msgid "malformed format string %s"
 msgstr "잘못된 형식의 문자열 %s"
 
-#: ref-filter.c:1313
+#: ref-filter.c:1387
 #, c-format
 msgid "(no branch, rebasing %s)"
 msgstr "(브랜치 없음, %s 리베이스)"
 
-#: ref-filter.c:1316
+#: ref-filter.c:1390
+#, c-format
+msgid "(no branch, rebasing detached HEAD %s)"
+msgstr "(브랜치 없음, 분리된 HEAD %s 리베이스)"
+
+#: ref-filter.c:1393
 #, c-format
 msgid "(no branch, bisect started on %s)"
 msgstr "(브랜치 없음, 이등분 %s에서 시작)"
@@ -2778,7 +3072,7 @@ msgstr "(브랜치 없음, 이등분 %s에서 시작)"
 #. TRANSLATORS: make sure this matches "HEAD
 #. detached at " in wt-status.c
 #.
-#: ref-filter.c:1324
+#: ref-filter.c:1401
 #, c-format
 msgid "(HEAD detached at %s)"
 msgstr "(HEAD %s 위치에서 분리됨)"
@@ -2786,157 +3080,157 @@ msgstr "(HEAD %s 위치에서 분리됨)"
 #. TRANSLATORS: make sure this matches "HEAD
 #. detached from " in wt-status.c
 #.
-#: ref-filter.c:1331
+#: ref-filter.c:1408
 #, c-format
 msgid "(HEAD detached from %s)"
 msgstr "(HEAD %s(으)로부터 분리됨)"
 
-#: ref-filter.c:1335
+#: ref-filter.c:1412
 msgid "(no branch)"
 msgstr "(브랜치 없음)"
 
-#: ref-filter.c:1364
+#: ref-filter.c:1442
 #, c-format
 msgid "missing object %s for %s"
 msgstr "없는 오브젝트 %s, %s에 대해"
 
-#: ref-filter.c:1367
+#: ref-filter.c:1445
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr "%s에 parse_object_buffer 실패 (%s에 대해)"
 
-#: ref-filter.c:1819
+#: ref-filter.c:1902
 #, c-format
 msgid "malformed object at '%s'"
 msgstr "'%s'에 잘못된 형식의 오브젝트"
 
-#: ref-filter.c:1886
+#: ref-filter.c:1984
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr "망가진 이름 %s에 레퍼런스를 무시합니다"
 
-#: ref-filter.c:1891
+#: ref-filter.c:1989
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "망가진 레퍼런스 %s 무시"
 
-#: ref-filter.c:2152
+#: ref-filter.c:2261
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr "형식: %%(end) 아톰이 없습니다"
 
-#: ref-filter.c:2246
+#: ref-filter.c:2365
 #, c-format
 msgid "malformed object name %s"
 msgstr "잘못된 형식의 오브젝트 이름 %s"
 
-#: remote.c:795
+#: remote.c:605
 #, c-format
 msgid "Cannot fetch both %s and %s to %s"
 msgstr "%s 및 %s을(를) 모두 %s에 가져올 수 없습니다"
 
-#: remote.c:799
+#: remote.c:609
 #, c-format
 msgid "%s usually tracks %s, not %s"
 msgstr "%s은(는) 보통 %s을(를) 추적하고, %s을(를) 추적하지 않습니다"
 
-#: remote.c:803
+#: remote.c:613
 #, c-format
 msgid "%s tracks both %s and %s"
 msgstr "%s은(는) %s 및 %s 모두 추적합니다"
 
-#: remote.c:811
+#: remote.c:621
 msgid "Internal error"
 msgstr "내부 오류"
 
-#: remote.c:1726 remote.c:1828
+#: remote.c:1534 remote.c:1635
 msgid "HEAD does not point to a branch"
 msgstr "HEAD가 브랜치를 가리키지 않습니다"
 
-#: remote.c:1735
+#: remote.c:1543
 #, c-format
 msgid "no such branch: '%s'"
 msgstr "그런 브랜치가 없습니다: '%s'"
 
-#: remote.c:1738
+#: remote.c:1546
 #, c-format
 msgid "no upstream configured for branch '%s'"
 msgstr "'%s' 브랜치에 대해 업스트림을 설정하지 않았습니다"
 
-#: remote.c:1744
+#: remote.c:1552
 #, c-format
 msgid "upstream branch '%s' not stored as a remote-tracking branch"
 msgstr "업스트림 '%s' 브랜치가 리모트 추적 브랜치로 저장되지 않았습니다"
 
-#: remote.c:1759
+#: remote.c:1567
 #, c-format
 msgid "push destination '%s' on remote '%s' has no local tracking branch"
 msgstr "리모트 '%2$s'의 푸시 대상 '%1$s'에 로컬 추적 브랜치가 없습니다"
 
-#: remote.c:1771
+#: remote.c:1579
 #, c-format
 msgid "branch '%s' has no remote for pushing"
 msgstr "'%s' 브랜치에 푸시 리모트가 없습니다"
 
-#: remote.c:1782
+#: remote.c:1589
 #, c-format
 msgid "push refspecs for '%s' do not include '%s'"
 msgstr "'%s'에 대한 푸시 레퍼런스명세에 '%s'이(가) 들어 있지 않습니다"
 
-#: remote.c:1795
+#: remote.c:1602
 msgid "push has no destination (push.default is 'nothing')"
 msgstr "푸시의 대상이 없습니다 (push.default가 'nothing'입니다)"
 
-#: remote.c:1817
+#: remote.c:1624
 msgid "cannot resolve 'simple' push to a single destination"
 msgstr "하나의 대상에 대해 'simple' 푸시를 처리할 수 없습니다"
 
-#: remote.c:2132
+#: remote.c:1939
 #, c-format
 msgid "Your branch is based on '%s', but the upstream is gone.\n"
 msgstr "현재 브랜치가 '%s' 기반이지만, 업스트림이 없어졌습니다.\n"
 
-#: remote.c:2136
+#: remote.c:1943
 msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
 msgstr "  (바로잡으려면 \"git branch --unset-upstream\"을 사용하십시오)\n"
 
-#: remote.c:2139
+#: remote.c:1946
 #, c-format
 msgid "Your branch is up to date with '%s'.\n"
 msgstr "브랜치가 '%s'에 맞게 업데이트된 상태입니다.\n"
 
-#: remote.c:2143
+#: remote.c:1950
 #, c-format
 msgid "Your branch and '%s' refer to different commits.\n"
 msgstr "현재 브랜치와 '%s'이(가) 다른 커밋을 레퍼런스합니다.\n"
 
-#: remote.c:2146
+#: remote.c:1953
 #, c-format
 msgid "  (use \"%s\" for details)\n"
 msgstr " (자세한 정보를 위해 \"%s\"을(를) 사용하십시오)\n"
 
-#: remote.c:2150
+#: remote.c:1957
 #, c-format
 msgid "Your branch is ahead of '%s' by %d commit.\n"
 msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
 msgstr[0] "브랜치가 '%s'보다 %d개 커밋만큼 앞에 있습니다.\n"
 
-#: remote.c:2156
+#: remote.c:1963
 msgid "  (use \"git push\" to publish your local commits)\n"
 msgstr "  (로컬에 있는 커밋을 제출하려면 \"git push\"를 사용하십시오)\n"
 
-#: remote.c:2159
+#: remote.c:1966
 #, c-format
 msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
 msgid_plural ""
 "Your branch is behind '%s' by %d commits, and can be fast-forwarded.\n"
 msgstr[0] "브랜치가 '%s'보다 %d개 커밋 뒤에 있고, 앞으로 돌릴 수 있습니다.\n"
 
-#: remote.c:2167
+#: remote.c:1974
 msgid "  (use \"git pull\" to update your local branch)\n"
 msgstr "  (로컬 브랜치를 업데이트하려면 \"git pull\"을 사용하십시오)\n"
 
-#: remote.c:2170
+#: remote.c:1977
 #, c-format
 msgid ""
 "Your branch and '%s' have diverged,\n"
@@ -2948,29 +3242,29 @@ msgstr[0] ""
 "현재 브랜치와 '%s'이(가) 갈라졌습니다,\n"
 "다른 커밋이 각각 %d개와 %d개 있습니다.\n"
 
-#: remote.c:2180
+#: remote.c:1987
 msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
 msgstr ""
 "  (리모트의 브랜치를 현재 브랜치로 병합하려면 \"git pull\"을 사용하십시오)\n"
 
-#: revision.c:2277
+#: revision.c:2289
 msgid "your current branch appears to be broken"
 msgstr "현재 브랜치가 망가진 것처럼 보입니다"
 
-#: revision.c:2280
+#: revision.c:2292
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr "현재 '%s' 브랜치에 아직 아무 커밋도 없습니다"
 
-#: revision.c:2477
+#: revision.c:2489
 msgid "--first-parent is incompatible with --bisect"
 msgstr "--first-parent 옵션은 --bisect 옵션과 호환되지 않습니다"
 
-#: run-command.c:731
+#: run-command.c:728
 msgid "open /dev/null failed"
 msgstr "/dev/null 열기 실패"
 
-#: run-command.c:1274
+#: run-command.c:1271
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
@@ -3016,29 +3310,34 @@ msgstr "받는 쪽에서 --atomic 푸시를 지원하지 않습니다"
 msgid "the receiving end does not support push options"
 msgstr "받는 쪽에서 푸시 옵션을 지원하지 않습니다"
 
-#: sequencer.c:158
+#: sequencer.c:175
 #, c-format
 msgid "invalid commit message cleanup mode '%s'"
 msgstr "잘못된 커밋 메시지 정리 모드 '%s'"
 
-#: sequencer.c:267
+#: sequencer.c:275
+#, c-format
+msgid "could not delete '%s'"
+msgstr "'%s'을(를) 삭제할 수 없습니다"
+
+#: sequencer.c:301
 msgid "revert"
 msgstr "revert"
 
-#: sequencer.c:269
+#: sequencer.c:303
 msgid "cherry-pick"
 msgstr "cherry-pick"
 
-#: sequencer.c:271
+#: sequencer.c:305
 msgid "rebase -i"
 msgstr "rebase -i"
 
-#: sequencer.c:273
+#: sequencer.c:307
 #, c-format
 msgid "Unknown action: %d"
 msgstr "알 수 없는 동작: %d"
 
-#: sequencer.c:330
+#: sequencer.c:364
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'"
@@ -3046,7 +3345,7 @@ msgstr ""
 "이 충돌을 해결한 뒤에, 바로잡은 경로를\n"
 "'git add <경로>' 또는 'git rm <경로>'로 표시하십시오"
 
-#: sequencer.c:333
+#: sequencer.c:367
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'\n"
@@ -3056,43 +3355,45 @@ msgstr ""
 "'git add <경로>' 또는 'git rm <경로>'로 표시하십시오.\n"
 "그리고 결과물을 'git commit'으로 커밋하십시오"
 
-#: sequencer.c:346 sequencer.c:2245
+#: sequencer.c:380 sequencer.c:2468
 #, c-format
 msgid "could not lock '%s'"
 msgstr "'%s'을(를) 잠글 수 없습니다"
 
-#: sequencer.c:349 sequencer.c:2124 sequencer.c:2250 sequencer.c:2264
-#: sequencer.c:3246 sequencer.c:3310 wrapper.c:656
+#: sequencer.c:382 sequencer.c:2346 sequencer.c:2472 sequencer.c:2486
+#: sequencer.c:2694 sequencer.c:4336 sequencer.c:4399 wrapper.c:656
 #, c-format
 msgid "could not write to '%s'"
 msgstr "'%s'에 쓸 수 없습니다"
 
-#: sequencer.c:353
+#: sequencer.c:387
 #, c-format
 msgid "could not write eol to '%s'"
 msgstr "'%s'에 줄바꿈을 쓸 수 없습니다"
 
-#: sequencer.c:356 sequencer.c:2128 sequencer.c:2252
+#: sequencer.c:392 sequencer.c:2351 sequencer.c:2474 sequencer.c:2488
+#: sequencer.c:2702
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr "'%s' 마치는데 실패했습니다"
 
-#: sequencer.c:379 sequencer.c:1340 sequencer.c:2148 builtin/am.c:259
-#: builtin/commit.c:722 builtin/merge.c:1047
+#: sequencer.c:415 sequencer.c:804 sequencer.c:1493 sequencer.c:2371
+#: sequencer.c:2684 sequencer.c:2788 builtin/am.c:259 builtin/commit.c:727
+#: builtin/merge.c:1046
 #, c-format
 msgid "could not read '%s'"
 msgstr "'%s'에서 읽을 수 없습니다"
 
-#: sequencer.c:405
+#: sequencer.c:441
 #, c-format
 msgid "your local changes would be overwritten by %s."
 msgstr "로컬 변경 사항을 %s 때문에 덮어 쓰게 됩니다."
 
-#: sequencer.c:409
+#: sequencer.c:445
 msgid "commit your changes or stash them to proceed."
 msgstr "변경 사항을 커밋하거나 스태시한 다음 계속하십시오."
 
-#: sequencer.c:438
+#: sequencer.c:474
 #, c-format
 msgid "%s: fast-forward"
 msgstr "%s: 정방향 진행"
@@ -3100,20 +3401,20 @@ msgstr "%s: 정방향 진행"
 #. TRANSLATORS: %s will be "revert", "cherry-pick" or
 #. "rebase -i".
 #.
-#: sequencer.c:526
+#: sequencer.c:563
 #, c-format
 msgid "%s: Unable to write new index file"
 msgstr "%s: 새 인덱스 파일을 쓸 수 없습니다"
 
-#: sequencer.c:542
-msgid "could not resolve HEAD commit"
-msgstr "HEAD 커밋을 찾을 수 없습니다"
-
-#: sequencer.c:562
+#: sequencer.c:579
 msgid "unable to update cache tree"
 msgstr "캐시 트리를 업데이트할 수 없습니다"
 
-#: sequencer.c:658
+#: sequencer.c:592
+msgid "could not resolve HEAD commit"
+msgstr "HEAD 커밋을 찾을 수 없습니다"
+
+#: sequencer.c:749
 #, c-format
 msgid ""
 "you have staged changes in your working tree\n"
@@ -3143,11 +3444,15 @@ msgstr ""
 "\n"
 "  git rebase --continue\n"
 
-#: sequencer.c:915
+#: sequencer.c:818
+msgid "writing root commit"
+msgstr "최상위 커밋을 씁니다"
+
+#: sequencer.c:1043
 msgid "'prepare-commit-msg' hook failed"
 msgstr "'prepare-commit-msg' 후크가 실패했습니다"
 
-#: sequencer.c:922
+#: sequencer.c:1050
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -3174,7 +3479,7 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:935
+#: sequencer.c:1063
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -3199,328 +3504,314 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:975
+#: sequencer.c:1103
 msgid "couldn't look up newly created commit"
 msgstr "새로 만든 커밋을 찾아볼 수 없습니다"
 
-#: sequencer.c:977
+#: sequencer.c:1105
 msgid "could not parse newly created commit"
 msgstr "새로 만든 커밋을 파싱할 수 없습니다"
 
-#: sequencer.c:1023
+#: sequencer.c:1151
 msgid "unable to resolve HEAD after creating commit"
 msgstr "커밋을 만든 후 HEAD를 찾을 수 없습니다"
 
-#: sequencer.c:1025
+#: sequencer.c:1153
 msgid "detached HEAD"
 msgstr "HEAD 분리됨"
 
-#: sequencer.c:1029
+#: sequencer.c:1157
 msgid " (root-commit)"
 msgstr " (최상위-커밋)"
 
-#: sequencer.c:1050
+#: sequencer.c:1178
 msgid "could not parse HEAD"
 msgstr "HEAD를 파싱할 수 없습니다"
 
-#: sequencer.c:1052
+#: sequencer.c:1180
 #, c-format
 msgid "HEAD %s is not a commit!"
 msgstr "HEAD %s은(는) 커밋이 아닙니다!"
 
-#: sequencer.c:1056 builtin/commit.c:1491
+#: sequencer.c:1184 builtin/commit.c:1528
 msgid "could not parse HEAD commit"
 msgstr "HEAD 커밋을 파싱할 수 없습니다"
 
-#: sequencer.c:1107 sequencer.c:1673
+#: sequencer.c:1235 sequencer.c:1832
 msgid "unable to parse commit author"
 msgstr "커밋 작성자를 파싱할 수 없습니다"
 
-#: sequencer.c:1117 builtin/am.c:1630 builtin/merge.c:643
+#: sequencer.c:1245 builtin/am.c:1630 builtin/merge.c:645
 msgid "git write-tree failed to write a tree"
 msgstr "git write-tree가 트리를 쓰는데 실패했습니다"
 
-#: sequencer.c:1134 sequencer.c:1186
+#: sequencer.c:1262 sequencer.c:1317
 #, c-format
 msgid "unable to read commit message from '%s'"
 msgstr " '%s'의 커밋 메시지를 읽을 수 없습니다"
 
-#: sequencer.c:1154 builtin/am.c:1650 builtin/commit.c:1594 builtin/merge.c:826
-#: builtin/merge.c:851
+#: sequencer.c:1284 builtin/am.c:1650 builtin/commit.c:1631 builtin/merge.c:825
+#: builtin/merge.c:850
 msgid "failed to write commit object"
 msgstr "커밋 오브젝트를 쓰는데 실패했습니다"
 
-#: sequencer.c:1213
+#: sequencer.c:1344
 #, c-format
 msgid "could not parse commit %s"
 msgstr "%s 커밋을 파싱할 수 없습니다"
 
-#: sequencer.c:1218
+#: sequencer.c:1349
 #, c-format
 msgid "could not parse parent commit %s"
 msgstr "%s 이전 커밋을 파싱할 수 없습니다"
 
-#: sequencer.c:1347
-#, c-format
-msgid ""
-"unexpected 1st line of squash message:\n"
-"\n"
-"\t%.*s"
-msgstr ""
-"커밋 합치기 메시지의 첫 줄이 예상치 못함:\n"
-"\n"
-"\t%.*s"
-
-#: sequencer.c:1353
-#, c-format
-msgid ""
-"invalid 1st line of squash message:\n"
-"\n"
-"\t%.*s"
-msgstr ""
-"커밋 합치기 메시지의 첫 줄이 잘못됨:\n"
-"\n"
-"\t%.*s"
-
-#: sequencer.c:1359 sequencer.c:1384
+#: sequencer.c:1500 sequencer.c:1525
 #, c-format
 msgid "This is a combination of %d commits."
 msgstr "커밋 %d개가 섞인 결과입니다."
 
-#: sequencer.c:1368 sequencer.c:3265
+#: sequencer.c:1510 sequencer.c:4355
 msgid "need a HEAD to fixup"
 msgstr "바로잡으려면 HEAD가 필요합니다"
 
-#: sequencer.c:1370
+#: sequencer.c:1512 sequencer.c:2729
 msgid "could not read HEAD"
 msgstr "HEAD를 읽을 수 없습니다"
 
-#: sequencer.c:1372
+#: sequencer.c:1514
 msgid "could not read HEAD's commit message"
 msgstr "HEAD의 커밋 메시지를 읽을 수 없습니다"
 
-#: sequencer.c:1378
+#: sequencer.c:1520
 #, c-format
 msgid "cannot write '%s'"
 msgstr "'%s'을(를) 쓸 수 없습니다"
 
-#: sequencer.c:1387 git-rebase--interactive.sh:452
+#: sequencer.c:1527 git-rebase--interactive.sh:457
 msgid "This is the 1st commit message:"
 msgstr "1번째 커밋 메시지입니다:"
 
-#: sequencer.c:1395
+#: sequencer.c:1535
 #, c-format
 msgid "could not read commit message of %s"
 msgstr "%s의 커밋 메시지를 읽을 수 없습니다"
 
-#: sequencer.c:1402
+#: sequencer.c:1542
 #, c-format
 msgid "This is the commit message #%d:"
 msgstr "커밋 메시지 #%d번입니다:"
 
-#: sequencer.c:1407
+#: sequencer.c:1548
 #, c-format
 msgid "The commit message #%d will be skipped:"
 msgstr "커밋 메시지 #%d번을 건너뜁니다:"
 
-#: sequencer.c:1412
+#: sequencer.c:1553
 #, c-format
 msgid "unknown command: %d"
 msgstr "알 수 없는 명령: %d"
 
-#: sequencer.c:1479
+#: sequencer.c:1631
 msgid "your index file is unmerged."
 msgstr "인덱스 파일이 병합되지 않았습니다."
 
-#: sequencer.c:1498
+#: sequencer.c:1638
+msgid "cannot fixup root commit"
+msgstr "최상위 커밋을 바로잡을 수 없습니다"
+
+#: sequencer.c:1657
 #, c-format
 msgid "commit %s is a merge but no -m option was given."
 msgstr "%s 커밋은 병합이지만 -m 옵션이 주어지지 않았습니다."
 
 # FIXME: "parent %d" 번호가 무슨 의미?
-#: sequencer.c:1506
+#: sequencer.c:1665
 #, c-format
 msgid "commit %s does not have parent %d"
 msgstr "%s 커밋에 이전 커밋 %d이(가) 없습니다"
 
-#: sequencer.c:1510
+#: sequencer.c:1669
 #, c-format
 msgid "mainline was specified but commit %s is not a merge."
 msgstr "메인라인을 지정했지만 %s 커밋이 병합 커밋이 아닙니다."
 
-#: sequencer.c:1516
+#: sequencer.c:1675
 #, c-format
 msgid "cannot get commit message for %s"
 msgstr "%s에 대한 커밋 메시지를 가져올 수 없습니다"
 
 #. TRANSLATORS: The first %s will be a "todo" command like
 #. "revert" or "pick", the second %s a SHA1.
-#: sequencer.c:1535
+#: sequencer.c:1694
 #, c-format
 msgid "%s: cannot parse parent commit %s"
 msgstr "%s: %s 이전 커밋을 파싱할 수 없습니다"
 
-#: sequencer.c:1600 sequencer.c:2397
+#: sequencer.c:1759
 #, c-format
 msgid "could not rename '%s' to '%s'"
 msgstr "'%s'에서 '%s'(으)로 이름을 바꿀 수 없습니다"
 
-#: sequencer.c:1654
+#: sequencer.c:1813
 #, c-format
 msgid "could not revert %s... %s"
 msgstr "다음을 되돌릴(revert) 수 없습니다: %s... %s"
 
-#: sequencer.c:1655
+#: sequencer.c:1814
 #, c-format
 msgid "could not apply %s... %s"
 msgstr "다음을 적용할(apply) 수 없습니다: %s... %s"
 
-#: sequencer.c:1702
+#: sequencer.c:1864
 msgid "empty commit set passed"
 msgstr "빈 커밋 모음을 건너 뜁니다"
 
-#: sequencer.c:1712
+#: sequencer.c:1874
 #, c-format
 msgid "git %s: failed to read the index"
 msgstr "git %s: 인덱스 읽기에 실패했습니다"
 
-#: sequencer.c:1718
+#: sequencer.c:1881
 #, c-format
 msgid "git %s: failed to refresh the index"
 msgstr "git %s: 인덱스 새로 고침에 실패했습니다"
 
-#: sequencer.c:1792
+#: sequencer.c:1961
 #, c-format
 msgid "%s does not accept arguments: '%s'"
 msgstr "%s(은)는 인자를 허용하지 않습니다: '%s'"
 
-#: sequencer.c:1801
+#: sequencer.c:1970
 #, c-format
 msgid "missing arguments for %s"
 msgstr "없는 인자, %s에 대해"
 
-#: sequencer.c:1844
+#: sequencer.c:2029
 #, c-format
 msgid "invalid line %d: %.*s"
 msgstr "잘못된 줄 %d: %.*s"
 
-#: sequencer.c:1852
+#: sequencer.c:2037
 #, c-format
 msgid "cannot '%s' without a previous commit"
 msgstr "이전 커밋 없이 '%s' 수행할 수 없습니다"
 
-#: sequencer.c:1883 sequencer.c:3056 sequencer.c:3091
+#: sequencer.c:2085 sequencer.c:4138 sequencer.c:4173
 #, c-format
 msgid "could not read '%s'."
 msgstr "'%s'에서 읽을 수 없습니다."
 
-#: sequencer.c:1906
+#: sequencer.c:2108
 msgid "please fix this using 'git rebase --edit-todo'."
 msgstr "'git rebase --edit-todo' 명령으로 바로잡으십시오."
 
-#: sequencer.c:1908
+#: sequencer.c:2110
 #, c-format
 msgid "unusable instruction sheet: '%s'"
 msgstr "사용 불가능 인스트럭션 시트: '%s'"
 
-#: sequencer.c:1913
+#: sequencer.c:2115
 msgid "no commits parsed."
 msgstr "파싱한 커밋이 없습니다."
 
-#: sequencer.c:1924
+#: sequencer.c:2126
 msgid "cannot cherry-pick during a revert."
 msgstr "되돌리기(revert) 중에 빼오기(cherry-pick)를 할 수 없습니다."
 
-#: sequencer.c:1926
+#: sequencer.c:2128
 msgid "cannot revert during a cherry-pick."
 msgstr "빼오기(cherry-pick) 중에 되돌리기(revert)를 할 수 없습니다."
 
-#: sequencer.c:1993
+#: sequencer.c:2195
 #, c-format
 msgid "invalid key: %s"
 msgstr "잘못된 키: %s"
 
-#: sequencer.c:1996
+#: sequencer.c:2198
 #, c-format
 msgid "invalid value for %s: %s"
 msgstr "%s의 값이 잘못됨: %s"
 
-#: sequencer.c:2062
+#: sequencer.c:2269
+msgid "unusable squash-onto"
+msgstr "불안한 squash-onto"
+
+#: sequencer.c:2285
 #, c-format
 msgid "malformed options sheet: '%s'"
 msgstr "형식이 잘못된 옵션 시트: '%s'"
 
-#: sequencer.c:2100
+#: sequencer.c:2323
 msgid "a cherry-pick or revert is already in progress"
 msgstr "이미 커밋 빼오기(cherry-pick) 또는 되돌리기(revert)가 진행 중입니다"
 
-#: sequencer.c:2101
+#: sequencer.c:2324
 msgid "try \"git cherry-pick (--continue | --quit | --abort)\""
 msgstr "\"git cherry-pick (--continue | --quit | --abort)\" 명령을 해 보십시오"
 
-#: sequencer.c:2104
+#: sequencer.c:2327
 #, c-format
 msgid "could not create sequencer directory '%s'"
 msgstr "'%s' 시퀀서 디렉터리를 만들 수 없습니다"
 
-#: sequencer.c:2118
+#: sequencer.c:2341
 msgid "could not lock HEAD"
 msgstr "HEAD를 잠글 수 없습니다"
 
-#: sequencer.c:2173 sequencer.c:2761
+#: sequencer.c:2396 sequencer.c:3403
 msgid "no cherry-pick or revert in progress"
 msgstr "빼오기(cherry-pick) 또는 되돌리기(revert)가 진행 중이지 않습니다"
 
-#: sequencer.c:2175
+#: sequencer.c:2398
 msgid "cannot resolve HEAD"
 msgstr "HEAD를 구해 올 수 없습니다"
 
-#: sequencer.c:2177 sequencer.c:2212
+#: sequencer.c:2400 sequencer.c:2435
 msgid "cannot abort from a branch yet to be born"
 msgstr "새로 만들고 있는 브랜치에서 중지할 수 없습니다"
 
-#: sequencer.c:2198 builtin/grep.c:720
+#: sequencer.c:2421 builtin/grep.c:720
 #, c-format
 msgid "cannot open '%s'"
 msgstr "'%s'을(를) 열 수 없습니다"
 
-#: sequencer.c:2200
+#: sequencer.c:2423
 #, c-format
 msgid "cannot read '%s': %s"
 msgstr "'%s'을(를) 읽을 수 없습니다: %s"
 
-#: sequencer.c:2201
+#: sequencer.c:2424
 msgid "unexpected end of file"
 msgstr "예상치 못하게 파일이 끝났습니다"
 
-#: sequencer.c:2207
+#: sequencer.c:2430
 #, c-format
 msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
 msgstr "빼오기 전에 저장한 HEAD 파일이('%s') 손상되었습니다"
 
-#: sequencer.c:2218
+#: sequencer.c:2441
 msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
 msgstr "HEAD를 옮긴 것 같습니다. 되돌리지 않습니다. HEAD를 확인하십시오!"
 
-#: sequencer.c:2324 sequencer.c:2679
+#: sequencer.c:2545 sequencer.c:3321
 #, c-format
 msgid "could not update %s"
 msgstr "%s을(를) 업데이트할 수 없습니다"
 
-#: sequencer.c:2362 sequencer.c:2659
+#: sequencer.c:2583 sequencer.c:3301
 msgid "cannot read HEAD"
 msgstr "HEAD를 읽을 수 없습니다"
 
-#: sequencer.c:2402 builtin/difftool.c:639
+#: sequencer.c:2618 sequencer.c:2622 builtin/difftool.c:639
 #, c-format
 msgid "could not copy '%s' to '%s'"
 msgstr "'%s'에서 '%s'(으)로 복사할 수 없습니다"
 
-#: sequencer.c:2421
+#: sequencer.c:2641
 msgid "could not read index"
 msgstr "인덱스를 읽을 수 없습니다"
 
-#: sequencer.c:2426
+#: sequencer.c:2646
 #, c-format
 msgid ""
 "execution failed: %s\n"
@@ -3535,11 +3826,11 @@ msgstr ""
 "  git rebase --continue\n"
 "\n"
 
-#: sequencer.c:2432
+#: sequencer.c:2652
 msgid "and made changes to the index and/or the working tree\n"
 msgstr "그리고 인덱스 그리고/또는 작업 폴더에 변경 사항이 있습니다\n"
 
-#: sequencer.c:2438
+#: sequencer.c:2658
 #, c-format
 msgid ""
 "execution succeeded: %s\n"
@@ -3556,17 +3847,62 @@ msgstr ""
 "  git rebase --continue\n"
 "\n"
 
-#: sequencer.c:2497
+#: sequencer.c:2771
+msgid "writing fake root commit"
+msgstr "가짜 최상위 커밋을 씁니다"
+
+#: sequencer.c:2776
+msgid "writing squash-onto"
+msgstr "squash-onto를 씁니다"
+
+#: sequencer.c:2811
+#, c-format
+msgid "failed to find tree of %s"
+msgstr "%s의 트리를 찾는데 실패했습니다"
+
+#: sequencer.c:2829
+msgid "could not write index"
+msgstr "인덱스를 쓸 수 없습니다"
+
+#: sequencer.c:2861
+msgid "cannot merge without a current revision"
+msgstr "현재 리비전 없이 병합할 수 없습니다"
+
+#: sequencer.c:2884
+#, c-format
+msgid "could not resolve '%s'"
+msgstr "'%s' 해결할 수 없습니다"
+
+#: sequencer.c:2906
+#, c-format
+msgid "could not get commit message of '%s'"
+msgstr "'%s'의 커밋 메시지를 읽을 수 없습니다"
+
+#: sequencer.c:2916 sequencer.c:2941
+#, c-format
+msgid "could not write '%s'"
+msgstr "'%s'에 쓸 수 없습니다"
+
+#: sequencer.c:3005
+#, c-format
+msgid "could not even attempt to merge '%.*s'"
+msgstr "'%.*s' 병합을 시도도 할 수 없습니다"
+
+#: sequencer.c:3021
+msgid "merge: Unable to write new index file"
+msgstr "병합: 새 인덱스 파일을 쓸 수 없습니다"
+
+#: sequencer.c:3088
 #, c-format
 msgid "Applied autostash.\n"
 msgstr "자동 스태시 적용.\n"
 
-#: sequencer.c:2509
+#: sequencer.c:3100
 #, c-format
 msgid "cannot store %s"
 msgstr "%s을(를) 저장할 수 없습니다"
 
-#: sequencer.c:2512 git-rebase.sh:178
+#: sequencer.c:3103 git-rebase.sh:188
 #, c-format
 msgid ""
 "Applying autostash resulted in conflicts.\n"
@@ -3577,52 +3913,69 @@ msgstr ""
 "변경 사항은 스태시 안에 안전하게 들어 있습니다.\n"
 "언제든지 \"git stash pop\" 또는 \"git stash drop\"을 실행할 수 있습니다.\n"
 
-#: sequencer.c:2595
+#: sequencer.c:3134
+#, c-format
+msgid ""
+"Could not execute the todo command\n"
+"\n"
+"    %.*s\n"
+"It has been rescheduled; To edit the command before continuing, please\n"
+"edit the todo list first:\n"
+"\n"
+"    git rebase --edit-todo\n"
+"    git rebase --continue\n"
+msgstr ""
+"할 일 목록 명령을 실행할 수 없습니다\n"
+"\n"
+"    %.*s\n"
+"스케줄을 조정합니다. 계속 하기 전에 명령어를 편집하려면, 먼저 다음\n"
+"할 일 목록을 편집하십시오:\n"
+"\n"
+"    git rebase --edit-todo\n"
+"    git rebase --continue\n"
+
+#: sequencer.c:3202
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
 msgstr "%s...  %.*s 위치에서 멈췄습니다\n"
 
-#: sequencer.c:2637
+#: sequencer.c:3264
 #, c-format
 msgid "unknown command %d"
 msgstr "알 수 없는 명령 %d"
 
-#: sequencer.c:2667
+#: sequencer.c:3309
 msgid "could not read orig-head"
 msgstr "orig-head를 읽을 수 없습니다"
 
-#: sequencer.c:2672 sequencer.c:3262
+#: sequencer.c:3314 sequencer.c:4352
 msgid "could not read 'onto'"
 msgstr "'onto'를 읽을 수 없습니다"
 
-#: sequencer.c:2686
+#: sequencer.c:3328
 #, c-format
 msgid "could not update HEAD to %s"
 msgstr "HEAD를 %s 위치로 업데이트할 수 없습니다"
 
-#: sequencer.c:2770
+#: sequencer.c:3414
 msgid "cannot rebase: You have unstaged changes."
 msgstr "리베이스할 수 없습니다: 스테이징하지 않은 변경 사항이 있습니다."
 
-#: sequencer.c:2775
-msgid "could not remove CHERRY_PICK_HEAD"
-msgstr "CHERRY_PICK_HEAD를 제거할 수 없습니다"
-
-#: sequencer.c:2784
+#: sequencer.c:3423
 msgid "cannot amend non-existing commit"
 msgstr "없는 커밋을 수정할 수 없습니다"
 
-#: sequencer.c:2786
+#: sequencer.c:3425
 #, c-format
 msgid "invalid file: '%s'"
 msgstr "잘못된 파일: '%s'"
 
-#: sequencer.c:2788
+#: sequencer.c:3427
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr "잘못된 내용: '%s'"
 
-#: sequencer.c:2791
+#: sequencer.c:3430
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
@@ -3632,45 +3985,54 @@ msgstr ""
 "작업 폴더에 커밋하지 않은 변경 사항이 있습니다. 이 사항을 먼저\n"
 "커밋하고 'git rebase --continue' 명령을 다시 실행하십시오."
 
-#: sequencer.c:2801
+#: sequencer.c:3455 sequencer.c:3493
+#, c-format
+msgid "could not write file: '%s'"
+msgstr "파일을 쓸 수 없습니다: '%s'"
+
+#: sequencer.c:3508
+msgid "could not remove CHERRY_PICK_HEAD"
+msgstr "CHERRY_PICK_HEAD를 제거할 수 없습니다"
+
+#: sequencer.c:3515
 msgid "could not commit staged changes."
 msgstr "스테이징한 변경 사항을 커밋할 수 없습니다."
 
-#: sequencer.c:2881
+#: sequencer.c:3612
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr "%s: %s 커밋을 빼올 수 없습니다"
 
-#: sequencer.c:2885
+#: sequencer.c:3616
 #, c-format
 msgid "%s: bad revision"
 msgstr "%s: 잘못된 리비전"
 
-#: sequencer.c:2918
+#: sequencer.c:3649
 msgid "can't revert as initial commit"
 msgstr "최초의 커밋으로 되돌릴 수 없습니다"
 
-#: sequencer.c:3023
+#: sequencer.c:4098
 msgid "make_script: unhandled options"
 msgstr "make_script: 처리하지 않은 옵션"
 
-#: sequencer.c:3026
+#: sequencer.c:4101
 msgid "make_script: error preparing revisions"
 msgstr "make_script: 리비전 준비 중 오류"
 
-#: sequencer.c:3060 sequencer.c:3095
+#: sequencer.c:4142 sequencer.c:4177
 #, c-format
 msgid "unusable todo list: '%s'"
 msgstr "사용할 수 없는 할 일 목록: %s"
 
-#: sequencer.c:3146
+#: sequencer.c:4236
 #, c-format
 msgid ""
 "unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
 msgstr ""
 "rebase.missingCommitsCheck 옵션에 대해 인식할 수 없는 %s 설정. 무시합니다."
 
-#: sequencer.c:3212
+#: sequencer.c:4302
 #, c-format
 msgid ""
 "Warning: some commits may have been dropped accidentally.\n"
@@ -3679,7 +4041,7 @@ msgstr ""
 "경고: 일부 커밋이 의도치 않게 버려졌을 수도 있습니다.\n"
 "버려진 커밋 (최근에서 과거 순서):\n"
 
-#: sequencer.c:3219
+#: sequencer.c:4309
 #, c-format
 msgid ""
 "To avoid this message, use \"drop\" to explicitly remove a commit.\n"
@@ -3697,7 +4059,7 @@ msgstr ""
 "가능한 동작은: ignore, warn, error\n"
 "\n"
 
-#: sequencer.c:3231
+#: sequencer.c:4321
 #, c-format
 msgid ""
 "You can fix this with 'git rebase --edit-todo' and then run 'git rebase --"
@@ -3708,27 +4070,21 @@ msgstr ""
 "령을 실행합니다.\n"
 "또는 'git rebase --abort' 명령으로 리베이스를 중지할 수도 있습니다.\n"
 
-#: sequencer.c:3244 sequencer.c:3304 wrapper.c:225 wrapper.c:395
-#: builtin/am.c:779
-#, c-format
-msgid "could not open '%s' for writing"
-msgstr "'%s'을(를) 쓰기용으로 열 수 없습니다"
-
-#: sequencer.c:3285
+#: sequencer.c:4375
 #, c-format
 msgid "could not parse commit '%s'"
 msgstr "'%s' 커밋을 파싱할 수 없습니다"
 
-#: sequencer.c:3401
+#: sequencer.c:4490
 msgid "the script was already rearranged."
 msgstr "스크립트를 이미 재구성했습니다."
 
-#: setup.c:122
+#: setup.c:123
 #, c-format
 msgid "'%s' is outside repository"
 msgstr "'%s'은(는) 저장소 밖입니다"
 
-#: setup.c:171
+#: setup.c:172
 #, c-format
 msgid ""
 "%s: no such path in the working tree.\n"
@@ -3737,7 +4093,7 @@ msgstr ""
 "%s: 작업 폴더에 그런 경로가 없습니다.\n"
 "로컬에 없는 경로를 지정하려면 'git <명령> -- <경로>...' 식으로 사용하십시오."
 
-#: setup.c:184
+#: setup.c:185
 #, c-format
 msgid ""
 "ambiguous argument '%s': unknown revision or path not in the working tree.\n"
@@ -3748,12 +4104,12 @@ msgstr ""
 "경로와 리비전을 구분하려면 다음과 같이 '--'를 사용하십시오:\n"
 "'git <명령> [<리비전>...] -- [<파일>...]'"
 
-#: setup.c:233
+#: setup.c:234
 #, c-format
 msgid "option '%s' must come before non-option arguments"
 msgstr "'%s' 옵션은  옵션이 아닌 인자 전에 와야 합니다"
 
-#: setup.c:252
+#: setup.c:253
 #, c-format
 msgid ""
 "ambiguous argument '%s': both revision and filename\n"
@@ -3764,92 +4120,92 @@ msgstr ""
 "경로와 리비전을 구분하려면 다음과 같이 '--'를 사용하십시오:\n"
 "'git <명령> [<리비전>...] -- [<파일>...]'"
 
-#: setup.c:388
+#: setup.c:389
 msgid "unable to set up work tree using invalid config"
 msgstr "잘못된 설정을 사용하여 작업 폴더를 설정할 수 없습니다"
 
-#: setup.c:395
+#: setup.c:393
 msgid "this operation must be run in a work tree"
 msgstr "이 작업은 작업 폴더에서 실행해야 합니다"
 
-#: setup.c:506
+#: setup.c:503
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "깃 저장소 버전 <= %d 버전을 기대하지만, %d 버전이 발견되었습니다"
 
-#: setup.c:514
+#: setup.c:511
 msgid "unknown repository extensions found:"
 msgstr "알 수 없는 저장소 확장이 있습니다:"
 
-#: setup.c:533
+#: setup.c:530
 #, c-format
 msgid "error opening '%s'"
 msgstr "'%s'을(를) 여는데 오류"
 
-#: setup.c:535
+#: setup.c:532
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr ".git 파일이 너무 큽니다: '%s'"
 
-#: setup.c:537
+#: setup.c:534
 #, c-format
 msgid "error reading %s"
 msgstr "%s을(를) 읽는데 오류"
 
-#: setup.c:539
+#: setup.c:536
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "깃파일 형식이 잘못되었습니다: %s"
 
-#: setup.c:541
+#: setup.c:538
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "깃파일에 경로가 없습니다: %s"
 
-#: setup.c:543
+#: setup.c:540
 #, c-format
 msgid "not a git repository: %s"
 msgstr "깃 저장소가 아닙니다: %s"
 
-#: setup.c:642
+#: setup.c:639
 #, c-format
 msgid "'$%s' too big"
 msgstr "'$%s'이(가) 너무 큽니다"
 
-#: setup.c:656
+#: setup.c:653
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "깃 저장소가 아닙니다: '%s'"
 
-#: setup.c:685 setup.c:687 setup.c:718
+#: setup.c:682 setup.c:684 setup.c:715
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "'%s'에 대해 chdir를 할 수 없습니다"
 
-#: setup.c:690 setup.c:746 setup.c:756 setup.c:795 setup.c:803 setup.c:818
+#: setup.c:687 setup.c:743 setup.c:753 setup.c:792 setup.c:800 setup.c:815
 msgid "cannot come back to cwd"
 msgstr "현재 디렉터리로 돌아올 수 없습니다"
 
-#: setup.c:816
+#: setup.c:813
 #, c-format
 msgid "not a git repository (or any of the parent directories): %s"
 msgstr "(현재 폴더 또는 상위 폴더 중 일부가) 깃 저장소가 아닙니다: %s"
 
-#: setup.c:827
+#: setup.c:824
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "'%*s%s%s'에 대해 stat()이 실패했습니다"
 
-#: setup.c:1057
+#: setup.c:1054
 msgid "Unable to read current working directory"
 msgstr "현재 작업 디렉터리를 읽을 수 없습니다"
 
-#: setup.c:1069 setup.c:1075
+#: setup.c:1066 setup.c:1072
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "'%s'에 대해 변경 할 수 없습니다"
 
-#: setup.c:1088
+#: setup.c:1085
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -3860,7 +4216,7 @@ msgstr ""
 "파일 시스템 경계에서 중지합니다. (GIT_DISCOVERY_ACROSS_FILESYSTEM 설정되지 않"
 "음)"
 
-#: setup.c:1172
+#: setup.c:1168
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -3869,54 +4225,54 @@ msgstr ""
 "core.sharedRepository 파일모드 값에 (0%.3o) 문제가 있습니다.\n"
 "파일의 소유자에 읽기와 쓰기 권한이 있어야 합니다."
 
-#: setup.c:1215
+#: setup.c:1211
 msgid "open /dev/null or dup failed"
 msgstr "/dev/null 열기 또는 dup()이 실패"
 
-#: setup.c:1230
+#: setup.c:1226
 msgid "fork failed"
 msgstr "fork 실패"
 
-#: setup.c:1235
+#: setup.c:1231
 msgid "setsid failed"
 msgstr "setsid 실패"
 
-#: sha1_file.c:592
+#: sha1-file.c:625
 #, c-format
 msgid "path '%s' does not exist"
 msgstr "'%s' 경로가 없습니다"
 
-#: sha1_file.c:618
+#: sha1-file.c:651
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr ""
 "레퍼런스 '%s' 저장소를 연결된 체크아웃으로 쓰기는 아직 지원하지 않습니다."
 
-#: sha1_file.c:624
+#: sha1-file.c:657
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr "레퍼런스 '%s' 저장소가 로컬 저장소가 아닙니다."
 
-#: sha1_file.c:630
+#: sha1-file.c:663
 #, c-format
 msgid "reference repository '%s' is shallow"
 msgstr "레퍼런스 '%s' 저장소가 얕은 저장소입니다"
 
-#: sha1_file.c:638
+#: sha1-file.c:671
 #, c-format
 msgid "reference repository '%s' is grafted"
-msgstr "레퍼런스 '%s' 저장소가 붙어 있는 저장소입니다"
+msgstr "레퍼런스 '%s' 저장소가 그래프트로 붙은 저장소입니다"
 
-#: sha1_name.c:422
+#: sha1-name.c:442
 #, c-format
 msgid "short SHA1 %s is ambiguous"
 msgstr "짧은 SHA1 %s은(는) 여럿에 대응됩니다"
 
-#: sha1_name.c:433
+#: sha1-name.c:453
 msgid "The candidates are:"
 msgstr "후보는 다음과 같습니다:"
 
-#: sha1_name.c:693
+#: sha1-name.c:695
 msgid ""
 "Git normally never creates a ref that ends with 40 hex characters\n"
 "because it will be ignored when you just specify 40-hex. These refs\n"
@@ -3938,70 +4294,70 @@ msgstr ""
 "확인해 보시고 잘못 만들어진 것이면 지우십시오. 이 메시지를 보고 싶지\n"
 "않으면 \"git config advice.objectNameWarning false\" 명령을 사용하십시오."
 
-#: submodule.c:96 submodule.c:130
+#: submodule.c:97 submodule.c:131
 msgid "Cannot change unmerged .gitmodules, resolve merge conflicts first"
 msgstr ""
 "병합하지 않은 .gitmodules를 바꿀 수 없습니다. 병합 충돌을 먼저 해결하십시오"
 
-#: submodule.c:100 submodule.c:134
+#: submodule.c:101 submodule.c:135
 #, c-format
 msgid "Could not find section in .gitmodules where path=%s"
 msgstr "경로가 %s일 때 .gitmodules의 섹션을 찾을 수 없습니다"
 
-#: submodule.c:108
+#: submodule.c:109
 #, c-format
 msgid "Could not update .gitmodules entry %s"
 msgstr ".gitmodules 항목 %s을(를) 업데이트할 수 없습니다"
 
-#: submodule.c:141
+#: submodule.c:142
 #, c-format
 msgid "Could not remove .gitmodules entry for %s"
 msgstr "%s에 대한 .gitmodules 항목을 제거할 수 없습니다"
 
-#: submodule.c:152
+#: submodule.c:153
 msgid "staging updated .gitmodules failed"
 msgstr "업데이트한 .gitmodules를 커밋할 사항으로 표시하는데 실패"
 
-#: submodule.c:312
+#: submodule.c:315
 #, c-format
 msgid "in unpopulated submodule '%s'"
 msgstr "내용이 없는 하위 모듈 '%s'에서"
 
-#: submodule.c:343
+#: submodule.c:346
 #, c-format
 msgid "Pathspec '%s' is in submodule '%.*s'"
 msgstr "경로명세 '%s'은(는) ''%.*s' 하위 모듈 안에 있습니다"
 
-#: submodule.c:833
+#: submodule.c:837
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "서브모듈 항목 '%s'(%s)은(는) %s이고, 커밋이 아닙니다"
 
-#: submodule.c:1065 builtin/branch.c:648 builtin/submodule--helper.c:1724
+#: submodule.c:1069 builtin/branch.c:651 builtin/submodule--helper.c:1743
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "HEAD를 올바른 레퍼런스로 구해내는데 실패했습니다."
 
-#: submodule.c:1370
+#: submodule.c:1375
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "'%s'은(는) 깃 저장소로 인식되지 않습니다"
 
-#: submodule.c:1508
+#: submodule.c:1513
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "하위 모듈 '%s'에서 'git status'를 시작할 수 없습니다"
 
-#: submodule.c:1521
+#: submodule.c:1526
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "하위 모듈 '%s'에서 'git status'를 실행할 수 없습니다"
 
-#: submodule.c:1614
+#: submodule.c:1619
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "'%s' 하위 모듈에 변경된 인덱스가 있습니다"
 
-#: submodule.c:1878
+#: submodule.c:1718
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
@@ -4009,18 +4365,18 @@ msgstr ""
 "여러 개의 작업 폴더가 있는 하위 모듈 '%s'에 대해 relocate_gitdir은 지원하지 "
 "않습니다"
 
-#: submodule.c:1890 submodule.c:1946
+#: submodule.c:1730 submodule.c:1786
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "하위 모듈 '%s'의 이름을 찾아볼 수 없습니다"
 
-#: submodule.c:1894 builtin/submodule--helper.c:1246
-#: builtin/submodule--helper.c:1256
+#: submodule.c:1734 builtin/submodule--helper.c:1261
+#: builtin/submodule--helper.c:1271
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "'%s' 디렉터리를 만들 수 없습니다"
 
-#: submodule.c:1897
+#: submodule.c:1737
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -4031,29 +4387,30 @@ msgstr ""
 "'%s'에서\n"
 "'%s'(으)로\n"
 
-#: submodule.c:1981
+#: submodule.c:1821
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "재귀적으로 '%s' 하위 모듈에 들어갈 수 없습니다"
 
-#: submodule.c:2025
+#: submodule.c:1865
 msgid "could not start ls-files in .."
 msgstr "'..' 안에서 ls-files를 시작할 수 없습니다"
 
-#: submodule.c:2045
-msgid "BUG: returned path string doesn't match cwd?"
-msgstr "버그: 리턴된 경로 문자열이 현재 디렉터리와 맞지 않습니다?"
-
-#: submodule.c:2064
+#: submodule.c:1904
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree가 예상치 못한 코드 %d번을 리턴했습니다"
 
-#: submodule-config.c:263
+#: submodule-config.c:230
+#, c-format
+msgid "ignoring suspicious submodule name: %s"
+msgstr "의심스러운 하위 모듈 이름을 무시합니다: %s"
+
+#: submodule-config.c:294
 msgid "negative values not allowed for submodule.fetchjobs"
 msgstr "submodule.fetchjobs 값에 음수를 쓸 수 없습니다"
 
-#: submodule-config.c:436
+#: submodule-config.c:467
 #, c-format
 msgid "invalid value for %s"
 msgstr "%s의 값이 올바르지 않습니다"
@@ -4069,7 +4426,7 @@ msgstr "트레일러 명령 '%s' 실행 실패"
 msgid "unknown value '%s' for key '%s'"
 msgstr "알 수 없는 값 '%s', 키 '%s'"
 
-#: trailer.c:539 trailer.c:544 builtin/remote.c:290
+#: trailer.c:539 trailer.c:544 builtin/remote.c:293
 #, c-format
 msgid "more than one %s"
 msgstr "%s이(가) 여러개입니다"
@@ -4112,17 +4469,21 @@ msgstr "임시 파일을 열 수 없습니다: %s"
 msgid "could not rename temporary file to %s"
 msgstr "임시 파일 이름을 '%s'(으)로 바꿀 수 없습니다"
 
-#: transport.c:63
+#: transport.c:116
 #, c-format
 msgid "Would set upstream of '%s' to '%s' of '%s'\n"
 msgstr "'%1$s'의 업스트림을 '%3$s'의 '%2$s'(으)로 설정합니다\n"
 
-#: transport.c:152
+#: transport.c:208
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "transport: 잘못된 깊이 옵션: %s"
 
-#: transport.c:916
+#: transport.c:584
+msgid "could not parse transport.color.* config"
+msgstr "transport.color.* 설정을 파싱할 수 없습니다"
+
+#: transport.c:996
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -4131,7 +4492,7 @@ msgstr ""
 "다음 하위 모듈 경로에 리모트 어디에도 없는\n"
 "변경 사항이 있습니다:\n"
 
-#: transport.c:920
+#: transport.c:1000
 #, c-format
 msgid ""
 "\n"
@@ -4158,11 +4519,11 @@ msgstr ""
 "명령을 시도해 보십시오\n"
 "\n"
 
-#: transport.c:928
+#: transport.c:1008
 msgid "Aborting."
 msgstr "중지함."
 
-#: transport-helper.c:1079
+#: transport-helper.c:1087
 #, c-format
 msgid "Could not read ref %s"
 msgstr "%s 레퍼런스를 읽을 수 없습니다"
@@ -4179,11 +4540,11 @@ msgstr "트리 엔트리에 잘못된 형식의 모드"
 msgid "empty filename in tree entry"
 msgstr "트리 엔트리에 빈 파일 이름"
 
-#: tree-walk.c:114
+#: tree-walk.c:113
 msgid "too-short tree file"
 msgstr "너무 짧은 트리 파일"
 
-#: unpack-trees.c:108
+#: unpack-trees.c:111
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by checkout:\n"
@@ -4192,7 +4553,7 @@ msgstr ""
 "다음 파일의 로컬 변경 사항을 체크아웃 때문에 덮어 쓰게 됩니다:\n"
 "%%s브랜치를 전환하기 전에 변경 사항을 커밋하거나 스태시하십시오."
 
-#: unpack-trees.c:110
+#: unpack-trees.c:113
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by checkout:\n"
@@ -4201,7 +4562,7 @@ msgstr ""
 "다음 파일의 로컬 변경 사항을 체크아웃 때문에 덮어 쓰게 됩니다:\n"
 "%%s"
 
-#: unpack-trees.c:113
+#: unpack-trees.c:116
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -4210,14 +4571,14 @@ msgstr ""
 "다음 파일의 로컬 변경 사항을 병합 때문에 덮어 쓰게 됩니다:\n"
 "%%s병합하기 전에 변경 사항을 커밋하거나 스태시하십시오."
 
-#: unpack-trees.c:115
+#: unpack-trees.c:118
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
 "%%s"
 msgstr "다음 파일의 로컬 변경 사항을 병합 때문에 덮어 쓰게 됩니다."
 
-#: unpack-trees.c:118
+#: unpack-trees.c:121
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by %s:\n"
@@ -4226,7 +4587,7 @@ msgstr ""
 "다음 파일의 로컬 변경 사항을 %s 때문에 덮어 쓰게 됩니다:\n"
 "%%s%s 전에 변경 사항을 커밋하거나 스태시하십시오."
 
-#: unpack-trees.c:120
+#: unpack-trees.c:123
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by %s:\n"
@@ -4235,7 +4596,7 @@ msgstr ""
 "다음 파일의 로컬 변경 사항을 %s 때문에 덮어 쓰게 됩니다:\n"
 "%%s"
 
-#: unpack-trees.c:125
+#: unpack-trees.c:128
 #, c-format
 msgid ""
 "Updating the following directories would lose untracked files in them:\n"
@@ -4244,7 +4605,7 @@ msgstr ""
 "다음 디렉터리를 업데이트하면 그 안의 추적하지 않는 파일을 잃어버립니다:\n"
 "%s"
 
-#: unpack-trees.c:129
+#: unpack-trees.c:132
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by checkout:\n"
@@ -4253,7 +4614,7 @@ msgstr ""
 "체크아웃 때문에 추적하지 않는 다음 작업 폴더의 파일이 제거됩니다:\n"
 "%%s브랜치를 전환하기 전에 이 파일을 옮기거나 제거하십시오."
 
-#: unpack-trees.c:131
+#: unpack-trees.c:134
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by checkout:\n"
@@ -4262,7 +4623,7 @@ msgstr ""
 "체크아웃 때문에 추적하지 않는 다음 작업 폴더 파일이 제거됩니다:\n"
 "%%s"
 
-#: unpack-trees.c:134
+#: unpack-trees.c:137
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by merge:\n"
@@ -4271,7 +4632,7 @@ msgstr ""
 "병합 때문에 추적하지 않는 다음 작업 폴더의 파일이 제거됩니다:\n"
 "%%s병합하기 전에 이 파일을 옮기거나 제거하십시오."
 
-#: unpack-trees.c:136
+#: unpack-trees.c:139
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by merge:\n"
@@ -4280,7 +4641,7 @@ msgstr ""
 "병합 때문에 추적하지 않는 다음 작업 폴더 파일이 제거됩니다:\n"
 "%%s"
 
-#: unpack-trees.c:139
+#: unpack-trees.c:142
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by %s:\n"
@@ -4289,7 +4650,7 @@ msgstr ""
 "%s 때문에 추적하지 않는 다음 작업 폴더의 파일이 제거됩니다:\n"
 "%%s%s 하기 전에 이 파일을 옮기거나 제거하십시오."
 
-#: unpack-trees.c:141
+#: unpack-trees.c:144
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by %s:\n"
@@ -4298,7 +4659,7 @@ msgstr ""
 "%s 때문에 추적하지 않는 다음 작업 폴더 파일이 제거됩니다:\n"
 "%%s"
 
-#: unpack-trees.c:146
+#: unpack-trees.c:150
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by "
@@ -4308,7 +4669,7 @@ msgstr ""
 "체크아웃 때문에 추적하지 않는 다음 작업 폴더의 파일을 덮어씁니다:\n"
 "%%s브랜치를 전환하기 전에 이 파일을 옮기거나 제거하십시오."
 
-#: unpack-trees.c:148
+#: unpack-trees.c:152
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by "
@@ -4318,7 +4679,7 @@ msgstr ""
 "체크아웃 때문에 추적하지 않는 다음 작업 폴더 파일을 덮어씁니다:\n"
 "%%s"
 
-#: unpack-trees.c:151
+#: unpack-trees.c:155
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by merge:\n"
@@ -4327,7 +4688,7 @@ msgstr ""
 "병합 때문에 추적하지 않는 다음 작업 폴더의 파일을 덮어씁니다:\n"
 "%%s병합하기 전에 이 파일을 옮기거나 제거하십시오."
 
-#: unpack-trees.c:153
+#: unpack-trees.c:157
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by merge:\n"
@@ -4336,7 +4697,7 @@ msgstr ""
 "병합 때문에 추적하지 않는 다음 작업 폴더 파일을 덮어씁니다:\n"
 "%%s"
 
-#: unpack-trees.c:156
+#: unpack-trees.c:160
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by %s:\n"
@@ -4345,7 +4706,7 @@ msgstr ""
 "%s 때문에 추적하지 않는 다음 작업 폴더의 파일을 덮어씁니다:\n"
 "%%s%s 하기 전에 이 파일을 옮기거나 제거하십시오."
 
-#: unpack-trees.c:158
+#: unpack-trees.c:162
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by %s:\n"
@@ -4354,12 +4715,12 @@ msgstr ""
 "%s 때문에 추적하지 않는 다음 작업 폴더 파일을 덮어씁니다:\n"
 "%%s"
 
-#: unpack-trees.c:165
+#: unpack-trees.c:170
 #, c-format
 msgid "Entry '%s' overlaps with '%s'.  Cannot bind."
 msgstr "'%s' 항목이 '%s'와(과) 겹칩니다.  묶을 수 없습니다."
 
-#: unpack-trees.c:168
+#: unpack-trees.c:173
 #, c-format
 msgid ""
 "Cannot update sparse checkout: the following entries are not up to date:\n"
@@ -4369,7 +4730,7 @@ msgstr ""
 "았습니다:\n"
 "%s"
 
-#: unpack-trees.c:170
+#: unpack-trees.c:175
 #, c-format
 msgid ""
 "The following working tree files would be overwritten by sparse checkout "
@@ -4380,7 +4741,7 @@ msgstr ""
 "다:\n"
 "%s"
 
-#: unpack-trees.c:172
+#: unpack-trees.c:177
 #, c-format
 msgid ""
 "The following working tree files would be removed by sparse checkout "
@@ -4391,7 +4752,7 @@ msgstr ""
 "다:\n"
 "%s"
 
-#: unpack-trees.c:174
+#: unpack-trees.c:179
 #, c-format
 msgid ""
 "Cannot update submodule:\n"
@@ -4400,12 +4761,12 @@ msgstr ""
 "하위 모듈을  업데이트할 수 없습니다:\n"
 "%s"
 
-#: unpack-trees.c:251
+#: unpack-trees.c:262
 #, c-format
 msgid "Aborting\n"
 msgstr "중지함\n"
 
-#: unpack-trees.c:333
+#: unpack-trees.c:344
 msgid "Checking out files"
 msgstr "파일을 가져옵니다"
 
@@ -4474,7 +4835,7 @@ msgid "could not open '%s' for reading and writing"
 msgstr "읽기와 쓰기용으로 '%s'을(를) 열 수 없습니다"
 
 #: wrapper.c:227 wrapper.c:397 builtin/am.c:320 builtin/am.c:770
-#: builtin/am.c:862 builtin/merge.c:1044
+#: builtin/am.c:862 builtin/merge.c:1043
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "'%s'을(를) 읽기용으로 열 수 없습니다"
@@ -4488,152 +4849,152 @@ msgstr "'%s'에 접근할 수 없습니다"
 msgid "unable to get current working directory"
 msgstr "현재 작업 디렉터리를 가져올 수 없습니다"
 
-#: wt-status.c:151
+#: wt-status.c:154
 msgid "Unmerged paths:"
 msgstr "병합하지 않은 경로:"
 
-#: wt-status.c:178 wt-status.c:205
+#: wt-status.c:181 wt-status.c:208
 #, c-format
 msgid "  (use \"git reset %s <file>...\" to unstage)"
 msgstr "  (스테이지 해제하려면 \"git reset %s <파일>...\"을 사용하십시오)"
 
-#: wt-status.c:180 wt-status.c:207
+#: wt-status.c:183 wt-status.c:210
 msgid "  (use \"git rm --cached <file>...\" to unstage)"
 msgstr "  (스테이지 해제하려면 \"git rm --cached <파일>...\"을 사용하십시오)"
 
-#: wt-status.c:184
+#: wt-status.c:187
 msgid "  (use \"git add <file>...\" to mark resolution)"
 msgstr "  (해결했다고 표시하려면 \"git add <파일>...\"을 사용하십시오)"
 
-#: wt-status.c:186 wt-status.c:190
+#: wt-status.c:189 wt-status.c:193
 msgid "  (use \"git add/rm <file>...\" as appropriate to mark resolution)"
 msgstr ""
 "  (해결했다고 표시하려면 알맞게 \"git add/rm <파일>...\"을 사용하십시오)"
 
-#: wt-status.c:188
+#: wt-status.c:191
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (해결했다고 표시하려면 \"git rm <파일>...\"을 사용하십시오)"
 
-#: wt-status.c:199 wt-status.c:1007
+#: wt-status.c:202 wt-status.c:1015
 msgid "Changes to be committed:"
 msgstr "커밋할 변경 사항:"
 
-#: wt-status.c:217 wt-status.c:1016
+#: wt-status.c:220 wt-status.c:1024
 msgid "Changes not staged for commit:"
 msgstr "커밋하도록 정하지 않은 변경 사항:"
 
-#: wt-status.c:221
+#: wt-status.c:224
 msgid "  (use \"git add <file>...\" to update what will be committed)"
 msgstr "  (무엇을 커밋할지 바꾸려면 \"git add <파일>...\"을 사용하십시오)"
 
-#: wt-status.c:223
+#: wt-status.c:226
 msgid "  (use \"git add/rm <file>...\" to update what will be committed)"
 msgstr "  (무엇을 커밋할지 바꾸려면 \"git add/rm <파일>...\"을 사용하십시오)"
 
-#: wt-status.c:224
+#: wt-status.c:227
 msgid ""
 "  (use \"git checkout -- <file>...\" to discard changes in working directory)"
 msgstr ""
 "  (작업 폴더의 변경 사항을 버리려면 \"git checkout -- <파일>...\"을 사용하십"
 "시오)"
 
-#: wt-status.c:226
+#: wt-status.c:229
 msgid "  (commit or discard the untracked or modified content in submodules)"
 msgstr ""
 "  (하위 모듈의 추적되지 않는 파일이나 수정된 내용을 커밋하거나 버리십시오)"
 
-#: wt-status.c:238
+#: wt-status.c:241
 #, c-format
 msgid "  (use \"git %s <file>...\" to include in what will be committed)"
 msgstr "  (커밋할 사항에 포함하려면 \"git %s <파일>...\"을 사용하십시오)"
 
-#: wt-status.c:253
+#: wt-status.c:256
 msgid "both deleted:"
 msgstr "양쪽에서 삭제:"
 
-#: wt-status.c:255
+#: wt-status.c:258
 msgid "added by us:"
 msgstr "이 쪽에서 추가:"
 
-#: wt-status.c:257
+#: wt-status.c:260
 msgid "deleted by them:"
 msgstr "저 쪽에서 삭제:"
 
-#: wt-status.c:259
+#: wt-status.c:262
 msgid "added by them:"
 msgstr "저 쪽에서 추가:"
 
-#: wt-status.c:261
+#: wt-status.c:264
 msgid "deleted by us:"
 msgstr "이 쪽에서 삭제:"
 
-#: wt-status.c:263
+#: wt-status.c:266
 msgid "both added:"
 msgstr "양쪽에서 추가:"
 
-#: wt-status.c:265
+#: wt-status.c:268
 msgid "both modified:"
 msgstr "양쪽에서 수정:"
 
-#: wt-status.c:275
+#: wt-status.c:278
 msgid "new file:"
 msgstr "새 파일:"
 
-#: wt-status.c:277
+#: wt-status.c:280
 msgid "copied:"
 msgstr "복사함:"
 
-#: wt-status.c:279
+#: wt-status.c:282
 msgid "deleted:"
 msgstr "삭제함:"
 
-#: wt-status.c:281
+#: wt-status.c:284
 msgid "modified:"
 msgstr "수정함:"
 
-#: wt-status.c:283
+#: wt-status.c:286
 msgid "renamed:"
 msgstr "이름 바꿈:"
 
-#: wt-status.c:285
+#: wt-status.c:288
 msgid "typechange:"
 msgstr "종류 바뀜:"
 
-#: wt-status.c:287
+#: wt-status.c:290
 msgid "unknown:"
 msgstr "알 수 없음:"
 
-#: wt-status.c:289
+#: wt-status.c:292
 msgid "unmerged:"
 msgstr "병합하지 않음:"
 
-#: wt-status.c:369
+#: wt-status.c:372
 msgid "new commits, "
 msgstr "새 커밋, "
 
-#: wt-status.c:371
+#: wt-status.c:374
 msgid "modified content, "
 msgstr "수정한 내용, "
 
-#: wt-status.c:373
+#: wt-status.c:376
 msgid "untracked content, "
 msgstr "추적하지 않은 내용, "
 
-#: wt-status.c:847
+#: wt-status.c:853
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] "현재 스태시에 %d개 항목이 있습니다"
 
-#: wt-status.c:879
+#: wt-status.c:885
 msgid "Submodules changed but not updated:"
 msgstr "변경되었지만 업데이트하지 않은 하위 모듈:"
 
-#: wt-status.c:881
+#: wt-status.c:887
 msgid "Submodule changes to be committed:"
 msgstr "커밋할 하위 모듈의 변경 사항:"
 
-#: wt-status.c:963
+#: wt-status.c:969
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -4641,227 +5002,227 @@ msgstr ""
 "위의 줄을 바꾸거나 지우지 마십시오.\n"
 "아래 있는 내용은 모두 무시됩니다."
 
-#: wt-status.c:1076
+#: wt-status.c:1084
 msgid "You have unmerged paths."
 msgstr "병합하지 않은 경로가 있습니다."
 
-#: wt-status.c:1079
+#: wt-status.c:1087
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (충돌을 바로잡고 \"git commit\"을 실행하십시오)"
 
-#: wt-status.c:1081
+#: wt-status.c:1089
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (병합을 중단하려면 \"git merge --abort\"를 사용하십시오)"
 
-#: wt-status.c:1086
+#: wt-status.c:1094
 msgid "All conflicts fixed but you are still merging."
 msgstr "모든 충돌을 바로잡았지만 아직 병합하는 중입니다."
 
-#: wt-status.c:1089
+#: wt-status.c:1097
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (병합을 마무리하려면 \"git commit\"을 사용하십시오)"
 
-#: wt-status.c:1099
+#: wt-status.c:1107
 msgid "You are in the middle of an am session."
 msgstr "am 세션 중간에 있습니다."
 
-#: wt-status.c:1102
+#: wt-status.c:1110
 msgid "The current patch is empty."
 msgstr "현재 패치가 비어 있습니다."
 
-#: wt-status.c:1106
+#: wt-status.c:1114
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (충돌을 바로잡은 다음 \"git am --continue\"를 사용하십시오)"
 
-#: wt-status.c:1108
+#: wt-status.c:1116
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (이 패치를 건너 뛰려면 \"git am --skip\"을 사용하십시오)"
 
-#: wt-status.c:1110
+#: wt-status.c:1118
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr "  (원본 브랜치를 복구하려면 \"git am --abort\"를 사용하십시오)"
 
-#: wt-status.c:1242
+#: wt-status.c:1250
 msgid "git-rebase-todo is missing."
 msgstr "git-rebase-todo가 없습니다."
 
-#: wt-status.c:1244
+#: wt-status.c:1252
 msgid "No commands done."
 msgstr "완료한 명령 없음."
 
-#: wt-status.c:1247
+#: wt-status.c:1255
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] "최근 완료한 명령 (%d개 명령 완료):"
 
-#: wt-status.c:1258
+#: wt-status.c:1266
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (자세한 정보는 %s 파일 참고)"
 
-#: wt-status.c:1263
+#: wt-status.c:1271
 msgid "No commands remaining."
 msgstr "명령이 남아있지 않음."
 
-#: wt-status.c:1266
+#: wt-status.c:1274
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
 msgstr[0] "다음에 할 명령 (%d개 명령 남음):"
 
-#: wt-status.c:1274
+#: wt-status.c:1282
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (보고 편집하려면 \"git rebase --edit-todo\"를 사용하십시오)"
 
-#: wt-status.c:1287
+#: wt-status.c:1295
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "현재 '%s' 브랜치를 '%s' 위로 리베이스하는 중입니다."
 
-#: wt-status.c:1292
+#: wt-status.c:1300
 msgid "You are currently rebasing."
 msgstr "현재 리베이스하는 중입니다."
 
-#: wt-status.c:1306
+#: wt-status.c:1314
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (충돌을 바로잡고 \"git rebase --continue\"를 사용하십시오)"
 
-#: wt-status.c:1308
+#: wt-status.c:1316
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (이 패치를 건너뛰려면 \"git rebase --skip\"을 사용하십시오)"
 
-#: wt-status.c:1310
+#: wt-status.c:1318
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr "  (원본 브랜치를 가져오려면 \"git rebase --abort\"를 사용하십시오)"
 
-#: wt-status.c:1316
+#: wt-status.c:1324
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr ""
 "  (모든 충돌을 바로잡았습니다: \"git rebase --continue\"를 실행하십시오)"
 
-#: wt-status.c:1320
+#: wt-status.c:1328
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
 msgstr "현재 '%s' 브랜치를 '%s' 위로 리베이스하는 중 커밋을 분리하는 중입니다."
 
-#: wt-status.c:1325
+#: wt-status.c:1333
 msgid "You are currently splitting a commit during a rebase."
 msgstr "현재 리베이스하는 중 커밋을 분리하는 중입니다."
 
-#: wt-status.c:1328
+#: wt-status.c:1336
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr "  (작업 폴더가 깨끗해지면, \"git rebase --continue\"를 실행하십시오)"
 
-#: wt-status.c:1332
+#: wt-status.c:1340
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr "'%s' 브랜치를 '%s' 위로 리베이스하는 중 커밋을 편집하는 중입니다."
 
-#: wt-status.c:1337
+#: wt-status.c:1345
 msgid "You are currently editing a commit during a rebase."
 msgstr "리베이스 중에 커밋을 편집하는 중입니다."
 
-#: wt-status.c:1340
+#: wt-status.c:1348
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr "  (현재 커밋을 수정하려면 \"git commit --amend\"을 사용하십시오)"
 
-#: wt-status.c:1342
+#: wt-status.c:1350
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr "  (변경 사항에 만족할 때 \"git rebase --continue\"를 사용하십시오)"
 
-#: wt-status.c:1352
+#: wt-status.c:1360
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "현재 %s 커밋을 뽑아 내고 있습니다."
 
-#: wt-status.c:1357
+#: wt-status.c:1365
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (충돌을 바로잡고 \"git cherry-pick --continue\"를 실행하십시오)"
 
-#: wt-status.c:1360
+#: wt-status.c:1368
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr ""
 "  (모든 충돌을 바로잡았습니다: \"git cherry-pick --continue\"를 실행하십시오)"
 
-#: wt-status.c:1362
+#: wt-status.c:1370
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr "  (뽑기 작업을 취소하려면 \"git cherry-pick --abort\"를 사용하십시오)"
 
-#: wt-status.c:1371
+#: wt-status.c:1379
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "현재 %s 커밋을 되돌리는 중입니다."
 
-#: wt-status.c:1376
+#: wt-status.c:1384
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (충돌을 바로잡고 \"git revert --continue\"를 실행하십시오)"
 
-#: wt-status.c:1379
+#: wt-status.c:1387
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr ""
 "  (모든 충돌을 바로잡았습니다: \"git revert --continue\"를 실행하십시오)"
 
-#: wt-status.c:1381
+#: wt-status.c:1389
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (되돌리기 작업을 취소하려면 \"git revert --abort\"를 사용하십시오)"
 
-#: wt-status.c:1392
+#: wt-status.c:1400
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "'이등분하는 중입니다. '%s' 브랜치부터 시작."
 
-#: wt-status.c:1396
+#: wt-status.c:1404
 msgid "You are currently bisecting."
 msgstr "'이등분하는 중입니다."
 
-#: wt-status.c:1399
+#: wt-status.c:1407
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr "  (원래 브랜치로 돌아가려면 \"git bisect reset\"을 사용하십시오)"
 
-#: wt-status.c:1596
+#: wt-status.c:1604
 msgid "On branch "
 msgstr "현재 브랜치 "
 
-#: wt-status.c:1602
+#: wt-status.c:1610
 msgid "interactive rebase in progress; onto "
 msgstr "대화형 리베이스 진행 중. 갈 위치는 "
 
-#: wt-status.c:1604
+#: wt-status.c:1612
 msgid "rebase in progress; onto "
 msgstr "리베이스 진행 중. 갈 위치는 "
 
-#: wt-status.c:1609
+#: wt-status.c:1617
 msgid "HEAD detached at "
 msgstr "HEAD가 다음 위치에서 분리: "
 
-#: wt-status.c:1611
+#: wt-status.c:1619
 msgid "HEAD detached from "
 msgstr "HEAD가 다음으로부터 분리: "
 
-#: wt-status.c:1614
+#: wt-status.c:1622
 msgid "Not currently on any branch."
 msgstr "현재 어떤 브랜치도 사용하지 않음."
 
-#: wt-status.c:1634
+#: wt-status.c:1642
 msgid "Initial commit"
 msgstr "최초 커밋"
 
-#: wt-status.c:1635
+#: wt-status.c:1643
 msgid "No commits yet"
 msgstr "아직 커밋이 없습니다"
 
-#: wt-status.c:1649
+#: wt-status.c:1657
 msgid "Untracked files"
 msgstr "추적하지 않는 파일"
 
-#: wt-status.c:1651
+#: wt-status.c:1659
 msgid "Ignored files"
 msgstr "무시한 파일"
 
-#: wt-status.c:1655
+#: wt-status.c:1663
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -4872,20 +5233,20 @@ msgstr ""
 "'status -uno' 옵션을 쓰면 빨라질 수도 있지만, 새 파일을\n"
 "직접 찾아서 추가해야 합니다. ('git help status' 참고)"
 
-#: wt-status.c:1661
+#: wt-status.c:1669
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "추적하지 않는 파일을 보지 않습니다%s"
 
-#: wt-status.c:1663
+#: wt-status.c:1671
 msgid " (use -u option to show untracked files)"
 msgstr " (추적하지 않는 파일을 보려면 -u 옵션을 사용하십시오)"
 
-#: wt-status.c:1669
+#: wt-status.c:1677
 msgid "No changes"
 msgstr "변경 사항 없음"
 
-#: wt-status.c:1674
+#: wt-status.c:1682
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr ""
@@ -4893,12 +5254,12 @@ msgstr ""
 "\"를\n"
 "사용하십시오)\n"
 
-#: wt-status.c:1677
+#: wt-status.c:1685
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "커밋할 변경 사항을 추가하지 않았습니다\n"
 
-#: wt-status.c:1680
+#: wt-status.c:1688
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -4908,70 +5269,70 @@ msgstr ""
 "\"git\n"
 "add\"를 사용하십시오)\n"
 
-#: wt-status.c:1683
+#: wt-status.c:1691
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr "커밋할 사항을 추가하지 않았지만 추적하지 않는 파일이 있습니다\n"
 
-#: wt-status.c:1686
+#: wt-status.c:1694
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr ""
 "커밋할 사항 없음 (파일을 만들거나 복사하고 \"git add\"를 사용하면 추적합니"
 "다)\n"
 
-#: wt-status.c:1689 wt-status.c:1694
+#: wt-status.c:1697 wt-status.c:1702
 #, c-format
 msgid "nothing to commit\n"
 msgstr "커밋할 사항 없음\n"
 
-#: wt-status.c:1692
+#: wt-status.c:1700
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr ""
 "커밋할 사항 없음 (추적하지 않는 파일을 보려면 -u 옵션을 사용하십시오)\n"
 
-#: wt-status.c:1696
+#: wt-status.c:1704
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "커밋할 사항 없음, 작업 폴더 깨끗함\n"
 
-#: wt-status.c:1809
+#: wt-status.c:1817
 msgid "No commits yet on "
 msgstr "아직 커밋이 없습니다, 위치: <"
 
-#: wt-status.c:1813
+#: wt-status.c:1821
 msgid "HEAD (no branch)"
 msgstr "HEAD (브랜치 없음)"
 
-#: wt-status.c:1844
+#: wt-status.c:1852
 msgid "different"
 msgstr "다름"
 
-#: wt-status.c:1846 wt-status.c:1854
+#: wt-status.c:1854 wt-status.c:1862
 msgid "behind "
 msgstr "다음 뒤에: "
 
-#: wt-status.c:1849 wt-status.c:1852
+#: wt-status.c:1857 wt-status.c:1860
 msgid "ahead "
 msgstr "다음 앞에: "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2358
+#: wt-status.c:2366
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "%s 할 수 없습니다: 스테이징하지 않은 변경 사항이 있습니다."
 
-#: wt-status.c:2364
+#: wt-status.c:2372
 msgid "additionally, your index contains uncommitted changes."
 msgstr "추가로, 인덱스에 커밋하지 않은 변경 사항이 있습니다."
 
-#: wt-status.c:2366
+#: wt-status.c:2374
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "%s 할 수 없습니다: 인덱스에 커밋하지 않은 변경 사항이 있습니다."
 
-#: compat/precompose_utf8.c:58 builtin/clone.c:440
+#: compat/precompose_utf8.c:58 builtin/clone.c:442
 #, c-format
 msgid "failed to unlink '%s'"
 msgstr "'%s' 파일 삭제에 실패했습니다"
@@ -4985,7 +5346,7 @@ msgstr "git add [<옵션>] [--] <경로명세>..."
 msgid "unexpected diff status %c"
 msgstr "예상치 못한 diff 상태 %c"
 
-#: builtin/add.c:88 builtin/commit.c:257
+#: builtin/add.c:88 builtin/commit.c:266
 msgid "updating files failed"
 msgstr "파일 업데이트가 실패했습니다"
 
@@ -4998,7 +5359,7 @@ msgstr "'%s' 제거\n"
 msgid "Unstaged changes after refreshing the index:"
 msgstr "인덱스를 새로 고친 다음 커밋 표시하지 않은 변경 사항:"
 
-#: builtin/add.c:233 builtin/rev-parse.c:888
+#: builtin/add.c:233 builtin/rev-parse.c:892
 msgid "Could not read the index"
 msgstr "인덱스를 읽을 수 없습니다"
 
@@ -5029,77 +5390,77 @@ msgstr "빈 패치. 중지."
 msgid "Could not apply '%s'"
 msgstr "'%s'을(를) 적용할 수 없습니다"
 
-#: builtin/add.c:271
+#: builtin/add.c:269
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr "다음 경로는 .gitignore 파일 중 하나 때문에 무시합니다:\n"
 
-#: builtin/add.c:291 builtin/clean.c:911 builtin/fetch.c:146 builtin/mv.c:124
-#: builtin/prune-packed.c:55 builtin/pull.c:207 builtin/push.c:541
-#: builtin/remote.c:1333 builtin/rm.c:242 builtin/send-pack.c:164
+#: builtin/add.c:289 builtin/clean.c:911 builtin/fetch.c:145 builtin/mv.c:123
+#: builtin/prune-packed.c:55 builtin/pull.c:212 builtin/push.c:557
+#: builtin/remote.c:1342 builtin/rm.c:240 builtin/send-pack.c:165
 msgid "dry run"
 msgstr "가짜로 실행"
 
-#: builtin/add.c:294
+#: builtin/add.c:292
 msgid "interactive picking"
 msgstr "대화식으로 고릅니다"
 
-#: builtin/add.c:295 builtin/checkout.c:1128 builtin/reset.c:302
+#: builtin/add.c:293 builtin/checkout.c:1135 builtin/reset.c:302
 msgid "select hunks interactively"
 msgstr "대화식으로 변경된 부분을 선택합니다"
 
-#: builtin/add.c:296
+#: builtin/add.c:294
 msgid "edit current diff and apply"
 msgstr "현재 diff를 편집하고 적용합니다"
 
-#: builtin/add.c:297
+#: builtin/add.c:295
 msgid "allow adding otherwise ignored files"
 msgstr "무시하는 파일의 추가를 허용합니다"
 
-#: builtin/add.c:298
+#: builtin/add.c:296
 msgid "update tracked files"
 msgstr "추적되는 파일을 업데이트합니다"
 
-#: builtin/add.c:299
+#: builtin/add.c:297
 msgid "renormalize EOL of tracked files (implies -u)"
 msgstr "추적된 파일의 새줄문자(EOL)를 재 적용합니다 (-u 옵션 포함)"
 
-#: builtin/add.c:300
+#: builtin/add.c:298
 msgid "record only the fact that the path will be added later"
 msgstr "나중에 추가할 것이라는 사실만 기록합니다"
 
-#: builtin/add.c:301
+#: builtin/add.c:299
 msgid "add changes from all tracked and untracked files"
 msgstr "추적되고 추적되지 않는 모든 파일의 변경 사항을 추가합니다"
 
-#: builtin/add.c:304
+#: builtin/add.c:302
 msgid "ignore paths removed in the working tree (same as --no-all)"
 msgstr "작업 폴더에서 제거한 경로를 무시합니다 (--no-all과 동일)"
 
-#: builtin/add.c:306
+#: builtin/add.c:304
 msgid "don't add, only refresh the index"
 msgstr "추가하지 않고 인덱스만 새로 고칩니다"
 
-#: builtin/add.c:307
+#: builtin/add.c:305
 msgid "just skip files which cannot be added because of errors"
 msgstr "오류 때문에 추가할 수 없는 파일을 건너뜁니다"
 
-#: builtin/add.c:308
+#: builtin/add.c:306
 msgid "check if - even missing - files are ignored in dry run"
 msgstr "가짜로 실행했을 때 파일을 무시하는지 확인합니다"
 
-#: builtin/add.c:309 builtin/update-index.c:964
+#: builtin/add.c:307 builtin/update-index.c:974
 msgid "(+/-)x"
 msgstr "(+/-)x"
 
-#: builtin/add.c:309 builtin/update-index.c:965
+#: builtin/add.c:307 builtin/update-index.c:975
 msgid "override the executable bit of the listed files"
 msgstr "목록의 파일에서 실행 가능 비트를 바꿉니다"
 
-#: builtin/add.c:311
+#: builtin/add.c:309
 msgid "warn when adding an embedded repository"
 msgstr "내장 저장소를 추가할 때 경고를 표시합니다"
 
-#: builtin/add.c:326
+#: builtin/add.c:324
 #, c-format
 msgid ""
 "You've added another git repository inside your current repository.\n"
@@ -5129,48 +5490,48 @@ msgstr ""
 "\n"
 "더 자세한 정보는 \"git help submodule\"을 참고하십시오."
 
-#: builtin/add.c:354
+#: builtin/add.c:352
 #, c-format
 msgid "adding embedded git repository: %s"
 msgstr "내장 깃 저장소 추가: %s"
 
-#: builtin/add.c:372
+#: builtin/add.c:370
 #, c-format
 msgid "Use -f if you really want to add them.\n"
 msgstr "정말로 추가하려면 -f 옵션을 사용하십시오.\n"
 
-#: builtin/add.c:380
+#: builtin/add.c:378
 msgid "adding files failed"
 msgstr "파일 추가가 실패했습니다"
 
-#: builtin/add.c:417
+#: builtin/add.c:416
 msgid "-A and -u are mutually incompatible"
 msgstr "-A 및 -u 옵션은 서로 호환되지 않습니다"
 
-#: builtin/add.c:424
+#: builtin/add.c:423
 msgid "Option --ignore-missing can only be used together with --dry-run"
 msgstr ""
 "--ignore-missing 옵션은 --dry-run 옵션과 같이 사용할 경우에만 쓸 수 있습니다."
 
-#: builtin/add.c:428
+#: builtin/add.c:427
 #, c-format
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "--chmod 파라미터 '%s'은(는) -x 또는 +x 형식이어야 합니다"
 
-#: builtin/add.c:443
+#: builtin/add.c:442
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr "아무 것도 지정하지 않았으므로 아무 것도 추가하지 않습니다.\n"
 
-#: builtin/add.c:444
+#: builtin/add.c:443
 #, c-format
 msgid "Maybe you wanted to say 'git add .'?\n"
 msgstr "'git add .' 명령을 실행하려고 한 것 아니었습니까?\n"
 
-#: builtin/add.c:449 builtin/check-ignore.c:177 builtin/checkout.c:280
-#: builtin/checkout.c:483 builtin/clean.c:958 builtin/commit.c:316
+#: builtin/add.c:448 builtin/check-ignore.c:177 builtin/checkout.c:280
+#: builtin/checkout.c:483 builtin/clean.c:958 builtin/commit.c:325
 #: builtin/diff-tree.c:114 builtin/mv.c:144 builtin/reset.c:241
-#: builtin/rm.c:271 builtin/submodule--helper.c:326
+#: builtin/rm.c:270 builtin/submodule--helper.c:328
 msgid "index file corrupt"
 msgstr "인덱스 파일이 손상되었습니다"
 
@@ -5222,7 +5583,7 @@ msgstr "시간대 오프셋이 잘못되었습니다"
 msgid "Patch format detection failed."
 msgstr "패치 형식 검색이 실패했습니다."
 
-#: builtin/am.c:1013 builtin/clone.c:405
+#: builtin/am.c:1013 builtin/clone.c:407
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr "'%s' 디렉터리 만들기가 실패했습니다"
@@ -5231,7 +5592,7 @@ msgstr "'%s' 디렉터리 만들기가 실패했습니다"
 msgid "Failed to split patches."
 msgstr "패치를 쪼개는데 실패했습니다."
 
-#: builtin/am.c:1148 builtin/commit.c:342
+#: builtin/am.c:1148 builtin/commit.c:351
 msgid "unable to write index file"
 msgstr "인덱스 파일을 쓸 수 없습니다"
 
@@ -5403,7 +5764,7 @@ msgid "allow fall back on 3way merging if needed"
 msgstr "필요하면 3-방향 병합으로 대신하도록 허용합니다"
 
 #: builtin/am.c:2222 builtin/init-db.c:484 builtin/prune-packed.c:57
-#: builtin/repack.c:182
+#: builtin/repack.c:192
 msgid "be quiet"
 msgstr "간략히 표시합니다"
 
@@ -5446,16 +5807,17 @@ msgstr "절취선 앞의 모든 사항을 무시합니다"
 msgid "pass it through git-apply"
 msgstr "git-apply에 넘깁니다"
 
-#: builtin/am.c:2260 builtin/fmt-merge-msg.c:665 builtin/fmt-merge-msg.c:668
-#: builtin/grep.c:853 builtin/merge.c:206 builtin/pull.c:145 builtin/pull.c:203
-#: builtin/repack.c:191 builtin/repack.c:195 builtin/repack.c:197
-#: builtin/show-branch.c:631 builtin/show-ref.c:169 builtin/tag.c:382
-#: parse-options.h:144 parse-options.h:146 parse-options.h:257
+#: builtin/am.c:2260 builtin/commit.c:1332 builtin/fmt-merge-msg.c:665
+#: builtin/fmt-merge-msg.c:668 builtin/grep.c:853 builtin/merge.c:208
+#: builtin/pull.c:150 builtin/pull.c:208 builtin/repack.c:201
+#: builtin/repack.c:205 builtin/repack.c:207 builtin/show-branch.c:631
+#: builtin/show-ref.c:169 builtin/tag.c:383 parse-options.h:144
+#: parse-options.h:146 parse-options.h:258
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2266 builtin/branch.c:629 builtin/for-each-ref.c:38
-#: builtin/replace.c:445 builtin/tag.c:418 builtin/verify-tag.c:39
+#: builtin/am.c:2266 builtin/branch.c:632 builtin/for-each-ref.c:38
+#: builtin/replace.c:543 builtin/tag.c:419 builtin/verify-tag.c:39
 msgid "format"
 msgstr "형식"
 
@@ -5501,8 +5863,8 @@ msgstr "커미터 시각을 작성자 시각으로 넣습니다"
 msgid "use current timestamp for author date"
 msgstr "현재 시각을 작성자 시각으로 사용합니다"
 
-#: builtin/am.c:2298 builtin/commit.c:1431 builtin/merge.c:237
-#: builtin/pull.c:178 builtin/revert.c:112 builtin/tag.c:398
+#: builtin/am.c:2298 builtin/commit.c:1468 builtin/merge.c:239
+#: builtin/pull.c:183 builtin/revert.c:112 builtin/tag.c:399
 msgid "key-id"
 msgstr "키-ID"
 
@@ -5641,115 +6003,141 @@ msgstr "--write-terms 옵션은 두 인자가 필요합니다"
 msgid "--bisect-clean-state requires no arguments"
 msgstr "--bisect-clean-state 옵션은 인자가 필요하지 않습니다"
 
-#: builtin/blame.c:27
+#: builtin/blame.c:29
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
 msgstr "git blame [<옵션>] [<리비전-옵션>] [<리비전>] [--] <파일>"
 
-#: builtin/blame.c:32
+#: builtin/blame.c:34
 msgid "<rev-opts> are documented in git-rev-list(1)"
 msgstr "<리비전-옵션>은 git-rev-list(1)에 설명되어 있습니다"
 
-#: builtin/blame.c:677
+#: builtin/blame.c:404
+#, c-format
+msgid "expecting a color: %s"
+msgstr "색을 예상합니다: %s"
+
+#: builtin/blame.c:411
+msgid "must end with a color"
+msgstr "색으로 끝나야 합니다"
+
+#: builtin/blame.c:697
+#, c-format
+msgid "invalid color '%s' in color.blame.repeatedLines"
+msgstr "color.blame.repeatedLines에 잘못된 색을 ('%s') 무시합니다"
+
+#: builtin/blame.c:715
+msgid "invalid value for blame.coloring"
+msgstr "blame.coloring의 값이 올바르지 않습니다"
+
+#: builtin/blame.c:786
 msgid "Show blame entries as we find them, incrementally"
 msgstr "블레임 항목을 찾자마자 점진적으로 표시합니다"
 
-#: builtin/blame.c:678
+#: builtin/blame.c:787
 msgid "Show blank SHA-1 for boundary commits (Default: off)"
 msgstr "가장자리 커밋에 대해 빈 SHA-1을 표시합니다 (기본값: 꺼짐)"
 
-#: builtin/blame.c:679
+#: builtin/blame.c:788
 msgid "Do not treat root commits as boundaries (Default: off)"
 msgstr "최상위 커밋을 가장자리 커밋으로 취급하지 않습니다 (기본값: 꺼짐)"
 
-#: builtin/blame.c:680
+#: builtin/blame.c:789
 msgid "Show work cost statistics"
 msgstr "작업 비용 통계를 표시합니다"
 
-#: builtin/blame.c:681
+#: builtin/blame.c:790
 msgid "Force progress reporting"
 msgstr "강제로 진행 상황을 표시합니다"
 
-#: builtin/blame.c:682
+#: builtin/blame.c:791
 msgid "Show output score for blame entries"
 msgstr "블레임 항목에 대해 출력 점수를 표시합니다"
 
-#: builtin/blame.c:683
+#: builtin/blame.c:792
 msgid "Show original filename (Default: auto)"
 msgstr "원래 파일 이름 표시 (기본값: 자동)"
 
-#: builtin/blame.c:684
+#: builtin/blame.c:793
 msgid "Show original linenumber (Default: off)"
 msgstr "원래 줄 번호 표시 (기본값: 하지 않음)"
 
-#: builtin/blame.c:685
+#: builtin/blame.c:794
 msgid "Show in a format designed for machine consumption"
 msgstr "컴퓨터 처리용으로 설계된 형식으로 표시합니다"
 
-#: builtin/blame.c:686
+#: builtin/blame.c:795
 msgid "Show porcelain format with per-line commit information"
 msgstr "줄마다 커밋 정보가 표시되는 사용자용 형식으로 표시합니다"
 
-#: builtin/blame.c:687
+#: builtin/blame.c:796
 msgid "Use the same output mode as git-annotate (Default: off)"
 msgstr "git-annotate와 동일한 형식을 사용합니다 (기본값: 꺼짐)"
 
-#: builtin/blame.c:688
+#: builtin/blame.c:797
 msgid "Show raw timestamp (Default: off)"
 msgstr "내부 형식으로 시각을 표시합니다 (기본값: 꺼짐)"
 
-#: builtin/blame.c:689
+#: builtin/blame.c:798
 msgid "Show long commit SHA1 (Default: off)"
 msgstr "길게 커밋 SHA1을 표시합니다 (기본값: 꺼짐)"
 
-#: builtin/blame.c:690
+#: builtin/blame.c:799
 msgid "Suppress author name and timestamp (Default: off)"
 msgstr "작성자 이름과 시각을 표시하지 않습니다 (기본값: 꺼짐)"
 
-#: builtin/blame.c:691
+#: builtin/blame.c:800
 msgid "Show author email instead of name (Default: off)"
 msgstr "작성자 이름 대신에 전자메일을 표시합니다 (기본값: 꺼짐)"
 
-#: builtin/blame.c:692
+#: builtin/blame.c:801
 msgid "Ignore whitespace differences"
 msgstr "공백 문자 차이점을 무시합니다"
 
-#: builtin/blame.c:699
+#: builtin/blame.c:802
+msgid "color redundant metadata from previous line differently"
+msgstr "불필요한 메타데이터를 앞의 줄과 다르게 색을 칠합니다"
+
+#: builtin/blame.c:803
+msgid "color lines by age"
+msgstr "줄이 얼마나 오래 됐느냐에 따라 다르게 색을 칠합니다"
+
+#: builtin/blame.c:810
 msgid "Use an experimental heuristic to improve diffs"
 msgstr "diff를 향상하는데 실험적인 휴리스틱을 사용합니다"
 
-#: builtin/blame.c:701
+#: builtin/blame.c:812
 msgid "Spend extra cycles to find better match"
 msgstr "더 일치하는 항목을 찾는데 더 시간을 소모합니다"
 
-#: builtin/blame.c:702
+#: builtin/blame.c:813
 msgid "Use revisions from <file> instead of calling git-rev-list"
 msgstr "git-rev-list를 호출하는 대신 <파일>에서 리비전을 사용합니다"
 
-#: builtin/blame.c:703
+#: builtin/blame.c:814
 msgid "Use <file>'s contents as the final image"
 msgstr "<파일>의 내용을 최종 이미지로 사용합니다"
 
-#: builtin/blame.c:704 builtin/blame.c:705
+#: builtin/blame.c:815 builtin/blame.c:816
 msgid "score"
 msgstr "점수"
 
-#: builtin/blame.c:704
+#: builtin/blame.c:815
 msgid "Find line copies within and across files"
 msgstr "파일 내부와 파일 사이의 복사된 줄을 찾습니다"
 
-#: builtin/blame.c:705
+#: builtin/blame.c:816
 msgid "Find line movements within and across files"
 msgstr "파일 내부와 파일 사이의 옮겨진 줄을 찾습니다"
 
-#: builtin/blame.c:706
+#: builtin/blame.c:817
 msgid "n,m"
 msgstr "n,m"
 
-#: builtin/blame.c:706
+#: builtin/blame.c:817
 msgid "Process only line range n,m, counting from 1"
 msgstr "n,m줄 (1번 줄부터 시작) 사이의 범위만 처리"
 
-#: builtin/blame.c:753
+#: builtin/blame.c:866
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr ""
 "--progress 옵션은 --incremental 옵션이나 포스레인 형식에서 사용할 수 없습니다"
@@ -5762,17 +6150,17 @@ msgstr ""
 #. your language may need more or fewer display
 #. columns.
 #.
-#: builtin/blame.c:804
+#: builtin/blame.c:917
 msgid "4 years, 11 months ago"
 msgstr "4년 11달 전"
 
-#: builtin/blame.c:890
+#: builtin/blame.c:1003
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
 msgstr[0] "%s 파일에는 줄이 %lu개 뿐입니다"
 
-#: builtin/blame.c:936
+#: builtin/blame.c:1049
 msgid "Blaming lines"
 msgstr "블레임 줄"
 
@@ -5883,65 +6271,65 @@ msgstr "리모트 추적 '%s' 브랜치를 삭제합니다. (과거 %s)\n"
 msgid "Deleted branch %s (was %s).\n"
 msgstr "%s 브랜치 삭제 (과거 %s).\n"
 
-#: builtin/branch.c:417 builtin/tag.c:58
+#: builtin/branch.c:416 builtin/tag.c:58
 msgid "unable to parse format string"
 msgstr "포맷 문자열을 파싱할 수 없습니다"
 
-#: builtin/branch.c:450
+#: builtin/branch.c:453
 #, c-format
 msgid "Branch %s is being rebased at %s"
 msgstr "%s 브랜치를 %s 위치에 리베이스합니다"
 
-#: builtin/branch.c:454
+#: builtin/branch.c:457
 #, c-format
 msgid "Branch %s is being bisected at %s"
 msgstr "%s 브랜치를 %s 위치에서 bisect합니다"
 
-#: builtin/branch.c:471
+#: builtin/branch.c:474
 msgid "cannot copy the current branch while not on any."
 msgstr "브랜치 위에 없으면서 현재 브랜치를 복사할 수 없습니다."
 
-#: builtin/branch.c:473
+#: builtin/branch.c:476
 msgid "cannot rename the current branch while not on any."
 msgstr "브랜치 위에 없으면서 현재 브랜치 이름을 바꿀 수 없습니다."
 
-#: builtin/branch.c:484
+#: builtin/branch.c:487
 #, c-format
 msgid "Invalid branch name: '%s'"
 msgstr "잘못된 브랜치 이름: '%s'"
 
-#: builtin/branch.c:511
+#: builtin/branch.c:514
 msgid "Branch rename failed"
 msgstr "브랜치 이름 바꾸기 실패"
 
-#: builtin/branch.c:513
+#: builtin/branch.c:516
 msgid "Branch copy failed"
 msgstr "브랜치 복사 실패"
 
-#: builtin/branch.c:517
+#: builtin/branch.c:520
 #, c-format
 msgid "Created a copy of a misnamed branch '%s'"
 msgstr "이름이 잘못된 '%s' 브랜치의 복사본을 만들었습니다"
 
-#: builtin/branch.c:520
+#: builtin/branch.c:523
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
 msgstr "이름이 잘못된 '%s' 브랜치의 이름을 다르게 바꿉니다"
 
-#: builtin/branch.c:526
+#: builtin/branch.c:529
 #, c-format
 msgid "Branch renamed to %s, but HEAD is not updated!"
 msgstr "브랜치 이름을 %s(으)로 바꾸지만, HEAD를 업데이트하지 않습니다!"
 
-#: builtin/branch.c:535
+#: builtin/branch.c:538
 msgid "Branch is renamed, but update of config-file failed"
 msgstr "브랜치의 이름을 바꾸지만, config-file 업데이트가 실패했습니다"
 
-#: builtin/branch.c:537
+#: builtin/branch.c:540
 msgid "Branch is copied, but update of config-file failed"
 msgstr "브랜치를 복사했지만, config-file 업데이트가 실패했습니다"
 
-#: builtin/branch.c:553
+#: builtin/branch.c:556
 #, c-format
 msgid ""
 "Please edit the description for the branch\n"
@@ -5952,185 +6340,187 @@ msgstr ""
 "  %s\n"
 "'%c' 문자로 시작하는 줄은 무시됩니다.\n"
 
-#: builtin/branch.c:586
+#: builtin/branch.c:589
 msgid "Generic options"
 msgstr "일반 옵션"
 
 # FIXME: give twice?
-#: builtin/branch.c:588
+#: builtin/branch.c:591
 msgid "show hash and subject, give twice for upstream branch"
 msgstr "해시와 제목을 표시하고, 업스트림 브랜치에 대한 위치를 표시합니다"
 
-#: builtin/branch.c:589
+#: builtin/branch.c:592
 msgid "suppress informational messages"
 msgstr "여러가지 안내 메시지를 표시하지 않습니다"
 
-#: builtin/branch.c:590
+#: builtin/branch.c:593
 msgid "set up tracking mode (see git-pull(1))"
 msgstr "추적 모드를 설정합니다 (git-pull(1) 참고)"
 
-#: builtin/branch.c:592
+#: builtin/branch.c:595
 msgid "do not use"
 msgstr "사용하지 않습니다"
 
-#: builtin/branch.c:594
+#: builtin/branch.c:597
 msgid "upstream"
 msgstr "업스트림"
 
-#: builtin/branch.c:594
+#: builtin/branch.c:597
 msgid "change the upstream info"
 msgstr "업스트림 정보를 바꿉니다"
 
-#: builtin/branch.c:595
+#: builtin/branch.c:598
 msgid "Unset the upstream info"
 msgstr "업스트림 정보를 해제합니다"
 
-#: builtin/branch.c:596
+#: builtin/branch.c:599
 msgid "use colored output"
 msgstr "여러 색으로 출력합니다"
 
-#: builtin/branch.c:597
+#: builtin/branch.c:600
 msgid "act on remote-tracking branches"
 msgstr "리모트 추적 브랜치에 대해 동작합니다"
 
-#: builtin/branch.c:599 builtin/branch.c:601
+#: builtin/branch.c:602 builtin/branch.c:604
 msgid "print only branches that contain the commit"
 msgstr "커밋이 있는 브랜치만 표시합니다"
 
-#: builtin/branch.c:600 builtin/branch.c:602
+#: builtin/branch.c:603 builtin/branch.c:605
 msgid "print only branches that don't contain the commit"
 msgstr "커밋이 들어있지 않은 브랜치만 표시합니다"
 
-#: builtin/branch.c:605
+#: builtin/branch.c:608
 msgid "Specific git-branch actions:"
 msgstr "특정 git-branch 동작:"
 
-#: builtin/branch.c:606
+#: builtin/branch.c:609
 msgid "list both remote-tracking and local branches"
 msgstr "리모트와 로컬의 브랜치 목록을 모두 표시합니다"
 
-#: builtin/branch.c:608
+#: builtin/branch.c:611
 msgid "delete fully merged branch"
 msgstr "완전히 병합된 브랜치를 삭제합니다"
 
-#: builtin/branch.c:609
+#: builtin/branch.c:612
 msgid "delete branch (even if not merged)"
 msgstr "브랜치를 삭제합니다 (병합되지 않았더라도)"
 
-#: builtin/branch.c:610
+#: builtin/branch.c:613
 msgid "move/rename a branch and its reflog"
 msgstr "브랜치와 그 reflog를 옮기거나 이름을 바꿉니다"
 
-#: builtin/branch.c:611
+#: builtin/branch.c:614
 msgid "move/rename a branch, even if target exists"
 msgstr "대상이 이미 있더라도 브랜치를 옮기거나 이름을 바꿉니다"
 
-#: builtin/branch.c:612
+#: builtin/branch.c:615
 msgid "copy a branch and its reflog"
 msgstr "브랜치와 그 reflog를 복사합니다"
 
-#: builtin/branch.c:613
+#: builtin/branch.c:616
 msgid "copy a branch, even if target exists"
 msgstr "대상이 이미 있더라도 브랜치를 복사합니다"
 
-#: builtin/branch.c:614
+#: builtin/branch.c:617
 msgid "list branch names"
 msgstr "브랜치 이름 목록을 표시합니다"
 
-#: builtin/branch.c:615
+#: builtin/branch.c:618
 msgid "create the branch's reflog"
 msgstr "브랜치의 reflog를 만듭니다"
 
-#: builtin/branch.c:617
+#: builtin/branch.c:620
 msgid "edit the description for the branch"
 msgstr "브랜치의 설명을 편집합니다"
 
-#: builtin/branch.c:618
+#: builtin/branch.c:621
 msgid "force creation, move/rename, deletion"
 msgstr "강제로 만들고, 옮기거나 이름을 바꾸고, 삭제합니다"
 
-#: builtin/branch.c:619
+#: builtin/branch.c:622
 msgid "print only branches that are merged"
 msgstr "병합되는 브랜치만 표시합니다"
 
-#: builtin/branch.c:620
+#: builtin/branch.c:623
 msgid "print only branches that are not merged"
 msgstr "병합되지 않는 브랜치만 표시합니다"
 
-#: builtin/branch.c:621
+#: builtin/branch.c:624
 msgid "list branches in columns"
 msgstr "목록을 여러 열로 표시합니다"
 
-#: builtin/branch.c:622 builtin/for-each-ref.c:40 builtin/tag.c:411
+#: builtin/branch.c:625 builtin/for-each-ref.c:40 builtin/ls-remote.c:70
+#: builtin/tag.c:412
 msgid "key"
 msgstr "키"
 
-#: builtin/branch.c:623 builtin/for-each-ref.c:41 builtin/tag.c:412
+#: builtin/branch.c:626 builtin/for-each-ref.c:41 builtin/ls-remote.c:71
+#: builtin/tag.c:413
 msgid "field name to sort on"
 msgstr "정렬한 기준이 되는 필드 이름"
 
-#: builtin/branch.c:625 builtin/for-each-ref.c:43 builtin/notes.c:408
+#: builtin/branch.c:628 builtin/for-each-ref.c:43 builtin/notes.c:408
 #: builtin/notes.c:411 builtin/notes.c:571 builtin/notes.c:574
-#: builtin/tag.c:414
+#: builtin/tag.c:415
 msgid "object"
 msgstr "오브젝트"
 
-#: builtin/branch.c:626
+#: builtin/branch.c:629
 msgid "print only branches of the object"
 msgstr "해당 오브젝트의 브랜치만 표시합니다"
 
-#: builtin/branch.c:628 builtin/for-each-ref.c:49 builtin/tag.c:421
+#: builtin/branch.c:631 builtin/for-each-ref.c:49 builtin/tag.c:422
 msgid "sorting and filtering are case insensitive"
 msgstr "정렬과 필터링은 대소문자를 구분하지 않습니다"
 
-#: builtin/branch.c:629 builtin/for-each-ref.c:38 builtin/tag.c:419
+#: builtin/branch.c:632 builtin/for-each-ref.c:38 builtin/tag.c:420
 #: builtin/verify-tag.c:39
 msgid "format to use for the output"
 msgstr "출력에 사용할 형식"
 
-#: builtin/branch.c:652 builtin/clone.c:735
+#: builtin/branch.c:655 builtin/clone.c:737
 msgid "HEAD not found below refs/heads!"
 msgstr "레퍼런스/헤드 아래에 HEAD가 없습니다!"
 
-#: builtin/branch.c:675
+#: builtin/branch.c:678
 msgid "--column and --verbose are incompatible"
 msgstr "--column 및 --verbose 옵션은 호환되지 않습니다"
 
-#: builtin/branch.c:690 builtin/branch.c:742 builtin/branch.c:751
+#: builtin/branch.c:693 builtin/branch.c:745 builtin/branch.c:754
 msgid "branch name required"
 msgstr "브랜치 이름이 필요합니다"
 
-#: builtin/branch.c:718
+#: builtin/branch.c:721
 msgid "Cannot give description to detached HEAD"
 msgstr "분리된 HEAD에 대한 설명을 부여할 수 없습니다"
 
-#: builtin/branch.c:723
+#: builtin/branch.c:726
 msgid "cannot edit description of more than one branch"
 msgstr "여러 브랜치에 대한 설명을 편집할 수 없습니다"
 
-#: builtin/branch.c:730
+#: builtin/branch.c:733
 #, c-format
 msgid "No commit on branch '%s' yet."
 msgstr "아직 '%s' 브랜치에 커밋이 없습니다."
 
-#: builtin/branch.c:733
+#: builtin/branch.c:736
 #, c-format
 msgid "No branch named '%s'."
 msgstr "이름이 '%s'인 브랜치가 없습니다."
 
-#: builtin/branch.c:748
+#: builtin/branch.c:751
 msgid "too many branches for a copy operation"
 msgstr "복사 작업에 대해 브랜치가 너무 많습니다"
 
-#: builtin/branch.c:757
+#: builtin/branch.c:760
 msgid "too many arguments for a rename operation"
 msgstr "이름 바꾸기 작업에 대해 인자가 너무 많습니다"
 
-#: builtin/branch.c:762
+#: builtin/branch.c:765
 msgid "too many arguments to set new upstream"
 msgstr "새 업스트림을 설정하는데 인자가 너무 많습니다"
 
-#: builtin/branch.c:766
+#: builtin/branch.c:769
 #, c-format
 msgid ""
 "could not set upstream of HEAD to %s when it does not point to any branch."
@@ -6138,37 +6528,37 @@ msgstr ""
 "HEAD의 업스트림을 %s(으)로 설정할 수 없습니다. 어떤 브랜치도 가리키지 않습니"
 "다."
 
-#: builtin/branch.c:769 builtin/branch.c:791 builtin/branch.c:807
+#: builtin/branch.c:772 builtin/branch.c:794 builtin/branch.c:810
 #, c-format
 msgid "no such branch '%s'"
 msgstr "그런 브랜치가 ('%s') 없습니다"
 
-#: builtin/branch.c:773
+#: builtin/branch.c:776
 #, c-format
 msgid "branch '%s' does not exist"
 msgstr "'%s' 브랜치가 없습니다"
 
-#: builtin/branch.c:785
+#: builtin/branch.c:788
 msgid "too many arguments to unset upstream"
 msgstr "업스트림 설정을 해제하는데 인자가 너무 많습니다"
 
-#: builtin/branch.c:789
+#: builtin/branch.c:792
 msgid "could not unset upstream of HEAD when it does not point to any branch."
 msgstr ""
 "HEAD의 업스트림 설정을 해제할 수 없습니다. 어떤 브랜치도 가리키지 않습니다."
 
-#: builtin/branch.c:795
+#: builtin/branch.c:798
 #, c-format
 msgid "Branch '%s' has no upstream information"
 msgstr "'%s' 브랜치에 업스트림 정보가 없습니다"
 
-#: builtin/branch.c:810
+#: builtin/branch.c:813
 msgid "-a and -r options to 'git branch' do not make sense with a branch name"
 msgstr ""
 "'git branch'에 대해 -a 및 -r 옵션은 브랜치 이름과 같이 쓰면 앞뒤가 맞지 않습"
 "니다"
 
-#: builtin/branch.c:813
+#: builtin/branch.c:816
 msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
@@ -6189,7 +6579,7 @@ msgstr "번들을 만드려면 저장소가 필요합니다."
 msgid "Need a repository to unbundle."
 msgstr "번들을 해제하려면 저장소가 필요합니다."
 
-#: builtin/cat-file.c:523
+#: builtin/cat-file.c:525
 msgid ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <type> | --textconv | --filters) [--path=<path>] <object>"
@@ -6197,7 +6587,7 @@ msgstr ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <종류> | --textconv | --filters) [--path=<경로>] <오브젝트>"
 
-#: builtin/cat-file.c:524
+#: builtin/cat-file.c:526
 msgid ""
 "git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
 "filters]"
@@ -6205,64 +6595,64 @@ msgstr ""
 "git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
 "filters]"
 
-#: builtin/cat-file.c:561
+#: builtin/cat-file.c:563
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr "<종류>는 다음 중 하나가 될 수 있습니다: blob, tree, commit, tag"
 
-#: builtin/cat-file.c:562
+#: builtin/cat-file.c:564
 msgid "show object type"
 msgstr "오브젝트 종류를 봅니다"
 
-#: builtin/cat-file.c:563
+#: builtin/cat-file.c:565
 msgid "show object size"
 msgstr "오브젝트 크기를 봅니다"
 
-#: builtin/cat-file.c:565
+#: builtin/cat-file.c:567
 msgid "exit with zero when there's no error"
 msgstr "오류가 없을 때 0을 리턴하고 끝냅니다"
 
-#: builtin/cat-file.c:566
+#: builtin/cat-file.c:568
 msgid "pretty-print object's content"
 msgstr "오브젝트의 내용을 예쁘게 표시합니다"
 
-#: builtin/cat-file.c:568
+#: builtin/cat-file.c:570
 msgid "for blob objects, run textconv on object's content"
 msgstr "블롭 오브젝트에 대해서는, 오브젝트의 내용에 대해 textconv를 실행합니다"
 
-#: builtin/cat-file.c:570
+#: builtin/cat-file.c:572
 msgid "for blob objects, run filters on object's content"
 msgstr "블롭 오브젝트에 대해서는, 오브젝트의 내용에 대해 필터를 실행합니다"
 
-#: builtin/cat-file.c:571 git-submodule.sh:878
+#: builtin/cat-file.c:573 git-submodule.sh:894
 msgid "blob"
 msgstr "블롭"
 
-#: builtin/cat-file.c:572
+#: builtin/cat-file.c:574
 msgid "use a specific path for --textconv/--filters"
 msgstr "--textconv/--filters 옵션에 경로를 지정합니다"
 
-#: builtin/cat-file.c:574
+#: builtin/cat-file.c:576
 msgid "allow -s and -t to work with broken/corrupt objects"
 msgstr "-s 및 -t 옵션이 손상된 오브젝트에 대해 동작하도록 허용합니다"
 
-#: builtin/cat-file.c:575
+#: builtin/cat-file.c:577
 msgid "buffer --batch output"
 msgstr "--batch 출력에 대해 버퍼링합니다"
 
-#: builtin/cat-file.c:577
+#: builtin/cat-file.c:579
 msgid "show info and content of objects fed from the standard input"
 msgstr "표준 입력에서 입력된 오브젝트의 정보와 내용을 표시합니다"
 
-#: builtin/cat-file.c:580
+#: builtin/cat-file.c:582
 msgid "show info about objects fed from the standard input"
 msgstr "표준 입력에서 입력된 오브젝트의 정보를 표시합니다"
 
-#: builtin/cat-file.c:583
+#: builtin/cat-file.c:585
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
 msgstr ""
 "트리 내부의 심볼릭 링크를 따라갑니다 (--batch 또는 --batch-check와 같이 사용)"
 
-#: builtin/cat-file.c:585
+#: builtin/cat-file.c:587
 msgid "show all objects with --batch or --batch-check"
 msgstr "--batch 또는 --batch-check에서 모든 오브젝트를 표시합니다"
 
@@ -6290,7 +6680,7 @@ msgstr "표준 입력에서 파일 이름을 읽습니다"
 msgid "terminate input and output records by a NUL character"
 msgstr "NUL 문자를 기준으로 자료 입력 및 출력을 멈춥니다"
 
-#: builtin/check-ignore.c:20 builtin/checkout.c:1106 builtin/gc.c:358
+#: builtin/check-ignore.c:20 builtin/checkout.c:1113 builtin/gc.c:500
 msgid "suppress progress reporting"
 msgstr "진행 상황 표시를 하지 않습니다"
 
@@ -6380,9 +6770,9 @@ msgid "write the content to temporary files"
 msgstr "내용을 임시 파일에 씁니다"
 
 #: builtin/checkout-index.c:173 builtin/column.c:31
-#: builtin/submodule--helper.c:1203 builtin/submodule--helper.c:1206
-#: builtin/submodule--helper.c:1212 builtin/submodule--helper.c:1574
-#: builtin/worktree.c:570
+#: builtin/submodule--helper.c:1216 builtin/submodule--helper.c:1219
+#: builtin/submodule--helper.c:1227 builtin/submodule--helper.c:1591
+#: builtin/worktree.c:610
 msgid "string"
 msgstr "문자열"
 
@@ -6453,54 +6843,54 @@ msgstr "경로를 업데이트하고 '%s' 브랜치로 전환하는 일은 동
 msgid "path '%s' is unmerged"
 msgstr "'%s' 경로를 병합하지 않았습니다"
 
-#: builtin/checkout.c:505
+#: builtin/checkout.c:506
 msgid "you need to resolve your current index first"
 msgstr "현재 인덱스를 먼저 해결해야 합니다"
 
-#: builtin/checkout.c:636
+#: builtin/checkout.c:643
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "'%s'에 대해 reflog할 수 없습니다: %s\n"
 
-#: builtin/checkout.c:677
+#: builtin/checkout.c:684
 msgid "HEAD is now at"
 msgstr "HEAD의 현재 위치는"
 
-#: builtin/checkout.c:681 builtin/clone.c:689
+#: builtin/checkout.c:688 builtin/clone.c:691
 msgid "unable to update HEAD"
 msgstr "HEAD를 업데이트할 수 없습니다"
 
-#: builtin/checkout.c:685
+#: builtin/checkout.c:692
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "'%s' 브랜치 리셋\n"
 
-#: builtin/checkout.c:688
+#: builtin/checkout.c:695
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "이미 '%s'에 있습니다\n"
 
-#: builtin/checkout.c:692
+#: builtin/checkout.c:699
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "'%s' 브랜치로 전환하고 리셋합니다\n"
 
-#: builtin/checkout.c:694 builtin/checkout.c:1039
+#: builtin/checkout.c:701 builtin/checkout.c:1046
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "새로 만든 '%s' 브랜치로 전환합니다\n"
 
-#: builtin/checkout.c:696
+#: builtin/checkout.c:703
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "'%s' 브랜치로 전환합니다\n"
 
-#: builtin/checkout.c:747
+#: builtin/checkout.c:754
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... 그리고 %d개 더.\n"
 
-#: builtin/checkout.c:753
+#: builtin/checkout.c:760
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -6518,7 +6908,7 @@ msgstr[0] ""
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:772
+#: builtin/checkout.c:779
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -6539,161 +6929,161 @@ msgstr[0] ""
 " git branch <새-브랜치-이름> %s\n"
 "\n"
 
-#: builtin/checkout.c:804
+#: builtin/checkout.c:811
 msgid "internal error in revision walk"
 msgstr "리비전 walk에 내부 오류"
 
-#: builtin/checkout.c:808
+#: builtin/checkout.c:815
 msgid "Previous HEAD position was"
 msgstr "이전 HEAD 위치는"
 
-#: builtin/checkout.c:836 builtin/checkout.c:1034
+#: builtin/checkout.c:843 builtin/checkout.c:1041
 msgid "You are on a branch yet to be born"
 msgstr "현재 위치가 만들 예정인 브랜치에 있습니다"
 
-#: builtin/checkout.c:940
+#: builtin/checkout.c:947
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "하나의 레퍼런스만 지정해야 하지만 %d개를 지정했습니다."
 
-#: builtin/checkout.c:980 builtin/worktree.c:249
+#: builtin/checkout.c:987 builtin/worktree.c:240 builtin/worktree.c:389
 #, c-format
 msgid "invalid reference: %s"
 msgstr "잘못된 레퍼런스: %s"
 
-#: builtin/checkout.c:1009
+#: builtin/checkout.c:1016
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "레퍼런스가 트리가 아닙니다: %s"
 
-#: builtin/checkout.c:1048
+#: builtin/checkout.c:1055
 msgid "paths cannot be used with switching branches"
 msgstr "브랜치를 전환하는데 경로를 사용할 수 없습니다"
 
-#: builtin/checkout.c:1051 builtin/checkout.c:1055
+#: builtin/checkout.c:1058 builtin/checkout.c:1062
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "'%s' 옵션은 브랜치를 전환할 때 쓸 수 없습니다"
 
-#: builtin/checkout.c:1059 builtin/checkout.c:1062 builtin/checkout.c:1067
-#: builtin/checkout.c:1070
+#: builtin/checkout.c:1066 builtin/checkout.c:1069 builtin/checkout.c:1074
+#: builtin/checkout.c:1077
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' 옵션은 '%s' 옵션과 같이 쓸 수 없습니다"
 
-#: builtin/checkout.c:1075
+#: builtin/checkout.c:1082
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "브랜치를 커밋이 아닌 '%s'(으)로 전환할 수 없습니다"
 
-#: builtin/checkout.c:1107 builtin/checkout.c:1109 builtin/clone.c:116
-#: builtin/remote.c:166 builtin/remote.c:168 builtin/worktree.c:387
-#: builtin/worktree.c:389
+#: builtin/checkout.c:1114 builtin/checkout.c:1116 builtin/clone.c:118
+#: builtin/remote.c:167 builtin/remote.c:169 builtin/worktree.c:433
+#: builtin/worktree.c:435
 msgid "branch"
 msgstr "브랜치"
 
-#: builtin/checkout.c:1108
+#: builtin/checkout.c:1115
 msgid "create and checkout a new branch"
 msgstr "새 브랜치를 만들고 가져옵니다"
 
-#: builtin/checkout.c:1110
+#: builtin/checkout.c:1117
 msgid "create/reset and checkout a branch"
 msgstr "브랜치를 만들거나 리셋하고 가져옵니다"
 
-#: builtin/checkout.c:1111
+#: builtin/checkout.c:1118
 msgid "create reflog for new branch"
 msgstr "새 브랜치에 대한 reflog를 만듭니다"
 
-#: builtin/checkout.c:1112 builtin/worktree.c:391
+#: builtin/checkout.c:1119 builtin/worktree.c:437
 msgid "detach HEAD at named commit"
 msgstr "HEAD를 해당 커밋에서 분리합니다"
 
-#: builtin/checkout.c:1113
+#: builtin/checkout.c:1120
 msgid "set upstream info for new branch"
 msgstr "새 브랜치에 대한 업스트림 정보를 설정합니다"
 
-#: builtin/checkout.c:1115
+#: builtin/checkout.c:1122
 msgid "new-branch"
 msgstr "새-브랜치"
 
-#: builtin/checkout.c:1115
+#: builtin/checkout.c:1122
 msgid "new unparented branch"
 msgstr "상위 브랜치가 없는 새 브랜치"
 
-#: builtin/checkout.c:1116
+#: builtin/checkout.c:1123
 msgid "checkout our version for unmerged files"
 msgstr "병합되지 않은 파일에 대해 우리쪽 버전을 가져옵니다"
 
-#: builtin/checkout.c:1118
+#: builtin/checkout.c:1125
 msgid "checkout their version for unmerged files"
 msgstr "병합되지 않은 파일에 대해 상대편 버전을 가져옵니다"
 
-#: builtin/checkout.c:1120
+#: builtin/checkout.c:1127
 msgid "force checkout (throw away local modifications)"
 msgstr "강제로 체크아웃합니다 (로컬에서 수정한 사항을 버립니다)"
 
-#: builtin/checkout.c:1122
+#: builtin/checkout.c:1129
 msgid "perform a 3-way merge with the new branch"
 msgstr "새 브랜치에 대해 3-방향 병합을 수행합니다"
 
-#: builtin/checkout.c:1124 builtin/merge.c:239
+#: builtin/checkout.c:1131 builtin/merge.c:241
 msgid "update ignored files (default)"
 msgstr "무시하는 파일을 업데이트합니다 (기본값)"
 
-#: builtin/checkout.c:1126 builtin/log.c:1499 parse-options.h:263
+#: builtin/checkout.c:1133 builtin/log.c:1499 parse-options.h:264
 msgid "style"
 msgstr "스타일"
 
-#: builtin/checkout.c:1127
+#: builtin/checkout.c:1134
 msgid "conflict style (merge or diff3)"
 msgstr "충돌 스타일 (merge 또는 diff3)"
 
 # FIXME: 의미 불명
-#: builtin/checkout.c:1130
+#: builtin/checkout.c:1137
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "경로명세를 드문 항목에만 제한하지 않습니다"
 
-#: builtin/checkout.c:1132
+#: builtin/checkout.c:1139
 msgid "second guess 'git checkout <no-such-branch>'"
 msgstr "'git checkout <없는-브랜치>'에 대해 추측합니다"
 
-#: builtin/checkout.c:1134
+#: builtin/checkout.c:1141
 msgid "do not check if another worktree is holding the given ref"
 msgstr "다른 작업폴더에 주어진 레퍼런스가 있는지 확인하지 않습니다"
 
-#: builtin/checkout.c:1138 builtin/clone.c:83 builtin/fetch.c:150
-#: builtin/merge.c:236 builtin/pull.c:123 builtin/push.c:556
-#: builtin/send-pack.c:173
+#: builtin/checkout.c:1145 builtin/clone.c:85 builtin/fetch.c:149
+#: builtin/merge.c:238 builtin/pull.c:128 builtin/push.c:572
+#: builtin/send-pack.c:174
 msgid "force progress reporting"
 msgstr "강제로 진행 상황을 표시합니다"
 
-#: builtin/checkout.c:1168
+#: builtin/checkout.c:1175
 msgid "-b, -B and --orphan are mutually exclusive"
 msgstr "-b, -B 및 --orphan 옵션은 서로 호환되지 않습니다"
 
-#: builtin/checkout.c:1185
+#: builtin/checkout.c:1192
 msgid "--track needs a branch name"
 msgstr "--track 옵션은 브랜치 이름이 필요합니다"
 
-#: builtin/checkout.c:1190
+#: builtin/checkout.c:1197
 msgid "Missing branch name; try -b"
 msgstr "브랜치 이름이 없습니다. -b 옵션을 사용해 보십시오"
 
-#: builtin/checkout.c:1226
+#: builtin/checkout.c:1233
 msgid "invalid path specification"
 msgstr "경로 명세가 잘못되었습니다"
 
-#: builtin/checkout.c:1233
+#: builtin/checkout.c:1240
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr "'%s'은(는) 커밋이 아니고 여기에서 '%s' 브랜치를 만들 수 없습니다"
 
-#: builtin/checkout.c:1237
+#: builtin/checkout.c:1244
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout: --detach 옵션은 경로 인자를 받지 않습니다 '%s'"
 
-#: builtin/checkout.c:1241
+#: builtin/checkout.c:1248
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -6732,7 +7122,7 @@ msgstr "%s 저장소 건너뛸 예정\n"
 msgid "failed to remove %s"
 msgstr "%s 제거에 실패했습니다"
 
-#: builtin/clean.c:302 git-add--interactive.perl:572
+#: builtin/clean.c:302 git-add--interactive.perl:579
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -6745,7 +7135,7 @@ msgstr ""
 "foo        - 유일한 접두어에 해당하는 항목 선택\n"
 "           - (빈 입력) 선택하지 않음\n"
 
-#: builtin/clean.c:306 git-add--interactive.perl:581
+#: builtin/clean.c:306 git-add--interactive.perl:588
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -6766,8 +7156,8 @@ msgstr ""
 "*          - 모든 항목 선택\n"
 "           - (빈 입력) 선택 마침\n"
 
-#: builtin/clean.c:522 git-add--interactive.perl:547
-#: git-add--interactive.perl:552
+#: builtin/clean.c:522 git-add--interactive.perl:554
+#: git-add--interactive.perl:559
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "어라라 (%s)?\n"
@@ -6792,7 +7182,7 @@ msgstr "삭제할 항목을 선택하십시오"
 msgid "Remove %s [y/N]? "
 msgstr "%s 제거합니까 [y/N]? "
 
-#: builtin/clean.c:788 git-add--interactive.perl:1710
+#: builtin/clean.c:788 git-add--interactive.perl:1717
 #, c-format
 msgid "Bye.\n"
 msgstr "끝.\n"
@@ -6815,11 +7205,11 @@ msgstr ""
 "help                - 이 화면 표시\n"
 "?                   - 프롬프트 선택 도움말"
 
-#: builtin/clean.c:823 git-add--interactive.perl:1786
+#: builtin/clean.c:823 git-add--interactive.perl:1793
 msgid "*** Commands ***"
 msgstr "*** 명령 ***"
 
-#: builtin/clean.c:824 git-add--interactive.perl:1783
+#: builtin/clean.c:824 git-add--interactive.perl:1790
 msgid "What now"
 msgstr "무엇을 할까요"
 
@@ -6887,144 +7277,146 @@ msgstr ""
 "clean.requireForce 기본값이 true이고 -i, -n, -f 옵션 중 하나도 쓰지 않았습니"
 "다. 지우지 않습니다"
 
-#: builtin/clone.c:40
+#: builtin/clone.c:42
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr "git clone [<옵션>] [--] <저장소> [<디렉터리>]"
 
-#: builtin/clone.c:85
+#: builtin/clone.c:87
 msgid "don't create a checkout"
 msgstr "체크아웃을 만들지 않습니다"
 
-#: builtin/clone.c:86 builtin/clone.c:88 builtin/init-db.c:479
+#: builtin/clone.c:88 builtin/clone.c:90 builtin/init-db.c:479
 msgid "create a bare repository"
 msgstr "간략한 저장소를 만듭니다"
 
-#: builtin/clone.c:90
+#: builtin/clone.c:92
 msgid "create a mirror repository (implies bare)"
 msgstr "미러 저장소를 만듭니다 (간략한 저장소로 취급)"
 
-#: builtin/clone.c:92
+#: builtin/clone.c:94
 msgid "to clone from a local repository"
 msgstr "로컬 저장소에서 복제합니다"
 
-#: builtin/clone.c:94
+#: builtin/clone.c:96
 msgid "don't use local hardlinks, always copy"
 msgstr "로컬 하드링크를 사용하지 않고, 항상 복사합니다"
 
-#: builtin/clone.c:96
+#: builtin/clone.c:98
 msgid "setup as shared repository"
 msgstr "공유 저장소로 설정합니다"
 
-#: builtin/clone.c:98 builtin/clone.c:102
+#: builtin/clone.c:100 builtin/clone.c:104
 msgid "pathspec"
 msgstr "경로명세"
 
-#: builtin/clone.c:98 builtin/clone.c:102
+#: builtin/clone.c:100 builtin/clone.c:104
 msgid "initialize submodules in the clone"
 msgstr "복제한 결과물에서 하위 모듈을 초기화합니다"
 
-#: builtin/clone.c:105
+#: builtin/clone.c:107
 msgid "number of submodules cloned in parallel"
 msgstr "병렬적으로 복제하는 하위모듈 개수"
 
-#: builtin/clone.c:106 builtin/init-db.c:476
+#: builtin/clone.c:108 builtin/init-db.c:476
 msgid "template-directory"
 msgstr "서식-디렉터리"
 
-#: builtin/clone.c:107 builtin/init-db.c:477
+#: builtin/clone.c:109 builtin/init-db.c:477
 msgid "directory from which templates will be used"
 msgstr "서식을 사용할 디렉터리 위치"
 
-#: builtin/clone.c:109 builtin/clone.c:111 builtin/submodule--helper.c:1210
-#: builtin/submodule--helper.c:1577
+#: builtin/clone.c:111 builtin/clone.c:113 builtin/submodule--helper.c:1223
+#: builtin/submodule--helper.c:1594
 msgid "reference repository"
 msgstr "레퍼런스 저장소"
 
-#: builtin/clone.c:113
+#: builtin/clone.c:115 builtin/submodule--helper.c:1225
+#: builtin/submodule--helper.c:1596
 msgid "use --reference only while cloning"
 msgstr "복제할 경우에만 --reference를 사용합니다"
 
-#: builtin/clone.c:114 builtin/column.c:27 builtin/merge-file.c:44
+#: builtin/clone.c:116 builtin/column.c:27 builtin/merge-file.c:44
+#: builtin/pack-objects.c:3166 builtin/repack.c:213
 msgid "name"
 msgstr "이름"
 
-#: builtin/clone.c:115
+#: builtin/clone.c:117
 msgid "use <name> instead of 'origin' to track upstream"
 msgstr "업스트림 추적에 'origin' 대신 <이름>을 사용합니다"
 
-#: builtin/clone.c:117
+#: builtin/clone.c:119
 msgid "checkout <branch> instead of the remote's HEAD"
 msgstr "리모트의 HEAD 대신 <브랜치>를 가져옵니다"
 
-#: builtin/clone.c:119
+#: builtin/clone.c:121
 msgid "path to git-upload-pack on the remote"
 msgstr "리모트의 git-upload-pack 경로"
 
-#: builtin/clone.c:120 builtin/fetch.c:151 builtin/grep.c:813
-#: builtin/pull.c:211
+#: builtin/clone.c:122 builtin/fetch.c:150 builtin/grep.c:813
+#: builtin/pull.c:216
 msgid "depth"
 msgstr "깊이"
 
-#: builtin/clone.c:121
+#: builtin/clone.c:123
 msgid "create a shallow clone of that depth"
 msgstr "지정한 깊이의 얕은 복제를 만듭니다"
 
-#: builtin/clone.c:122 builtin/fetch.c:153 builtin/pack-objects.c:3017
+#: builtin/clone.c:124 builtin/fetch.c:152 builtin/pack-objects.c:3157
 #: parse-options.h:154
 msgid "time"
 msgstr "시각"
 
-#: builtin/clone.c:123
+#: builtin/clone.c:125
 msgid "create a shallow clone since a specific time"
 msgstr "지정한 시간 이후의 얕은 복제를 만듭니다"
 
-#: builtin/clone.c:124 builtin/fetch.c:155
+#: builtin/clone.c:126 builtin/fetch.c:154
 msgid "revision"
 msgstr "리비전"
 
-#: builtin/clone.c:125 builtin/fetch.c:156
+#: builtin/clone.c:127 builtin/fetch.c:155
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "리비전을 제외해 얕은 복제의 커밋 내역을 깊게 만듭니다"
 
-#: builtin/clone.c:127
+#: builtin/clone.c:129
 msgid "clone only one branch, HEAD or --branch"
 msgstr "하나의 브랜치만 복제합니다 (HEAD 또는 --branch로 지정)"
 
-#: builtin/clone.c:129
+#: builtin/clone.c:131
 msgid "don't clone any tags, and make later fetches not to follow them"
 msgstr "태그를 복제하지 않습니다. 나중에 가져올 때도 태그를 따르지 않습니다."
 
-#: builtin/clone.c:131
+#: builtin/clone.c:133
 msgid "any cloned submodules will be shallow"
 msgstr "모든 복제한 하위 모듈은 얕은 모듈입니다"
 
-#: builtin/clone.c:132 builtin/init-db.c:485
+#: builtin/clone.c:134 builtin/init-db.c:485
 msgid "gitdir"
 msgstr "gitdir"
 
-#: builtin/clone.c:133 builtin/init-db.c:486
+#: builtin/clone.c:135 builtin/init-db.c:486
 msgid "separate git dir from working tree"
 msgstr "깃 디렉터리를 작업 폴더와 별개의 위치에 놓습니다"
 
-#: builtin/clone.c:134
+#: builtin/clone.c:136
 msgid "key=value"
 msgstr "키=값"
 
-#: builtin/clone.c:135
+#: builtin/clone.c:137
 msgid "set config inside the new repository"
 msgstr "새 저장소 안에서 설정합니다"
 
-#: builtin/clone.c:136 builtin/fetch.c:173 builtin/pull.c:224
-#: builtin/push.c:567
+#: builtin/clone.c:138 builtin/fetch.c:173 builtin/pull.c:229
+#: builtin/push.c:583
 msgid "use IPv4 addresses only"
 msgstr "IPv4 주소만 사용합니다"
 
-#: builtin/clone.c:138 builtin/fetch.c:175 builtin/pull.c:227
-#: builtin/push.c:569
+#: builtin/clone.c:140 builtin/fetch.c:175 builtin/pull.c:232
+#: builtin/push.c:585
 msgid "use IPv6 addresses only"
 msgstr "IPv6 주소만 사용합니다"
 
-#: builtin/clone.c:276
+#: builtin/clone.c:278
 msgid ""
 "No directory name could be guessed.\n"
 "Please specify a directory on the command line"
@@ -7032,42 +7424,42 @@ msgstr ""
 "디렉터리 이름을 알아낼 수 없습니다.\n"
 "명령행에서 디렉터리를 지정하십시오"
 
-#: builtin/clone.c:329
+#: builtin/clone.c:331
 #, c-format
 msgid "info: Could not add alternate for '%s': %s\n"
 msgstr "정보: '%s'에 대한 보조 파일을 추가할 수 없습니다: %s\n"
 
-#: builtin/clone.c:401
+#: builtin/clone.c:403
 #, c-format
 msgid "failed to open '%s'"
 msgstr "'%s'을(를) 여는데 실패"
 
-#: builtin/clone.c:409
+#: builtin/clone.c:411
 #, c-format
 msgid "%s exists and is not a directory"
 msgstr "'%s'이(가) 있지만 디렉터리가 아닙니다"
 
-#: builtin/clone.c:423
+#: builtin/clone.c:425
 #, c-format
 msgid "failed to stat %s\n"
 msgstr "'%s'에 대해 stat()이 실패했습니다\n"
 
-#: builtin/clone.c:445
+#: builtin/clone.c:447
 #, c-format
 msgid "failed to create link '%s'"
 msgstr "'%s' 링크를 만드는데 실패했습니다"
 
-#: builtin/clone.c:449
+#: builtin/clone.c:451
 #, c-format
 msgid "failed to copy file to '%s'"
 msgstr "파일을 '%s'(으)로 복사하는데 실패했습니다"
 
-#: builtin/clone.c:475
+#: builtin/clone.c:477
 #, c-format
 msgid "done.\n"
 msgstr "완료.\n"
 
-#: builtin/clone.c:489
+#: builtin/clone.c:491
 msgid ""
 "Clone succeeded, but checkout failed.\n"
 "You can inspect what was checked out with 'git status'\n"
@@ -7077,99 +7469,99 @@ msgstr ""
 "'git status' 명령으로 무엇을 체크아웃했는지 살펴볼 수 있고\n"
 "'git checkout -f HEAD'로 체크아웃을 다시 할 수 있습니다\n"
 
-#: builtin/clone.c:566
+#: builtin/clone.c:568
 #, c-format
 msgid "Could not find remote branch %s to clone."
 msgstr "복제할 리모트의 %s 브랜치를 찾을 수 없습니다."
 
-#: builtin/clone.c:661
+#: builtin/clone.c:663
 msgid "remote did not send all necessary objects"
 msgstr "리모트에서 필요한 오브젝트를 모두 보내지 않았습니다"
 
-#: builtin/clone.c:677
+#: builtin/clone.c:679
 #, c-format
 msgid "unable to update %s"
 msgstr "%s을(를) 업데이트할 수 없습니다"
 
-#: builtin/clone.c:726
+#: builtin/clone.c:728
 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
 msgstr "리모트 HEAD가 없는 레퍼런스를 참고하므로, 체크아웃할 수 없습니다.\n"
 
-#: builtin/clone.c:756
+#: builtin/clone.c:758
 msgid "unable to checkout working tree"
 msgstr "작업 폴더를 체크아웃할 수 없습니다"
 
-#: builtin/clone.c:801
+#: builtin/clone.c:803
 msgid "unable to write parameters to config file"
 msgstr "파라미터를 설정 파일에 쓸 수 없습니다"
 
-#: builtin/clone.c:864
+#: builtin/clone.c:866
 msgid "cannot repack to clean up"
 msgstr "정리용으로 repack할 수 없습니다"
 
-#: builtin/clone.c:866
+#: builtin/clone.c:868
 msgid "cannot unlink temporary alternates file"
 msgstr "보조 임시 파일을 삭제할 수 없습니다"
 
-#: builtin/clone.c:906 builtin/receive-pack.c:1946
+#: builtin/clone.c:907 builtin/receive-pack.c:1947
 msgid "Too many arguments."
 msgstr "너무 인자가 많습니다."
 
-#: builtin/clone.c:910
+#: builtin/clone.c:911
 msgid "You must specify a repository to clone."
 msgstr "복제할 저장소를 지정해야 합니다."
 
-#: builtin/clone.c:923
+#: builtin/clone.c:924
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr "--bare 및 --origin %s 옵션은 호환되지 않습니다."
 
-#: builtin/clone.c:926
+#: builtin/clone.c:927
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "--bare 및 --separate-git-dir 옵션은 호환되지 않습니다."
 
-#: builtin/clone.c:939
+#: builtin/clone.c:940
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "'%s' 저장소가 없습니다"
 
-#: builtin/clone.c:945 builtin/fetch.c:1455
+#: builtin/clone.c:946 builtin/fetch.c:1460
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "깊이가(%s) 0보다 큰 수가 아닙니다"
 
-#: builtin/clone.c:955
+#: builtin/clone.c:956
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr "대상 경로가('%s') 이미 있고 빈 디렉터리가 아닙니다."
 
-#: builtin/clone.c:965
+#: builtin/clone.c:966
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "작업 폴더가('%s') 이미 있습니다."
 
-#: builtin/clone.c:980 builtin/clone.c:1001 builtin/difftool.c:270
-#: builtin/worktree.c:255 builtin/worktree.c:285
+#: builtin/clone.c:981 builtin/clone.c:1002 builtin/difftool.c:270
+#: builtin/worktree.c:246 builtin/worktree.c:276
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "'%s'의 앞 디렉터리를 만들 수 없습니다"
 
-#: builtin/clone.c:985
+#: builtin/clone.c:986
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "작업 폴더를('%s') 만들 수 없습니다"
 
-#: builtin/clone.c:1005
+#: builtin/clone.c:1006
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "간략한 저장소로('%s') 복제합니다...\n"
 
-#: builtin/clone.c:1007
+#: builtin/clone.c:1008
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "'%s'에 복제합니다...\n"
 
-#: builtin/clone.c:1031
+#: builtin/clone.c:1032
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
@@ -7244,7 +7636,7 @@ msgstr "오른쪽 가장자리에 채울 공백"
 msgid "Padding space between columns"
 msgstr "열 사이에 채울 공백"
 
-#: builtin/column.c:52
+#: builtin/column.c:51
 msgid "--command must be the first argument"
 msgstr "--command는 첫 번째 인자여야 합니다"
 
@@ -7300,61 +7692,61 @@ msgstr ""
 "그 다음에 \"git cherry-pick --continue\"를 하면 나머지 커밋에\n"
 "대해 커밋 빼오기를 다시 시작합니다.\n"
 
-#: builtin/commit.c:284
+#: builtin/commit.c:293
 msgid "failed to unpack HEAD tree object"
 msgstr "HEAD 트리 오브젝트의 묶음을 푸는데 실패했습니다"
 
-#: builtin/commit.c:325
+#: builtin/commit.c:334
 msgid "unable to create temporary index"
 msgstr "임시 인덱스를 만들 수 없습니다"
 
-#: builtin/commit.c:331
+#: builtin/commit.c:340
 msgid "interactive add failed"
 msgstr "대화형 추가가 실패했습니다"
 
-#: builtin/commit.c:344
+#: builtin/commit.c:353
 msgid "unable to update temporary index"
 msgstr "임시 인덱스를 업데이트할 수 없습니다"
 
-#: builtin/commit.c:346
+#: builtin/commit.c:355
 msgid "Failed to update main cache tree"
 msgstr "주요 캐시 트리를 업데이트하는데 실패했습니다"
 
-#: builtin/commit.c:371 builtin/commit.c:395 builtin/commit.c:444
+#: builtin/commit.c:380 builtin/commit.c:403 builtin/commit.c:449
 msgid "unable to write new_index file"
 msgstr "new_index 파일에 쓸 수 없습니다"
 
-#: builtin/commit.c:427
+#: builtin/commit.c:432
 msgid "cannot do a partial commit during a merge."
 msgstr "병합하는 중 부분 커밋을 할 수 없습니다."
 
-#: builtin/commit.c:429
+#: builtin/commit.c:434
 msgid "cannot do a partial commit during a cherry-pick."
 msgstr "커밋 빼오기를 하는 중 부분 커밋을 할 수 없습니다."
 
-#: builtin/commit.c:437
+#: builtin/commit.c:442
 msgid "cannot read the index"
 msgstr "인덱스를 읽을 수 없습니다"
 
-#: builtin/commit.c:456
+#: builtin/commit.c:461
 msgid "unable to write temporary index file"
 msgstr "임시 인덱스 파일을 쓸 수 없습니다"
 
-#: builtin/commit.c:553
+#: builtin/commit.c:558
 #, c-format
 msgid "commit '%s' lacks author header"
 msgstr "'%s' 커밋에 작성자 헤더가 없습니다"
 
-#: builtin/commit.c:555
+#: builtin/commit.c:560
 #, c-format
 msgid "commit '%s' has malformed author line"
 msgstr "'%s' 커밋의 작성자 헤더 형식이 잘못되었습니다"
 
-#: builtin/commit.c:574
+#: builtin/commit.c:579
 msgid "malformed --author parameter"
 msgstr "--author 파라미터 형식이 잘못되었습니다"
 
-#: builtin/commit.c:626
+#: builtin/commit.c:631
 msgid ""
 "unable to select a comment character that is not used\n"
 "in the current commit message"
@@ -7362,38 +7754,38 @@ msgstr ""
 "현재 커밋 메시지에서 사용되지 않는 주석 문자를\n"
 "선택할 수 없습니다"
 
-#: builtin/commit.c:663 builtin/commit.c:696 builtin/commit.c:1024
+#: builtin/commit.c:668 builtin/commit.c:701 builtin/commit.c:1029
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "%s 커밋을 찾아볼 수 없습니다"
 
-#: builtin/commit.c:675 builtin/shortlog.c:309
+#: builtin/commit.c:680 builtin/shortlog.c:316
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(표준 입력에서 로그 메시지를 읽음)\n"
 
-#: builtin/commit.c:677
+#: builtin/commit.c:682
 msgid "could not read log from standard input"
 msgstr "표준 입력에서 로그 메시지를 읽을 수 없습니다"
 
-#: builtin/commit.c:681
+#: builtin/commit.c:686
 #, c-format
 msgid "could not read log file '%s'"
 msgstr "'%s' 로그 파일을 읽을 수 없습니다"
 
-#: builtin/commit.c:710 builtin/commit.c:718
+#: builtin/commit.c:715 builtin/commit.c:723
 msgid "could not read SQUASH_MSG"
 msgstr "SQUASH_MSG를 읽을 수 없습니다"
 
-#: builtin/commit.c:715
+#: builtin/commit.c:720
 msgid "could not read MERGE_MSG"
 msgstr "MERGE_MSG를 읽을 수 없습니다"
 
-#: builtin/commit.c:769
+#: builtin/commit.c:774
 msgid "could not write commit template"
 msgstr "커밋 서식을 쓸 수 없습니다"
 
-#: builtin/commit.c:787
+#: builtin/commit.c:792
 #, c-format
 msgid ""
 "\n"
@@ -7408,7 +7800,7 @@ msgstr ""
 "\t%s\n"
 "다시 시도하십시오.\n"
 
-#: builtin/commit.c:792
+#: builtin/commit.c:797
 #, c-format
 msgid ""
 "\n"
@@ -7423,7 +7815,7 @@ msgstr ""
 "\t%s\n"
 "다시 시도하십시오.\n"
 
-#: builtin/commit.c:805
+#: builtin/commit.c:810
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -7432,7 +7824,7 @@ msgstr ""
 "변경 사항에 대한 커밋 메시지를 입력하십시오. '%c' 문자로 시작하는\n"
 "줄은 무시되고, 메시지를 입력하지 않으면 커밋이 중지됩니다.\n"
 
-#: builtin/commit.c:813
+#: builtin/commit.c:818
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -7443,149 +7835,149 @@ msgstr ""
 "줄은 보존되니, 필요하면 직접 제거하십시오. 메시지를 입력하지\n"
 "않으면 커밋이 중지됩니다.\n"
 
-#: builtin/commit.c:830
+#: builtin/commit.c:835
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr "%s작성자:    %.*s <%.*s>"
 
-#: builtin/commit.c:838
+#: builtin/commit.c:843
 #, c-format
 msgid "%sDate:      %s"
 msgstr "%s시각:      %s"
 
-#: builtin/commit.c:845
+#: builtin/commit.c:850
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr "%s커미터: %.*s <%.*s>"
 
-#: builtin/commit.c:862
+#: builtin/commit.c:867
 msgid "Cannot read index"
 msgstr "인덱스를 읽을 수 없습니다"
 
-#: builtin/commit.c:928
+#: builtin/commit.c:933
 msgid "Error building trees"
 msgstr "트리를 만드는데 오류"
 
-#: builtin/commit.c:942 builtin/tag.c:256
+#: builtin/commit.c:947 builtin/tag.c:257
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "메시지를 -m 또는 -F 옵션으로 입력하십시오.\n"
 
-#: builtin/commit.c:986
+#: builtin/commit.c:991
 #, c-format
 msgid "--author '%s' is not 'Name <email>' and matches no existing author"
 msgstr ""
 "--author '%s' 옵션이 '이름 <전자메일>' 형식이 아니고 기존 작성자에도 없습니다"
 
-#: builtin/commit.c:1000
+#: builtin/commit.c:1005
 #, c-format
 msgid "Invalid ignored mode '%s'"
 msgstr "무시한 모드가 ('%s') 잘못되었습니다"
 
-#: builtin/commit.c:1014 builtin/commit.c:1264
+#: builtin/commit.c:1019 builtin/commit.c:1269
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "추적되지 않는 파일 모드가 ('%s') 잘못되었습니다"
 
-#: builtin/commit.c:1052
+#: builtin/commit.c:1057
 msgid "--long and -z are incompatible"
 msgstr "--long 및 -z 옵션은 호환되지 않습니다"
 
-#: builtin/commit.c:1085
+#: builtin/commit.c:1090
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "--reset-author 및 --author 옵션을 모두 사용하면 앞뒤가 맞지 않습니다"
 
-#: builtin/commit.c:1094
+#: builtin/commit.c:1099
 msgid "You have nothing to amend."
 msgstr "바꿀 사항이 없습니다."
 
-#: builtin/commit.c:1097
+#: builtin/commit.c:1102
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr "병합 중에 있습니다 -- 커밋을 바꿀 수 없습니다."
 
-#: builtin/commit.c:1099
+#: builtin/commit.c:1104
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr "커밋 빼오기 중에 있습니다 -- 커밋을 바꿀 수 없습니다."
 
-#: builtin/commit.c:1102
+#: builtin/commit.c:1107
 msgid "Options --squash and --fixup cannot be used together"
 msgstr "--squash 및 --fixup 옵션은 같이 쓸 수 없습니다"
 
-#: builtin/commit.c:1112
+#: builtin/commit.c:1117
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "-c/-C/-F/--fixup 옵션 중에 하나만 사용할 수 있습니다."
 
-#: builtin/commit.c:1114
+#: builtin/commit.c:1119
 msgid "Option -m cannot be combined with -c/-C/-F."
 msgstr "-m 옵션은 -c/-C/-F 옵션과 같이 쓸 수 없습니다."
 
-#: builtin/commit.c:1122
+#: builtin/commit.c:1127
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr "--reset-author 옵션은 -C, -c 또는 --amend 옵션과 같이 써야 합니다."
 
-#: builtin/commit.c:1139
+#: builtin/commit.c:1144
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr ""
 "--include/--only/--all/--interactive/--patch 옵션 중 하나만 사용할 수 있습니"
 "다."
 
-#: builtin/commit.c:1141
+#: builtin/commit.c:1146
 msgid "No paths with --include/--only does not make sense."
 msgstr "경로가 없이 --include/--only 옵션을 쓰면 앞뒤가 맞지 않습니다."
 
-#: builtin/commit.c:1155 builtin/tag.c:542
+#: builtin/commit.c:1160 builtin/tag.c:543
 #, c-format
 msgid "Invalid cleanup mode %s"
 msgstr "잘못된 정리 모드 %s"
 
-#: builtin/commit.c:1160
+#: builtin/commit.c:1165
 msgid "Paths with -a does not make sense."
 msgstr "-a 옵션과 경로를 같이 사용하면 앞뒤가 맞지 않습니다."
 
-#: builtin/commit.c:1278 builtin/commit.c:1443
+#: builtin/commit.c:1303 builtin/commit.c:1480
 msgid "show status concisely"
 msgstr "상태를 간략하게 표시합니다"
 
-#: builtin/commit.c:1280 builtin/commit.c:1445
+#: builtin/commit.c:1305 builtin/commit.c:1482
 msgid "show branch information"
 msgstr "브랜치 정보를 표시합니다"
 
-#: builtin/commit.c:1282
+#: builtin/commit.c:1307
 msgid "show stash information"
 msgstr "스태시 정보를 표시합니다"
 
-#: builtin/commit.c:1284 builtin/commit.c:1447
+#: builtin/commit.c:1309 builtin/commit.c:1484
 msgid "compute full ahead/behind values"
 msgstr "앞/뒤 값 전체를 계산합니다"
 
-#: builtin/commit.c:1286
+#: builtin/commit.c:1311
 msgid "version"
 msgstr "버전"
 
-#: builtin/commit.c:1286 builtin/commit.c:1449 builtin/push.c:542
-#: builtin/worktree.c:541
+#: builtin/commit.c:1311 builtin/commit.c:1486 builtin/push.c:558
+#: builtin/worktree.c:581
 msgid "machine-readable output"
 msgstr "컴퓨터가 읽을 수 있는 형식"
 
-#: builtin/commit.c:1289 builtin/commit.c:1451
+#: builtin/commit.c:1314 builtin/commit.c:1488
 msgid "show status in long format (default)"
 msgstr "긴 형식으로 상태를 표시합니다 (기본값)"
 
-#: builtin/commit.c:1292 builtin/commit.c:1454
+#: builtin/commit.c:1317 builtin/commit.c:1491
 msgid "terminate entries with NUL"
 msgstr "NUL 문자로 항목을 끝냅니다"
 
-#: builtin/commit.c:1294 builtin/commit.c:1298 builtin/commit.c:1457
-#: builtin/fast-export.c:999 builtin/fast-export.c:1002 builtin/tag.c:396
+#: builtin/commit.c:1319 builtin/commit.c:1323 builtin/commit.c:1494
+#: builtin/fast-export.c:1001 builtin/fast-export.c:1004 builtin/tag.c:397
 msgid "mode"
 msgstr "모드"
 
-#: builtin/commit.c:1295 builtin/commit.c:1457
+#: builtin/commit.c:1320 builtin/commit.c:1494
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr ""
 "추적되지 않는 파일을 표시합니다. 추가 옵션: all, normal, no (기본값: all)"
 
-#: builtin/commit.c:1299
+#: builtin/commit.c:1324
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
@@ -7593,11 +7985,11 @@ msgstr ""
 "무시된 파일을 표시합니다. 추가 옵션: traditional, matching, no. (기본값: "
 "traditional)"
 
-#: builtin/commit.c:1301 parse-options.h:167
+#: builtin/commit.c:1326 parse-options.h:167
 msgid "when"
 msgstr "언제"
 
-#: builtin/commit.c:1302
+#: builtin/commit.c:1327
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
@@ -7605,183 +7997,191 @@ msgstr ""
 "하위 모듈의 변경을 무시합니다. 추가 옵션: all, dirty, untracked. (기본값: "
 "all)"
 
-#: builtin/commit.c:1304
+#: builtin/commit.c:1329
 msgid "list untracked files in columns"
 msgstr "추적되지 않는 파일의 목록을 여러 열로 표시합니다"
 
-#: builtin/commit.c:1323
+#: builtin/commit.c:1330
+msgid "do not detect renames"
+msgstr "이름 바꾸기를 검사하지 않습니다"
+
+#: builtin/commit.c:1332
+msgid "detect renames, optionally set similarity index"
+msgstr "이름 바꾸기 검사하고, 부가적으로 유사성 인덱스를 설정합니다"
+
+#: builtin/commit.c:1352
 msgid "Unsupported combination of ignored and untracked-files arguments"
 msgstr "무시한 모드와 추적되지 않는 파일의 인수가 지원되지 않는 조합입니다"
 
-#: builtin/commit.c:1413
+#: builtin/commit.c:1450
 msgid "suppress summary after successful commit"
 msgstr "성공적인 커밋 후에 요약을 표시하지 않습니다"
 
-#: builtin/commit.c:1414
+#: builtin/commit.c:1451
 msgid "show diff in commit message template"
 msgstr "커밋 메시지 서식에 diff를 표시합니다"
 
-#: builtin/commit.c:1416
+#: builtin/commit.c:1453
 msgid "Commit message options"
 msgstr "커밋 메시지 옵션"
 
-#: builtin/commit.c:1417 builtin/tag.c:393
+#: builtin/commit.c:1454 builtin/tag.c:394
 msgid "read message from file"
 msgstr "파일에서 메시지를 읽습니다"
 
-#: builtin/commit.c:1418
+#: builtin/commit.c:1455
 msgid "author"
 msgstr "작성자"
 
-#: builtin/commit.c:1418
+#: builtin/commit.c:1455
 msgid "override author for commit"
 msgstr "커밋의 작성자를 지정합니다"
 
-#: builtin/commit.c:1419 builtin/gc.c:359
+#: builtin/commit.c:1456 builtin/gc.c:501
 msgid "date"
 msgstr "시각"
 
-#: builtin/commit.c:1419
+#: builtin/commit.c:1456
 msgid "override date for commit"
 msgstr "커밋의 시각을 지정합니다"
 
-#: builtin/commit.c:1420 builtin/merge.c:226 builtin/notes.c:402
-#: builtin/notes.c:565 builtin/tag.c:391
+#: builtin/commit.c:1457 builtin/merge.c:228 builtin/notes.c:402
+#: builtin/notes.c:565 builtin/tag.c:392
 msgid "message"
 msgstr "메시지"
 
-#: builtin/commit.c:1420
+#: builtin/commit.c:1457
 msgid "commit message"
 msgstr "커밋 메시지"
 
-#: builtin/commit.c:1421 builtin/commit.c:1422 builtin/commit.c:1423
-#: builtin/commit.c:1424 parse-options.h:269 ref-filter.h:92
+#: builtin/commit.c:1458 builtin/commit.c:1459 builtin/commit.c:1460
+#: builtin/commit.c:1461 parse-options.h:270 ref-filter.h:92
 msgid "commit"
 msgstr "커밋"
 
-#: builtin/commit.c:1421
+#: builtin/commit.c:1458
 msgid "reuse and edit message from specified commit"
 msgstr "지정한 커밋의 메시지를 재사용하고 편집합니다"
 
-#: builtin/commit.c:1422
+#: builtin/commit.c:1459
 msgid "reuse message from specified commit"
 msgstr "지정한 커밋에서 메시지를 재사용합니다"
 
-#: builtin/commit.c:1423
+#: builtin/commit.c:1460
 msgid "use autosquash formatted message to fixup specified commit"
 msgstr "지정한 커밋을 수정하는데 autosquash 형식 메시지를 사용합니다"
 
-#: builtin/commit.c:1424
+#: builtin/commit.c:1461
 msgid "use autosquash formatted message to squash specified commit"
 msgstr "지정한 커밋을 합치는데 autosquash 형식 메시지를 사용합니다"
 
-#: builtin/commit.c:1425
+#: builtin/commit.c:1462
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr "커밋을 내가 작성한 것으로 만듭니다 (-C/-c/--amend와 같이 사용)"
 
-#: builtin/commit.c:1426 builtin/log.c:1446 builtin/merge.c:240
-#: builtin/pull.c:149 builtin/revert.c:105
+#: builtin/commit.c:1463 builtin/log.c:1446 builtin/merge.c:242
+#: builtin/pull.c:154 builtin/revert.c:105
 msgid "add Signed-off-by:"
 msgstr "Signed-off-by: 줄을 추가합니다"
 
-#: builtin/commit.c:1427
+#: builtin/commit.c:1464
 msgid "use specified template file"
 msgstr "지정한 서식 파일을 사용합니다"
 
-#: builtin/commit.c:1428
+#: builtin/commit.c:1465
 msgid "force edit of commit"
 msgstr "커밋 편집을 강제합니다"
 
-#: builtin/commit.c:1429
+#: builtin/commit.c:1466
 msgid "default"
 msgstr "기본값"
 
-#: builtin/commit.c:1429 builtin/tag.c:397
+#: builtin/commit.c:1466 builtin/tag.c:398
 msgid "how to strip spaces and #comments from message"
 msgstr "메시지에서 공백과 #주석을 지웁니다"
 
-#: builtin/commit.c:1430
+#: builtin/commit.c:1467
 msgid "include status in commit message template"
 msgstr "커밋 메시지 서식에 상태를 포함합니다"
 
-#: builtin/commit.c:1432 builtin/merge.c:238 builtin/pull.c:179
+#: builtin/commit.c:1469 builtin/merge.c:240 builtin/pull.c:184
 #: builtin/revert.c:113
 msgid "GPG sign commit"
 msgstr "GPG 서명 커밋"
 
-#: builtin/commit.c:1435
+#: builtin/commit.c:1472
 msgid "Commit contents options"
 msgstr "커밋 내용 옵션"
 
-#: builtin/commit.c:1436
+#: builtin/commit.c:1473
 msgid "commit all changed files"
 msgstr "변경된 파일을 모두 커밋합니다"
 
-#: builtin/commit.c:1437
+#: builtin/commit.c:1474
 msgid "add specified files to index for commit"
 msgstr "지정한 파일을 커밋할 인덱스에 추가합니다"
 
-#: builtin/commit.c:1438
+#: builtin/commit.c:1475
 msgid "interactively add files"
 msgstr "대화형으로 파일을 추가합니다"
 
-#: builtin/commit.c:1439
+#: builtin/commit.c:1476
 msgid "interactively add changes"
 msgstr "대화형으로 변경 사항을 추가합니다"
 
-#: builtin/commit.c:1440
+#: builtin/commit.c:1477
 msgid "commit only specified files"
 msgstr "지정한 파일만 커밋합니다"
 
-#: builtin/commit.c:1441
+#: builtin/commit.c:1478
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr "커밋 전 후크와 커밋 메시지 후크를 건너뜁니다"
 
-#: builtin/commit.c:1442
+#: builtin/commit.c:1479
 msgid "show what would be committed"
 msgstr "무엇을 커밋할지 표시합니다"
 
-#: builtin/commit.c:1455
+#: builtin/commit.c:1492
 msgid "amend previous commit"
 msgstr "바로 앞 커밋을 바꿉니다"
 
-#: builtin/commit.c:1456
+#: builtin/commit.c:1493
 msgid "bypass post-rewrite hook"
 msgstr "다시쓰기 후 후크를 건너뜁니다"
 
-#: builtin/commit.c:1461
+#: builtin/commit.c:1498
 msgid "ok to record an empty change"
 msgstr "빈 변경 사항을 기록하도록 허용합니다"
 
-#: builtin/commit.c:1463
+#: builtin/commit.c:1500
 msgid "ok to record a change with an empty message"
 msgstr "빈 메시지와 같이 변경 사항을 기록하도록 허용합니다"
 
-#: builtin/commit.c:1536
+#: builtin/commit.c:1573
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "손상된 MERGE_HEAD 파일 (%s)"
 
-#: builtin/commit.c:1543
+#: builtin/commit.c:1580
 msgid "could not read MERGE_MODE"
 msgstr "MERGE_MODE를 읽을 수 없습니다"
 
-#: builtin/commit.c:1562
+#: builtin/commit.c:1599
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "커밋 메시지를 읽을 수 없습니다: %s"
 
-#: builtin/commit.c:1573
+#: builtin/commit.c:1610
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr "커밋을 중지합니다. 커밋 메시지가 비어 있습니다.\n"
 
-#: builtin/commit.c:1578
+#: builtin/commit.c:1615
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr "커밋을 중지합니다. 메시지를 편집하지 않았습니다.\n"
 
-#: builtin/commit.c:1613
+#: builtin/commit.c:1650
 msgid ""
 "Repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full and quota is\n"
@@ -7791,147 +8191,211 @@ msgstr ""
 "없습니다. 디스크가 꽉 차지 않았고 제한 용량을 넘어가지\n"
 "않았는지 확인하십시오. 그리고 'git reset HEAD'로 복구하십시오."
 
+#: builtin/commit-graph.c:9
+msgid "git commit-graph [--object-dir <objdir>]"
+msgstr "git commit-graph [--object-dir <오브젝트디렉터리>]"
+
+#: builtin/commit-graph.c:10 builtin/commit-graph.c:16
+msgid "git commit-graph read [--object-dir <objdir>]"
+msgstr "git commit-graph read [--object-dir <오브젝트디렉터리>]"
+
+#: builtin/commit-graph.c:11 builtin/commit-graph.c:21
+msgid ""
+"git commit-graph write [--object-dir <objdir>] [--append] [--stdin-packs|--"
+"stdin-commits]"
+msgstr ""
+"git commit-graph write [--object-dir <오브젝트디렉터리>] [--append] [--stdin-"
+"packs|--stdin-commits]"
+
+#: builtin/commit-graph.c:39 builtin/commit-graph.c:92
+#: builtin/commit-graph.c:147 builtin/fetch.c:161 builtin/log.c:1466
+msgid "dir"
+msgstr "디렉터리"
+
+#: builtin/commit-graph.c:40 builtin/commit-graph.c:93
+#: builtin/commit-graph.c:148
+msgid "The object directory to store the graph"
+msgstr "그래프를 저장할 오브젝트 디렉터리"
+
+#: builtin/commit-graph.c:95
+msgid "scan pack-indexes listed by stdin for commits"
+msgstr "커밋을 찾을 때 표준입력에서 열거한 묶음 인덱스를 검사합니다"
+
+#: builtin/commit-graph.c:97
+msgid "start walk at commits listed by stdin"
+msgstr "표준 입력에 열거한 커밋에서부터 그리기를 시작합니다"
+
+#: builtin/commit-graph.c:99
+msgid "include all commits already in the commit-graph file"
+msgstr "commit-graph 파일에 이미 있는 모든 커밋을 포함합니다"
+
+#: builtin/commit-graph.c:108
+msgid "cannot use both --stdin-commits and --stdin-packs"
+msgstr "--stdin-commits 및 --stdin-packs 옵션은 같이 쓸 수 없습니다"
+
 #: builtin/config.c:10
 msgid "git config [<options>]"
 msgstr "git config [<옵션>]"
 
-#: builtin/config.c:58
+#: builtin/config.c:101
+#, c-format
+msgid "unrecognized --type argument, %s"
+msgstr "알 수 없는 --type 인자: %s"
+
+#: builtin/config.c:123
 msgid "Config file location"
 msgstr "설정 파일 위치"
 
-#: builtin/config.c:59
+#: builtin/config.c:124
 msgid "use global config file"
 msgstr "공통 설정 파일을 사용합니다"
 
-#: builtin/config.c:60
+#: builtin/config.c:125
 msgid "use system config file"
 msgstr "시스템 설정 파일을 사용합니다"
 
-#: builtin/config.c:61
+#: builtin/config.c:126
 msgid "use repository config file"
 msgstr "저장소 설정 파일을 사용합니다"
 
-#: builtin/config.c:62
+#: builtin/config.c:127
 msgid "use given config file"
 msgstr "지정한 설정 파일을 사용합니다"
 
-#: builtin/config.c:63
+#: builtin/config.c:128
 msgid "blob-id"
 msgstr "블롭-id"
 
-#: builtin/config.c:63
+#: builtin/config.c:128
 msgid "read config from given blob object"
 msgstr "지정한 블롭 오브젝트에서 설정을 읽습니다"
 
-#: builtin/config.c:64
+#: builtin/config.c:129
 msgid "Action"
 msgstr "동작"
 
-#: builtin/config.c:65
+#: builtin/config.c:130
 msgid "get value: name [value-regex]"
 msgstr "값을 가져옵니다: <이름> [<값-정규식>]"
 
-#: builtin/config.c:66
+#: builtin/config.c:131
 msgid "get all values: key [value-regex]"
 msgstr "모든 값을 가져옵니다: <키> [<값-정규식>]"
 
-#: builtin/config.c:67
+#: builtin/config.c:132
 msgid "get values for regexp: name-regex [value-regex]"
 msgstr "정규식에 대한 값을 가져옵니다: <이름-정규식> [<값-정규식>]"
 
-#: builtin/config.c:68
+#: builtin/config.c:133
 msgid "get value specific for the URL: section[.var] URL"
 msgstr "<URL>에 특정되는 값을 가져옵니다: <섹션>[.<변수>] <URL>"
 
-#: builtin/config.c:69
+#: builtin/config.c:134
 msgid "replace all matching variables: name value [value_regex]"
 msgstr "해당하는 변수를 모두 제거합니다: <이름> <값> [<값-정규식>]"
 
-#: builtin/config.c:70
+#: builtin/config.c:135
 msgid "add a new variable: name value"
 msgstr "새 변수를 추가합니다: <이름> <값>"
 
-#: builtin/config.c:71
+#: builtin/config.c:136
 msgid "remove a variable: name [value-regex]"
 msgstr "변수를 제거합니다: <이름> [<값-정규식>]"
 
-#: builtin/config.c:72
+#: builtin/config.c:137
 msgid "remove all matches: name [value-regex]"
 msgstr "해당하는 항목을 모두 제거합니다: <이름> [<값-정규식>]"
 
-#: builtin/config.c:73
+#: builtin/config.c:138
 msgid "rename section: old-name new-name"
 msgstr "섹션의 이름을 바꿉니다: <옛-이름> <새-이름>"
 
-#: builtin/config.c:74
+#: builtin/config.c:139
 msgid "remove a section: name"
 msgstr "섹션을 제거합니다: <이름>"
 
-#: builtin/config.c:75
+#: builtin/config.c:140
 msgid "list all"
 msgstr "전체 목록을 표시합니다"
 
-#: builtin/config.c:76
+#: builtin/config.c:141
 msgid "open an editor"
 msgstr "편집기를 엽니다"
 
-#: builtin/config.c:77
+#: builtin/config.c:142
 msgid "find the color configured: slot [default]"
 msgstr "설정한 색을 찾습니다: slot [<기본값>]"
 
-#: builtin/config.c:78
+#: builtin/config.c:143
 msgid "find the color setting: slot [stdout-is-tty]"
 msgstr "색 설정을 찾습니다: slot [<표준출력이-TTY인지-여부>]"
 
-#: builtin/config.c:79
+#: builtin/config.c:144
 msgid "Type"
 msgstr "값 종류"
 
-#: builtin/config.c:80
+#: builtin/config.c:145
+msgid "value is given this type"
+msgstr "값이 해당 종류로 주어집니다"
+
+#: builtin/config.c:146
 msgid "value is \"true\" or \"false\""
 msgstr "값이 \"true\" 또는 \"false\"입니다"
 
-#: builtin/config.c:81
+#: builtin/config.c:147
 msgid "value is decimal number"
 msgstr "값이 십진수입니다"
 
-#: builtin/config.c:82
+#: builtin/config.c:148
 msgid "value is --bool or --int"
 msgstr "값이 --bool 또는 --int입니다"
 
-#: builtin/config.c:83
+#: builtin/config.c:149
 msgid "value is a path (file or directory name)"
 msgstr "값이 경로(파일 또는 디렉터리 이름)입니다"
 
-#: builtin/config.c:84
+#: builtin/config.c:150
 msgid "value is an expiry date"
 msgstr "값이 만료 시각입니다"
 
-#: builtin/config.c:85
+#: builtin/config.c:151
 msgid "Other"
 msgstr "기타"
 
-#: builtin/config.c:86
+#: builtin/config.c:152
 msgid "terminate values with NUL byte"
 msgstr "값을 NUL 바이트로 끝냅니다"
 
-#: builtin/config.c:87
+#: builtin/config.c:153
 msgid "show variable names only"
 msgstr "변수 이름만 표시합니다"
 
-#: builtin/config.c:88
+#: builtin/config.c:154
 msgid "respect include directives on lookup"
 msgstr "찾아볼 때 include 지시어를 고려합니다"
 
-#: builtin/config.c:89
+#: builtin/config.c:155
 msgid "show origin of config (file, standard input, blob, command line)"
 msgstr "설정의 출처를 표시합니다 (파일, 표준 입력, 블롭, 명령행)"
 
-#: builtin/config.c:335
+#: builtin/config.c:156
+msgid "value"
+msgstr "값"
+
+#: builtin/config.c:156
+msgid "with --get, use default value when missing entry"
+msgstr "--wget 옵션에서, 해당 항목이 없으면 기본값을 사용합니다"
+
+#: builtin/config.c:332
+#, c-format
+msgid "failed to format default config value: %s"
+msgstr "기본 설정 값을 포매팅하는데 실패했습니다: %s"
+
+#: builtin/config.c:431
 msgid "unable to parse default color value"
 msgstr "기본 색 값을 파싱할 수 없습니다"
 
-#: builtin/config.c:479
+#: builtin/config.c:575
 #, c-format
 msgid ""
 "# This is Git's per-user configuration file.\n"
@@ -7946,16 +8410,20 @@ msgstr ""
 "#\tname = %s\n"
 "#\temail = %s\n"
 
-#: builtin/config.c:507
+#: builtin/config.c:603
 msgid "--local can only be used inside a git repository"
 msgstr "--local 옵션은 깃 저장소 안에서만 쓸 수 있습니다"
 
-#: builtin/config.c:632
+#: builtin/config.c:606
+msgid "--blob can only be used inside a git repository"
+msgstr "--blob 옵션은 깃 저장소 안에서만 쓸 수 있습니다"
+
+#: builtin/config.c:735
 #, c-format
 msgid "cannot create configuration file %s"
 msgstr "%s 설정 파일을 만들 수 없습니다"
 
-#: builtin/config.c:645
+#: builtin/config.c:748
 #, c-format
 msgid ""
 "cannot overwrite multiple values with a single value\n"
@@ -7965,11 +8433,11 @@ msgstr ""
 "%s을(를) 변경하려면 정규식을 쓰거나, --add 또는 --replace-all 옵션을\n"
 "사용하십시오."
 
-#: builtin/count-objects.c:88
+#: builtin/count-objects.c:90
 msgid "git count-objects [-v] [-H | --human-readable]"
 msgstr "git count-objects [-v] [-H | --human-readable]"
 
-#: builtin/count-objects.c:98
+#: builtin/count-objects.c:100
 msgid "print sizes in human readable format"
 msgstr "사람이 읽기 좋은 형식으로 크기를 표시합니다"
 
@@ -8233,278 +8701,284 @@ msgstr "전체 디렉터리 diff를 수행합니다"
 msgid "do not prompt before launching a diff tool"
 msgstr "diff 도구를 실행하기 전에 프롬프트를 표시하지 않습니다"
 
-#: builtin/difftool.c:705
+#: builtin/difftool.c:704
 msgid "use symlinks in dir-diff mode"
 msgstr "dir-diff 모드에서 심볼릭 링크를 사용합니다"
 
-#: builtin/difftool.c:706
+#: builtin/difftool.c:705
 msgid "<tool>"
 msgstr "<도구>"
 
-#: builtin/difftool.c:707
+#: builtin/difftool.c:706
 msgid "use the specified diff tool"
 msgstr "지정한 diff 도구를 사용합니다"
 
-#: builtin/difftool.c:709
+#: builtin/difftool.c:708
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr "`--tool` 옵션에서 사용할 수 있는 diff 도구 목록을 표시합니다"
 
-#: builtin/difftool.c:712
+#: builtin/difftool.c:711
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
 msgstr ""
 "실행한 diff 도구가 0이 아닌 코드를 리턴하면 'git-difftool'이 끝나게 합니다"
 
-#: builtin/difftool.c:714
+#: builtin/difftool.c:713
 msgid "<command>"
 msgstr "<명령>"
 
-#: builtin/difftool.c:715
+#: builtin/difftool.c:714
 msgid "specify a custom command for viewing diffs"
 msgstr "diff를 보는 명령어를 사용자가 지정합니다"
 
-#: builtin/difftool.c:739
+#: builtin/difftool.c:738
 msgid "no <tool> given for --tool=<tool>"
 msgstr "--tool=<도구> 옵션에 <도구>가 주어지지 않았습니다"
 
-#: builtin/difftool.c:746
+#: builtin/difftool.c:745
 msgid "no <cmd> given for --extcmd=<cmd>"
 msgstr "--extcmd=<명령> 옵션에 <명령>이 주어지지 않았습니다"
 
-#: builtin/fast-export.c:26
+#: builtin/fast-export.c:27
 msgid "git fast-export [rev-list-opts]"
 msgstr "git fast-export [rev-list-옵션]"
 
-#: builtin/fast-export.c:998
+#: builtin/fast-export.c:1000
 msgid "show progress after <n> objects"
 msgstr "오브젝트 <n>개 뒤에 진행 상황을 표시합니다"
 
-#: builtin/fast-export.c:1000
+#: builtin/fast-export.c:1002
 msgid "select handling of signed tags"
 msgstr "서명한 태그의 처리 방식을 선택합니다"
 
-#: builtin/fast-export.c:1003
+#: builtin/fast-export.c:1005
 msgid "select handling of tags that tag filtered objects"
 msgstr "필터링한 오브젝트에 대한 태그의 처리 방식을 선택합니다"
 
-#: builtin/fast-export.c:1006
+#: builtin/fast-export.c:1008
 msgid "Dump marks to this file"
 msgstr "이 파일로 표시를 내보냅니다"
 
-#: builtin/fast-export.c:1008
+#: builtin/fast-export.c:1010
 msgid "Import marks from this file"
 msgstr "이 파일에서 표시를 가져옵니다"
 
-#: builtin/fast-export.c:1010
+#: builtin/fast-export.c:1012
 msgid "Fake a tagger when tags lack one"
 msgstr "태그에 태그붙인 사람이 없을 때 가짜로 만듭니다"
 
-#: builtin/fast-export.c:1012
+#: builtin/fast-export.c:1014
 msgid "Output full tree for each commit"
 msgstr "커밋 마다 전체 트리를 출력합니다"
 
-#: builtin/fast-export.c:1014
+#: builtin/fast-export.c:1016
 msgid "Use the done feature to terminate the stream"
 msgstr "스트림을 끝내는데 완료 기능을 사용합니다"
 
-#: builtin/fast-export.c:1015
+#: builtin/fast-export.c:1017
 msgid "Skip output of blob data"
 msgstr "블롭 데이터의 출력을 건너뜁니다"
 
-#: builtin/fast-export.c:1016
+#: builtin/fast-export.c:1018
 msgid "refspec"
 msgstr "레퍼런스명세"
 
-#: builtin/fast-export.c:1017
+#: builtin/fast-export.c:1019
 msgid "Apply refspec to exported refs"
 msgstr "레퍼런스명세를 내보낸 레퍼런스에 적용합니다"
 
-#: builtin/fast-export.c:1018
+#: builtin/fast-export.c:1020
 msgid "anonymize output"
 msgstr "출력을 익명화합니다"
 
-#: builtin/fetch.c:25
+#: builtin/fetch.c:26
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
 msgstr "git fetch [<옵션>] [<저장소> [<레퍼런스명세>...]]"
 
-#: builtin/fetch.c:26
+#: builtin/fetch.c:27
 msgid "git fetch [<options>] <group>"
 msgstr "git fetch [<옵션>] <그룹>"
 
-#: builtin/fetch.c:27
+#: builtin/fetch.c:28
 msgid "git fetch --multiple [<options>] [(<repository> | <group>)...]"
 msgstr "git fetch --multiple [<옵션>] [(<저장소> | <그룹>)...]"
 
-#: builtin/fetch.c:28
+#: builtin/fetch.c:29
 msgid "git fetch --all [<options>]"
 msgstr "git fetch --all [<옵션>]"
 
-#: builtin/fetch.c:124 builtin/pull.c:188
+#: builtin/fetch.c:123 builtin/pull.c:193
 msgid "fetch from all remotes"
 msgstr "모든 리모트에서 가져옵니다"
 
-#: builtin/fetch.c:126 builtin/pull.c:191
+#: builtin/fetch.c:125 builtin/pull.c:196
 msgid "append to .git/FETCH_HEAD instead of overwriting"
 msgstr "덮어쓰지 말고 .git/FETCH_HEAD에 덧붙입니다"
 
-#: builtin/fetch.c:128 builtin/pull.c:194
+#: builtin/fetch.c:127 builtin/pull.c:199
 msgid "path to upload pack on remote end"
 msgstr "리모트 쪽에 묶음을 업로드할 경로"
 
-#: builtin/fetch.c:129 builtin/pull.c:196
+#: builtin/fetch.c:128 builtin/pull.c:201
 msgid "force overwrite of local branch"
 msgstr "로컬 브랜치를 강제로 덮어씁니다"
 
-#: builtin/fetch.c:131
+#: builtin/fetch.c:130
 msgid "fetch from multiple remotes"
 msgstr "여러 리모트에서 가져옵니다"
 
-#: builtin/fetch.c:133 builtin/pull.c:198
+#: builtin/fetch.c:132 builtin/pull.c:203
 msgid "fetch all tags and associated objects"
 msgstr "모든 태그와 관련 오브젝트를 가져옵니다"
 
-#: builtin/fetch.c:135
+#: builtin/fetch.c:134
 msgid "do not fetch all tags (--no-tags)"
 msgstr "모든 태그를 가져오지 않습니다 (--no-tags)"
 
-#: builtin/fetch.c:137
+#: builtin/fetch.c:136
 msgid "number of submodules fetched in parallel"
 msgstr "병렬적으로 받아오는 하위모듈 개수"
 
-#: builtin/fetch.c:139 builtin/pull.c:201
+#: builtin/fetch.c:138 builtin/pull.c:206
 msgid "prune remote-tracking branches no longer on remote"
 msgstr "리모트에 이제 없는 리모트 추적 브랜치를 잘라냅니다"
 
-#: builtin/fetch.c:141
+#: builtin/fetch.c:140
 msgid "prune local tags no longer on remote and clobber changed tags"
 msgstr "리모트 저장소에 없는 로컬 태그를 제거하고 변경된 태크를 적용합니다"
 
-#: builtin/fetch.c:142 builtin/fetch.c:165 builtin/pull.c:126
+#: builtin/fetch.c:141 builtin/fetch.c:164 builtin/pull.c:131
 msgid "on-demand"
 msgstr "주문형"
 
-#: builtin/fetch.c:143
+#: builtin/fetch.c:142
 msgid "control recursive fetching of submodules"
 msgstr "하위 모듈 재귀적으로 가져오기 방식을 설정합니다"
 
-#: builtin/fetch.c:147 builtin/pull.c:209
+#: builtin/fetch.c:146 builtin/pull.c:214
 msgid "keep downloaded pack"
 msgstr "다운로드한 묶음을 보존합니다"
 
-#: builtin/fetch.c:149
+#: builtin/fetch.c:148
 msgid "allow updating of HEAD ref"
 msgstr "HEAD 레퍼런스 업데이트를 허용합니다"
 
-#: builtin/fetch.c:152 builtin/fetch.c:158 builtin/pull.c:212
+#: builtin/fetch.c:151 builtin/fetch.c:157 builtin/pull.c:217
 msgid "deepen history of shallow clone"
 msgstr "얕은 복제의 커밋 내역을 깊게 만듭니다"
 
-#: builtin/fetch.c:154
+#: builtin/fetch.c:153
 msgid "deepen history of shallow repository based on time"
 msgstr "얕은 복제의 커밋 내역을 시간을 기준으로 깊게 만듭니다"
 
-#: builtin/fetch.c:160 builtin/pull.c:215
+#: builtin/fetch.c:159 builtin/pull.c:220
 msgid "convert to a complete repository"
 msgstr "완전한 저장소로 전환합니다"
 
-#: builtin/fetch.c:162 builtin/log.c:1466
-msgid "dir"
-msgstr "디렉터리"
-
-#: builtin/fetch.c:163
+#: builtin/fetch.c:162
 msgid "prepend this to submodule path output"
 msgstr "하위 모듈 경로 출력의 앞에 이 디렉터리를 붙입니다"
 
-#: builtin/fetch.c:166
+#: builtin/fetch.c:165
 msgid ""
 "default for recursive fetching of submodules (lower priority than config "
 "files)"
 msgstr "하위 모듈을 재귀적으로 가져올 때 기본값 (설정 파일보다 낮은 우선 순위)"
 
-#: builtin/fetch.c:170 builtin/pull.c:218
+#: builtin/fetch.c:169 builtin/pull.c:223
 msgid "accept refs that update .git/shallow"
 msgstr ".git/shallow를 업데이트하는 레퍼런스를 허용합니다"
 
-#: builtin/fetch.c:171 builtin/pull.c:220
+#: builtin/fetch.c:170 builtin/pull.c:225
 msgid "refmap"
 msgstr "레퍼런스맵"
 
-#: builtin/fetch.c:172 builtin/pull.c:221
+#: builtin/fetch.c:171 builtin/pull.c:226
 msgid "specify fetch refmap"
 msgstr "레퍼런스맵 가져오기를 지정합니다"
 
-#: builtin/fetch.c:431
+#: builtin/fetch.c:172 builtin/ls-remote.c:77 builtin/push.c:582
+#: builtin/send-pack.c:172
+msgid "server-specific"
+msgstr "서버-전용-옵션"
+
+#: builtin/fetch.c:172 builtin/ls-remote.c:77 builtin/push.c:582
+#: builtin/send-pack.c:173
+msgid "option to transmit"
+msgstr "전송할 옵션"
+
+#: builtin/fetch.c:442
 msgid "Couldn't find remote ref HEAD"
 msgstr "리모트 레퍼런스 HEAD를 찾을 수 없습니다"
 
-#: builtin/fetch.c:549
+#: builtin/fetch.c:560
 #, c-format
 msgid "configuration fetch.output contains invalid value %s"
 msgstr "fetch.output 설정에 잘못된 값이 있습니다: %s"
 
-#: builtin/fetch.c:642
+#: builtin/fetch.c:653
 #, c-format
 msgid "object %s not found"
 msgstr "%s 오브젝트가 없습니다"
 
-#: builtin/fetch.c:646
+#: builtin/fetch.c:657
 msgid "[up to date]"
 msgstr "[최신 상태]"
 
-#: builtin/fetch.c:659 builtin/fetch.c:739
+#: builtin/fetch.c:670 builtin/fetch.c:750
 msgid "[rejected]"
 msgstr "[거부됨]"
 
-#: builtin/fetch.c:660
+#: builtin/fetch.c:671
 msgid "can't fetch in current branch"
 msgstr "현재 브랜치에서 가져올 수 없음"
 
-#: builtin/fetch.c:669
+#: builtin/fetch.c:680
 msgid "[tag update]"
 msgstr "[태그 업데이트]"
 
-#: builtin/fetch.c:670 builtin/fetch.c:703 builtin/fetch.c:719
-#: builtin/fetch.c:734
+#: builtin/fetch.c:681 builtin/fetch.c:714 builtin/fetch.c:730
+#: builtin/fetch.c:745
 msgid "unable to update local ref"
 msgstr "로컬 레퍼런스를 업데이트할 수 없습니다"
 
-#: builtin/fetch.c:689
+#: builtin/fetch.c:700
 msgid "[new tag]"
 msgstr "[새로운 태그]"
 
-#: builtin/fetch.c:692
+#: builtin/fetch.c:703
 msgid "[new branch]"
 msgstr "[새로운 브랜치]"
 
-#: builtin/fetch.c:695
+#: builtin/fetch.c:706
 msgid "[new ref]"
 msgstr "[새로운 레퍼런스]"
 
-#: builtin/fetch.c:734
+#: builtin/fetch.c:745
 msgid "forced update"
 msgstr "강제 업데이트"
 
-#: builtin/fetch.c:739
+#: builtin/fetch.c:750
 msgid "non-fast-forward"
 msgstr "정방향 진행이 아님"
 
-#: builtin/fetch.c:784
+#: builtin/fetch.c:795
 #, c-format
 msgid "%s did not send all necessary objects\n"
 msgstr "%s이(가) 모든 필요한 오브젝트를 보내지 않았습니다\n"
 
-#: builtin/fetch.c:804
+#: builtin/fetch.c:815
 #, c-format
 msgid "reject %s because shallow roots are not allowed to be updated"
 msgstr "얕은 최상위의 업데이트가 허용되지 않으므로 %s을(를) 거부합니다"
 
-#: builtin/fetch.c:892 builtin/fetch.c:988
+#: builtin/fetch.c:903 builtin/fetch.c:999
 #, c-format
 msgid "From %.*s\n"
 msgstr "%.*s URL에서\n"
 
-#: builtin/fetch.c:903
+#: builtin/fetch.c:914
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
@@ -8513,57 +8987,57 @@ msgstr ""
 "업데이트할 수 없는 로컬 레퍼런스가 있습니다. 과거 충돌 브랜치를\n"
 " 제거하려면 'git remote prune %s' 명령을 실행해 보십시오"
 
-#: builtin/fetch.c:958
+#: builtin/fetch.c:969
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr "   (%s 레퍼런스가 연결이 끊어지게 됩니다)"
 
-#: builtin/fetch.c:959
+#: builtin/fetch.c:970
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr "   (%s 레퍼런스가 연결이 끊어졌습니다)"
 
-#: builtin/fetch.c:991
+#: builtin/fetch.c:1002
 msgid "[deleted]"
 msgstr "[삭제됨]"
 
-#: builtin/fetch.c:992 builtin/remote.c:1024
+#: builtin/fetch.c:1003 builtin/remote.c:1033
 msgid "(none)"
 msgstr "(없음)"
 
-#: builtin/fetch.c:1015
+#: builtin/fetch.c:1026
 #, c-format
 msgid "Refusing to fetch into current branch %s of non-bare repository"
 msgstr "간략한 저장소가 아닌 저장소의 현재 %s 브랜치로 가져오기를 거절합니다"
 
-#: builtin/fetch.c:1034
+#: builtin/fetch.c:1045
 #, c-format
 msgid "Option \"%s\" value \"%s\" is not valid for %s"
 msgstr "\"%s\" 옵션의 \"%s\" 값은 %s에 대해 올바르지 않습니다"
 
-#: builtin/fetch.c:1037
+#: builtin/fetch.c:1048
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr "\"%s\" 옵션은 '%s'에 대해 무시됩니다\n"
 
-#: builtin/fetch.c:1277
+#: builtin/fetch.c:1287
 #, c-format
 msgid "Fetching %s\n"
 msgstr "%s을(를) 가져오는 중\n"
 
-#: builtin/fetch.c:1279 builtin/remote.c:97
+#: builtin/fetch.c:1289 builtin/remote.c:98
 #, c-format
 msgid "Could not fetch %s"
 msgstr "%s을(를) 가져올 수 없습니다"
 
-#: builtin/fetch.c:1325 builtin/fetch.c:1498
+#: builtin/fetch.c:1335 builtin/fetch.c:1503
 msgid ""
 "--filter can only be used with the remote configured in core.partialClone"
 msgstr ""
 "--filter 옵션은 core.partialClone에 설정된 리모트 저장소에만 사용할 수 있습니"
 "다"
 
-#: builtin/fetch.c:1350
+#: builtin/fetch.c:1358
 msgid ""
 "No remote repository specified.  Please, specify either a URL or a\n"
 "remote name from which new revisions should be fetched."
@@ -8571,41 +9045,41 @@ msgstr ""
 "리모트 저장소를 지정하지 않았습니다. 새 리비전을 가져올 수 있는\n"
 "URL이나 리모트 이름을 지정하십시오."
 
-#: builtin/fetch.c:1394
+#: builtin/fetch.c:1395
 msgid "You need to specify a tag name."
 msgstr "태그 이름을 지정해야 합니다."
 
-#: builtin/fetch.c:1439
+#: builtin/fetch.c:1444
 msgid "Negative depth in --deepen is not supported"
 msgstr "--deepen 옵션에 음수 깊이는 지원하지 않습니다"
 
-#: builtin/fetch.c:1441
+#: builtin/fetch.c:1446
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen, --depth 옵션 중 하나만 쓸 수 있습니다"
 
-#: builtin/fetch.c:1446
+#: builtin/fetch.c:1451
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth 및 --unshallow 옵션은 같이 쓸 수 없습니다"
 
-#: builtin/fetch.c:1448
+#: builtin/fetch.c:1453
 msgid "--unshallow on a complete repository does not make sense"
 msgstr ""
 "완전한 저장소에 대해 --unshallow 옵션을 사용하는 건 앞뒤가 맞지 않습니다"
 
-#: builtin/fetch.c:1464
+#: builtin/fetch.c:1469
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all 명령에 저장소 인자가 없습니다"
 
-#: builtin/fetch.c:1466
+#: builtin/fetch.c:1471
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all 명령은 레퍼런스명세 인자와 같이 쓰면 앞뒤가 맞지 않습니다"
 
-#: builtin/fetch.c:1475
+#: builtin/fetch.c:1480
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "그런 리모트나 리모트 그룹이 없습니다: %s"
 
-#: builtin/fetch.c:1482
+#: builtin/fetch.c:1487
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "그룹을 가져오고 레퍼런스명세를 지정하면 앞뒤가 맞지 않습니다"
 
@@ -8671,7 +9145,7 @@ msgstr "티클에 적합하게 플레이스홀더를 인용합니다"
 msgid "show only <n> matched refs"
 msgstr "<n>개의 해당하는 레퍼런스만 표시합니다"
 
-#: builtin/for-each-ref.c:39 builtin/tag.c:420
+#: builtin/for-each-ref.c:39 builtin/tag.c:421
 msgid "respect format colors"
 msgstr "포맷 색을 유지합니다"
 
@@ -8695,81 +9169,81 @@ msgstr "커밋이 들어 있는 레퍼런스만 표시합니다"
 msgid "print only refs which don't contain the commit"
 msgstr "커밋이 들어 있지 않은 레퍼런스만 표시합니다"
 
-#: builtin/fsck.c:568
+#: builtin/fsck.c:569
 msgid "Checking object directories"
 msgstr "오브젝트 디렉터리를 확인하는 중입니다"
 
-#: builtin/fsck.c:660
+#: builtin/fsck.c:661
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<옵션>] [<오브젝트>...]"
 
-#: builtin/fsck.c:666
+#: builtin/fsck.c:667
 msgid "show unreachable objects"
 msgstr "접근할 수 없는 오브젝트를 표시합니다"
 
-#: builtin/fsck.c:667
+#: builtin/fsck.c:668
 msgid "show dangling objects"
 msgstr "연결이 끊어진 오브젝트를 표시합니다"
 
-#: builtin/fsck.c:668
+#: builtin/fsck.c:669
 msgid "report tags"
 msgstr "태그를 알립니다"
 
-#: builtin/fsck.c:669
+#: builtin/fsck.c:670
 msgid "report root nodes"
 msgstr "최상위 노드를 알립니다"
 
-#: builtin/fsck.c:670
+#: builtin/fsck.c:671
 msgid "make index objects head nodes"
 msgstr "인덱스 오브젝트 헤드 노드를 만듭니다"
 
-#: builtin/fsck.c:671
+#: builtin/fsck.c:672
 msgid "make reflogs head nodes (default)"
 msgstr "reflog 헤드 노드를 만듭니다 (기본값)"
 
-#: builtin/fsck.c:672
+#: builtin/fsck.c:673
 msgid "also consider packs and alternate objects"
 msgstr "묶음과 보조 오브젝트도 만듭니다"
 
-#: builtin/fsck.c:673
+#: builtin/fsck.c:674
 msgid "check only connectivity"
 msgstr "연결만 확인합니다"
 
-#: builtin/fsck.c:674
+#: builtin/fsck.c:675
 msgid "enable more strict checking"
 msgstr "더 엄격하게 확인합니다"
 
-#: builtin/fsck.c:676
+#: builtin/fsck.c:677
 msgid "write dangling objects in .git/lost-found"
 msgstr ".git/lost-found 안에 연결이 끊어진 오브젝트를 씁니다"
 
-#: builtin/fsck.c:677 builtin/prune.c:108
+#: builtin/fsck.c:678 builtin/prune.c:109
 msgid "show progress"
 msgstr "진행 상황을 표시합니다"
 
-#: builtin/fsck.c:678
+#: builtin/fsck.c:679
 msgid "show verbose names for reachable objects"
 msgstr "접근할 수 없는 오브젝트의 이름을 자세히 표시합니다"
 
-#: builtin/fsck.c:742
+#: builtin/fsck.c:745
 msgid "Checking objects"
 msgstr "오브젝트를 확인합니다"
 
-#: builtin/gc.c:27
+#: builtin/gc.c:33
 msgid "git gc [<options>]"
 msgstr "git gc [<옵션>]"
 
-#: builtin/gc.c:80
+#: builtin/gc.c:88
 #, c-format
 msgid "Failed to fstat %s: %s"
 msgstr "'%s'에 fstat()하는데 실패했습니다: %s"
 
-#: builtin/gc.c:312
+#: builtin/gc.c:452
 #, c-format
 msgid "Can't stat %s"
 msgstr "'%s'에 stat()할 수 없습니다"
 
-#: builtin/gc.c:321
+#: builtin/gc.c:461
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -8784,43 +9258,52 @@ msgstr ""
 "\n"
 "%s"
 
-#: builtin/gc.c:360
+#: builtin/gc.c:502
 msgid "prune unreferenced objects"
 msgstr "레퍼런스하지 않는 오브젝트를 잘라냅니다"
 
-#: builtin/gc.c:362
+#: builtin/gc.c:504
 msgid "be more thorough (increased runtime)"
 msgstr "더 자세히 검사합니다 (실행 시간 늘어남)"
 
-#: builtin/gc.c:363
+#: builtin/gc.c:505
 msgid "enable auto-gc mode"
 msgstr "자동 가비지컬렉터 모드를 사용합니다"
 
-#: builtin/gc.c:366
+#: builtin/gc.c:508
 msgid "force running gc even if there may be another gc running"
 msgstr "이미 가비지컬렉터가 실행 중이더라도 강제로 가비지컬렉터를 실행합니다"
 
-#: builtin/gc.c:384
+#: builtin/gc.c:511
+msgid "repack all other packs except the largest pack"
+msgstr "가장 큰 묶음을 제외한 다른 묶음을 다시 묶습니다"
+
+#: builtin/gc.c:528
 #, c-format
-msgid "Failed to parse gc.logexpiry value %s"
+msgid "failed to parse gc.logexpiry value %s"
 msgstr "gc.logexpiry 값을 (%s) 파싱하는데 실패했습니다"
 
-#: builtin/gc.c:412
+#: builtin/gc.c:539
+#, c-format
+msgid "failed to parse prune expiry value %s"
+msgstr "만료값 %s 파싱하는데 실패했습니다"
+
+#: builtin/gc.c:559
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
 msgstr "최적 성능을 위해 백그라운드에서 자동으로 저장소의 묶음을 만듭니다.\n"
 
-#: builtin/gc.c:414
+#: builtin/gc.c:561
 #, c-format
 msgid "Auto packing the repository for optimum performance.\n"
 msgstr "최적 성능을 위해 자동으로 저장소의 묶음을 만듭니다.\n"
 
-#: builtin/gc.c:415
+#: builtin/gc.c:562
 #, c-format
 msgid "See \"git help gc\" for manual housekeeping.\n"
 msgstr "수동 관리 작업은 \"git help gc\" 내용을 참고하십시오.\n"
 
-#: builtin/gc.c:440
+#: builtin/gc.c:598
 #, c-format
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
@@ -8828,22 +9311,22 @@ msgstr ""
 "가비지컬렉터가 이미 '%s' 컴퓨터에서 %<PRIuMAX> PID로 실행 중입니다 (아니면 --"
 "force를 사용하십시오)"
 
-#: builtin/gc.c:487
+#: builtin/gc.c:645
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove them."
 msgstr ""
 "느슨한 오브젝트가 너무 많습니다. 제거하려면 'git prune'을 실행하십시오."
 
-#: builtin/grep.c:27
+#: builtin/grep.c:28
 msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
 msgstr "git grep [<옵션>] [-e] <패턴> [<리비전>...] [[--] <경로>...]"
 
-#: builtin/grep.c:225
+#: builtin/grep.c:226
 #, c-format
 msgid "grep: failed to create thread: %s"
 msgstr "grep: 스레드를 만드는데 실패했습니다: %s"
 
-#: builtin/grep.c:283
+#: builtin/grep.c:284
 #, c-format
 msgid "invalid number of threads specified (%d) for %s"
 msgstr "잘못된 스레드 수를 %2$s에 대해 지정했습니다 (%1$d)"
@@ -8852,17 +9335,17 @@ msgstr "잘못된 스레드 수를 %2$s에 대해 지정했습니다 (%1$d)"
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:292 builtin/index-pack.c:1523 builtin/index-pack.c:1712
+#: builtin/grep.c:293 builtin/index-pack.c:1535 builtin/index-pack.c:1727
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "스레드 기능이 없습니다. %s 무시"
 
-#: builtin/grep.c:460 builtin/grep.c:580 builtin/grep.c:622
+#: builtin/grep.c:461 builtin/grep.c:582 builtin/grep.c:623
 #, c-format
 msgid "unable to read tree (%s)"
 msgstr "트리를 읽을 수 없습니다 (%s)"
 
-#: builtin/grep.c:637
+#: builtin/grep.c:638
 #, c-format
 msgid "unable to grep from object of type %s"
 msgstr "종류가 %s인 오브젝트에서 grep을 할 수 없습니다"
@@ -9061,7 +9544,7 @@ msgstr "--no-index 또는 --untracked 옵션은 리비전과 같이 쓸 수 없
 msgid "unable to resolve revision: %s"
 msgstr "리비전을 찾아낼 수 없습니다: %s"
 
-#: builtin/grep.c:1036 builtin/index-pack.c:1519
+#: builtin/grep.c:1036 builtin/index-pack.c:1531
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "잘못된 스레드 수를 지정했습니다 (%d)"
@@ -9132,58 +9615,62 @@ msgstr "임의의 쓰레기 데이터를 해시해 손상된 오브젝트를 만
 msgid "process file as it were from this path"
 msgstr "파일이 이 경로에서 온 것처럼 처리합니다"
 
-#: builtin/help.c:43
+#: builtin/help.c:45
 msgid "print all available commands"
 msgstr "사용 가능한 모든 명령의 목록을 표시합니다"
 
-#: builtin/help.c:44
+#: builtin/help.c:46
 msgid "exclude guides"
 msgstr "설명서 제외"
 
-#: builtin/help.c:45
+#: builtin/help.c:47
 msgid "print list of useful guides"
 msgstr "유용한 안내서 목록을 표시합니다"
 
-#: builtin/help.c:46
+#: builtin/help.c:48
 msgid "show man page"
 msgstr "맨 페이지를 표시합니다"
 
-#: builtin/help.c:47
+#: builtin/help.c:49
 msgid "show manual in web browser"
 msgstr "웹 브라우저에서 설명서를 표시합니다"
 
-#: builtin/help.c:49
+#: builtin/help.c:51
 msgid "show info page"
 msgstr "인포 페이지를 표시합니다"
 
-#: builtin/help.c:55
+#: builtin/help.c:53
+msgid "print command description"
+msgstr "명령어 설명을 표시합니다"
+
+#: builtin/help.c:58
 msgid "git help [--all] [--guides] [--man | --web | --info] [<command>]"
 msgstr "git help [--all] [--guides] [--man | --web | --info] [<명령>]"
 
-#: builtin/help.c:67
+#: builtin/help.c:70
 #, c-format
 msgid "unrecognized help format '%s'"
 msgstr "'%s' 도움말 포맷을 인식할 수 없습니다"
 
-#: builtin/help.c:94
+#: builtin/help.c:97
 msgid "Failed to start emacsclient."
 msgstr "emacsclient 시작에 실패했습니다."
 
-#: builtin/help.c:107
+#: builtin/help.c:110
 msgid "Failed to parse emacsclient version."
 msgstr "emacsclient 버전 파싱에 실패했습니다."
 
-#: builtin/help.c:115
+#: builtin/help.c:118
 #, c-format
 msgid "emacsclient version '%d' too old (< 22)."
 msgstr "emacsclient '%d' 버전은 너무 과거 (< 22) 버전입니다."
 
-#: builtin/help.c:133 builtin/help.c:155 builtin/help.c:165 builtin/help.c:173
+#: builtin/help.c:136 builtin/help.c:158 builtin/help.c:168 builtin/help.c:176
 #, c-format
 msgid "failed to exec '%s'"
 msgstr "실행 실패: '%s'"
 
-#: builtin/help.c:211
+#: builtin/help.c:214
 #, c-format
 msgid ""
 "'%s': path for unsupported man viewer.\n"
@@ -9192,7 +9679,7 @@ msgstr ""
 "'%s': 지원하지 않는 맨 페이지 보기 프로그램 경로.\n"
 "대신에 'man.<도구>.cmd' 옵션을 사용해 보십시오."
 
-#: builtin/help.c:223
+#: builtin/help.c:226
 #, c-format
 msgid ""
 "'%s': cmd for supported man viewer.\n"
@@ -9201,352 +9688,320 @@ msgstr ""
 "'%s': 지원하지 않는 맨 페이지 보기 프로그램 명령.\n"
 "대신에 'man.<도구>.path' 옵션을 사용해 보십시오."
 
-#: builtin/help.c:340
+#: builtin/help.c:343
 #, c-format
 msgid "'%s': unknown man viewer."
 msgstr "'%s': 알 수 없는 맨 페이지 보기 프로그램."
 
-#: builtin/help.c:357
+#: builtin/help.c:360
 msgid "no man viewer handled the request"
 msgstr "요청을 처리한 맨 페이지 보기 프로그램이 없습니다"
 
-#: builtin/help.c:365
+#: builtin/help.c:368
 msgid "no info viewer handled the request"
 msgstr "요청을 처리한 인포 페이지 보기 프로그램이 없습니다"
 
-#: builtin/help.c:407
-msgid "Defining attributes per path"
-msgstr "경로마다 속성 정의하기"
+#: builtin/help.c:415
+#, c-format
+msgid "'%s' is aliased to '%s'"
+msgstr "'%s' 명령은 '%s' 명령의 단축입니다"
 
-#: builtin/help.c:408
-msgid "Everyday Git With 20 Commands Or So"
-msgstr "매일매일 사용하는 20개 내외의 깃 명령"
+#: builtin/help.c:442 builtin/help.c:459
+#, c-format
+msgid "usage: %s%s"
+msgstr "사용법: %s%s"
 
-#: builtin/help.c:409
-msgid "A Git glossary"
-msgstr "깃 용어 사전"
+#: builtin/index-pack.c:158
+#, c-format
+msgid "unable to open %s"
+msgstr "%s을(를) 열 수 없습니다"
 
-#: builtin/help.c:410
-msgid "Specifies intentionally untracked files to ignore"
-msgstr "의도적으로 추적하지 않는 파일을 무시하게 지정하기"
-
-#: builtin/help.c:411
-msgid "Defining submodule properties"
-msgstr "하위 모듈 속성 정의하기"
-
-#: builtin/help.c:412
-msgid "Specifying revisions and ranges for Git"
-msgstr "깃의 리비전 및 범위를 지정하기"
-
-#: builtin/help.c:413
-msgid "A tutorial introduction to Git (for version 1.5.1 or newer)"
-msgstr "깃 따라하기 안내서 (버전 1.5.1 이후)"
-
-#: builtin/help.c:414
-msgid "An overview of recommended workflows with Git"
-msgstr "추천하는 깃 활용 작업 순서의 개요"
-
-#: builtin/help.c:426
-msgid "The common Git guides are:\n"
-msgstr "자주 사용하는 깃 안내서는 다음과 같습니다:\n"
-
-#: builtin/help.c:444
-#, c-format
-msgid "'%s' is aliased to '%s'"
-msgstr "'%s' 명령은 '%s' 명령의 단축입니다"
-
-#: builtin/help.c:466 builtin/help.c:483
-#, c-format
-msgid "usage: %s%s"
-msgstr "사용법: %s%s"
-
-#: builtin/index-pack.c:157
-#, c-format
-msgid "unable to open %s"
-msgstr "%s을(를) 열 수 없습니다"
-
-#: builtin/index-pack.c:207
+#: builtin/index-pack.c:208
 #, c-format
 msgid "object type mismatch at %s"
 msgstr "오브젝트 종류가 맞지 않습니다 (%s)"
 
-#: builtin/index-pack.c:227
+#: builtin/index-pack.c:228
 #, c-format
 msgid "did not receive expected object %s"
 msgstr "예상한 %s 오브젝트를 받지 않았습니다"
 
-#: builtin/index-pack.c:230
+#: builtin/index-pack.c:231
 #, c-format
 msgid "object %s: expected type %s, found %s"
 msgstr "%s 오브젝트: 예상한 종류 %s, 실제 %s"
 
-#: builtin/index-pack.c:272
+#: builtin/index-pack.c:273
 #, c-format
 msgid "cannot fill %d byte"
 msgid_plural "cannot fill %d bytes"
 msgstr[0] "%d 바이트를 채울 수 없습니다"
 
-#: builtin/index-pack.c:282
+#: builtin/index-pack.c:283
 msgid "early EOF"
 msgstr "너무 빨리 파일이 끝남"
 
-#: builtin/index-pack.c:283
+#: builtin/index-pack.c:284
 msgid "read error on input"
 msgstr "입력에 읽기 오류"
 
-#: builtin/index-pack.c:295
+#: builtin/index-pack.c:296
 msgid "used more bytes than were available"
 msgstr "있는 바이트보다 더 많이 사용합니다"
 
-#: builtin/index-pack.c:302
+#: builtin/index-pack.c:303
 msgid "pack too large for current definition of off_t"
 msgstr "현재 정의된 off_t에 비해 묶음이 너무 큽니다"
 
-#: builtin/index-pack.c:305 builtin/unpack-objects.c:93
+#: builtin/index-pack.c:306 builtin/unpack-objects.c:93
 msgid "pack exceeds maximum allowed size"
 msgstr "묶음 크기가 최대 허용 크기를 넘었습니다"
 
-#: builtin/index-pack.c:320
+#: builtin/index-pack.c:321
 #, c-format
 msgid "unable to create '%s'"
 msgstr "'%s'을(를) 만들 수 없습니다"
 
-#: builtin/index-pack.c:326
+#: builtin/index-pack.c:327
 #, c-format
 msgid "cannot open packfile '%s'"
 msgstr "'%s' 묶음 파일을 열 수 없습니다"
 
-#: builtin/index-pack.c:340
+#: builtin/index-pack.c:341
 msgid "pack signature mismatch"
 msgstr "묶음 서명이 맞지 않습니다"
 
-#: builtin/index-pack.c:342
+#: builtin/index-pack.c:343
 #, c-format
 msgid "pack version %<PRIu32> unsupported"
 msgstr "묶음의 %<PRIu32> 버전을 지원하지 않습니다"
 
-#: builtin/index-pack.c:360
+#: builtin/index-pack.c:361
 #, c-format
 msgid "pack has bad object at offset %<PRIuMAX>: %s"
 msgstr "묶음의 %<PRIuMAX> 오프셋에 잘못된 오브젝트가 있습니다: %s"
 
-#: builtin/index-pack.c:481
+#: builtin/index-pack.c:482
 #, c-format
 msgid "inflate returned %d"
 msgstr "inflate가 %d번을 리턴했습니다"
 
-#: builtin/index-pack.c:530
+#: builtin/index-pack.c:531
 msgid "offset value overflow for delta base object"
 msgstr "델타 베이스 오브젝트에 대해 오프셋 값이 오버플로우"
 
-#: builtin/index-pack.c:538
+#: builtin/index-pack.c:539
 msgid "delta base offset is out of bound"
 msgstr "델타 베이스 오프셋이 범위를 벗어났습니다"
 
-#: builtin/index-pack.c:546
+#: builtin/index-pack.c:547
 #, c-format
 msgid "unknown object type %d"
 msgstr "알 수 없는 오브젝트 종류 %d번"
 
-#: builtin/index-pack.c:577
+#: builtin/index-pack.c:578
 msgid "cannot pread pack file"
 msgstr "묶음 파일에 대해 pread를 할 수 없습니다"
 
-#: builtin/index-pack.c:579
+#: builtin/index-pack.c:580
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
 msgstr[0] "묶음 파일이 너무 일찍 끝남. %<PRIuMAX> 바이트 부족"
 
-#: builtin/index-pack.c:605
+#: builtin/index-pack.c:606
 msgid "serious inflate inconsistency"
 msgstr "심각한 inflate 부조화"
 
-#: builtin/index-pack.c:750 builtin/index-pack.c:756 builtin/index-pack.c:779
-#: builtin/index-pack.c:818 builtin/index-pack.c:827
+#: builtin/index-pack.c:751 builtin/index-pack.c:757 builtin/index-pack.c:780
+#: builtin/index-pack.c:819 builtin/index-pack.c:828
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "SHA1 충돌이 %s에서 발견되었습니다!"
 
-#: builtin/index-pack.c:753 builtin/pack-objects.c:182
-#: builtin/pack-objects.c:276
+#: builtin/index-pack.c:754 builtin/pack-objects.c:198
+#: builtin/pack-objects.c:292
 #, c-format
 msgid "unable to read %s"
 msgstr "%s을(를) 읽을 수 없습니다"
 
-#: builtin/index-pack.c:816
+#: builtin/index-pack.c:817
 #, c-format
 msgid "cannot read existing object info %s"
 msgstr "기존 %s 오브젝트 정보를 읽을 수 없습니다"
 
-#: builtin/index-pack.c:824
+#: builtin/index-pack.c:825
 #, c-format
 msgid "cannot read existing object %s"
 msgstr "기존 %s 오브젝트를 읽을 수 없습니다"
 
-#: builtin/index-pack.c:838
+#: builtin/index-pack.c:839
 #, c-format
 msgid "invalid blob object %s"
 msgstr "잘못된 블롭 오브젝트 %s"
 
-#: builtin/index-pack.c:853
+#: builtin/index-pack.c:842 builtin/index-pack.c:860
+msgid "fsck error in packed object"
+msgstr "묶음 오브젝트에서 fsck 오류"
+
+#: builtin/index-pack.c:857
 #, c-format
 msgid "invalid %s"
 msgstr "잘못된 %s"
 
-#: builtin/index-pack.c:856
-msgid "Error in object"
-msgstr "오브젝트에 오류"
-
-#: builtin/index-pack.c:858
+#: builtin/index-pack.c:862
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr "%s의 모든 하위 오브젝트에 접근할 수 없습니다"
 
-#: builtin/index-pack.c:930 builtin/index-pack.c:961
+#: builtin/index-pack.c:934 builtin/index-pack.c:965
 msgid "failed to apply delta"
 msgstr "델타를 적용하는데 실패했습니다"
 
-#: builtin/index-pack.c:1131
+#: builtin/index-pack.c:1135
 msgid "Receiving objects"
 msgstr "오브젝트를 받는 중"
 
-#: builtin/index-pack.c:1131
+#: builtin/index-pack.c:1135
 msgid "Indexing objects"
 msgstr "오브젝트 인덱스를 만드는 중"
 
-#: builtin/index-pack.c:1165
+#: builtin/index-pack.c:1169
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr "묶음이 손상되었습니다 (SHA1 일치하지 않음)"
 
-#: builtin/index-pack.c:1170
+#: builtin/index-pack.c:1174
 msgid "cannot fstat packfile"
 msgstr "묶음 파일에 대해 fstat()할 수 없습니다"
 
-#: builtin/index-pack.c:1173
+#: builtin/index-pack.c:1177
 msgid "pack has junk at the end"
 msgstr "묶음의 끝에 쓰레기 데이터가 있습니다"
 
-#: builtin/index-pack.c:1185
+#: builtin/index-pack.c:1189
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr "parse_pack_objects()에서 극심한 혼란"
 
-#: builtin/index-pack.c:1208
+#: builtin/index-pack.c:1212
 msgid "Resolving deltas"
 msgstr "델타를 알아내는 중"
 
-#: builtin/index-pack.c:1219
+#: builtin/index-pack.c:1223
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "스레드를 만들 수 없습니다: %s"
 
-#: builtin/index-pack.c:1261
+#: builtin/index-pack.c:1265
 msgid "confusion beyond insanity"
 msgstr "극심한 혼란"
 
-#: builtin/index-pack.c:1267
+#: builtin/index-pack.c:1271
 #, c-format
 msgid "completed with %d local object"
 msgid_plural "completed with %d local objects"
 msgstr[0] "로컬 오브젝트 %d개 마침"
 
-#: builtin/index-pack.c:1279
+#: builtin/index-pack.c:1283
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr "%s에 대해 예상치 못한 테일 체크섬 (디스크 손상?)"
 
-#: builtin/index-pack.c:1283
+#: builtin/index-pack.c:1287
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
 msgstr[0] "묶음에 알아내지 못한 델타 %d개가 있습니다"
 
-#: builtin/index-pack.c:1307
+#: builtin/index-pack.c:1311
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr "추가한 오브젝트를 deflate할 수 없습니다 (%d)"
 
-#: builtin/index-pack.c:1383
+#: builtin/index-pack.c:1388
 #, c-format
 msgid "local object %s is corrupt"
 msgstr "%s 로컬 오브젝트가 손상되었습니다"
 
-#: builtin/index-pack.c:1397
+#: builtin/index-pack.c:1402
 #, c-format
 msgid "packfile name '%s' does not end with '.pack'"
 msgstr "'%s' 묶음파일 이름이 '.pack'으로 끝나지 않습니다"
 
-#: builtin/index-pack.c:1422
+#: builtin/index-pack.c:1427
 #, c-format
 msgid "cannot write %s file '%s'"
 msgstr "%s 파일을 쓸 수 없습니다 '%s'"
 
-#: builtin/index-pack.c:1430
+#: builtin/index-pack.c:1435
 #, c-format
 msgid "cannot close written %s file '%s'"
 msgstr "쓴 %s파일을 닫을 수 없습니다 '%s'"
 
-#: builtin/index-pack.c:1454
+#: builtin/index-pack.c:1459
 msgid "error while closing pack file"
 msgstr "묶음 파일을 닫는데 오류"
 
-#: builtin/index-pack.c:1468
+#: builtin/index-pack.c:1473
 msgid "cannot store pack file"
 msgstr "묶음 파일을 저장할 수 없습니다"
 
-#: builtin/index-pack.c:1476
+#: builtin/index-pack.c:1481
 msgid "cannot store index file"
 msgstr "인덱스 파일을 저장할 수 없습니다"
 
-#: builtin/index-pack.c:1513
+#: builtin/index-pack.c:1525
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "잘못된 pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1581
+#: builtin/index-pack.c:1594
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "기존 '%s' 묶음 파일을 열 수 없습니다"
 
-#: builtin/index-pack.c:1583
+#: builtin/index-pack.c:1596
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "'%s'에 대한 기존 묶음 idx 파일을 열 수 없습니다"
 
-#: builtin/index-pack.c:1631
+#: builtin/index-pack.c:1644
 #, c-format
 msgid "non delta: %d object"
 msgid_plural "non delta: %d objects"
 msgstr[0] "델타 아님: 오브젝트 %d개"
 
-#: builtin/index-pack.c:1638
+#: builtin/index-pack.c:1651
 #, c-format
 msgid "chain length = %d: %lu object"
 msgid_plural "chain length = %d: %lu objects"
 msgstr[0] "체인 길이 = %d: 오브젝트 %lu개"
 
-#: builtin/index-pack.c:1675
+#: builtin/index-pack.c:1688
 msgid "Cannot come back to cwd"
 msgstr "현재 디렉터리로 돌아올 수 없습니다"
 
-#: builtin/index-pack.c:1724 builtin/index-pack.c:1727
-#: builtin/index-pack.c:1743 builtin/index-pack.c:1747
+#: builtin/index-pack.c:1739 builtin/index-pack.c:1742
+#: builtin/index-pack.c:1758 builtin/index-pack.c:1762
 #, c-format
 msgid "bad %s"
 msgstr "잘못된 %s"
 
-#: builtin/index-pack.c:1763
+#: builtin/index-pack.c:1778
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin 옵션은 --stdin 옵션과 같이 쓸 수 없습니다"
 
-#: builtin/index-pack.c:1765
+#: builtin/index-pack.c:1780
 msgid "--stdin requires a git repository"
 msgstr "--stdin 옵션은 깃 저장소가 필요합니다"
 
-#: builtin/index-pack.c:1771
+#: builtin/index-pack.c:1786
 msgid "--verify with no packfile name given"
 msgstr "--verify 옵션에 묶음파일 이름을 지정하지 않았습니다"
 
+#: builtin/index-pack.c:1836 builtin/unpack-objects.c:578
+msgid "fsck error in pack objects"
+msgstr "묶음 오브젝트에서 fsck 오류"
+
 #: builtin/init-db.c:55
 #, c-format
 msgid "cannot stat '%s'"
@@ -9584,7 +10039,7 @@ msgstr "%s 서식을 무시합니다"
 
 #: builtin/init-db.c:120
 #, c-format
-msgid "templates not found %s"
+msgid "templates not found in %s"
 msgstr "%s에 서식이 없습니다"
 
 #: builtin/init-db.c:135
@@ -9643,11 +10098,6 @@ msgstr "권한"
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr "깃 저장소를 다른 사용자가 공유할 수 있게 지정"
 
-#: builtin/init-db.c:516 builtin/init-db.c:521
-#, c-format
-msgid "cannot mkdir %s"
-msgstr "%s에 대해 mkdir를 할 수 없습니다"
-
 #: builtin/init-db.c:525
 #, c-format
 msgid "cannot chdir to %s"
@@ -9831,7 +10281,7 @@ msgstr "출력 디렉터리가 두개?"
 msgid "Unknown commit %s"
 msgstr "알 수 없는 커밋 %s"
 
-#: builtin/log.c:1289 builtin/notes.c:887 builtin/tag.c:522
+#: builtin/log.c:1289 builtin/notes.c:887 builtin/tag.c:523
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr "'%s'을(를) 올바른 레퍼런스로 알아내는데 실패했습니다."
@@ -10182,7 +10632,7 @@ msgstr "<트리-따위> 뒤로 제거한 경로가 있다고 가정합니다"
 msgid "show debugging data"
 msgstr "디버깅 데이터를 표시합니다"
 
-#: builtin/ls-remote.c:7
+#: builtin/ls-remote.c:9
 msgid ""
 "git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
@@ -10192,39 +10642,39 @@ msgstr ""
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
 "                     [--symref] [<저장소> [<레퍼런스>...]]"
 
-#: builtin/ls-remote.c:52
+#: builtin/ls-remote.c:59
 msgid "do not print remote URL"
 msgstr "원격 URL을 표시하지 않습니다"
 
-#: builtin/ls-remote.c:53 builtin/ls-remote.c:55
+#: builtin/ls-remote.c:60 builtin/ls-remote.c:62
 msgid "exec"
 msgstr "실행"
 
-#: builtin/ls-remote.c:54 builtin/ls-remote.c:56
+#: builtin/ls-remote.c:61 builtin/ls-remote.c:63
 msgid "path of git-upload-pack on the remote host"
 msgstr "원격 호스트의 git-upload-pack 경로"
 
-#: builtin/ls-remote.c:58
+#: builtin/ls-remote.c:65
 msgid "limit to tags"
 msgstr "태그에 한정"
 
-#: builtin/ls-remote.c:59
+#: builtin/ls-remote.c:66
 msgid "limit to heads"
 msgstr "헤드에 한정"
 
-#: builtin/ls-remote.c:60
+#: builtin/ls-remote.c:67
 msgid "do not show peeled tags"
 msgstr "벗겨진 태그를 표시하지 않습니다"
 
-#: builtin/ls-remote.c:62
+#: builtin/ls-remote.c:69
 msgid "take url.<base>.insteadOf into account"
 msgstr "url.<베이스>.insteadOf 설정을 고려합니다"
 
-#: builtin/ls-remote.c:64
+#: builtin/ls-remote.c:73
 msgid "exit with exit code 2 if no matching refs are found"
 msgstr "해당하는 레퍼런스가 없으면 코드 2번으로 끝냅니다"
 
-#: builtin/ls-remote.c:67
+#: builtin/ls-remote.c:76
 msgid "show underlying ref in addition to the object pointed by it"
 msgstr "레퍼런스와 레퍼런스가 가리키는 오브젝트를 표시합니다"
 
@@ -10269,165 +10719,165 @@ msgstr "전체 트리 목록 표시, 현재 디렉터리만 아니라 (--full-na
 msgid "empty mbox: '%s'"
 msgstr "빈 mbox: '%s'"
 
-#: builtin/merge.c:49
+#: builtin/merge.c:51
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<옵션>] [<커밋>...]"
 
-#: builtin/merge.c:50
+#: builtin/merge.c:52
 msgid "git merge --abort"
 msgstr "git merge --abort"
 
-#: builtin/merge.c:51
+#: builtin/merge.c:53
 msgid "git merge --continue"
 msgstr "git merge --continue"
 
-#: builtin/merge.c:108
+#: builtin/merge.c:110
 msgid "switch `m' requires a value"
 msgstr "`m' 옵션에는 값이 필요합니다"
 
-#: builtin/merge.c:145
+#: builtin/merge.c:147
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
 msgstr "'%s' 병합 전략을 찾을 수 없습니다.\n"
 
-#: builtin/merge.c:146
+#: builtin/merge.c:148
 #, c-format
 msgid "Available strategies are:"
 msgstr "사용 가능한 전략은:"
 
-#: builtin/merge.c:151
+#: builtin/merge.c:153
 #, c-format
 msgid "Available custom strategies are:"
 msgstr "사용 가능한 사용자 설정 전략은:"
 
-#: builtin/merge.c:201 builtin/pull.c:137
+#: builtin/merge.c:203 builtin/pull.c:142
 msgid "do not show a diffstat at the end of the merge"
 msgstr "병합이 끝날 때 diffstat을 표시하지 않습니다"
 
-#: builtin/merge.c:204 builtin/pull.c:140
+#: builtin/merge.c:206 builtin/pull.c:145
 msgid "show a diffstat at the end of the merge"
 msgstr "병합이 끝날 때 diffstat을 표시합니다"
 
-#: builtin/merge.c:205 builtin/pull.c:143
+#: builtin/merge.c:207 builtin/pull.c:148
 msgid "(synonym to --stat)"
 msgstr "(--stat 옵션과 동일)"
 
-#: builtin/merge.c:207 builtin/pull.c:146
+#: builtin/merge.c:209 builtin/pull.c:151
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr "병합 커밋의 메시지에 shortlog 항목을 (최대 <n>개) 추가합니다"
 
-#: builtin/merge.c:210 builtin/pull.c:152
+#: builtin/merge.c:212 builtin/pull.c:157
 msgid "create a single commit instead of doing a merge"
 msgstr "병합하는 대신 하나의 커밋을 만듭니다"
 
-#: builtin/merge.c:212 builtin/pull.c:155
+#: builtin/merge.c:214 builtin/pull.c:160
 msgid "perform a commit if the merge succeeds (default)"
 msgstr "병합이 성공하면 커밋을 합니다 (기본값)"
 
-#: builtin/merge.c:214 builtin/pull.c:158
+#: builtin/merge.c:216 builtin/pull.c:163
 msgid "edit message before committing"
 msgstr "커밋 전에 메시지를 편집합니다"
 
-#: builtin/merge.c:215
+#: builtin/merge.c:217
 msgid "allow fast-forward (default)"
 msgstr "정방향 진행을 허용합니다 (기본값)"
 
-#: builtin/merge.c:217 builtin/pull.c:164
+#: builtin/merge.c:219 builtin/pull.c:169
 msgid "abort if fast-forward is not possible"
 msgstr "정방향 진행이 불가능하면 중지합니다"
 
-#: builtin/merge.c:221 builtin/pull.c:167
+#: builtin/merge.c:223 builtin/pull.c:172
 msgid "verify that the named commit has a valid GPG signature"
 msgstr "지정한 커밋에 올바른 GPG 서명이 있는지 검증합니다"
 
-#: builtin/merge.c:222 builtin/notes.c:777 builtin/pull.c:171
+#: builtin/merge.c:224 builtin/notes.c:777 builtin/pull.c:176
 #: builtin/revert.c:109
 msgid "strategy"
 msgstr "전략"
 
-#: builtin/merge.c:223 builtin/pull.c:172
+#: builtin/merge.c:225 builtin/pull.c:177
 msgid "merge strategy to use"
 msgstr "사용할 병합 전략"
 
-#: builtin/merge.c:224 builtin/pull.c:175
+#: builtin/merge.c:226 builtin/pull.c:180
 msgid "option=value"
 msgstr "옵션=값"
 
-#: builtin/merge.c:225 builtin/pull.c:176
+#: builtin/merge.c:227 builtin/pull.c:181
 msgid "option for selected merge strategy"
 msgstr "선택한 병합 전략에 대한 옵션"
 
-#: builtin/merge.c:227
+#: builtin/merge.c:229
 msgid "merge commit message (for a non-fast-forward merge)"
 msgstr "병합 커밋 메시지 (정방향이 아닌 병합에 대해)"
 
-#: builtin/merge.c:231
+#: builtin/merge.c:233
 msgid "abort the current in-progress merge"
 msgstr "현재 진행 중인 병합을 중지합니다"
 
-#: builtin/merge.c:233
+#: builtin/merge.c:235
 msgid "continue the current in-progress merge"
 msgstr "현재 진행 중인 병합을 계속합니다"
 
-#: builtin/merge.c:235 builtin/pull.c:183
+#: builtin/merge.c:237 builtin/pull.c:188
 msgid "allow merging unrelated histories"
 msgstr "관계 없는 커밋 내역의 병합을 허용합니다"
 
-#: builtin/merge.c:241
+#: builtin/merge.c:243
 msgid "verify commit-msg hook"
 msgstr "커밋 메시지 후크를 검증합니다"
 
-#: builtin/merge.c:266
+#: builtin/merge.c:268
 msgid "could not run stash."
 msgstr "stash를 실행할 수 없습니다."
 
-#: builtin/merge.c:271
+#: builtin/merge.c:273
 msgid "stash failed"
 msgstr "스태시 실패"
 
-#: builtin/merge.c:276
+#: builtin/merge.c:278
 #, c-format
 msgid "not a valid object: %s"
 msgstr "올바른 오브젝트가 아닙니다: %s"
 
-#: builtin/merge.c:298 builtin/merge.c:315
+#: builtin/merge.c:300 builtin/merge.c:317
 msgid "read-tree failed"
 msgstr "read-tree 실패"
 
-#: builtin/merge.c:345
+#: builtin/merge.c:347
 msgid " (nothing to squash)"
 msgstr " (합칠 내용이 없습니다)"
 
-#: builtin/merge.c:356
+#: builtin/merge.c:358
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
 msgstr "커밋 합치기 -- HEAD를 업데이트하지 않습니다\n"
 
-#: builtin/merge.c:406
+#: builtin/merge.c:408
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
 msgstr "병합 메시지가 없습니다 -- HEAD를 업데이트하지 않습니다\n"
 
-#: builtin/merge.c:456
+#: builtin/merge.c:458
 #, c-format
 msgid "'%s' does not point to a commit"
 msgstr "'%s'이(가) 커밋을 가리키지 않습니다"
 
-#: builtin/merge.c:546
+#: builtin/merge.c:548
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "잘못된 branch.%s.mergeoptions 문자열: %s"
 
-#: builtin/merge.c:668
+#: builtin/merge.c:669
 msgid "Not handling anything other than two heads merge."
 msgstr "두 개의 헤드 병합 외에는 처리하지 않습니다."
 
-#: builtin/merge.c:682
+#: builtin/merge.c:683
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "merge-recursive에 대해 알 수 없는 옵션: -X%s"
 
-#: builtin/merge.c:697
+#: builtin/merge.c:698
 #, c-format
 msgid "unable to write %s"
 msgstr "%s에 쓸 수 없습니다"
@@ -10463,64 +10913,64 @@ msgstr ""
 msgid "Empty commit message."
 msgstr "빈 커밋 메시지."
 
-#: builtin/merge.c:820
+#: builtin/merge.c:819
 #, c-format
 msgid "Wonderful.\n"
 msgstr "훌륭합니다.\n"
 
-#: builtin/merge.c:873
+#: builtin/merge.c:872
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr "자동 병합이 실패했습니다. 충돌을 바로잡고 결과물을 커밋하십시오.\n"
 
-#: builtin/merge.c:912
+#: builtin/merge.c:911
 msgid "No current branch."
 msgstr "현재 브랜치가 없습니다."
 
-#: builtin/merge.c:914
+#: builtin/merge.c:913
 msgid "No remote for the current branch."
 msgstr "현재 브랜치에 대한 리모트가 없습니다."
 
-#: builtin/merge.c:916
+#: builtin/merge.c:915
 msgid "No default upstream defined for the current branch."
 msgstr "현재 브랜치에 대해 기본 업스트림을 지정하지 않았습니다."
 
-#: builtin/merge.c:921
+#: builtin/merge.c:920
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "리모트 %2$s에서 %1$s에 대한 리모트 추적 브랜치가 없습니다"
 
-#: builtin/merge.c:974
+#: builtin/merge.c:973
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "잘못된 값 '%s', 환경 '%s'"
 
-#: builtin/merge.c:1076
+#: builtin/merge.c:1075
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "%s 안에서 병합할 수 있는 항목이 아닙니다: %s"
 
-#: builtin/merge.c:1110
+#: builtin/merge.c:1109
 msgid "not something we can merge"
 msgstr "병합할 수 있는 항목이 아닙니다"
 
-#: builtin/merge.c:1212
+#: builtin/merge.c:1211
 msgid "--abort expects no arguments"
 msgstr "--abort 옵션은 인자를 받지 않습니다"
 
-#: builtin/merge.c:1216
+#: builtin/merge.c:1215
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "중지할 병합 작업이 없습니다. (MERGE_HEAD가 없음)"
 
-#: builtin/merge.c:1228
+#: builtin/merge.c:1227
 msgid "--continue expects no arguments"
 msgstr "--continue 옵션은 인자를 받지 않습니다"
 
-#: builtin/merge.c:1232
+#: builtin/merge.c:1231
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "진행 중인 병합 작업이 없습니다. (MERGE_HEAD가 없음)"
 
-#: builtin/merge.c:1248
+#: builtin/merge.c:1247
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -10528,7 +10978,7 @@ msgstr ""
 "병합을 마치지 않았습니다. (MERGE_HEAD 있음)\n"
 "병합하기 전에 변경 사항을 커밋하십시오."
 
-#: builtin/merge.c:1255
+#: builtin/merge.c:1254
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -10536,112 +10986,112 @@ msgstr ""
 "커밋 빼오기를 마치지 않았습니다. (COMMIT_PICK_HEAD 있음)\n"
 "병합하기 전에 변경 사항을 커밋하십시오."
 
-#: builtin/merge.c:1258
+#: builtin/merge.c:1257
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr "커밋 빼오기를 마치지 않았습니다. (CHERRY_PICK_HEAD 있음)"
 
-#: builtin/merge.c:1267
+#: builtin/merge.c:1266
 msgid "You cannot combine --squash with --no-ff."
 msgstr "--squash 옵션을 --no-ff 옵션과 같이 쓸 수 없습니다."
 
-#: builtin/merge.c:1275
+#: builtin/merge.c:1274
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr "커밋을 지정하지 않았고  merge.defaultToUpstream를 설정하지 않았습니다."
 
-#: builtin/merge.c:1292
+#: builtin/merge.c:1291
 msgid "Squash commit into empty head not supported yet"
 msgstr "빈 헤드로 커밋을 합치기는 지원하지 않습니다"
 
-#: builtin/merge.c:1294
+#: builtin/merge.c:1293
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr "정방향이 아닌 커밋은 빈 헤드에서는 앞뒤가 맞지 않습니다"
 
-#: builtin/merge.c:1299
+#: builtin/merge.c:1298
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - 병합할 수 있는 항목이 아닙니다"
 
-#: builtin/merge.c:1301
+#: builtin/merge.c:1300
 msgid "Can merge only exactly one commit into empty head"
 msgstr "빈 헤드에는 정확히 하나의 커밋만 병합할 수 있습니다"
 
-#: builtin/merge.c:1335
+#: builtin/merge.c:1334
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr "%s 커밋에 신뢰하지 않는 (서명자가 %s라고 하는) GPG 서명이 있습니다."
 
-#: builtin/merge.c:1338
+#: builtin/merge.c:1337
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr "%s 커밋에 잘못된 (서명자가 %s라고 하는) GPG 서명이 있습니다."
 
-#: builtin/merge.c:1341
+#: builtin/merge.c:1340
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "%s 커밋에 GPG 서명이 없습니다."
 
-#: builtin/merge.c:1344
+#: builtin/merge.c:1343
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "%s 커밋에 %s의 올바른 GPG 서명이 없습니다\n"
 
-#: builtin/merge.c:1403
+#: builtin/merge.c:1402
 msgid "refusing to merge unrelated histories"
 msgstr "관계 없는 커밋 내역의 병합을 거부합니다"
 
-#: builtin/merge.c:1412
+#: builtin/merge.c:1411
 msgid "Already up to date."
 msgstr "이미 업데이트 상태입니다."
 
-#: builtin/merge.c:1422
+#: builtin/merge.c:1421
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "업데이트 중 %s..%s\n"
 
-#: builtin/merge.c:1463
+#: builtin/merge.c:1462
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "아주 간단한 인덱스 내부 병합을 시도합니다...\n"
 
-#: builtin/merge.c:1470
+#: builtin/merge.c:1469
 #, c-format
 msgid "Nope.\n"
 msgstr "아님.\n"
 
-#: builtin/merge.c:1495
+#: builtin/merge.c:1494
 msgid "Already up to date. Yeeah!"
 msgstr "이미 업데이트 상태입니다. 야호!"
 
-#: builtin/merge.c:1501
+#: builtin/merge.c:1500
 msgid "Not possible to fast-forward, aborting."
 msgstr "정방향이 불가능하므로, 중지합니다."
 
-#: builtin/merge.c:1524 builtin/merge.c:1603
+#: builtin/merge.c:1523 builtin/merge.c:1602
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "트리를 본래 위치로 되돌립니다...\n"
 
-#: builtin/merge.c:1528
+#: builtin/merge.c:1527
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "병합 전략 %s 시도...\n"
 
-#: builtin/merge.c:1594
+#: builtin/merge.c:1593
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "병합을 처리한 전략이 없습니다.\n"
 
-#: builtin/merge.c:1596
+#: builtin/merge.c:1595
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "전략 %s(으)로 병합이 실패했습니다.\n"
 
-#: builtin/merge.c:1605
+#: builtin/merge.c:1604
 #, c-format
 msgid "Using the %s to prepare resolving by hand.\n"
 msgstr "수동 해결의 준비를 위해 %s 전략을 사용합니다.\n"
 
-#: builtin/merge.c:1617
+#: builtin/merge.c:1616
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr "자동 병합이 잘 진행되었습니다. 요청한대로 커밋 전에 중지합니다\n"
@@ -10776,25 +11226,25 @@ msgstr "여러개 트리 만들기를 허용합니다"
 msgid "git mv [<options>] <source>... <destination>"
 msgstr "git mv [<옵션>] <원본>... <대상>"
 
-#: builtin/mv.c:83
+#: builtin/mv.c:82
 #, c-format
 msgid "Directory %s is in index and no submodule?"
 msgstr "%s 디렉터리가 인덱스에 있고 하위 모듈이 없습니다?"
 
-#: builtin/mv.c:85 builtin/rm.c:289
+#: builtin/mv.c:84 builtin/rm.c:288
 msgid "Please stage your changes to .gitmodules or stash them to proceed"
 msgstr "계속하려면 .gitmodules의 변경 사항을 스테이지에 넣거나 스태시 하십시오"
 
-#: builtin/mv.c:103
+#: builtin/mv.c:102
 #, c-format
 msgid "%.*s is in index"
 msgstr "%.*s이(가) 인덱스에 있습니다"
 
-#: builtin/mv.c:125
+#: builtin/mv.c:124
 msgid "force move/rename even if target exists"
 msgstr "대상이 이미 있어도 강제로 옮기기/이름 바꾸기를 합니다"
 
-#: builtin/mv.c:127
+#: builtin/mv.c:126
 msgid "skip move/rename errors"
 msgstr "옮기기/이름 바꾸기 오류를 건너 뜁니다"
 
@@ -10859,7 +11309,7 @@ msgstr "%s, 원본=%s, 대상=%s"
 msgid "Renaming %s to %s\n"
 msgstr "이름 바꾸기, '%s'에서 '%s'(으)로\n"
 
-#: builtin/mv.c:276 builtin/remote.c:712 builtin/repack.c:394
+#: builtin/mv.c:276 builtin/remote.c:715 builtin/repack.c:409
 #, c-format
 msgid "renaming '%s' failed"
 msgstr "'%s'의 이름 바꾸기가 실패했습니다"
@@ -11050,12 +11500,12 @@ msgstr "노트 오브젝트를 쓸 수 없습니다"
 msgid "the note contents have been left in %s"
 msgstr "노트 내용은 %s에 남습니다"
 
-#: builtin/notes.c:234 builtin/tag.c:506
+#: builtin/notes.c:234 builtin/tag.c:507
 #, c-format
 msgid "cannot read '%s'"
 msgstr "'%s'을(를) 읽을 수 없습니다"
 
-#: builtin/notes.c:236 builtin/tag.c:509
+#: builtin/notes.c:236 builtin/tag.c:510
 #, c-format
 msgid "could not open or read '%s'"
 msgstr "'%s'을(를) 열거나 읽을 수 없습니다"
@@ -11300,7 +11750,7 @@ msgstr "없는 노트를 제거하려는 시도를 오류가 아닌 것으로 
 msgid "read object names from the standard input"
 msgstr "표준 입력에서 오브젝트 이름을 읽습니다"
 
-#: builtin/notes.c:943 builtin/prune.c:106 builtin/worktree.c:160
+#: builtin/notes.c:943 builtin/prune.c:107 builtin/worktree.c:151
 msgid "do not remove, show only"
 msgstr "제거하지 않고, 보여주기만 합니다"
 
@@ -11321,213 +11771,240 @@ msgstr "<노트-레퍼런스>에서 노트를 사용합니다"
 msgid "unknown subcommand: %s"
 msgstr "알 수 없는 하위 명령: %s"
 
-#: builtin/pack-objects.c:33
+#: builtin/pack-objects.c:48
 msgid ""
 "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects --stdout [<옵션>...] [< <레퍼런스목록> | < <오브젝트목록>]"
 
-#: builtin/pack-objects.c:34
+#: builtin/pack-objects.c:49
 msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects [<옵션>...] <베이스이름> [< <레퍼런스목록> | < <오브젝트목록"
 ">]"
 
-#: builtin/pack-objects.c:195 builtin/pack-objects.c:198
+#: builtin/pack-objects.c:211 builtin/pack-objects.c:214
 #, c-format
 msgid "deflate error (%d)"
 msgstr "deflate 오류 (%d)"
 
-#: builtin/pack-objects.c:791
+#: builtin/pack-objects.c:810
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr ""
 "배트맵 쓰기를 하지 않습니다. 묶음은 pack.packSizeLimit 값에 따라 쪼개집니다"
 
-#: builtin/pack-objects.c:804
+#: builtin/pack-objects.c:823
 msgid "Writing objects"
 msgstr "오브젝트 쓰는 중"
 
-#: builtin/pack-objects.c:1084
+#: builtin/pack-objects.c:1106
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr "묶음에 들어있지 않은 오브젝트가 있으므로, 비트맵 쓰기를 하지 않습니다"
 
-#: builtin/pack-objects.c:2454
+#: builtin/pack-objects.c:1765
+msgid "Counting objects"
+msgstr "오브젝트 개수 세는 중"
+
+#: builtin/pack-objects.c:1895
+#, c-format
+msgid "unable to get size of %s"
+msgstr "%s의 크기를 알아낼 수 없습니다"
+
+#: builtin/pack-objects.c:1910
+#, c-format
+msgid "unable to parse object header of %s"
+msgstr "%s의 오브젝트 헤더를 파싱할 수 없습니다"
+
+#: builtin/pack-objects.c:2564
 msgid "Compressing objects"
 msgstr "오브젝트 압축하는 중"
 
-#: builtin/pack-objects.c:2625
+#: builtin/pack-objects.c:2735
 msgid "invalid value for --missing"
 msgstr "--missing의 값이 올바르지 않습니다"
 
-#: builtin/pack-objects.c:2928
+#: builtin/pack-objects.c:3067
 #, c-format
 msgid "unsupported index version %s"
 msgstr "지원하지 않는 인덱스 버전 %s"
 
-#: builtin/pack-objects.c:2932
+#: builtin/pack-objects.c:3071
 #, c-format
 msgid "bad index version '%s'"
 msgstr "잘못된 인덱스 버전 '%s'"
 
-#: builtin/pack-objects.c:2962
+#: builtin/pack-objects.c:3102
 msgid "do not show progress meter"
 msgstr "진행률을 표시하지 않습니다"
 
-#: builtin/pack-objects.c:2964
+#: builtin/pack-objects.c:3104
 msgid "show progress meter"
 msgstr "진행률을 표시합니다"
 
-#: builtin/pack-objects.c:2966
+#: builtin/pack-objects.c:3106
 msgid "show progress meter during object writing phase"
 msgstr "오브젝트 쓰기 단계에서 진행률을 표시합니다"
 
-#: builtin/pack-objects.c:2969
+#: builtin/pack-objects.c:3109
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "진행률이 표시될 때 --all-progress와 비슷합니다"
 
-#: builtin/pack-objects.c:2970
+#: builtin/pack-objects.c:3110
 msgid "version[,offset]"
 msgstr "버전[,오프셋]"
 
-#: builtin/pack-objects.c:2971
+#: builtin/pack-objects.c:3111
 msgid "write the pack index file in the specified idx format version"
 msgstr "지정한 버전의 인덱스 형식에 따라 묶음 인덱스 파일을 씁니다"
 
-#: builtin/pack-objects.c:2974
+#: builtin/pack-objects.c:3114
 msgid "maximum size of each output pack file"
 msgstr "출력 묶음 파일의 최대 크기"
 
-#: builtin/pack-objects.c:2976
+#: builtin/pack-objects.c:3116
 msgid "ignore borrowed objects from alternate object store"
 msgstr "보조 오브젝트 저장소에서 빌려온 오브젝트를 무시합니다"
 
-#: builtin/pack-objects.c:2978
+#: builtin/pack-objects.c:3118
 msgid "ignore packed objects"
 msgstr "묶음 오브젝트를 무시합니다"
 
-#: builtin/pack-objects.c:2980
+#: builtin/pack-objects.c:3120
 msgid "limit pack window by objects"
 msgstr "묶음 윈도우를 오브젝트 단위로 제한합니다"
 
-#: builtin/pack-objects.c:2982
+#: builtin/pack-objects.c:3122
 msgid "limit pack window by memory in addition to object limit"
 msgstr "묶음 윈도우를 오브젝트 단위에 추가로 메모리 단위로 제한합니다"
 
-#: builtin/pack-objects.c:2984
+#: builtin/pack-objects.c:3124
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr "결과물 묶음에서 허용되는 최대 길이의 델타 체인"
 
-#: builtin/pack-objects.c:2986
+#: builtin/pack-objects.c:3126
 msgid "reuse existing deltas"
 msgstr "기존 델타를 재사용합니다"
 
-#: builtin/pack-objects.c:2988
+#: builtin/pack-objects.c:3128
 msgid "reuse existing objects"
 msgstr "기존 오브젝트를 재사용합니다"
 
-#: builtin/pack-objects.c:2990
+#: builtin/pack-objects.c:3130
 msgid "use OFS_DELTA objects"
 msgstr "OFS_DELTA 오브젝트를 사용합니다"
 
-#: builtin/pack-objects.c:2992
+#: builtin/pack-objects.c:3132
 msgid "use threads when searching for best delta matches"
 msgstr "최상의 델타 일치를 검색하는데 스레드를 사용합니다"
 
-#: builtin/pack-objects.c:2994
+#: builtin/pack-objects.c:3134
 msgid "do not create an empty pack output"
 msgstr "빈 묶음 출력을 만들지 않습니다"
 
-#: builtin/pack-objects.c:2996
+#: builtin/pack-objects.c:3136
 msgid "read revision arguments from standard input"
 msgstr "표준 입력에서 리비전 인자를 읽습니다"
 
-#: builtin/pack-objects.c:2998
+#: builtin/pack-objects.c:3138
 msgid "limit the objects to those that are not yet packed"
 msgstr "묶지 않는 오브젝트 수를 제한합니다"
 
-#: builtin/pack-objects.c:3001
+#: builtin/pack-objects.c:3141
 msgid "include objects reachable from any reference"
 msgstr "모든 레퍼런스에서 접근 가능한 오브젝트를 포함합니다"
 
-#: builtin/pack-objects.c:3004
+#: builtin/pack-objects.c:3144
 msgid "include objects referred by reflog entries"
 msgstr "reflog 항목에서 레퍼런스할 수 있는 오브젝트를 포함합니다"
 
-#: builtin/pack-objects.c:3007
+#: builtin/pack-objects.c:3147
 msgid "include objects referred to by the index"
 msgstr "인덱스에서< 레퍼런스하는 오브젝트를 포함합니다"
 
-#: builtin/pack-objects.c:3010
+#: builtin/pack-objects.c:3150
 msgid "output pack to stdout"
 msgstr "묶음을 표준 출력으로 출력합니다"
 
-#: builtin/pack-objects.c:3012
+#: builtin/pack-objects.c:3152
 msgid "include tag objects that refer to objects to be packed"
 msgstr "묶음에 들어갈 오브젝트를 레퍼런스하는 태그 오브젝트를 포함합니다"
 
-#: builtin/pack-objects.c:3014
+#: builtin/pack-objects.c:3154
 msgid "keep unreachable objects"
 msgstr "접근 불가능 오브젝트를 보존합니다"
 
-#: builtin/pack-objects.c:3016
+#: builtin/pack-objects.c:3156
 msgid "pack loose unreachable objects"
 msgstr "느슨한 접근 불가능 오브젝트를 묶습니다"
 
-#: builtin/pack-objects.c:3018
+#: builtin/pack-objects.c:3158
 msgid "unpack unreachable objects newer than <time>"
 msgstr "<시각>보다 새로운 접근 불가능 오브젝트의 묶음을 풉니다"
 
-#: builtin/pack-objects.c:3021
+#: builtin/pack-objects.c:3161
 msgid "create thin packs"
 msgstr "얇은 묶음을 만듭니다"
 
-#: builtin/pack-objects.c:3023
+#: builtin/pack-objects.c:3163
 msgid "create packs suitable for shallow fetches"
 msgstr "얕은 가져오기에 적합한 묶음을 만듭니다"
 
-#: builtin/pack-objects.c:3025
+#: builtin/pack-objects.c:3165
 msgid "ignore packs that have companion .keep file"
 msgstr "해당하는 .keep 파일이 있는 묶음을 무시합니다"
 
-#: builtin/pack-objects.c:3027
+#: builtin/pack-objects.c:3167
+msgid "ignore this pack"
+msgstr "이 묶음을 무시합니다"
+
+#: builtin/pack-objects.c:3169
 msgid "pack compression level"
 msgstr "묶음 압축 단계"
 
-# FIXME: graft?
-#: builtin/pack-objects.c:3029
+#: builtin/pack-objects.c:3171
 msgid "do not hide commits by grafts"
-msgstr "붙어 있는 커밋을 숨기지 않습니다"
+msgstr "그래프트로 발생한 커밋을 숨기지 않습니다"
 
-#: builtin/pack-objects.c:3031
+#: builtin/pack-objects.c:3173
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr "가능하면 비트맵 인덱스를 사용해 오브젝트 세기 속도를 높입니다"
 
-#: builtin/pack-objects.c:3033
+#: builtin/pack-objects.c:3175
 msgid "write a bitmap index together with the pack index"
 msgstr "묶음 인덱스와 같이 비트맵 인덱스를 씁니다"
 
-#: builtin/pack-objects.c:3036
+#: builtin/pack-objects.c:3178
 msgid "handling for missing objects"
 msgstr "없는 오브젝트를 처리합니다"
 
-#: builtin/pack-objects.c:3039
+#: builtin/pack-objects.c:3181
 msgid "do not pack objects in promisor packfiles"
 msgstr "프라미서 묶음 파일에 오브젝트를 묶지 않습니다"
 
-#: builtin/pack-objects.c:3178
-msgid "Counting objects"
-msgstr "오브젝트 개수 세는 중"
+#: builtin/pack-objects.c:3205
+#, c-format
+msgid "delta chain depth %d is too deep, forcing %d"
+msgstr "델타 체인 깊이 값이 (%d) 너무 큽니다. %d 값으로 조정합니다"
 
-#: builtin/pack-refs.c:6
+#: builtin/pack-objects.c:3210
+#, c-format
+msgid "pack.deltaCacheLimit is too high, forcing %d"
+msgstr "pack.deltaCacheLimit 값이 너무 큽니다. %d 값으로 조정합니다"
+
+#: builtin/pack-objects.c:3338
+msgid "Enumerating objects"
+msgstr "오브젝트 나열하는 중"
+
+#: builtin/pack-refs.c:7
 msgid "git pack-refs [<options>]"
 msgstr "git pack-refs [<옵션>]"
 
-#: builtin/pack-refs.c:14
+#: builtin/pack-refs.c:15
 msgid "pack everything"
 msgstr "모두 묶습니다"
 
-#: builtin/pack-refs.c:15
+#: builtin/pack-refs.c:16
 msgid "prune loose refs (default)"
 msgstr "느슨한 레퍼런스를 잘라냅니다 (기본값)"
 
@@ -11543,76 +12020,76 @@ msgstr "중복된 오브젝트 제거"
 msgid "git prune [-n] [-v] [--progress] [--expire <time>] [--] [<head>...]"
 msgstr "git prune [-n] [-v] [--progress] [--expire <시각>] [--] [<헤드>...]"
 
-#: builtin/prune.c:107
+#: builtin/prune.c:108
 msgid "report pruned objects"
 msgstr "잘라낸 오브젝트를 알립니다"
 
-#: builtin/prune.c:110
+#: builtin/prune.c:111
 msgid "expire objects older than <time>"
 msgstr "<시각>보다 오래 된 오브젝트를 만료합니다"
 
-#: builtin/prune.c:112
+#: builtin/prune.c:113
 msgid "limit traversal to objects outside promisor packfiles"
 msgstr "프라미서 묶음파일 밖에서 오브젝트 찾지 않습니다"
 
-#: builtin/prune.c:126
+#: builtin/prune.c:127
 msgid "cannot prune in a precious-objects repo"
 msgstr "precious-objects 저장소에서 잘라낼 수 없습니다"
 
-#: builtin/pull.c:54 builtin/pull.c:56
+#: builtin/pull.c:59 builtin/pull.c:61
 #, c-format
 msgid "Invalid value for %s: %s"
 msgstr "%s의 값이 올바르지 않습니다: %s"
 
-#: builtin/pull.c:76
+#: builtin/pull.c:81
 msgid "git pull [<options>] [<repository> [<refspec>...]]"
 msgstr "git pull [<옵션>] [<저장소> [<레퍼런스명세>...]]"
 
-#: builtin/pull.c:127
+#: builtin/pull.c:132
 msgid "control for recursive fetching of submodules"
 msgstr "하위 모듈 재귀적으로 가져오기 방식을 조정합니다"
 
-#: builtin/pull.c:131
+#: builtin/pull.c:136
 msgid "Options related to merging"
 msgstr "병합 관련 옵션"
 
-#: builtin/pull.c:134
+#: builtin/pull.c:139
 msgid "incorporate changes by rebasing rather than merging"
 msgstr "변경 사항을 적용할 때 병합하는 대신 리베이스합니다"
 
-#: builtin/pull.c:161 builtin/rebase--helper.c:23 builtin/revert.c:121
+#: builtin/pull.c:166 builtin/rebase--helper.c:23 builtin/revert.c:121
 msgid "allow fast-forward"
 msgstr "정방향 진행을 허용합니다"
 
-#: builtin/pull.c:170
+#: builtin/pull.c:175
 msgid "automatically stash/stash pop before and after rebase"
 msgstr "리베이스 전과 후에 stash 및 stash pop을 자동으로 합니다"
 
-#: builtin/pull.c:186
+#: builtin/pull.c:191
 msgid "Options related to fetching"
 msgstr "가져오기 관련 옵션"
 
-#: builtin/pull.c:204
+#: builtin/pull.c:209
 msgid "number of submodules pulled in parallel"
 msgstr "병렬적으로 풀을 실행할 하위모듈 개수"
 
-#: builtin/pull.c:299
+#: builtin/pull.c:304
 #, c-format
 msgid "Invalid value for pull.ff: %s"
 msgstr "pull.ff에 대해 잘못된 값: %s"
 
-#: builtin/pull.c:415
+#: builtin/pull.c:420
 msgid ""
 "There is no candidate for rebasing against among the refs that you just "
 "fetched."
 msgstr "가져온 레퍼런스 중에 리베이스할 대상 후보가 없습니다."
 
-#: builtin/pull.c:417
+#: builtin/pull.c:422
 msgid ""
 "There are no candidates for merging among the refs that you just fetched."
 msgstr "가져온 레퍼런스 중에 병합할 대상 후보가 없습니다."
 
-#: builtin/pull.c:418
+#: builtin/pull.c:423
 msgid ""
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
@@ -11620,7 +12097,7 @@ msgstr ""
 "보통 이런 경우는 리모트 쪽에는 없는 와일드카드 레퍼런스명세가\n"
 "주어졌을 때 일어납니다."
 
-#: builtin/pull.c:421
+#: builtin/pull.c:426
 #, c-format
 msgid ""
 "You asked to pull from the remote '%s', but did not specify\n"
@@ -11631,42 +12108,42 @@ msgstr ""
 "이 리모트는 현재 브랜치에 대해 기본으로 설정된 리모트가\n"
 "아니기 때문에, 명령행에서 브랜치를 지정해야 합니다."
 
-#: builtin/pull.c:426 git-parse-remote.sh:73
+#: builtin/pull.c:431 git-parse-remote.sh:73
 msgid "You are not currently on a branch."
 msgstr "현재 어떤 브랜치 위에도 있지 않습니다."
 
-#: builtin/pull.c:428 builtin/pull.c:443 git-parse-remote.sh:79
+#: builtin/pull.c:433 builtin/pull.c:448 git-parse-remote.sh:79
 msgid "Please specify which branch you want to rebase against."
 msgstr "어떤 브랜치를 대상으로 리베이스할지 지정하십시오."
 
-#: builtin/pull.c:430 builtin/pull.c:445 git-parse-remote.sh:82
+#: builtin/pull.c:435 builtin/pull.c:450 git-parse-remote.sh:82
 msgid "Please specify which branch you want to merge with."
 msgstr "어떤 브랜치를 대상으로 병합할지 지정하십시오."
 
-#: builtin/pull.c:431 builtin/pull.c:446
+#: builtin/pull.c:436 builtin/pull.c:451
 msgid "See git-pull(1) for details."
 msgstr "자세한 정보는 git-pull(1) 페이지를 참고하십시오."
 
-#: builtin/pull.c:433 builtin/pull.c:439 builtin/pull.c:448
+#: builtin/pull.c:438 builtin/pull.c:444 builtin/pull.c:453
 #: git-parse-remote.sh:64
 msgid "<remote>"
 msgstr "<리모트>"
 
-#: builtin/pull.c:433 builtin/pull.c:448 builtin/pull.c:453 git-rebase.sh:477
+#: builtin/pull.c:438 builtin/pull.c:453 builtin/pull.c:458 git-rebase.sh:523
 #: git-parse-remote.sh:65
 msgid "<branch>"
 msgstr "<브랜치>"
 
-#: builtin/pull.c:441 git-parse-remote.sh:75
+#: builtin/pull.c:446 git-parse-remote.sh:75
 msgid "There is no tracking information for the current branch."
 msgstr "현재 브랜치에 추적 정보가 없습니다."
 
-#: builtin/pull.c:450 git-parse-remote.sh:95
+#: builtin/pull.c:455 git-parse-remote.sh:95
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:"
 msgstr "이 브랜치에 대한 추적 정보를 설정하려면 다음과 같이 할 수 있습니다:"
 
-#: builtin/pull.c:455
+#: builtin/pull.c:460
 #, c-format
 msgid ""
 "Your configuration specifies to merge with the ref '%s'\n"
@@ -11675,27 +12152,27 @@ msgstr ""
 "설정에서 리모트의 '%s' 레퍼런스와 병합하도록 지정했지만,\n"
 "그런 레퍼런스를 가져오지 않았습니다."
 
-#: builtin/pull.c:819
+#: builtin/pull.c:826
 msgid "ignoring --verify-signatures for rebase"
 msgstr "리베이스에 대해 --verify-signatures 옵션을 무시합니다"
 
-#: builtin/pull.c:867
+#: builtin/pull.c:874
 msgid "--[no-]autostash option is only valid with --rebase."
 msgstr "--[no-]autostash 옵션은 --rebase 옵션과 같이 써야 합니다."
 
-#: builtin/pull.c:875
+#: builtin/pull.c:882
 msgid "Updating an unborn branch with changes added to the index."
 msgstr "만들어지지 않은 브랜치를 인덱스에 추가된 변경 사항으로 업데이트합니다."
 
-#: builtin/pull.c:878
+#: builtin/pull.c:885
 msgid "pull with rebase"
 msgstr "리베이스로 풀하기"
 
-#: builtin/pull.c:879
+#: builtin/pull.c:886
 msgid "please commit or stash them."
 msgstr "커밋하거나 스태시에 넣으십시오."
 
-#: builtin/pull.c:904
+#: builtin/pull.c:911
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -11706,7 +12183,7 @@ msgstr ""
 "작업 폴더를 %s 커밋에서 정방향\n"
 "진행합니다."
 
-#: builtin/pull.c:909
+#: builtin/pull.c:916
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -11723,31 +12200,31 @@ msgstr ""
 "$ git reset --hard\n"
 "복구됩니다."
 
-#: builtin/pull.c:924
+#: builtin/pull.c:931
 msgid "Cannot merge multiple branches into empty head."
 msgstr "여러 브랜치를 빈 헤드로 병합할 수 없습니다."
 
-#: builtin/pull.c:928
+#: builtin/pull.c:935
 msgid "Cannot rebase onto multiple branches."
 msgstr "여러 브랜치로 리베이스할 수 없습니다."
 
-#: builtin/pull.c:935
+#: builtin/pull.c:942
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr "로컬에서 기록한 하위 모듈 수정 사항을 이용해 리베이스할 수 없습니다"
 
-#: builtin/push.c:17
+#: builtin/push.c:19
 msgid "git push [<options>] [<repository> [<refspec>...]]"
 msgstr "git push [<옵션>] [<저장소> [<레퍼런스명세>...]]"
 
-#: builtin/push.c:92
+#: builtin/push.c:111
 msgid "tag shorthand without <tag>"
 msgstr "<태그> 없이 태그 줄임"
 
-#: builtin/push.c:102
+#: builtin/push.c:121
 msgid "--delete only accepts plain target ref names"
 msgstr "--delete 옵션은 일반 대상 레퍼런스 이름만 받습니다"
 
-#: builtin/push.c:146
+#: builtin/push.c:165
 msgid ""
 "\n"
 "To choose either option permanently, see push.default in 'git help config'."
@@ -11756,7 +12233,7 @@ msgstr ""
 "어느 한 쪽 옵션만 계속 선택하려면, 'git help config'에서 push.default를 참고"
 "하십시오."
 
-#: builtin/push.c:149
+#: builtin/push.c:168
 #, c-format
 msgid ""
 "The upstream branch of your current branch does not match\n"
@@ -11781,7 +12258,7 @@ msgstr ""
 "    git push %s %s\n"
 "%s"
 
-#: builtin/push.c:164
+#: builtin/push.c:183
 #, c-format
 msgid ""
 "You are not currently on a branch.\n"
@@ -11796,7 +12273,7 @@ msgstr ""
 "\n"
 "    git push %s HEAD:<name-of-remote-branch>\n"
 
-#: builtin/push.c:178
+#: builtin/push.c:197
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -11810,12 +12287,12 @@ msgstr ""
 "\n"
 "    git push --set-upstream %s %s\n"
 
-#: builtin/push.c:186
+#: builtin/push.c:205
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
 msgstr "현재 브랜치  %s에 여러 업스트림 브랜치가 있습니다. 푸시를 거절합니다."
 
-#: builtin/push.c:189
+#: builtin/push.c:208
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -11826,13 +12303,13 @@ msgstr ""
 "'%s' 브랜치의 업스트림이 아닙니다. 어떤 리모트 브랜치에 무엇을\n"
 "푸시할지 설정하지 않았습니다."
 
-#: builtin/push.c:248
+#: builtin/push.c:267
 msgid ""
 "You didn't specify any refspecs to push, and push.default is \"nothing\"."
 msgstr ""
 "푸시할 레퍼런스명세를 지정하지 않았고, push.default 값이 'nothing'입니다."
 
-#: builtin/push.c:255
+#: builtin/push.c:274
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
@@ -11845,7 +12322,7 @@ msgstr ""
 "자세한 정보는 'git push --help'의 \"Note about fast-forwards' 부분을\n"
 "참고하십시오."
 
-#: builtin/push.c:261
+#: builtin/push.c:280
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. Check out this branch and integrate the remote changes\n"
@@ -11858,7 +12335,7 @@ msgstr ""
 "자세한 정보는 'git push --help'의 \"Note about fast-forwards' 부분을\n"
 "참고하십시오."
 
-#: builtin/push.c:267
+#: builtin/push.c:286
 msgid ""
 "Updates were rejected because the remote contains work that you do\n"
 "not have locally. This is usually caused by another repository pushing\n"
@@ -11874,11 +12351,11 @@ msgstr ""
 "자세한 정보는 'git push --help'의 \"Note about fast-forwards' 부분을\n"
 "참고하십시오."
 
-#: builtin/push.c:274
+#: builtin/push.c:293
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr "리모트에 태그가 이미 있기 때문에 업데이트가 거부되었습니다."
 
-#: builtin/push.c:277
+#: builtin/push.c:296
 msgid ""
 "You cannot update a remote ref that points at a non-commit object,\n"
 "or update a remote ref to make it point at a non-commit object,\n"
@@ -11888,22 +12365,22 @@ msgstr ""
 "레퍼런스를 업데이트하거나, 커밋이 아닌 오브젝트를 가리키도록\n"
 "업데이트할 수 없습니다.\n"
 
-#: builtin/push.c:337
+#: builtin/push.c:357
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "다음에 푸시: %s\n"
 
-#: builtin/push.c:341
+#: builtin/push.c:361
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "레퍼런스를 '%s'에 푸시하는데 실패했습니다"
 
-#: builtin/push.c:372
+#: builtin/push.c:395
 #, c-format
 msgid "bad repository '%s'"
 msgstr "잘못된 저장소 '%s'"
 
-#: builtin/push.c:373
+#: builtin/push.c:396
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -11924,112 +12401,104 @@ msgstr ""
 "\n"
 "    git push <name>\n"
 
-#: builtin/push.c:391
-msgid "--all and --tags are incompatible"
-msgstr "--all 및 --tags 옵션은 호환되지 않습니다"
-
-#: builtin/push.c:392
-msgid "--all can't be combined with refspecs"
-msgstr "--all 옵션은 레퍼런스명세와 같이 쓸 수 없습니다"
-
-#: builtin/push.c:397
-msgid "--mirror and --tags are incompatible"
-msgstr "--mirror 및 --tags 옵션은 호환되지 않습니다"
-
-#: builtin/push.c:398
-msgid "--mirror can't be combined with refspecs"
-msgstr "--mirror 옵션은 레퍼런스명세와 같이 쓸 수 없습니다"
-
-#: builtin/push.c:403
-msgid "--all and --mirror are incompatible"
-msgstr "--all 및 --mirror 옵션은 호환되지 않습니다"
-
-#: builtin/push.c:535
+#: builtin/push.c:551
 msgid "repository"
 msgstr "저장소"
 
-#: builtin/push.c:536 builtin/send-pack.c:163
+#: builtin/push.c:552 builtin/send-pack.c:164
 msgid "push all refs"
 msgstr "모든 레퍼런스 푸시하기"
 
-#: builtin/push.c:537 builtin/send-pack.c:165
+#: builtin/push.c:553 builtin/send-pack.c:166
 msgid "mirror all refs"
 msgstr "모든 레퍼런스 미러"
 
-#: builtin/push.c:539
+#: builtin/push.c:555
 msgid "delete refs"
 msgstr "레퍼런스 삭제"
 
-#: builtin/push.c:540
+#: builtin/push.c:556
 msgid "push tags (can't be used with --all or --mirror)"
 msgstr "태그 푸시하기 (--all 또는 --mirror 옵션과 같이 쓸 수 없음)"
 
-#: builtin/push.c:543 builtin/send-pack.c:166
+#: builtin/push.c:559 builtin/send-pack.c:167
 msgid "force updates"
 msgstr "강제로 업데이트"
 
-#: builtin/push.c:545 builtin/send-pack.c:180
+#: builtin/push.c:561 builtin/send-pack.c:181
 msgid "refname>:<expect"
 msgstr "레퍼런스이름>:<예상"
 
-#: builtin/push.c:546 builtin/send-pack.c:181
+#: builtin/push.c:562 builtin/send-pack.c:182
 msgid "require old value of ref to be at this value"
 msgstr "레퍼런스의 과거 값이 이 값이어야 합니다"
 
-#: builtin/push.c:549
+#: builtin/push.c:565
 msgid "control recursive pushing of submodules"
 msgstr "재귀적 하위 모듈 푸시 방식을 설정합니다"
 
-#: builtin/push.c:551 builtin/send-pack.c:174
+#: builtin/push.c:567 builtin/send-pack.c:175
 msgid "use thin pack"
 msgstr "얇은 묶음을 사용합니다"
 
-#: builtin/push.c:552 builtin/push.c:553 builtin/send-pack.c:160
-#: builtin/send-pack.c:161
+#: builtin/push.c:568 builtin/push.c:569 builtin/send-pack.c:161
+#: builtin/send-pack.c:162
 msgid "receive pack program"
 msgstr "receive pack 프로그램"
 
-#: builtin/push.c:554
+#: builtin/push.c:570
 msgid "set upstream for git pull/status"
 msgstr "git pull/status에 대한 업스트림을 설정합니다"
 
-#: builtin/push.c:557
+#: builtin/push.c:573
 msgid "prune locally removed refs"
 msgstr "로컬에서 제거한 레퍼런스를 잘라냅니다"
 
-#: builtin/push.c:559
+#: builtin/push.c:575
 msgid "bypass pre-push hook"
 msgstr "푸시 전 후크를 건너뜁니다"
 
-#: builtin/push.c:560
+#: builtin/push.c:576
 msgid "push missing but relevant tags"
 msgstr "빠졌지만 관련된 태그를 푸시합니다"
 
-#: builtin/push.c:563 builtin/send-pack.c:168
+#: builtin/push.c:579 builtin/send-pack.c:169
 msgid "GPG sign the push"
 msgstr "푸시에 GPG 서명"
 
-#: builtin/push.c:565 builtin/send-pack.c:175
+#: builtin/push.c:581 builtin/send-pack.c:176
 msgid "request atomic transaction on remote side"
 msgstr "리모트 쪽에 원자 트랜잭션을 요청합니다"
 
-#: builtin/push.c:566 builtin/send-pack.c:171
-msgid "server-specific"
-msgstr "서버-전용-옵션"
-
-#: builtin/push.c:566 builtin/send-pack.c:172
-msgid "option to transmit"
-msgstr "전송할 옵션"
-
-#: builtin/push.c:583
+#: builtin/push.c:599
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr "--delete 옵션은 --all, --mirror, --tags 옵션과 호환되지 않습니다"
 
-#: builtin/push.c:585
+#: builtin/push.c:601
 msgid "--delete doesn't make sense without any refs"
 msgstr "--delete 옵션은 레퍼런스 없이 앞뒤가 맞지 않습니다"
 
 #: builtin/push.c:604
+msgid "--all and --tags are incompatible"
+msgstr "--all 및 --tags 옵션은 호환되지 않습니다"
+
+#: builtin/push.c:606
+msgid "--all can't be combined with refspecs"
+msgstr "--all 옵션은 레퍼런스명세와 같이 쓸 수 없습니다"
+
+#: builtin/push.c:610
+msgid "--mirror and --tags are incompatible"
+msgstr "--mirror 및 --tags 옵션은 호환되지 않습니다"
+
+#: builtin/push.c:612
+msgid "--mirror can't be combined with refspecs"
+msgstr "--mirror 옵션은 레퍼런스명세와 같이 쓸 수 없습니다"
+
+#: builtin/push.c:615
+msgid "--all and --mirror are incompatible"
+msgstr "--all 및 --mirror 옵션은 호환되지 않습니다"
+
+#: builtin/push.c:634
 msgid "push options must not have new line characters"
 msgstr "푸시 옵션에는 줄바꿈 문자가 들어갈 수 없습니다"
 
@@ -12043,67 +12512,67 @@ msgstr ""
 "[-u [--exclude-per-directory=<gitignore>] | -i]] [--no-sparse-checkout] [--"
 "index-output=<파일>] (--empty | <트리-따위> [<트리-따위2> [<트리-따위3>]])"
 
-#: builtin/read-tree.c:121
+#: builtin/read-tree.c:120
 msgid "write resulting index to <file>"
 msgstr "결과 인덱스를 <파일>에 씁니다"
 
-#: builtin/read-tree.c:124
+#: builtin/read-tree.c:123
 msgid "only empty the index"
 msgstr "인덱스를 비우기만 합니다"
 
-#: builtin/read-tree.c:126
+#: builtin/read-tree.c:125
 msgid "Merging"
 msgstr "병합하기"
 
-#: builtin/read-tree.c:128
+#: builtin/read-tree.c:127
 msgid "perform a merge in addition to a read"
 msgstr "읽은 다음 병합을 수행합니다"
 
-#: builtin/read-tree.c:130
+#: builtin/read-tree.c:129
 msgid "3-way merge if no file level merging required"
 msgstr "파일 단위 병합이 필요하지 않으면 3-방향 병합을 합니다"
 
-#: builtin/read-tree.c:132
+#: builtin/read-tree.c:131
 msgid "3-way merge in presence of adds and removes"
 msgstr "추가와 제거가 있을 때 3-방향 병합을 합니다"
 
-#: builtin/read-tree.c:134
+#: builtin/read-tree.c:133
 msgid "same as -m, but discard unmerged entries"
 msgstr "-m과 동일하지만, 병합되지 않은 항목을 버립니다"
 
-#: builtin/read-tree.c:135
+#: builtin/read-tree.c:134
 msgid "<subdirectory>/"
 msgstr "<하위디렉터리>/"
 
-#: builtin/read-tree.c:136
+#: builtin/read-tree.c:135
 msgid "read the tree into the index under <subdirectory>/"
 msgstr "트리를 <하위디렉터리>/ 아래 인덱스로 읽습니다"
 
-#: builtin/read-tree.c:139
+#: builtin/read-tree.c:138
 msgid "update working tree with merge result"
 msgstr "작업 폴더를 병합 결과로 업데이트합니다"
 
-#: builtin/read-tree.c:141
+#: builtin/read-tree.c:140
 msgid "gitignore"
 msgstr "gitignore"
 
-#: builtin/read-tree.c:142
+#: builtin/read-tree.c:141
 msgid "allow explicitly ignored files to be overwritten"
 msgstr "무시하는 파일을 덮어쓰도록 명시적으로 허용합니다"
 
-#: builtin/read-tree.c:145
+#: builtin/read-tree.c:144
 msgid "don't check the working tree after merging"
 msgstr "병합 후에 작업 폴더를 확인하지 않습니다"
 
-#: builtin/read-tree.c:146
+#: builtin/read-tree.c:145
 msgid "don't update the index or the work tree"
 msgstr "인덱스나 작업 폴더를 업데이트하지 않습니다"
 
-#: builtin/read-tree.c:148
+#: builtin/read-tree.c:147
 msgid "skip applying sparse checkout filter"
 msgstr "드문 체크아웃 필터 적용을 건너뜁니다"
 
-#: builtin/read-tree.c:150
+#: builtin/read-tree.c:149
 msgid "debug unpack-trees"
 msgstr "unpack-trees 디버깅"
 
@@ -12120,47 +12589,60 @@ msgid "allow commits with empty messages"
 msgstr "빈 메시지로 커밋을 허용합니다"
 
 #: builtin/rebase--helper.c:27
+msgid "rebase merge commits"
+msgstr "병합 커밋을 리베이스합니다"
+
+#: builtin/rebase--helper.c:29
+msgid "keep original branch points of cousins"
+msgstr "관련된 본래 브랜치 위치를 유지합니다"
+
+#: builtin/rebase--helper.c:30
 msgid "continue rebase"
 msgstr "리베이스 계속"
 
-#: builtin/rebase--helper.c:29
+#: builtin/rebase--helper.c:32
 msgid "abort rebase"
 msgstr "리베이스를 중지합니다"
 
-#: builtin/rebase--helper.c:32
+#: builtin/rebase--helper.c:35
 msgid "make rebase script"
 msgstr "리베이스 스크립트를 만듭니다"
 
-#: builtin/rebase--helper.c:34
+#: builtin/rebase--helper.c:37
 msgid "shorten commit ids in the todo list"
 msgstr "할 일 목록의 커밋 아이디를 줄입니다."
 
-#: builtin/rebase--helper.c:36
+#: builtin/rebase--helper.c:39
 msgid "expand commit ids in the todo list"
 msgstr "할 일 목록의 커밋 아이디를 늘입니다."
 
-#: builtin/rebase--helper.c:38
+#: builtin/rebase--helper.c:41
 msgid "check the todo list"
 msgstr "할 일 목록을 확인합니다"
 
-#: builtin/rebase--helper.c:40
+#: builtin/rebase--helper.c:43
 msgid "skip unnecessary picks"
 msgstr "불필요한 빼오기를 건너뜁니다"
 
-#: builtin/rebase--helper.c:42
+#: builtin/rebase--helper.c:45
 msgid "rearrange fixup/squash lines"
 msgstr "fixup/squash 줄 재구성"
 
 # English Text에서는 insert를 사용하지만, 소스코드에는 add로 표현되어 있습니다.
-#: builtin/rebase--helper.c:44
+#: builtin/rebase--helper.c:47
 msgid "insert exec commands in todo list"
 msgstr "할 일 목록에 실행 명령을 추가합니다"
 
-#: builtin/receive-pack.c:30
+#: builtin/rebase--helper.c:68
+msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
+msgstr ""
+"--[no-]rebase-cousins 옵션은 --rebase-merges 옵션 없이는 아무 효과가 없습니다"
+
+#: builtin/receive-pack.c:31
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <git-dir>"
 
-#: builtin/receive-pack.c:841
+#: builtin/receive-pack.c:842
 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"
@@ -12187,7 +12669,7 @@ msgstr ""
 "이 메시지를 보지 않고 기본 동작을 계속 하려면,\n"
 "'receive.denyCurrentBranch' 설정 변수를 'refuse'로 설정하십시오."
 
-#: builtin/receive-pack.c:861
+#: builtin/receive-pack.c:862
 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"
@@ -12207,11 +12689,11 @@ msgstr ""
 "\n"
 "이 메시지를 보지 않으려면, 이 설정 변수를 'refuse'로 설정하십시오."
 
-#: builtin/receive-pack.c:1934
+#: builtin/receive-pack.c:1935
 msgid "quiet"
 msgstr "출력 않기"
 
-#: builtin/receive-pack.c:1948
+#: builtin/receive-pack.c:1949
 msgid "You must specify a directory."
 msgstr "디렉터리를 지정해야 합니다."
 
@@ -12220,11 +12702,11 @@ msgstr "디렉터리를 지정해야 합니다."
 msgid "'%s' is not a valid timestamp"
 msgstr "'%s'은(는) 올바른 시각 값이 아닙니다"
 
-#: builtin/remote.c:13
+#: builtin/remote.c:14
 msgid "git remote [-v | --verbose]"
 msgstr "git remote [-v | --verbose]"
 
-#: builtin/remote.c:14
+#: builtin/remote.c:15
 msgid ""
 "git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
 "mirror=<fetch|push>] <name> <url>"
@@ -12232,82 +12714,82 @@ msgstr ""
 "git remote add [-t <브랜치>] [-m <master>] [-f] [--tags | --no-tags] [--"
 "mirror=<fetch|push>] <이름> <url>"
 
-#: builtin/remote.c:15 builtin/remote.c:35
+#: builtin/remote.c:16 builtin/remote.c:36
 msgid "git remote rename <old> <new>"
 msgstr "git remote rename <옛이름> <새이름>"
 
-#: builtin/remote.c:16 builtin/remote.c:40
+#: builtin/remote.c:17 builtin/remote.c:41
 msgid "git remote remove <name>"
 msgstr "git remote remove <이름>"
 
-#: builtin/remote.c:17 builtin/remote.c:45
+#: builtin/remote.c:18 builtin/remote.c:46
 msgid "git remote set-head <name> (-a | --auto | -d | --delete | <branch>)"
 msgstr "git remote set-head <이름> (-a | --auto | -d | --delete | <브랜치>)"
 
-#: builtin/remote.c:18
+#: builtin/remote.c:19
 msgid "git remote [-v | --verbose] show [-n] <name>"
 msgstr "git remote [-v | --verbose] show [-n] <이름>"
 
-#: builtin/remote.c:19
+#: builtin/remote.c:20
 msgid "git remote prune [-n | --dry-run] <name>"
 msgstr "git remote prune [-n | --dry-run] <이름>"
 
-#: builtin/remote.c:20
+#: builtin/remote.c:21
 msgid ""
 "git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]"
 msgstr ""
 "git remote [-v | --verbose] update [-p | --prune] [(<그룹> | <리모트>)...]"
 
-#: builtin/remote.c:21
+#: builtin/remote.c:22
 msgid "git remote set-branches [--add] <name> <branch>..."
 msgstr "git remote set-branches [--add] <이름> <브랜치>..."
 
-#: builtin/remote.c:22 builtin/remote.c:71
+#: builtin/remote.c:23 builtin/remote.c:72
 msgid "git remote get-url [--push] [--all] <name>"
 msgstr "git remote get-url [--push] [--all] <이름>"
 
-#: builtin/remote.c:23 builtin/remote.c:76
+#: builtin/remote.c:24 builtin/remote.c:77
 msgid "git remote set-url [--push] <name> <newurl> [<oldurl>]"
 msgstr "git remote set-url [--push] <이름> <새url> [<옛url>]"
 
-#: builtin/remote.c:24 builtin/remote.c:77
+#: builtin/remote.c:25 builtin/remote.c:78
 msgid "git remote set-url --add <name> <newurl>"
 msgstr "git remote set-url --add <이름> <새url>"
 
-#: builtin/remote.c:25 builtin/remote.c:78
+#: builtin/remote.c:26 builtin/remote.c:79
 msgid "git remote set-url --delete <name> <url>"
 msgstr "git remote set-url --delete <이름> <url>"
 
-#: builtin/remote.c:30
+#: builtin/remote.c:31
 msgid "git remote add [<options>] <name> <url>"
 msgstr "git remote add [<옵션>] <이름> <url>"
 
-#: builtin/remote.c:50
+#: builtin/remote.c:51
 msgid "git remote set-branches <name> <branch>..."
 msgstr "git remote set-branches <이름> <브랜치>..."
 
-#: builtin/remote.c:51
+#: builtin/remote.c:52
 msgid "git remote set-branches --add <name> <branch>..."
 msgstr "git remote set-branches --add <이름> <브랜치>..."
 
-#: builtin/remote.c:56
+#: builtin/remote.c:57
 msgid "git remote show [<options>] <name>"
 msgstr "git remote show [<옵션>] <이름>"
 
-#: builtin/remote.c:61
+#: builtin/remote.c:62
 msgid "git remote prune [<options>] <name>"
 msgstr "git remote prune [<옵션>] <이름>"
 
-#: builtin/remote.c:66
+#: builtin/remote.c:67
 msgid "git remote update [<options>] [<group> | <remote>]..."
 msgstr "git remote update [<옵션>] [<그룹> | <리모트>]..."
 
-#: builtin/remote.c:95
+#: builtin/remote.c:96
 #, c-format
 msgid "Updating %s"
 msgstr "%s 업데이트 중"
 
-#: builtin/remote.c:127
+#: builtin/remote.c:128
 msgid ""
 "--mirror is dangerous and deprecated; please\n"
 "\t use --mirror=fetch or --mirror=push instead"
@@ -12315,86 +12797,86 @@ msgstr ""
 "--mirror는 위험하므로 사용을 권하지 않습니다. 대신에\n"
 "\t --mirror=fetch 또는 --mirror=push를 사용하십시오"
 
-#: builtin/remote.c:144
+#: builtin/remote.c:145
 #, c-format
 msgid "unknown mirror argument: %s"
 msgstr "알 수 없는 --mirror 옵션 인자: %s"
 
-#: builtin/remote.c:160
+#: builtin/remote.c:161
 msgid "fetch the remote branches"
 msgstr "리모트 브랜치를 가져옵니다"
 
-#: builtin/remote.c:162
+#: builtin/remote.c:163
 msgid "import all tags and associated objects when fetching"
 msgstr "가져올 때 모든 태그와 관련 오브젝트를 가져옵니다"
 
-#: builtin/remote.c:165
+#: builtin/remote.c:166
 msgid "or do not fetch any tag at all (--no-tags)"
 msgstr "아니면 아무 태그도 가져오지 않습니다 (--no-tags)"
 
-#: builtin/remote.c:167
+#: builtin/remote.c:168
 msgid "branch(es) to track"
 msgstr "추적할 브랜치"
 
-#: builtin/remote.c:168
+#: builtin/remote.c:169
 msgid "master branch"
 msgstr "마스터 브랜치"
 
-#: builtin/remote.c:169
+#: builtin/remote.c:170
 msgid "push|fetch"
 msgstr "push|fetch"
 
-#: builtin/remote.c:170
+#: builtin/remote.c:171
 msgid "set up remote as a mirror to push to or fetch from"
 msgstr "리모트를 푸시 또는 가져올 때 사용할 미러로 설정합니다"
 
-#: builtin/remote.c:182
+#: builtin/remote.c:183
 msgid "specifying a master branch makes no sense with --mirror"
 msgstr "--mirror 옵션과 같이 마스터 브랜치를 지정하면 앞뒤가 맞지 않습니다"
 
-#: builtin/remote.c:184
+#: builtin/remote.c:185
 msgid "specifying branches to track makes sense only with fetch mirrors"
 msgstr "마스터 브랜치를 지정은 fetch 미러에서만 앞뒤가 맞습니다"
 
-#: builtin/remote.c:191 builtin/remote.c:631
+#: builtin/remote.c:192 builtin/remote.c:634
 #, c-format
 msgid "remote %s already exists."
 msgstr "%s 리모트가 이미 있습니다."
 
-#: builtin/remote.c:195 builtin/remote.c:635
+#: builtin/remote.c:196 builtin/remote.c:638
 #, c-format
 msgid "'%s' is not a valid remote name"
 msgstr "'%s'은(는) 올바른 리모트 이름이 아닙니다"
 
-#: builtin/remote.c:235
+#: builtin/remote.c:236
 #, c-format
 msgid "Could not setup master '%s'"
 msgstr "마스터 '%s'을(를) 설정할 수 없습니다"
 
-#: builtin/remote.c:337
+#: builtin/remote.c:342
 #, c-format
 msgid "Could not get fetch map for refspec %s"
 msgstr "%s 레퍼런스명세에 대한 가져오기 맵을 얻을 수 없습니다"
 
-#: builtin/remote.c:438 builtin/remote.c:446
+#: builtin/remote.c:441 builtin/remote.c:449
 msgid "(matching)"
 msgstr "(일치)"
 
-#: builtin/remote.c:450
+#: builtin/remote.c:453
 msgid "(delete)"
 msgstr "(삭제)"
 
-#: builtin/remote.c:624 builtin/remote.c:759 builtin/remote.c:858
+#: builtin/remote.c:627 builtin/remote.c:762 builtin/remote.c:861
 #, c-format
 msgid "No such remote: %s"
 msgstr "그런 리모트가 없습니다: %s"
 
-#: builtin/remote.c:641
+#: builtin/remote.c:644
 #, c-format
 msgid "Could not rename config section '%s' to '%s'"
 msgstr "설정 섹션을 '%s'에서 '%s'(으)로 바꿀 수 없습니다"
 
-#: builtin/remote.c:661
+#: builtin/remote.c:664
 #, c-format
 msgid ""
 "Not updating non-default fetch refspec\n"
@@ -12405,17 +12887,17 @@ msgstr ""
 "\t%s\n"
 "\t필요하면 설정을 수동으로 업데이트하십시오."
 
-#: builtin/remote.c:697
+#: builtin/remote.c:700
 #, c-format
 msgid "deleting '%s' failed"
 msgstr "'%s' 삭제가 실패했습니다"
 
-#: builtin/remote.c:731
+#: builtin/remote.c:734
 #, c-format
 msgid "creating '%s' failed"
 msgstr "'%s' 만들기가 실패했습니다"
 
-#: builtin/remote.c:796
+#: builtin/remote.c:799
 msgid ""
 "Note: A branch outside the refs/remotes/ hierarchy was not removed;\n"
 "to delete it, use:"
@@ -12427,113 +12909,118 @@ msgstr[0] ""
 "다.\n"
 "삭제하려면 다음을 사용하십시오:"
 
-#: builtin/remote.c:810
+#: builtin/remote.c:813
 #, c-format
 msgid "Could not remove config section '%s'"
 msgstr "설정 섹션 '%s'을(를) 제거할 수 없습니다"
 
-#: builtin/remote.c:911
+#: builtin/remote.c:914
 #, c-format
 msgid " new (next fetch will store in remotes/%s)"
 msgstr " 새 항목 (다음 가져오기는 remotes/%s 아래 저장됩니다)"
 
-#: builtin/remote.c:914
+#: builtin/remote.c:917
 msgid " tracked"
 msgstr " 추적됨"
 
-#: builtin/remote.c:916
+#: builtin/remote.c:919
 msgid " stale (use 'git remote prune' to remove)"
 msgstr " 오래됨 (제거하려면 'git remote prune'을 사용하십시오)"
 
-#: builtin/remote.c:918
+#: builtin/remote.c:921
 msgid " ???"
 msgstr " ???"
 
-#: builtin/remote.c:959
+#: builtin/remote.c:962
 #, c-format
 msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch"
 msgstr "잘못된 branch.%s.merge 값. 여러 개 브랜치로 리베이스할 수 없습니다"
 
-#: builtin/remote.c:967
+#: builtin/remote.c:971
 #, c-format
 msgid "rebases interactively onto remote %s"
 msgstr "리모트 %s 위로 대화식으로 리베이스합니다"
 
-#: builtin/remote.c:968
+#: builtin/remote.c:973
+#, c-format
+msgid "rebases interactively (with merges) onto remote %s"
+msgstr "리모트 %s 위로 대화식으로 (병합 포함) 리베이스합니다"
+
+#: builtin/remote.c:976
 #, c-format
 msgid "rebases onto remote %s"
 msgstr "리모트 %s 위로 리베이스합니다"
 
-#: builtin/remote.c:971
+#: builtin/remote.c:980
 #, c-format
 msgid " merges with remote %s"
 msgstr " 병합: 리모트 %s"
 
-#: builtin/remote.c:974
+#: builtin/remote.c:983
 #, c-format
 msgid "merges with remote %s"
 msgstr "병합: 리모트 %s"
 
-#: builtin/remote.c:977
+#: builtin/remote.c:986
 #, c-format
 msgid "%-*s    and with remote %s\n"
 msgstr "%-*s    그리고 리모트 %s\n"
 
-#: builtin/remote.c:1020
+#: builtin/remote.c:1029
 msgid "create"
 msgstr "만들기"
 
-#: builtin/remote.c:1023
+#: builtin/remote.c:1032
 msgid "delete"
 msgstr "삭제"
 
-#: builtin/remote.c:1027
+#: builtin/remote.c:1036
 msgid "up to date"
 msgstr "최신 상태"
 
-#: builtin/remote.c:1030
+#: builtin/remote.c:1039
 msgid "fast-forwardable"
 msgstr "정방향 진행 가능"
 
-#: builtin/remote.c:1033
+#: builtin/remote.c:1042
 msgid "local out of date"
 msgstr "로컬이 뒤떨어짐"
 
-#: builtin/remote.c:1040
+#: builtin/remote.c:1049
 #, c-format
 msgid "    %-*s forces to %-*s (%s)"
 msgstr "    %-*s에서 %-*s(으)로 강제 (%s)"
 
-#: builtin/remote.c:1043
+#: builtin/remote.c:1052
 #, c-format
 msgid "    %-*s pushes to %-*s (%s)"
 msgstr "    %-*s에서 %-*s(으)로 푸시 (%s)"
 
-#: builtin/remote.c:1047
+#: builtin/remote.c:1056
 #, c-format
 msgid "    %-*s forces to %s"
 msgstr "    %-*s에서 %s(으)로 강제"
 
-#: builtin/remote.c:1050
+#: builtin/remote.c:1059
 #, c-format
 msgid "    %-*s pushes to %s"
 msgstr "    %-*s에서 %s(으)로 푸시"
 
-#: builtin/remote.c:1118
+#: builtin/remote.c:1127
 msgid "do not query remotes"
 msgstr "리모트에 질의하지 않습니다"
 
-#: builtin/remote.c:1145
+#: builtin/remote.c:1154
 #, c-format
 msgid "* remote %s"
 msgstr "* 리모트 %s"
 
-#: builtin/remote.c:1146
+#: builtin/remote.c:1155
 #, c-format
 msgid "  Fetch URL: %s"
 msgstr "  가져오기 URL: %s"
 
-#: builtin/remote.c:1147 builtin/remote.c:1163 builtin/remote.c:1302
+#: builtin/remote.c:1156 builtin/remote.c:1172 builtin/remote.c:1311
 msgid "(no URL)"
 msgstr "(URL 없음)"
 
@@ -12541,182 +13028,182 @@ msgstr "(URL 없음)"
 #. with the one in " Fetch URL: %s"
 #. translation.
 #.
-#: builtin/remote.c:1161 builtin/remote.c:1163
+#: builtin/remote.c:1170 builtin/remote.c:1172
 #, c-format
 msgid "  Push  URL: %s"
 msgstr "  푸시  URL: %s"
 
-#: builtin/remote.c:1165 builtin/remote.c:1167 builtin/remote.c:1169
+#: builtin/remote.c:1174 builtin/remote.c:1176 builtin/remote.c:1178
 #, c-format
 msgid "  HEAD branch: %s"
 msgstr "  HEAD 브랜치: %s"
 
-#: builtin/remote.c:1165
+#: builtin/remote.c:1174
 msgid "(not queried)"
 msgstr "(질의하지 않음)"
 
-#: builtin/remote.c:1167
+#: builtin/remote.c:1176
 msgid "(unknown)"
 msgstr "(알 수 없음)"
 
-#: builtin/remote.c:1171
+#: builtin/remote.c:1180
 #, c-format
 msgid ""
 "  HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
 msgstr "  HEAD 브랜치 (리모트 HEAD는 애매하고, 다음 중 하나일 수 있습니다):\n"
 
-#: builtin/remote.c:1183
+#: builtin/remote.c:1192
 #, c-format
 msgid "  Remote branch:%s"
 msgid_plural "  Remote branches:%s"
 msgstr[0] "  리모트 브랜치:%s"
 
-#: builtin/remote.c:1186 builtin/remote.c:1212
+#: builtin/remote.c:1195 builtin/remote.c:1221
 msgid " (status not queried)"
 msgstr " (상태를 질의하지 않음)"
 
-#: builtin/remote.c:1195
+#: builtin/remote.c:1204
 msgid "  Local branch configured for 'git pull':"
 msgid_plural "  Local branches configured for 'git pull':"
 msgstr[0] "  'git pull'에 사용할 로컬 브랜치를 설정:"
 
-#: builtin/remote.c:1203
+#: builtin/remote.c:1212
 msgid "  Local refs will be mirrored by 'git push'"
 msgstr "  로컬 레퍼런스를 'git push'로 미러링할 예정"
 
-#: builtin/remote.c:1209
+#: builtin/remote.c:1218
 #, c-format
 msgid "  Local ref configured for 'git push'%s:"
 msgid_plural "  Local refs configured for 'git push'%s:"
 msgstr[0] "  로컬 레퍼런스를 'git push'로 미러링%s:"
 
-#: builtin/remote.c:1230
+#: builtin/remote.c:1239
 msgid "set refs/remotes/<name>/HEAD according to remote"
 msgstr "레퍼런스/리모트/<이름>/HEAD 값을 리모트에 맞게 설정합니다"
 
-#: builtin/remote.c:1232
+#: builtin/remote.c:1241
 msgid "delete refs/remotes/<name>/HEAD"
 msgstr "레퍼런스/리모트/<이름>/HEAD 값을 삭제합니다"
 
-#: builtin/remote.c:1247
+#: builtin/remote.c:1256
 msgid "Cannot determine remote HEAD"
 msgstr "리모트 HEAD를 결정할 수 없습니다"
 
-#: builtin/remote.c:1249
+#: builtin/remote.c:1258
 msgid "Multiple remote HEAD branches. Please choose one explicitly with:"
 msgstr ""
 "리모트 HEAD 브랜치가 여러개입니다. 다음 중 하나를 명시적으로 지정하십시오:"
 
-#: builtin/remote.c:1259
+#: builtin/remote.c:1268
 #, c-format
 msgid "Could not delete %s"
 msgstr "%s을(를) 삭제할 수 없습니다"
 
-#: builtin/remote.c:1267
+#: builtin/remote.c:1276
 #, c-format
 msgid "Not a valid ref: %s"
 msgstr "올바른 레퍼런스가 아닙니다: %s"
 
-#: builtin/remote.c:1269
+#: builtin/remote.c:1278
 #, c-format
 msgid "Could not setup %s"
 msgstr "%s을(를) 설정할 수 없습니다"
 
-#: builtin/remote.c:1287
+#: builtin/remote.c:1296
 #, c-format
 msgid " %s will become dangling!"
 msgstr " %s의 연결이 끊어집니다!"
 
-#: builtin/remote.c:1288
+#: builtin/remote.c:1297
 #, c-format
 msgid " %s has become dangling!"
 msgstr " %s의 연결이 끊어졌습니다!"
 
-#: builtin/remote.c:1298
+#: builtin/remote.c:1307
 #, c-format
 msgid "Pruning %s"
 msgstr "잘라냄: %s"
 
-#: builtin/remote.c:1299
+#: builtin/remote.c:1308
 #, c-format
 msgid "URL: %s"
 msgstr "URL: %s"
 
-#: builtin/remote.c:1315
+#: builtin/remote.c:1324
 #, c-format
 msgid " * [would prune] %s"
 msgstr " * [잘라낼 예정] %s"
 
-#: builtin/remote.c:1318
+#: builtin/remote.c:1327
 #, c-format
 msgid " * [pruned] %s"
 msgstr " * [잘라냄] %s"
 
-#: builtin/remote.c:1363
+#: builtin/remote.c:1372
 msgid "prune remotes after fetching"
 msgstr "가져온 후에 리모트를 잘라냅니다"
 
-#: builtin/remote.c:1426 builtin/remote.c:1480 builtin/remote.c:1548
+#: builtin/remote.c:1435 builtin/remote.c:1489 builtin/remote.c:1557
 #, c-format
 msgid "No such remote '%s'"
 msgstr "그런 리모트가 없습니다 ('%s')"
 
-#: builtin/remote.c:1442
+#: builtin/remote.c:1451
 msgid "add branch"
 msgstr "브랜치를 추가합니다"
 
-#: builtin/remote.c:1449
+#: builtin/remote.c:1458
 msgid "no remote specified"
 msgstr "리모트를 지정하지 않았습니다"
 
-#: builtin/remote.c:1466
+#: builtin/remote.c:1475
 msgid "query push URLs rather than fetch URLs"
 msgstr "가져오기 URL이 아니라 푸시 URL을 질의합니다"
 
-#: builtin/remote.c:1468
+#: builtin/remote.c:1477
 msgid "return all URLs"
 msgstr "모든 URL을 리턴합니다"
 
-#: builtin/remote.c:1496
+#: builtin/remote.c:1505
 #, c-format
 msgid "no URLs configured for remote '%s'"
 msgstr "'%s' 리모트에 대한 URL을 설정하지 않았습니다"
 
-#: builtin/remote.c:1522
+#: builtin/remote.c:1531
 msgid "manipulate push URLs"
 msgstr "푸시 URL을 지정합니다"
 
-#: builtin/remote.c:1524
+#: builtin/remote.c:1533
 msgid "add URL"
 msgstr "URL을 추가합니다"
 
-#: builtin/remote.c:1526
+#: builtin/remote.c:1535
 msgid "delete URLs"
 msgstr "URL을 삭제합니다"
 
-#: builtin/remote.c:1533
+#: builtin/remote.c:1542
 msgid "--add --delete doesn't make sense"
 msgstr "--add --delete 옵션을 둘다 쓰면 안 됩니다"
 
-#: builtin/remote.c:1572
+#: builtin/remote.c:1581
 #, c-format
 msgid "Invalid old URL pattern: %s"
 msgstr "잘못된 오래전 URL 패턴: %s"
 
-#: builtin/remote.c:1580
+#: builtin/remote.c:1589
 #, c-format
 msgid "No such URL found: %s"
 msgstr "그런 URL이 없습니다: %s"
 
-#: builtin/remote.c:1582
+#: builtin/remote.c:1591
 msgid "Will not delete all non-push URLs"
 msgstr "푸시용이 아닌 모든 URL을 삭제하지 않습니다"
 
-#: builtin/remote.c:1598
+#: builtin/remote.c:1607
 msgid "be verbose; must be placed before a subcommand"
 msgstr "자세히 표시합니다 (하위 명령 앞에 와야 합니다)"
 
-#: builtin/remote.c:1629
+#: builtin/remote.c:1638
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr "알 수 없는 하위 명령: %s"
@@ -12733,128 +13220,136 @@ msgstr ""
 "점진적인 repack은 비트맵 인덱스와 호환되지 않습니다.\n"
 "--no-write-bitmap-index를 사용하거나 pack.writebitmaps 설정을 끄십시오."
 
-#: builtin/repack.c:170
+#: builtin/repack.c:180
 msgid "pack everything in a single pack"
 msgstr "하나의 묶음 안에 모두 묶습니다"
 
-#: builtin/repack.c:172
+#: builtin/repack.c:182
 msgid "same as -a, and turn unreachable objects loose"
 msgstr "-a와 동일하고, 접근 불가능 오브젝트를 느슨하게 바꿉니다"
 
-#: builtin/repack.c:175
+#: builtin/repack.c:185
 msgid "remove redundant packs, and run git-prune-packed"
 msgstr "여분의 묶음을 제거하고, git-prune-packed를 실행합니다"
 
-#: builtin/repack.c:177
+#: builtin/repack.c:187
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr "git-pack-objects에 --no-reuse-delta 옵션을 넘깁니다"
 
-#: builtin/repack.c:179
+#: builtin/repack.c:189
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr "git-pack-objects에 --no-reuse-object 옵션을 넘깁니다"
 
-#: builtin/repack.c:181
+#: builtin/repack.c:191
 msgid "do not run git-update-server-info"
 msgstr "git-update-server-info를 실행하지 않습니다"
 
-#: builtin/repack.c:184
+#: builtin/repack.c:194
 msgid "pass --local to git-pack-objects"
 msgstr "git-pack-objects에 --local 옵션을 넘깁니다"
 
-#: builtin/repack.c:186
+#: builtin/repack.c:196
 msgid "write bitmap index"
 msgstr "비트맵 인덱스를 씁니다"
 
-#: builtin/repack.c:187
+#: builtin/repack.c:197
 msgid "approxidate"
 msgstr "대략의시각"
 
-#: builtin/repack.c:188
+#: builtin/repack.c:198
 msgid "with -A, do not loosen objects older than this"
 msgstr ""
 "-A에 추가로, 지정한 시각보다 오래된 오브젝트를 느슨하게 만들지 않습니다"
 
-#: builtin/repack.c:190
+#: builtin/repack.c:200
 msgid "with -a, repack unreachable objects"
 msgstr "-a와 같이, 접근 불가능 오브젝트를 다시 묶습니다"
 
-#: builtin/repack.c:192
+#: builtin/repack.c:202
 msgid "size of the window used for delta compression"
 msgstr "델타 압축에 사용할 윈도우 크기"
 
-#: builtin/repack.c:193 builtin/repack.c:199
+#: builtin/repack.c:203 builtin/repack.c:209
 msgid "bytes"
 msgstr "바이트수"
 
-#: builtin/repack.c:194
+#: builtin/repack.c:204
 msgid "same as the above, but limit memory size instead of entries count"
 msgstr "위와 동일하지만, 항목 수 대신 메모리 크기를 제한합니다"
 
-#: builtin/repack.c:196
+#: builtin/repack.c:206
 msgid "limits the maximum delta depth"
 msgstr "최대 델타 깊이를 제한합니다"
 
-#: builtin/repack.c:198
+#: builtin/repack.c:208
 msgid "limits the maximum number of threads"
 msgstr "최대 스레드 수를 제한합니다"
 
-#: builtin/repack.c:200
+#: builtin/repack.c:210
 msgid "maximum size of each packfile"
 msgstr "묶음 파일의 최대 크기"
 
-#: builtin/repack.c:202
+#: builtin/repack.c:212
 msgid "repack objects in packs marked with .keep"
 msgstr ".keep으로 표시된 묶음의 오브젝트를 다시 묶습니다"
 
-#: builtin/repack.c:212
+#: builtin/repack.c:214
+msgid "do not repack this pack"
+msgstr "이 묶음을 다시 묶지 않습니다"
+
+#: builtin/repack.c:224
 msgid "cannot delete packs in a precious-objects repo"
 msgstr "precious-objects 저장소의 묶음을 삭제할 수 없습니다"
 
-#: builtin/repack.c:216
+#: builtin/repack.c:228
 msgid "--keep-unreachable and -A are incompatible"
 msgstr "--keep-unreachable 및 -A 옵션은 호환되지 않습니다"
 
-#: builtin/repack.c:410 builtin/worktree.c:148
+#: builtin/repack.c:425 builtin/worktree.c:139
 #, c-format
 msgid "failed to remove '%s'"
 msgstr "'%s' 제거에 실패했습니다"
 
-#: builtin/replace.c:20
+#: builtin/replace.c:22
 msgid "git replace [-f] <object> <replacement>"
 msgstr "git replace [-f] <오브젝트> <대체이름>"
 
-#: builtin/replace.c:21
+#: builtin/replace.c:23
 msgid "git replace [-f] --edit <object>"
 msgstr "git replace [-f] --edit <오브젝트>"
 
-#: builtin/replace.c:22
+#: builtin/replace.c:24
 msgid "git replace [-f] --graft <commit> [<parent>...]"
 msgstr "git replace [-f] --graft <커밋> [<상위>...]"
 
-#: builtin/replace.c:23
+#: builtin/replace.c:25
+msgid "git replace [-f] --convert-graft-file"
+msgstr "git replace [-f] --convert-graft-file"
+
+#: builtin/replace.c:26
 msgid "git replace -d <object>..."
 msgstr "git replace -d <오브젝트>..."
 
-#: builtin/replace.c:24
+#: builtin/replace.c:27
 msgid "git replace [--format=<format>] [-l [<pattern>]]"
 msgstr "git replace [--format=<형식>] [-l [<패턴>]]"
 
-#: builtin/replace.c:331 builtin/replace.c:369 builtin/replace.c:397
+#: builtin/replace.c:371 builtin/replace.c:415 builtin/replace.c:445
 #, c-format
 msgid "Not a valid object name: '%s'"
 msgstr "올바른 오브젝트 이름이 아닙니다: '%s'"
 
-#: builtin/replace.c:361
+#: builtin/replace.c:407
 #, c-format
 msgid "bad mergetag in commit '%s'"
 msgstr "커밋 '%s'에 잘못된 병합태그"
 
-#: builtin/replace.c:363
+#: builtin/replace.c:409
 #, c-format
 msgid "malformed mergetag in commit '%s'"
 msgstr "커밋 '%s'에 잘못된 형식의 병합태그"
 
-#: builtin/replace.c:374
+#: builtin/replace.c:421
 #, c-format
 msgid ""
 "original commit '%s' contains mergetag '%s' that is discarded; use --edit "
@@ -12863,45 +13358,58 @@ msgstr ""
 "본래 커밋 '%s'에 버려진 병합태그 '%s'이(가) 들어 있습니다. --graft 대신 --"
 "edit 옵션을 사용하십시오"
 
-#: builtin/replace.c:407
+#: builtin/replace.c:460
 #, c-format
 msgid "the original commit '%s' has a gpg signature."
 msgstr "본래 커밋 '%s'에 GPG 서명이 있습니다."
 
-#: builtin/replace.c:408
+#: builtin/replace.c:461
 msgid "the signature will be removed in the replacement commit!"
 msgstr "대체 커밋에서 서명을 제거합니다!"
 
-#: builtin/replace.c:414
+#: builtin/replace.c:471
 #, c-format
 msgid "could not write replacement commit for: '%s'"
 msgstr "다음에 대한 대체 커밋을 쓸 수 없습니다: '%s'"
 
-#: builtin/replace.c:438
+#: builtin/replace.c:514
+#, c-format
+msgid ""
+"could not convert the following graft(s):\n"
+"%s"
+msgstr ""
+"다음 그래프트를 변환할 수 없습니다:\n"
+"%s"
+
+#: builtin/replace.c:535
 msgid "list replace refs"
 msgstr "대체 레퍼런스 목록을 표시합니다"
 
-#: builtin/replace.c:439
+#: builtin/replace.c:536
 msgid "delete replace refs"
 msgstr "대체 레퍼런스를 삭제합니다"
 
-#: builtin/replace.c:440
+#: builtin/replace.c:537
 msgid "edit existing object"
 msgstr "현재 오브젝트를 편집합니다"
 
-#: builtin/replace.c:441
+#: builtin/replace.c:538
 msgid "change a commit's parents"
 msgstr "커밋의 상위 항목을 바꿉니다"
 
-#: builtin/replace.c:442
+#: builtin/replace.c:539
+msgid "convert existing graft file"
+msgstr "기존 그래프트 파일을 변환합니다"
+
+#: builtin/replace.c:540
 msgid "replace the ref if it exists"
 msgstr "레퍼런스가 있으면 대체합니다"
 
-#: builtin/replace.c:444
+#: builtin/replace.c:542
 msgid "do not pretty-print contents for --edit"
 msgstr "--edit에 대한 내용을 예쁘게 표시하지 않습니다"
 
-#: builtin/replace.c:445
+#: builtin/replace.c:543
 msgid "use this format"
 msgstr "이 형식을 사용합니다"
 
@@ -13061,23 +13569,23 @@ msgstr "rev-list는 노트 표시를 지원하지 않습니다"
 msgid "cannot combine --use-bitmap-index with object filtering"
 msgstr "--use-bitmap-index 옵션에 오브젝트 필터링을 결합 할 수 없습니다"
 
-#: builtin/rev-parse.c:402
+#: builtin/rev-parse.c:406
 msgid "git rev-parse --parseopt [<options>] -- [<args>...]"
 msgstr "git rev-parse --parseopt [<옵션>] -- [<인자>...]"
 
-#: builtin/rev-parse.c:407
+#: builtin/rev-parse.c:411
 msgid "keep the `--` passed as an arg"
 msgstr "인자로 넘긴 `--`를 유지합니다"
 
-#: builtin/rev-parse.c:409
+#: builtin/rev-parse.c:413
 msgid "stop parsing after the first non-option argument"
 msgstr "첫번째 옵션이 아닌 인자 뒤에 파싱을 중지합니다"
 
-#: builtin/rev-parse.c:412
+#: builtin/rev-parse.c:416
 msgid "output in stuck long form"
 msgstr "stuck long 형식으로 출력합니다"
 
-#: builtin/rev-parse.c:545
+#: builtin/rev-parse.c:549
 msgid ""
 "git rev-parse --parseopt [<options>] -- [<args>...]\n"
 "   or: git rev-parse --sq-quote [<arg>...]\n"
@@ -13215,42 +13723,42 @@ msgid "the following file has local modifications:"
 msgid_plural "the following files have local modifications:"
 msgstr[0] "다음 파일에 로컬 수정 사항이 있습니다:"
 
-#: builtin/rm.c:243
+#: builtin/rm.c:241
 msgid "do not list removed files"
 msgstr "제거한 파일 목록을 표시하지 않습니다"
 
-#: builtin/rm.c:244
+#: builtin/rm.c:242
 msgid "only remove from the index"
 msgstr "인덱스에서만 제거합니다"
 
-#: builtin/rm.c:245
+#: builtin/rm.c:243
 msgid "override the up-to-date check"
 msgstr "최신 버전 확인을 하지 않습니다"
 
-#: builtin/rm.c:246
+#: builtin/rm.c:244
 msgid "allow recursive removal"
 msgstr "재귀적 제거를 허용합니다"
 
-#: builtin/rm.c:248
+#: builtin/rm.c:246
 msgid "exit with a zero status even if nothing matched"
 msgstr "아무 것도 일치하지 않으면 상태 0번으로 끝납니다"
 
-#: builtin/rm.c:307
+#: builtin/rm.c:306
 #, c-format
 msgid "not removing '%s' recursively without -r"
 msgstr "-r 옵션이 없으면 재귀적으로 '%s'을(를) 제거하지 않습니다"
 
-#: builtin/rm.c:346
+#: builtin/rm.c:345
 #, c-format
 msgid "git rm: unable to remove %s"
 msgstr "git rm: %s을(를) 제거할 수 없습니다"
 
-#: builtin/rm.c:369
+#: builtin/rm.c:368
 #, c-format
 msgid "could not remove '%s'"
 msgstr "'%s'을(를) 제거할 수 없습니다"
 
-#: builtin/send-pack.c:19
+#: builtin/send-pack.c:20
 msgid ""
 "git send-pack [--all | --mirror] [--dry-run] [--force] [--receive-pack=<git-"
 "receive-pack>] [--verbose] [--thin] [--atomic] [<host>:]<directory> "
@@ -13262,50 +13770,70 @@ msgstr ""
 "스>...]\n"
 "  --all 옵션과 명시적인 <레퍼런스> 명세 중 하나만 사용할 수 있습니다."
 
-#: builtin/send-pack.c:162
+#: builtin/send-pack.c:163
 msgid "remote name"
 msgstr "리모트 이름"
 
-#: builtin/send-pack.c:176
+#: builtin/send-pack.c:177
 msgid "use stateless RPC protocol"
 msgstr "상태 없는 RPC 프로토콜을 사용합니다"
 
-#: builtin/send-pack.c:177
+#: builtin/send-pack.c:178
 msgid "read refs from stdin"
 msgstr "표준 입력에서 레퍼런스를 읽습니다"
 
-#: builtin/send-pack.c:178
+#: builtin/send-pack.c:179
 msgid "print status from remote helper"
 msgstr "리모트 도움 프로그램의 상태를 표시합니다"
 
+#: builtin/serve.c:7
+msgid "git serve [<options>]"
+msgstr "git serve [<옵션>]"
+
+#: builtin/serve.c:17 builtin/upload-pack.c:23
+msgid "quit after a single request/response exchange"
+msgstr "하나의 요청/응답 교환 뒤에 끝납니다"
+
+#: builtin/serve.c:19
+msgid "exit immediately after advertising capabilities"
+msgstr "기능 정보 교환 뒤에 즉시 끝납니다"
+
 #: builtin/shortlog.c:14
-msgid "git shortlog [<options>] [<revision-range>] [[--] [<path>...]]"
-msgstr "git shortlog [<옵션>] [<리비전-범위>] [[--] [<경로>...]]"
+msgid "git shortlog [<options>] [<revision-range>] [[--] <path>...]"
+msgstr "git shortlog [<옵션>] [<리비전-범위>] [[--] <경로>...]"
+
+#: builtin/shortlog.c:15
+msgid "git log --pretty=short | git shortlog [<options>]"
+msgstr "git log --pretty=short | git shortlog [<옵션>]"
 
-#: builtin/shortlog.c:263
+#: builtin/shortlog.c:264
 msgid "Group by committer rather than author"
 msgstr "작성자가 아닌 커미터로 묶습니다"
 
-#: builtin/shortlog.c:265
+#: builtin/shortlog.c:266
 msgid "sort output according to the number of commits per author"
 msgstr "작성자별 커밋 수에 따라 정렬합니다"
 
-#: builtin/shortlog.c:267
+#: builtin/shortlog.c:268
 msgid "Suppress commit descriptions, only provides commit count"
 msgstr "커밋 설명을 생략하고, 커밋 수만 표시합니다"
 
-#: builtin/shortlog.c:269
+#: builtin/shortlog.c:270
 msgid "Show the email address of each author"
 msgstr "작성자의 전자메일 주소를 표시합니다"
 
-#: builtin/shortlog.c:270
+#: builtin/shortlog.c:271
 msgid "w[,i1[,i2]]"
 msgstr "w[,i1[,i2]]"
 
-#: builtin/shortlog.c:271
+#: builtin/shortlog.c:272
 msgid "Linewrap output"
 msgstr "줄바꿈 출력"
 
+#: builtin/shortlog.c:298
+msgid "too many arguments given outside repository"
+msgstr "저장소 밖에서 주어진 인자가 너무 많습니다"
+
 #: builtin/show-branch.c:12
 msgid ""
 "git show-branch [-a | --all] [-r | --remotes] [--topo-order | --date-order]\n"
@@ -13499,39 +14027,39 @@ msgstr "주석 문자로 시작하는 모든 줄을 건너뛰고 제거합니다
 msgid "prepend comment character and space to each line"
 msgstr "각 줄의 앞에 주석 문자와 공백을 붙입니다"
 
-#: builtin/submodule--helper.c:35 builtin/submodule--helper.c:1669
+#: builtin/submodule--helper.c:37 builtin/submodule--helper.c:1688
 #, c-format
 msgid "No such ref: %s"
 msgstr "그런 레퍼런스가 없습니다: %s"
 
-#: builtin/submodule--helper.c:42 builtin/submodule--helper.c:1678
+#: builtin/submodule--helper.c:44 builtin/submodule--helper.c:1697
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr "전체 레퍼런스 이름이 필요하지만, 입력은 %s"
 
-#: builtin/submodule--helper.c:59
+#: builtin/submodule--helper.c:61
 msgid "submodule--helper print-default-remote takes no arguments"
 msgstr "submodule--helper print-default-remote 옵션은 인자가 필요하지 않습니다"
 
-#: builtin/submodule--helper.c:96
+#: builtin/submodule--helper.c:98
 #, c-format
 msgid "cannot strip one component off url '%s'"
 msgstr "'%s' URL 하나의 단계를 잘라낼 수 없습니다"
 
-#: builtin/submodule--helper.c:404 builtin/submodule--helper.c:1198
+#: builtin/submodule--helper.c:406 builtin/submodule--helper.c:1211
 msgid "alternative anchor for relative paths"
 msgstr "상대 경로에 사용할 또다른 기준"
 
-#: builtin/submodule--helper.c:409
+#: builtin/submodule--helper.c:411
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper list [--prefix=<경로>] [<경로>...]"
 
-#: builtin/submodule--helper.c:460 builtin/submodule--helper.c:483
+#: builtin/submodule--helper.c:462 builtin/submodule--helper.c:485
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr ".gitmodules에서 하위 모듈 경로 '%s'에 대한 URL이 없습니다"
 
-#: builtin/submodule--helper.c:498
+#: builtin/submodule--helper.c:500
 #, c-format
 msgid ""
 "could not lookup configuration '%s'. Assuming this repository is its own "
@@ -13539,113 +14067,115 @@ msgid ""
 msgstr ""
 "'%s' 설정을 찾아볼 수 없습니다. 이 저장소가 자체 업스트림이라고 가정합니다."
 
-#: builtin/submodule--helper.c:509
+#: builtin/submodule--helper.c:511
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr "하위 모듈 경로 '%s'에 대한 URL을 등록하는데 실패했습니다"
 
-#: builtin/submodule--helper.c:513
+#: builtin/submodule--helper.c:515
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr "'%3$s' 경로에 대해 '%1$s' (%2$s) 하위 모듈 등록\n"
 
-#: builtin/submodule--helper.c:523
+#: builtin/submodule--helper.c:525
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
 msgstr "경고: '%s' 하위 모듈에 대해 커맨드 업데이트 모드가 제안되었습니다\n"
 
-#: builtin/submodule--helper.c:530
+#: builtin/submodule--helper.c:532
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
 msgstr "'%s' 하위 모듈에 대해 업데이트 모드 등록이 실패했습니다"
 
-#: builtin/submodule--helper.c:552
+#: builtin/submodule--helper.c:554
 msgid "Suppress output for initializing a submodule"
 msgstr "하위 모듈 초기화에 출력을 하지 않습니다"
 
-#: builtin/submodule--helper.c:557
+#: builtin/submodule--helper.c:559
 msgid "git submodule--helper init [<path>]"
 msgstr "git submodule--helper init [<경로>]"
 
-#: builtin/submodule--helper.c:625 builtin/submodule--helper.c:747
+#: builtin/submodule--helper.c:631 builtin/submodule--helper.c:757
 #, c-format
 msgid "no submodule mapping found in .gitmodules for path '%s'"
 msgstr "경로 '%s'에 대해 .gitmodules에 있는 하위모듈 매핑이 없습니다"
 
-#: builtin/submodule--helper.c:660
+#: builtin/submodule--helper.c:670
 #, c-format
 msgid "could not resolve HEAD ref inside the submodule '%s'"
 msgstr "HEAD 레퍼런스를 '%s' 하위 모듈 안에서 찾을 수 없습니다"
 
-#: builtin/submodule--helper.c:687 builtin/submodule--helper.c:856
+#: builtin/submodule--helper.c:697 builtin/submodule--helper.c:866
 #, c-format
 msgid "failed to recurse into submodule '%s'"
 msgstr "'%s' 하위 모듈에 재귀적으로 적용이 실패했습니다"
 
-#: builtin/submodule--helper.c:711 builtin/submodule--helper.c:1021
+#: builtin/submodule--helper.c:721 builtin/submodule--helper.c:1031
 msgid "Suppress submodule status output"
 msgstr "하위 모듈 상태를 출력하지 않습니다"
 
-#: builtin/submodule--helper.c:712
+#: builtin/submodule--helper.c:722
 msgid ""
 "Use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
 msgstr "하위 모듈 HEAD에 저장된 커밋 대신 인덱스에 저장된 커밋을 사용합니다"
 
-#: builtin/submodule--helper.c:713
+#: builtin/submodule--helper.c:723
 msgid "recurse into nested submodules"
 msgstr "내장된 하위 모듈에 재귀적으로 적용"
 
-#: builtin/submodule--helper.c:718
+#: builtin/submodule--helper.c:728
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quiet] [--cached] [--recursive] [<경로>...]"
 
-#: builtin/submodule--helper.c:742
+#: builtin/submodule--helper.c:752
 msgid "git submodule--helper name <path>"
 msgstr "git submodule--helper name <경로>"
 
-#: builtin/submodule--helper.c:806
+#: builtin/submodule--helper.c:816
 #, c-format
 msgid "Synchronizing submodule url for '%s'\n"
 msgstr "하위 모듈 URL을 '%s'에 대해 동기화\n"
 
-#: builtin/submodule--helper.c:812
+#: builtin/submodule--helper.c:822
 #, c-format
 msgid "failed to register url for submodule path '%s'"
 msgstr "하위 모듈 경로 '%s'에 대한 URL을 등록하는데 실패했습니다"
 
-#: builtin/submodule--helper.c:826
+#: builtin/submodule--helper.c:836
 #, c-format
 msgid "failed to get the default remote for submodule '%s'"
 msgstr ""
 "하위 모듈 경로 '%s'에 대한 기본 리모트 (저장소)를 가져오는데 실패했습니다"
 
-#: builtin/submodule--helper.c:837
+#: builtin/submodule--helper.c:847
 #, c-format
 msgid "failed to update remote for submodule '%s'"
 msgstr ""
 "하위 모듈 경로 '%s'에 대한 리모트 (저장소)를 업데이트하는데 실패했습니다"
 
-#: builtin/submodule--helper.c:885
+#: builtin/submodule--helper.c:895
 msgid "Suppress output of synchronizing submodule url"
 msgstr "하위 모듈 URL 동기화 출력 표시하지 않습니다"
 
-#: builtin/submodule--helper.c:887
+#: builtin/submodule--helper.c:897
 msgid "Recurse into nested submodules"
 msgstr "중첩된 하위 모듈에 재귀적으로 적용합니다"
 
-#: builtin/submodule--helper.c:892
+#: builtin/submodule--helper.c:902
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
 msgstr "git submodule--helper sync [--quiet] [--recursive] [<경로>]"
 
-#: builtin/submodule--helper.c:946
+#: builtin/submodule--helper.c:956
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
 "really want to remove it including all of its history)"
-msgstr "하위 모듈 작업 폴더 '%s'에 .git 디렉터리가 있습니다 (정말로 모든 커밋 내역을 포함하여 제거하려면 'rm -rf'를 사용하십시오)"
+msgstr ""
+"하위 모듈 작업 폴더 '%s'에 .git 디렉터리가 있습니다 (정말로 모든 커밋 내역을 "
+"포함하여 제거하려면 'rm -rf'를 사용하십시오)"
 
-#: builtin/submodule--helper.c:958
+#: builtin/submodule--helper.c:968
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains local modifications; use '-f' to discard "
@@ -13654,80 +14184,80 @@ msgstr ""
 "하위 모듈 작업 폴더 '%s'에 로컬 수정 사항이 있습니다. 버리려면 '-f'를 사용하"
 "십시오"
 
-#: builtin/submodule--helper.c:966
+#: builtin/submodule--helper.c:976
 #, c-format
 msgid "Cleared directory '%s'\n"
 msgstr "'%s' 디렉터리를 지웁니다\n"
 
-#: builtin/submodule--helper.c:968
+#: builtin/submodule--helper.c:978
 #, c-format
 msgid "Could not remove submodule work tree '%s'\n"
 msgstr "하위 모듈 작업 폴더  '%s'을(를) 제거할 수 없습니다\n"
 
-#: builtin/submodule--helper.c:977
+#: builtin/submodule--helper.c:987
 #, c-format
 msgid "could not create empty submodule directory %s"
 msgstr "빈 하위 모듈 디렉터리를 %s을(를) 만들 수 없습니다"
 
-#: builtin/submodule--helper.c:993
+#: builtin/submodule--helper.c:1003
 #, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "'%s' 하위 모듈이 (%s) '%s' 경로에 대해 등록되지 않았습니다\n"
 
-#: builtin/submodule--helper.c:1022
+#: builtin/submodule--helper.c:1032
 msgid "Remove submodule working trees even if they contain local changes"
 msgstr "로컬 변경 사항이 있어도 하위 모듈 작업 폴더를 제거합니다"
 
-#: builtin/submodule--helper.c:1023
+#: builtin/submodule--helper.c:1033
 msgid "Unregister all submodules"
 msgstr "모든 하위 모듈을 목록에서 제거합니다"
 
-#: builtin/submodule--helper.c:1028
+#: builtin/submodule--helper.c:1038
 msgid ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
 msgstr ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<경로>...]]"
 
-#: builtin/submodule--helper.c:1042
+#: builtin/submodule--helper.c:1052
 msgid "Use '--all' if you really want to deinitialize all submodules"
 msgstr "정말로 모든 하위 모듈 초기화를 해제하려면 '--all'을 사용하십시오"
 
-#: builtin/submodule--helper.c:1133 builtin/submodule--helper.c:1136
+#: builtin/submodule--helper.c:1145 builtin/submodule--helper.c:1148
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
 msgstr "'%s' 하위 모듈에 보조 오브젝트를 추가할 수 없습니다: %s"
 
-#: builtin/submodule--helper.c:1172
+#: builtin/submodule--helper.c:1184
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
 msgstr "submodule.alternateErrorStrategy에 대한 값이('%s') 알 수 없는 값입니다"
 
-#: builtin/submodule--helper.c:1179
+#: builtin/submodule--helper.c:1191
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
 msgstr "submodule.alternateLocation에 대한 값이('%s') 알 수 없는 값입니다"
 
-#: builtin/submodule--helper.c:1201
+#: builtin/submodule--helper.c:1214
 msgid "where the new submodule will be cloned to"
 msgstr "새 하위 모듈을 복제할 대상 위치"
 
-#: builtin/submodule--helper.c:1204
+#: builtin/submodule--helper.c:1217
 msgid "name of the new submodule"
 msgstr "새 하위 모듈 이름"
 
-#: builtin/submodule--helper.c:1207
+#: builtin/submodule--helper.c:1220
 msgid "url where to clone the submodule from"
 msgstr "하위 모듈을 복제해 올 URL"
 
-#: builtin/submodule--helper.c:1213
+#: builtin/submodule--helper.c:1228
 msgid "depth for shallow clones"
 msgstr "얕은 복제에 사용할 깊이"
 
-#: builtin/submodule--helper.c:1216 builtin/submodule--helper.c:1587
+#: builtin/submodule--helper.c:1231 builtin/submodule--helper.c:1606
 msgid "force cloning progress"
 msgstr "복제 진행 상황을 항상 표시합니다"
 
-#: builtin/submodule--helper.c:1221
+#: builtin/submodule--helper.c:1236
 msgid ""
 "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
 "<repository>] [--name <name>] [--depth <depth>] --url <url> --path <path>"
@@ -13735,82 +14265,82 @@ msgstr ""
 "git submodule--helper clone [--prefix=<경로>] [--quiet] [--reference <저장소"
 ">] [--name <이름>] [--depth <깊이>] --url <url> --path <경로>"
 
-#: builtin/submodule--helper.c:1252
+#: builtin/submodule--helper.c:1267
 #, c-format
 msgid "clone of '%s' into submodule path '%s' failed"
 msgstr "'%s'에서 하위 모듈 경로 '%s'에 복제하는데 실패했습니다"
 
-#: builtin/submodule--helper.c:1267
+#: builtin/submodule--helper.c:1281
 #, c-format
 msgid "could not get submodule directory for '%s'"
 msgstr "'%s'에 대한 하위 모듈 디렉터리를 가져올 수 없습니다"
 
-#: builtin/submodule--helper.c:1332
+#: builtin/submodule--helper.c:1347
 #, c-format
 msgid "Submodule path '%s' not initialized"
 msgstr "'%s' 하위 모듈 경로가 초기화되지 않았습니다"
 
-#: builtin/submodule--helper.c:1336
+#: builtin/submodule--helper.c:1351
 msgid "Maybe you want to use 'update --init'?"
 msgstr "'update --init'을 하려고 한 것 아니었습니까?"
 
-#: builtin/submodule--helper.c:1365
+#: builtin/submodule--helper.c:1380
 #, c-format
 msgid "Skipping unmerged submodule %s"
 msgstr "병합하지 하위 모듈 %s 건너뜀"
 
-#: builtin/submodule--helper.c:1394
+#: builtin/submodule--helper.c:1409
 #, c-format
 msgid "Skipping submodule '%s'"
 msgstr "하위 모듈 '%s' 건너뜀"
 
-#: builtin/submodule--helper.c:1527
+#: builtin/submodule--helper.c:1544
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
 msgstr "'%s' 복제하는데 실패했습니다. 재시도 예정"
 
-#: builtin/submodule--helper.c:1538
+#: builtin/submodule--helper.c:1555
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
 msgstr "두번째 '%s' 복제하는데 실패했습니다. 중지합니다"
 
-#: builtin/submodule--helper.c:1568 builtin/submodule--helper.c:1788
+#: builtin/submodule--helper.c:1585 builtin/submodule--helper.c:1808
 msgid "path into the working tree"
 msgstr "작업 폴더로 가는 경로"
 
-#: builtin/submodule--helper.c:1571
+#: builtin/submodule--helper.c:1588
 msgid "path into the working tree, across nested submodule boundaries"
 msgstr "작업 폴더로 가는 경로, 내장된 하위 모듈의 경계 통과"
 
-#: builtin/submodule--helper.c:1575
+#: builtin/submodule--helper.c:1592
 msgid "rebase, merge, checkout or none"
 msgstr "rebase, merge, checkout 또는 none"
 
-#: builtin/submodule--helper.c:1579
+#: builtin/submodule--helper.c:1598
 msgid "Create a shallow clone truncated to the specified number of revisions"
 msgstr "지정한 개수의 리비전에서 잘린 얕은 복제를 만듭니다"
 
-#: builtin/submodule--helper.c:1582
+#: builtin/submodule--helper.c:1601
 msgid "parallel jobs"
 msgstr "병렬 작업 개수"
 
-#: builtin/submodule--helper.c:1584
+#: builtin/submodule--helper.c:1603
 msgid "whether the initial clone should follow the shallow recommendation"
 msgstr "최초 복제가 얕은 복제 추천을 따를지 여부"
 
-#: builtin/submodule--helper.c:1585
+#: builtin/submodule--helper.c:1604
 msgid "don't print cloning progress"
 msgstr "복제 과정을 표시하지 않습니다"
 
-#: builtin/submodule--helper.c:1592
+#: builtin/submodule--helper.c:1611
 msgid "git submodule--helper update_clone [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper update_clone [--prefix=<경로>] [<경로>...]"
 
-#: builtin/submodule--helper.c:1605
+#: builtin/submodule--helper.c:1624
 msgid "bad value for update parameter"
 msgstr "파라미터 업데이트에 값이 잘못되었습니다"
 
-#: builtin/submodule--helper.c:1673
+#: builtin/submodule--helper.c:1692
 #, c-format
 msgid ""
 "Submodule (%s) branch configured to inherit branch from superproject, but "
@@ -13819,20 +14349,20 @@ msgstr ""
 "하위 모듈 (%s) 브랜치가 상위 프로젝트 브랜치를 이어받도록 설정되었지만, 상위 "
 "프로젝트에 브랜치가 없습니다"
 
-#: builtin/submodule--helper.c:1789
+#: builtin/submodule--helper.c:1809
 msgid "recurse into submodules"
 msgstr "하위 모듈에 재귀적으로 적용"
 
-#: builtin/submodule--helper.c:1795
+#: builtin/submodule--helper.c:1815
 msgid "git submodule--helper embed-git-dir [<path>...]"
 msgstr "git submodule--helper embed-git-dir [<경로>...]"
 
-#: builtin/submodule--helper.c:1857
+#: builtin/submodule--helper.c:1901
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s에서 --super-prefix 옵션을 지원하지 않습니다"
 
-#: builtin/submodule--helper.c:1863
+#: builtin/submodule--helper.c:1907
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "'%s'은(는) 올바른 submodule--helper 하위 명령이 아닙니다"
@@ -13901,7 +14431,7 @@ msgstr "'%s' 태그가 없습니다."
 msgid "Deleted tag '%s' (was %s)\n"
 msgstr "'%s' 태그 삭제함 (과거 %s)\n"
 
-#: builtin/tag.c:131
+#: builtin/tag.c:132
 #, c-format
 msgid ""
 "\n"
@@ -13914,7 +14444,7 @@ msgstr ""
 "  %s\n"
 "'%c' 문자로 시작하는 줄은 무시됩니다.\n"
 
-#: builtin/tag.c:135
+#: builtin/tag.c:136
 #, c-format
 msgid ""
 "\n"
@@ -13928,146 +14458,146 @@ msgstr ""
 "  %s\n"
 "'%c' 문자로 시작하는 줄은 유지됩니다. 제거하려면 직접 지워야 합니다.\n"
 
-#: builtin/tag.c:189
+#: builtin/tag.c:190
 msgid "unable to sign the tag"
 msgstr "태그에 서명할 수 없습니다"
 
-#: builtin/tag.c:191
+#: builtin/tag.c:192
 msgid "unable to write tag file"
 msgstr "태그 파일을 쓸 수 없습니다"
 
-#: builtin/tag.c:216
+#: builtin/tag.c:217
 msgid "bad object type."
 msgstr "잘못된 오브젝트 종류."
 
-#: builtin/tag.c:265
+#: builtin/tag.c:266
 msgid "no tag message?"
 msgstr "태그 메시지 없음?"
 
-#: builtin/tag.c:272
+#: builtin/tag.c:273
 #, c-format
 msgid "The tag message has been left in %s\n"
 msgstr "태그 메시지가 %s 파일에 남아 있습니다\n"
 
-#: builtin/tag.c:381
+#: builtin/tag.c:382
 msgid "list tag names"
 msgstr "태그 이름 목록을 표시합니다"
 
-#: builtin/tag.c:383
+#: builtin/tag.c:384
 msgid "print <n> lines of each tag message"
 msgstr "각 태그 메시지의 <n>줄을 표시합니다"
 
-#: builtin/tag.c:385
+#: builtin/tag.c:386
 msgid "delete tags"
 msgstr "태그를 삭제합니다"
 
-#: builtin/tag.c:386
+#: builtin/tag.c:387
 msgid "verify tags"
 msgstr "태그를 검증합니다"
 
-#: builtin/tag.c:388
+#: builtin/tag.c:389
 msgid "Tag creation options"
 msgstr "태그 만들기 옵션"
 
-#: builtin/tag.c:390
+#: builtin/tag.c:391
 msgid "annotated tag, needs a message"
 msgstr "주석 달린 태그, 메시지가 필요합니다"
 
-#: builtin/tag.c:392
+#: builtin/tag.c:393
 msgid "tag message"
 msgstr "태그 메시지"
 
-#: builtin/tag.c:394
+#: builtin/tag.c:395
 msgid "force edit of tag message"
 msgstr "강제로 태그 메시지를 편집합니다"
 
-#: builtin/tag.c:395
+#: builtin/tag.c:396
 msgid "annotated and GPG-signed tag"
 msgstr "주석 달리고 GPG 서명한 태그"
 
-#: builtin/tag.c:399
+#: builtin/tag.c:400
 msgid "use another key to sign the tag"
 msgstr "태그를 서명하는데 지정한 키를 사용합니다"
 
-#: builtin/tag.c:400
+#: builtin/tag.c:401
 msgid "replace the tag if exists"
 msgstr "태그가 있으면 바꿉니다"
 
-#: builtin/tag.c:401 builtin/update-ref.c:368
+#: builtin/tag.c:402 builtin/update-ref.c:368
 msgid "create a reflog"
 msgstr "reflog를 만듭니다"
 
-#: builtin/tag.c:403
+#: builtin/tag.c:404
 msgid "Tag listing options"
 msgstr "태그 목록 보기 옵션"
 
-#: builtin/tag.c:404
+#: builtin/tag.c:405
 msgid "show tag list in columns"
 msgstr "태그 목록을 여러 열로 표시합니다"
 
-#: builtin/tag.c:405 builtin/tag.c:407
+#: builtin/tag.c:406 builtin/tag.c:408
 msgid "print only tags that contain the commit"
 msgstr "해당 커밋이 들어 있는 태그만 표시합니다"
 
-#: builtin/tag.c:406 builtin/tag.c:408
+#: builtin/tag.c:407 builtin/tag.c:409
 msgid "print only tags that don't contain the commit"
 msgstr "해당 커밋이 들어 있지 않은 태그만 표시합니다"
 
-#: builtin/tag.c:409
+#: builtin/tag.c:410
 msgid "print only tags that are merged"
 msgstr "병합된 태그만 표시합니다"
 
-#: builtin/tag.c:410
+#: builtin/tag.c:411
 msgid "print only tags that are not merged"
 msgstr "병합되지 않은 태그만 표시합니다"
 
-#: builtin/tag.c:415
+#: builtin/tag.c:416
 msgid "print only tags of the object"
 msgstr "해당 오브젝트의 태그만 표시합니다"
 
-#: builtin/tag.c:459
+#: builtin/tag.c:460
 msgid "--column and -n are incompatible"
 msgstr "--column 및 -n 옵션은 호환되지 않습니다"
 
-#: builtin/tag.c:481
+#: builtin/tag.c:482
 msgid "-n option is only allowed in list mode"
 msgstr "-n 옵션은 리스트 모드에서만 허용합니다"
 
-#: builtin/tag.c:483
+#: builtin/tag.c:484
 msgid "--contains option is only allowed in list mode"
 msgstr "--contains 옵션은 리스트 모드에서만 허용합니다"
 
-#: builtin/tag.c:485
+#: builtin/tag.c:486
 msgid "--no-contains option is only allowed in list mode"
 msgstr "--no-contains 옵션은 리스트 모드에서만 허용합니다"
 
-#: builtin/tag.c:487
+#: builtin/tag.c:488
 msgid "--points-at option is only allowed in list mode"
 msgstr "--points-at 옵션은 리스트 모드에서만 허용합니다"
 
-#: builtin/tag.c:489
+#: builtin/tag.c:490
 msgid "--merged and --no-merged options are only allowed in list mode"
 msgstr "--merged 및 --no-merged 옵션은 리스트 모드에서만 허용합니다"
 
-#: builtin/tag.c:500
+#: builtin/tag.c:501
 msgid "only one -F or -m option is allowed."
 msgstr "하나의 -F 또는 -m 옵션만 쓸 수 있습니다."
 
-#: builtin/tag.c:519
+#: builtin/tag.c:520
 msgid "too many params"
 msgstr "파라미터가 너무 많습니다"
 
-#: builtin/tag.c:525
+#: builtin/tag.c:526
 #, c-format
 msgid "'%s' is not a valid tag name."
 msgstr "'%s'은(는) 올바른 태그 이름이 아닙니다."
 
-#: builtin/tag.c:530
+#: builtin/tag.c:531
 #, c-format
 msgid "tag '%s' already exists"
 msgstr "태그 '%s'이(가) 이미 있습니다"
 
-#: builtin/tag.c:561
+#: builtin/tag.c:562
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
 msgstr "태그 '%s' 업데이트 (과거 %s)\n"
@@ -14134,145 +14664,145 @@ msgstr "디렉터리를 삭제한 후에 디렉터리 정보가 바뀌지 않았
 msgid " OK"
 msgstr " 오케이"
 
-#: builtin/update-index.c:579
+#: builtin/update-index.c:589
 msgid "git update-index [<options>] [--] [<file>...]"
 msgstr "git update-index [<옵션>] [--] [<파일>...]"
 
-#: builtin/update-index.c:936
+#: builtin/update-index.c:946
 msgid "continue refresh even when index needs update"
 msgstr "인덱스에 업데이트가 필요하더라도 새로 고침을 계속합니다"
 
-#: builtin/update-index.c:939
+#: builtin/update-index.c:949
 msgid "refresh: ignore submodules"
 msgstr "새로 고침: 하위 모듈 무시"
 
-#: builtin/update-index.c:942
+#: builtin/update-index.c:952
 msgid "do not ignore new files"
 msgstr "새 파일을 무시할 수 않습니다"
 
-#: builtin/update-index.c:944
+#: builtin/update-index.c:954
 msgid "let files replace directories and vice-versa"
 msgstr "디렉터리를 파일로, 또는 그 반대로 바꿀 수 있게 허용합니다"
 
-#: builtin/update-index.c:946
+#: builtin/update-index.c:956
 msgid "notice files missing from worktree"
 msgstr "작업폴더에서 알림 파일이 없습니다"
 
-#: builtin/update-index.c:948
+#: builtin/update-index.c:958
 msgid "refresh even if index contains unmerged entries"
 msgstr "인덱스에 병합하지 않은 항목이 있어도 새로 고칩니다"
 
-#: builtin/update-index.c:951
+#: builtin/update-index.c:961
 msgid "refresh stat information"
 msgstr "파일 정보를 새로 고칩니다"
 
-#: builtin/update-index.c:955
+#: builtin/update-index.c:965
 msgid "like --refresh, but ignore assume-unchanged setting"
 msgstr "--refresh와 동일하지만, assume-unchanged 설정을 무시합니다"
 
-#: builtin/update-index.c:959
+#: builtin/update-index.c:969
 msgid "<mode>,<object>,<path>"
 msgstr "<모드>,<오브젝트>,<경로>"
 
-#: builtin/update-index.c:960
+#: builtin/update-index.c:970
 msgid "add the specified entry to the index"
 msgstr "지정한 항목을 인덱스에 추가합니다"
 
-#: builtin/update-index.c:969
+#: builtin/update-index.c:979
 msgid "mark files as \"not changing\""
 msgstr "파일을 \"바꾸지 않음\"으로 표시합니다"
 
-#: builtin/update-index.c:972
+#: builtin/update-index.c:982
 msgid "clear assumed-unchanged bit"
 msgstr "바꾸지 않음으로 가정 (assumed-unchanged) 비트를 지웁니다"
 
-#: builtin/update-index.c:975
+#: builtin/update-index.c:985
 msgid "mark files as \"index-only\""
 msgstr "파일을 인덱스 전용으로 (\"index-only\") 표시합니다"
 
-#: builtin/update-index.c:978
+#: builtin/update-index.c:988
 msgid "clear skip-worktree bit"
 msgstr "작업폴더 건너뛰기 (skip-worktree) 비트를 지웁니다"
 
-#: builtin/update-index.c:981
+#: builtin/update-index.c:991
 msgid "add to index only; do not add content to object database"
 msgstr ""
 "인덱스에만 추가합니다. 내용을 오브젝트 데이터베이스에 추가하지 않습니다"
 
-#: builtin/update-index.c:983
+#: builtin/update-index.c:993
 msgid "remove named paths even if present in worktree"
 msgstr "작업 폴더에 있어도 해당 경로를 제거합니다"
 
-#: builtin/update-index.c:985
+#: builtin/update-index.c:995
 msgid "with --stdin: input lines are terminated by null bytes"
 msgstr "--stdin과 같이 사용: 입력 줄은 NUL 바이트로 끝납니다"
 
-#: builtin/update-index.c:987
+#: builtin/update-index.c:997
 msgid "read list of paths to be updated from standard input"
 msgstr "표준 입력에서 업데이트할 경로의 목록을 읽습니다"
 
-#: builtin/update-index.c:991
+#: builtin/update-index.c:1001
 msgid "add entries from standard input to the index"
 msgstr "표준 입력에서 읽은 항목을 인덱스에 추가합니다"
 
-#: builtin/update-index.c:995
+#: builtin/update-index.c:1005
 msgid "repopulate stages #2 and #3 for the listed paths"
 msgstr "경로 목록에 대해 #2 및 #3 스테이징을 다시 합니다"
 
-#: builtin/update-index.c:999
+#: builtin/update-index.c:1009
 msgid "only update entries that differ from HEAD"
 msgstr "HEAD와 다른 항목만 업데이트합니다"
 
-#: builtin/update-index.c:1003
+#: builtin/update-index.c:1013
 msgid "ignore files missing from worktree"
 msgstr "작업 폴더에 없는 파일을 무시합니다"
 
-#: builtin/update-index.c:1006
+#: builtin/update-index.c:1016
 msgid "report actions to standard output"
 msgstr "표준 출력에 동작을 알립니다"
 
-#: builtin/update-index.c:1008
+#: builtin/update-index.c:1018
 msgid "(for porcelains) forget saved unresolved conflicts"
 msgstr "저장한 해결되지 않은 충돌을 무시합니다 (사용자용 명령 용도)"
 
-#: builtin/update-index.c:1012
+#: builtin/update-index.c:1022
 msgid "write index in this format"
 msgstr "인덱스를 이 형식으로 씁니다"
 
-#: builtin/update-index.c:1014
+#: builtin/update-index.c:1024
 msgid "enable or disable split index"
 msgstr "스플릿 인덱스를 켜거나 끕니다"
 
-#: builtin/update-index.c:1016
+#: builtin/update-index.c:1026
 msgid "enable/disable untracked cache"
 msgstr "추적하지 않는 캐시 사용을 켜거나 끕니다"
 
-#: builtin/update-index.c:1018
+#: builtin/update-index.c:1028
 msgid "test if the filesystem supports untracked cache"
 msgstr "파일 시스템이 추적하지 않는 캐시를 지원하는지 검사합니다"
 
-#: builtin/update-index.c:1020
+#: builtin/update-index.c:1030
 msgid "enable untracked cache without testing the filesystem"
 msgstr "파일 시스템 시험 없이 추적하지 않는 캐시를 사용합니다"
 
-#: builtin/update-index.c:1022
+#: builtin/update-index.c:1032
 msgid "write out the index even if is not flagged as changed"
 msgstr "변경된 것으로 표시되지 않은 경우에도 인덱스에 씁니다"
 
-#: builtin/update-index.c:1024
+#: builtin/update-index.c:1034
 msgid "enable or disable file system monitor"
 msgstr "파일 시스템 모니터를 켜거나 끕니다"
 
-#: builtin/update-index.c:1026
+#: builtin/update-index.c:1036
 msgid "mark files as fsmonitor valid"
 msgstr ""
 "파일 시스템 모니터링 기능이 변경사항을 확인하는 비트를 파일에 표시합니다"
 
-#: builtin/update-index.c:1029
+#: builtin/update-index.c:1039
 msgid "clear fsmonitor valid bit"
 msgstr "파일 시스템 모니터링 기능이 변경사항을 확인하는 비트를 지웁니다"
 
-#: builtin/update-index.c:1127
+#: builtin/update-index.c:1138
 msgid ""
 "core.splitIndex is set to false; remove or change it, if you really want to "
 "enable split index"
@@ -14280,7 +14810,7 @@ msgstr ""
 "core.splitIndex 값이 거짓입니다. 정말로 스플릿 인덱스를 사용하려면 이 값을 제"
 "거하거나 바꾸십시오."
 
-#: builtin/update-index.c:1136
+#: builtin/update-index.c:1147
 msgid ""
 "core.splitIndex is set to true; remove or change it, if you really want to "
 "disable split index"
@@ -14288,7 +14818,7 @@ msgstr ""
 "core.splitIndex 값이 참입니다. 정말로 스플릿 인덱스를 사용하지 않으려면 이 값"
 "을 제거하거나 바꾸십시오."
 
-#: builtin/update-index.c:1147
+#: builtin/update-index.c:1158
 msgid ""
 "core.untrackedCache is set to true; remove or change it, if you really want "
 "to disable the untracked cache"
@@ -14296,11 +14826,11 @@ msgstr ""
 "core.untrackedCache 값이 참입니다. 정말로 추적하지 않는 캐시를 사용하지 않으"
 "려면 이 값을 제거하거나 바꾸십시오."
 
-#: builtin/update-index.c:1151
+#: builtin/update-index.c:1162
 msgid "Untracked cache disabled"
 msgstr "추적되지 않는 파일 캐시를 사용하지 않습니다"
 
-#: builtin/update-index.c:1159
+#: builtin/update-index.c:1170
 msgid ""
 "core.untrackedCache is set to false; remove or change it, if you really want "
 "to enable the untracked cache"
@@ -14308,29 +14838,29 @@ msgstr ""
 "core.untrackedCache 값이 거짓입니다. 정말로 추적하지 않는 캐시를 사용하려면 "
 "이 값을 제거하거나 바꾸십시오."
 
-#: builtin/update-index.c:1163
+#: builtin/update-index.c:1174
 #, c-format
 msgid "Untracked cache enabled for '%s'"
 msgstr "'%s'에 대해 추적되지 않는 캐시를 사용하지 않습니다"
 
-#: builtin/update-index.c:1171
+#: builtin/update-index.c:1182
 msgid "core.fsmonitor is unset; set it if you really want to enable fsmonitor"
 msgstr ""
 "core.fsmonitor가 설정되지 않았습니다. 정말로 파일 시스템 모니터를 사용하려면 "
 "설정하십시오"
 
-#: builtin/update-index.c:1175
+#: builtin/update-index.c:1186
 msgid "fsmonitor enabled"
 msgstr "파일 시스템 모니터가 켜졌습니다"
 
-#: builtin/update-index.c:1178
+#: builtin/update-index.c:1189
 msgid ""
 "core.fsmonitor is set; remove it if you really want to disable fsmonitor"
 msgstr ""
 "core.fsmonitor가 설정되어 있습니다. 정말로 파일 시스템 모니터를 사용하지 않으"
 "려면 설정을 제거하십시오"
 
-#: builtin/update-index.c:1182
+#: builtin/update-index.c:1193
 msgid "fsmonitor disabled"
 msgstr "파일 시스템 모니터가 꺼졌습니다"
 
@@ -14370,9 +14900,26 @@ msgstr "git update-server-info [--force]"
 msgid "update the info files from scratch"
 msgstr "바닥부터 정보 파일을 업데이트합니다"
 
-#: builtin/verify-commit.c:18
-msgid "git verify-commit [-v | --verbose] <commit>..."
-msgstr "git verify-commit [-v | --verbose] <커밋>..."
+#: builtin/upload-pack.c:11
+msgid "git upload-pack [<options>] <dir>"
+msgstr "git upload-pack [<옵션>] <디렉터리>"
+
+#: builtin/upload-pack.c:25
+msgid "exit immediately after initial ref advertisement"
+msgstr "최초 레퍼런스 알림 뒤에 즉시 끝납니다"
+
+#: builtin/upload-pack.c:27
+msgid "do not try <directory>/.git/ if <directory> is no Git directory"
+msgstr ""
+"<디렉터리>가 깃 디렉터리가 아니면 <디렉터리>/.git/ 폴더를 시도하지 않습니다."
+
+#: builtin/upload-pack.c:29
+msgid "interrupt transfer after <n> seconds of inactivity"
+msgstr "<n>초 동안 반응이 없으면 전송을 중지합니다"
+
+#: builtin/verify-commit.c:18
+msgid "git verify-commit [-v | --verbose] <commit>..."
+msgstr "git verify-commit [-v | --verbose] <커밋>..."
 
 #: builtin/verify-commit.c:73
 msgid "print commit contents"
@@ -14430,22 +14977,22 @@ msgstr "git worktree remove [<옵션>] <작업트리>"
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <경로>"
 
-#: builtin/worktree.c:60
+#: builtin/worktree.c:58
 #, c-format
 msgid "Removing worktrees/%s: not a valid directory"
 msgstr "worktrees/%s 제거: 올바른 디렉터리가 아닙나다"
 
-#: builtin/worktree.c:66
+#: builtin/worktree.c:64
 #, c-format
 msgid "Removing worktrees/%s: gitdir file does not exist"
 msgstr "worktrees/%s 제거: gitdir 파일이 없습니다"
 
-#: builtin/worktree.c:71 builtin/worktree.c:80
+#: builtin/worktree.c:69 builtin/worktree.c:78
 #, c-format
 msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
 msgstr "worktrees/%s 제거: gitdir 파일을 읽을 수 없습니다 (%s)"
 
-#: builtin/worktree.c:90
+#: builtin/worktree.c:88
 #, c-format
 msgid ""
 "Removing worktrees/%s: short read (expected %<PRIuMAX> bytes, read "
@@ -14454,176 +15001,191 @@ msgstr ""
 "작업 트리 제거/%s: 부족하게 읽음 (%<PRIuMAX> 바이트 예상, %<PRIuMAX> 바이트 "
 "읽음)"
 
-#: builtin/worktree.c:98
+#: builtin/worktree.c:96
 #, c-format
 msgid "Removing worktrees/%s: invalid gitdir file"
 msgstr "worktrees/%s 제거: gitdir 파일이 올바르지 않습니다"
 
-#: builtin/worktree.c:114
+#: builtin/worktree.c:105
 #, c-format
 msgid "Removing worktrees/%s: gitdir file points to non-existent location"
 msgstr "worktrees/%s 제거: gitdir 파일이 없는 위치를 가리킵니다"
 
-#: builtin/worktree.c:161
+#: builtin/worktree.c:152
 msgid "report pruned working trees"
 msgstr "잘라낸 작업 폴더를 알립니다"
 
-#: builtin/worktree.c:163
+#: builtin/worktree.c:154
 msgid "expire working trees older than <time>"
 msgstr "<시각>보다 오래 된 작업 폴더를 만료합니다"
 
-#: builtin/worktree.c:238
+#: builtin/worktree.c:229
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s'이(가) 이미 있습니다"
 
-#: builtin/worktree.c:269
+#: builtin/worktree.c:260
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "'%s'의 디렉터리를 만들 수 없습니다"
 
-#: builtin/worktree.c:308
+#: builtin/worktree.c:373 builtin/worktree.c:379
+#, c-format
+msgid "Preparing worktree (new branch '%s')"
+msgstr "작업 트리 준비 중 (새 브랜치 '%s')"
+
+#: builtin/worktree.c:375
 #, c-format
-msgid "Preparing %s (identifier %s)"
-msgstr "%s 준비 중 (ID %s)"
+msgid "Preparing worktree (resetting branch '%s'; was at %s)"
+msgstr "작업 트리 준비 중 ('%s' 브랜치 재설정 중. 원래 위치 %s)"
 
-#: builtin/worktree.c:385
+#: builtin/worktree.c:384
+#, c-format
+msgid "Preparing worktree (checking out '%s')"
+msgstr "작업 트리 준비 중 ('%s' 가져오는 중)"
+
+#: builtin/worktree.c:390
+#, c-format
+msgid "Preparing worktree (detached HEAD %s)"
+msgstr "작업 트리 준비 중 (분리된 HEAD %s)"
+
+#: builtin/worktree.c:431
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr "다른 작업 폴더에서 체크아웃했더라도 <브랜치>를 체크아웃합니다"
 
-#: builtin/worktree.c:388
+#: builtin/worktree.c:434
 msgid "create a new branch"
 msgstr "새 브랜치를 만듭니다"
 
-#: builtin/worktree.c:390
+#: builtin/worktree.c:436
 msgid "create or reset a branch"
 msgstr "브랜치를 만들거나 리셋합니다"
 
-#: builtin/worktree.c:392
+#: builtin/worktree.c:438
 msgid "populate the new working tree"
 msgstr "새 작업 폴더를 만듭니다"
 
-#: builtin/worktree.c:393
+#: builtin/worktree.c:439
 msgid "keep the new working tree locked"
 msgstr "새 작업 폴더를 잠궈 둡니다"
 
-#: builtin/worktree.c:395
+#: builtin/worktree.c:441
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "추적 모드를 설정합니다 (git-branch(1) 참고)"
 
-#: builtin/worktree.c:398
+#: builtin/worktree.c:444
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr "새 브랜치 이름과 리모트 추적 브랜치를 일치 시킵니다"
 
-#: builtin/worktree.c:406
+#: builtin/worktree.c:452
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b, -B, --detach 옵션 중 하나만 쓸 수 있습니다"
 
-#: builtin/worktree.c:471
+#: builtin/worktree.c:511
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr "--[no-]track 옵션은 새로운 브런치가 생성되었을 경우에만 쓸 수 있습니다"
 
-#: builtin/worktree.c:571
+#: builtin/worktree.c:611
 msgid "reason for locking"
 msgstr "잠그는 이유"
 
-#: builtin/worktree.c:583 builtin/worktree.c:616 builtin/worktree.c:670
-#: builtin/worktree.c:809
+#: builtin/worktree.c:623 builtin/worktree.c:656 builtin/worktree.c:710
+#: builtin/worktree.c:850
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s'은(는) 작업 폴더가 아닙니다"
 
-#: builtin/worktree.c:585 builtin/worktree.c:618
+#: builtin/worktree.c:625 builtin/worktree.c:658
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "메인 작업 폴더를 잠그거나 잠금 해제할 수 없습니다"
 
-#: builtin/worktree.c:590
+#: builtin/worktree.c:630
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s'은(는) 이미 잠겼습니다. 이유: %s"
 
-#: builtin/worktree.c:592
+#: builtin/worktree.c:632
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s'은(는) 이미 잠겼습니다"
 
-#: builtin/worktree.c:620
+#: builtin/worktree.c:660
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s'은(는) 잠기지 않았습니다"
 
-#: builtin/worktree.c:645
+#: builtin/worktree.c:685
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr "하위 모듈이 포함된 작업 폴더는 옮기거나 제거할 수 없습니다"
 
-#: builtin/worktree.c:672 builtin/worktree.c:811
+#: builtin/worktree.c:712 builtin/worktree.c:852
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s'은(는) 메인 작업 폴더입니다"
 
-#: builtin/worktree.c:677
+#: builtin/worktree.c:717
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "'%s'에서 대상 이름을 찾을 수 없습니다"
 
-#: builtin/worktree.c:683
+#: builtin/worktree.c:723
 #, c-format
 msgid "target '%s' already exists"
 msgstr "타게 '%s'이(가) 이미 있습니다"
 
-#: builtin/worktree.c:690
+#: builtin/worktree.c:730
 #, c-format
 msgid "cannot move a locked working tree, lock reason: %s"
 msgstr "잠긴 작업 폴더를 옮길 수 없습니다. 잠긴 이유: %s"
 
-#: builtin/worktree.c:692
+#: builtin/worktree.c:732
 msgid "cannot move a locked working tree"
 msgstr "잠긴 작업 폴더를 옮길 수 없습니다"
 
-#: builtin/worktree.c:695
+#: builtin/worktree.c:735
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "유효성 검사에 실패하여, 작업 폴더를 옮길 수 없습니다: %s"
 
-#: builtin/worktree.c:700
+#: builtin/worktree.c:740
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "'%s'을(를) '%s'(으)로 옮기는데 실패했습니다"
 
-#: builtin/worktree.c:748
+#: builtin/worktree.c:788
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "'%s'에서 'git status'를 실행하는데 실패했습니다"
 
-#: builtin/worktree.c:752
+#: builtin/worktree.c:792
 #, c-format
 msgid "'%s' is dirty, use --force to delete it"
 msgstr "'%s'이(가) 변경 되었습니다,  삭제하려면 --force를 사용하십시오"
 
-#: builtin/worktree.c:757
+#: builtin/worktree.c:797
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr "'%s'에서 'git status'를 실행하는데 실패했습니다,  코드 %d"
 
-#: builtin/worktree.c:768 builtin/worktree.c:782
+#: builtin/worktree.c:808 builtin/worktree.c:822
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "'%s'을(를) 삭제하는데 실패했습니다"
 
-#: builtin/worktree.c:794
+#: builtin/worktree.c:834
 msgid "force removing even if the worktree is dirty"
 msgstr "작업트리에 변경사항이 있더라도 강제로 제거합니다"
 
-#: builtin/worktree.c:815
+#: builtin/worktree.c:856
 #, c-format
 msgid "cannot remove a locked working tree, lock reason: %s"
 msgstr "잠긴 작업 폴더를 제거할 수 없습니다. 잠긴 이유: %s"
 
-#: builtin/worktree.c:817
+#: builtin/worktree.c:858
 msgid "cannot remove a locked working tree"
 msgstr "잠긴 작업 폴더를 제거할 수 없습니다"
 
-#: builtin/worktree.c:820
+#: builtin/worktree.c:861
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "유효성 검사에 실패하여, 작업 폴더를 제거할 수 없습니다: %s"
@@ -14644,27 +15206,6 @@ msgstr "하위 디렉터리 <접두어>에 대해 트리 오브젝트를 씁니
 msgid "only useful for debugging"
 msgstr "디버깅 용도로만 사용"
 
-#: upload-pack.c:27
-msgid "git upload-pack [<options>] <dir>"
-msgstr "git upload-pack [<옵션>] <디렉터리>"
-
-#: upload-pack.c:1070
-msgid "quit after a single request/response exchange"
-msgstr "하나의 요청/응답 교환 뒤에 끝납니다"
-
-#: upload-pack.c:1072
-msgid "exit immediately after initial ref advertisement"
-msgstr "최초 레퍼런스 알림 뒤에 즉시 끝납니다"
-
-#: upload-pack.c:1074
-msgid "do not try <directory>/.git/ if <directory> is no Git directory"
-msgstr ""
-"<디렉터리>가 깃 디렉터리가 아니면 <디렉터리>/.git/ 폴더를 시도하지 않습니다."
-
-#: upload-pack.c:1076
-msgid "interrupt transfer after <n> seconds of inactivity"
-msgstr "<n>초 동안 반응이 없으면 전송을 중지합니다"
-
 #: credential-cache--daemon.c:222
 #, c-format
 msgid ""
@@ -14682,21 +15223,23 @@ msgstr ""
 msgid "print debugging messages to stderr"
 msgstr "디버깅 메시지를 표준오류로 출력합니다"
 
-#: git.c:8
+#: git.c:27
 msgid ""
 "git [--version] [--help] [-C <path>] [-c <name>=<value>]\n"
 "           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
-"           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]\n"
+"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
+"bare]\n"
 "           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
 "           <command> [<args>]"
 msgstr ""
 "git [--version] [--help] [-C <경로>] [-c <이름>=<값>]\n"
 "           [--exec-path[=<경로>]] [--html-path] [--man-path] [--info-path]\n"
-"           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]\n"
+"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
+"bare]\n"
 "           [--git-dir=<경로>] [--work-tree=<경로>] [--namespace=<이름>]\n"
 "           <명령> [<인자>]"
 
-#: git.c:15
+#: git.c:34
 msgid ""
 "'git help -a' and 'git help -g' list available subcommands and some\n"
 "concept guides. See 'git help <command>' or 'git help <concept>'\n"
@@ -14706,66 +15249,66 @@ msgstr ""
 "목록을 볼 수 있습니다. 특정 하위 명령어나 개념에 대해 읽어 보려면 'git help\n"
 "<명령>' 또는 'git help <개념>' 명령을 실행하십시오."
 
-#: git.c:95
+#: git.c:173
 #, c-format
 msgid "no directory given for --git-dir\n"
 msgstr "--git-dir에 대한 주어진 디렉터리가 없습니다\n"
 
-#: git.c:109
+#: git.c:187
 #, c-format
 msgid "no namespace given for --namespace\n"
 msgstr "--namespace에 대한 주어진 네임 스페이스가 없습니다\n"
 
-#: git.c:123
+#: git.c:201
 #, c-format
 msgid "no directory given for --work-tree\n"
 msgstr "--work-tree에 대한 주어진 디렉터리가 없습니다\n"
 
-#: git.c:137
+#: git.c:215
 #, c-format
 msgid "no prefix given for --super-prefix\n"
 msgstr "--super-prefix에 대한 접두어가 주어지지 않았습니다\n"
 
-#: git.c:159
+#: git.c:237
 #, c-format
 msgid "-c expects a configuration string\n"
 msgstr "-c는 옵션에는 설정 문자열이 와야 합니다\n"
 
-#: git.c:197
+#: git.c:275
 #, c-format
 msgid "no directory given for -C\n"
 msgstr "-C 옵션에 주어진 디렉터리가 없습니다\n"
 
-#: git.c:212
+#: git.c:300
 #, c-format
 msgid "unknown option: %s\n"
 msgstr "알 수 없는 옵션: %s\n"
 
-#: git.c:687
+#: git.c:765
 #, c-format
 msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
-msgstr "별칭 '%s'의 확장에 실패했습니다; '%s'은(는) 깃 명령이 아닙니다\n"
+msgstr "별칭 '%s'의 확장에 실패했습니다. '%s'은(는) 깃 명령이 아닙니다\n"
 
-#: git.c:699
+#: git.c:777
 #, c-format
 msgid "failed to run command '%s': %s\n"
 msgstr "'%s'을(를) 여는데 실패: %s\n"
 
-#: http.c:342
+#: http.c:348
 #, c-format
 msgid "negative value for http.postbuffer; defaulting to %d"
 msgstr "http.postbuffer이 0보다 작은 값입니다. 기본값 %d"
 
 # HTTP delegation
-#: http.c:363
+#: http.c:369
 msgid "Delegation control is not supported with cURL < 7.22.0"
 msgstr "딜리게이션 컨트롤은 cURL 7.44.0 앞 버전에서는 지원하지 않습니다"
 
-#: http.c:372
+#: http.c:378
 msgid "Public key pinning not supported with cURL < 7.44.0"
 msgstr "공개 키 고정은 cURL 7.44.0 앞 버전에서는 지원하지 않습니다"
 
-#: http.c:1857
+#: http.c:1854
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -14776,7 +15319,7 @@ msgstr ""
 "       요청: %s\n"
 " 리다이렉트: %s"
 
-#: remote-curl.c:345
+#: remote-curl.c:401
 #, c-format
 msgid "redirecting to %s"
 msgstr "%s(으)로 리다이렉트"
@@ -14789,129 +15332,655 @@ msgstr "인자"
 msgid "object filtering"
 msgstr "오브젝트 필터링"
 
-#: common-cmds.h:9
-msgid "start a working area (see also: git help tutorial)"
-msgstr "작업 공간 시작 (참고: git help tutorial)"
+#: parse-options.h:157
+msgid "expiry-date"
+msgstr "만료-시각"
 
-#: common-cmds.h:10
-msgid "work on the current change (see also: git help everyday)"
-msgstr "변경 사항에 대한 작업 (참고: git help everyday)"
+#: parse-options.h:172
+msgid "no-op (backward compatibility)"
+msgstr "아무 동작도 하지 않음 (호환용)"
 
-#: common-cmds.h:11
-msgid "examine the history and state (see also: git help revisions)"
-msgstr "커밋 내역과 상태 보기 (참고: git help revisions)"
+#: parse-options.h:251
+msgid "be more verbose"
+msgstr "더 자세히 표시합니다"
 
-#: common-cmds.h:12
-msgid "grow, mark and tweak your common history"
-msgstr "커밋 내역을 키우고, 표시하고, 조작하기"
+#: parse-options.h:253
+msgid "be more quiet"
+msgstr "더 간략히 표시합니다"
 
-#: common-cmds.h:13
-msgid "collaborate (see also: git help workflows)"
-msgstr "협동 작업 (참고: git help workflows)"
+#: parse-options.h:259
+msgid "use <n> digits to display SHA-1s"
+msgstr "SHA-1 표시에 <n>개의 숫자를 사용합니다"
 
-#: common-cmds.h:17
+#: command-list.h:50
 msgid "Add file contents to the index"
 msgstr "파일 내용을 인덱스에 추가합니다"
 
-#: common-cmds.h:18
+#: command-list.h:51
+msgid "Apply a series of patches from a mailbox"
+msgstr "메일함에서 연속된 패치를 적용합니다"
+
+#: command-list.h:52
+msgid "Annotate file lines with commit information"
+msgstr "파일 줄마다 커밋 정보를 표시합니다"
+
+#: command-list.h:53
+msgid "Apply a patch to files and/or to the index"
+msgstr "패치를 파일 및/또는 인덱스에 적용합니다"
+
+#: command-list.h:54
+msgid "Import an Arch repository into Git"
+msgstr "arch 저장소를 깃 저장소로 가져옵니다"
+
+#: command-list.h:55
+msgid "Create an archive of files from a named tree"
+msgstr "지정한 트리에 들어 있는 파일의 아카이브를 만듭니다"
+
+#: command-list.h:56
 msgid "Use binary search to find the commit that introduced a bug"
 msgstr "이진 탐색으로 버그를 만들어낸 커밋을 찾습니다"
 
-#: common-cmds.h:19
+#: command-list.h:57
+msgid "Show what revision and author last modified each line of a file"
+msgstr "파일 줄마다 끝에 마지막으로 수정한 리비전과 작성자를 표시합니다"
+
+#: command-list.h:58
 msgid "List, create, or delete branches"
 msgstr "브랜치를 만들거나, 삭제하거나, 목록을 출력합니다"
 
-#: common-cmds.h:20
+#: command-list.h:59
+msgid "Move objects and refs by archive"
+msgstr "아카이브 형태로 오브젝트와 레퍼런스를 옮깁니다"
+
+#: command-list.h:60
+msgid "Provide content or type and size information for repository objects"
+msgstr "저장소 오브젝트에 대해 내용 또는 종류와 크기 정보를 표시합니다"
+
+#: command-list.h:61
+msgid "Display gitattributes information"
+msgstr "gitattributes 정보를 표시합니다"
+
+#: command-list.h:62
+msgid "Debug gitignore / exclude files"
+msgstr "gitignore / 제외할 파일을 디버깅합니다"
+
+#: command-list.h:63
+msgid "Show canonical names and email addresses of contacts"
+msgstr "연락처의 전체 이름과 메일 주소를 표시합니다"
+
+#: command-list.h:64
 msgid "Switch branches or restore working tree files"
 msgstr "브랜치를 전환하거나 작업 파일을 복구합니다"
 
-#: common-cmds.h:21
+#: command-list.h:65
+msgid "Copy files from the index to the working tree"
+msgstr "인덱스의 파일을 작업 폴더로 복사합니다"
+
+#: command-list.h:66
+msgid "Ensures that a reference name is well formed"
+msgstr "레퍼런스 이름의 형식이 올바른지 확인합니다"
+
+#: command-list.h:67
+msgid "Find commits yet to be applied to upstream"
+msgstr "업스트림에 적용해야 할 커밋을 찾습니다"
+
+#: command-list.h:68
+msgid "Apply the changes introduced by some existing commits"
+msgstr "기존 커밋으로 발생한 변경 사항을 적용합니다"
+
+#: command-list.h:69
+msgid "Graphical alternative to git-commit"
+msgstr "git-commit의 그래픽 대체 버전"
+
+#: command-list.h:70
+msgid "Remove untracked files from the working tree"
+msgstr "작업 폴더에서 추적되지 않는 파일을 제거합니다"
+
+#: command-list.h:71
 msgid "Clone a repository into a new directory"
-msgstr "저장소를 복제해 새 디렉터리로 가져 옵니다"
+msgstr "저장소를 복제해 새 디렉터리로 가져옵니다"
 
-#: common-cmds.h:22
+#: command-list.h:72
+msgid "Display data in columns"
+msgstr "데이터를 여러 열로 표시합니다"
+
+#: command-list.h:73
 msgid "Record changes to the repository"
 msgstr "바뀐 사항을 저장소에 기록합니다"
 
-#: common-cmds.h:23
+#: command-list.h:74
+msgid "Write and verify Git commit graph files"
+msgstr "깃 커밋 그래프 파일을 쓰고 확인합니다"
+
+#: command-list.h:75
+msgid "Create a new commit object"
+msgstr "새 커밋 오브젝트를 만듭니다"
+
+#: command-list.h:76
+msgid "Get and set repository or global options"
+msgstr "저장소 옵션 또는 전체 옵션을 보거나 설정합니다"
+
+#: command-list.h:77
+msgid "Count unpacked number of objects and their disk consumption"
+msgstr "묶여지지 않은 오브젝트의 개수 및 그 디스크 사용량을 측정합니다"
+
+#: command-list.h:78
+msgid "Retrieve and store user credentials"
+msgstr "사용자 비밀 정보를 가져오고 저장합니다"
+
+#: command-list.h:79
+msgid "Helper to temporarily store passwords in memory"
+msgstr "메모리에 임시로 암호 저장하는 도움 명령"
+
+#: command-list.h:80
+msgid "Helper to store credentials on disk"
+msgstr "비밀 정보를 디스크에 저장하는 도움 명령"
+
+#: command-list.h:81
+msgid "Export a single commit to a CVS checkout"
+msgstr "하나의 커밋을 CVS 체크아웃으로 내보냅니다"
+
+# * "people love to hate" 번역은 전달하기 힘들고 빠져도 내용 문제가 없으므로 생략
+#: command-list.h:82
+msgid "Salvage your data out of another SCM people love to hate"
+msgstr "다른 소스 코드 관리 시스템에서 데이터 가져오기"
+
+#: command-list.h:83
+msgid "A CVS server emulator for Git"
+msgstr "깃용 CVS 서버 에뮬레이터"
+
+#: command-list.h:84
+msgid "A really simple server for Git repositories"
+msgstr "깃 저장소에 대한 아주 간단한 서버"
+
+#: command-list.h:85
+msgid "Give an object a human readable name based on an available ref"
+msgstr "사용 가능한 레퍼런스를 기준으로 오브젝트에 읽을 수 있는 이름을 부여합니다"
+
+#: command-list.h:86
 msgid "Show changes between commits, commit and working tree, etc"
 msgstr "커밋과 커밋 사이, 커밋과 작업 내용 사이 등의 바뀐 점을 봅니다"
 
-#: common-cmds.h:24
+#: command-list.h:87
+msgid "Compares files in the working tree and the index"
+msgstr "작업 폴더와 인덱스의 파일을 비교합니다"
+
+#: command-list.h:88
+msgid "Compare a tree to the working tree or index"
+msgstr "트리를 작업 폴더나 인덱스와 비교합니다"
+
+#: command-list.h:89
+msgid "Compares the content and mode of blobs found via two tree objects"
+msgstr "두 개의 트리 오브젝트에 있는 내용과 블롭의 모드를 비교합니다"
+
+#: command-list.h:90
+msgid "Show changes using common diff tools"
+msgstr "일반적인 diff 도구를 사용해 변경 사항을 표시합니다"
+
+#: command-list.h:91
+msgid "Git data exporter"
+msgstr "깃 데이터 내보내기"
+
+#: command-list.h:92
+msgid "Backend for fast Git data importers"
+msgstr "고속 깃 데이터 가져오기 백엔드"
+
+#: command-list.h:93
 msgid "Download objects and refs from another repository"
 msgstr "다른 저장소에서 오브젝트와 레퍼런스를 다운로드합니다"
 
-#: common-cmds.h:25
+#: command-list.h:94
+msgid "Receive missing objects from another repository"
+msgstr "다른 저장소에서 없는 오브젝트를 다운로드합니다"
+
+#: command-list.h:95
+msgid "Rewrite branches"
+msgstr "리모트 브랜치"
+
+#: command-list.h:96
+msgid "Produce a merge commit message"
+msgstr "병합 커밋 메시지를 만듭니다"
+
+#: command-list.h:97
+msgid "Output information on each ref"
+msgstr "각 레퍼런스의 정보를 출력합니다"
+
+#: command-list.h:98
+msgid "Prepare patches for e-mail submission"
+msgstr "메일 제출 용도로 패치를 준비합니다"
+
+#: command-list.h:99
+msgid "Verifies the connectivity and validity of the objects in the database"
+msgstr "연결을 확인하고 데이터베이스의 오브젝트가 올바른지 확인합니다"
+
+#: command-list.h:100
+msgid "Cleanup unnecessary files and optimize the local repository"
+msgstr "불필요한 파일을 지우고 로컬 저장소를 최적화합니다"
+
+#: command-list.h:101
+msgid "Extract commit ID from an archive created using git-archive"
+msgstr "git-archive로 만든 아카이브에서 커밋 ID를 추출합니다"
+
+#: command-list.h:102
 msgid "Print lines matching a pattern"
 msgstr "패턴과 일치하는 줄을 표시합니다"
 
-#: common-cmds.h:26
+#: command-list.h:103
+msgid "A portable graphical interface to Git"
+msgstr "깃의 포터블 그래픽 인터페이스"
+
+#: command-list.h:104
+msgid "Compute object ID and optionally creates a blob from a file"
+msgstr "오브젝트 ID를 계산하고 선택적으로 파일의 블롭을 만듭니다"
+
+#: command-list.h:105
+msgid "Display help information about Git"
+msgstr "깃의 도움말 정보를 표시합니다"
+
+#: command-list.h:106
+msgid "Server side implementation of Git over HTTP"
+msgstr "깃 HTTP 프로토콜의 서버측 구현"
+
+#: command-list.h:107
+msgid "Download from a remote Git repository via HTTP"
+msgstr "원격 깃 저장소에서 HTTP를 통해 다운로드합니다"
+
+#: command-list.h:108
+msgid "Push objects over HTTP/DAV to another repository"
+msgstr "오브젝트를 HTTP/DAV를 통해 다른 저장소로 푸시합니다"
+
+#: command-list.h:109
+msgid "Send a collection of patches from stdin to an IMAP folder"
+msgstr "표준입력에서 패치 모음을 읽어 IMAP 폴더로 보냅니다"
+
+#: command-list.h:110
+msgid "Build pack index file for an existing packed archive"
+msgstr "기존 묶음 아카이브에 대한 묶음 인덱스 파일을 만듭니다"
+
+#: command-list.h:111
 msgid "Create an empty Git repository or reinitialize an existing one"
 msgstr "빈 깃 저장소를 만들거나 기존 저장소를 다시 초기화합니다"
 
-#: common-cmds.h:27
+#: command-list.h:112
+msgid "Instantly browse your working repository in gitweb"
+msgstr "내 작업 저장소를 gitweb에서 즉시 살펴봅니다"
+
+# * "Signed-off-by: name" 같은 정보를 말한다
+#: command-list.h:113
+msgid "add or parse structured information in commit messages"
+msgstr "커밋 메시지에 구조화된 정보를 추가하거나 정보를 파싱합니다"
+
+#: command-list.h:114
+msgid "The Git repository browser"
+msgstr "깃 저장소 살펴보기"
+
+#: command-list.h:115
 msgid "Show commit logs"
 msgstr "커밋 기록을 표시합니다"
 
-#: common-cmds.h:28
+#: command-list.h:116
+msgid "Show information about files in the index and the working tree"
+msgstr "인덱스와 작업 폴더의 파일에 대한 정보를 표시합니다"
+
+#: command-list.h:117
+msgid "List references in a remote repository"
+msgstr "원격 저장소의 레퍼런스를 열거합니다"
+
+#: command-list.h:118
+msgid "List the contents of a tree object"
+msgstr "트리 오브젝트의 내용을 열거합니다"
+
+#: command-list.h:119
+msgid "Extracts patch and authorship from a single e-mail message"
+msgstr "하나의 메일 메시지에서 패치와 작성자 정보를 뽑아냅니다"
+
+#: command-list.h:120
+msgid "Simple UNIX mbox splitter program"
+msgstr "간단한 유닉스 mbox 쪼개기 프로그램"
+
+#: command-list.h:121
 msgid "Join two or more development histories together"
 msgstr "여러 개의 개발 내역을 하나로 합칩니다"
 
-#: common-cmds.h:29
+#: command-list.h:122
+msgid "Find as good common ancestors as possible for a merge"
+msgstr "병합에 사용할 최선의 공통 과거 커밋을 찾습니다"
+
+#: command-list.h:123
+msgid "Run a three-way file merge"
+msgstr "3-방향 파일 병합을 실행합니다"
+
+#: command-list.h:124
+msgid "Run a merge for files needing merging"
+msgstr "병합이 필요한 파일에 대해 병합을 실행합니다"
+
+#: command-list.h:125
+msgid "The standard helper program to use with git-merge-index"
+msgstr "git-merge-index와 같이 사용하는 기본 도움 프로그램"
+
+#: command-list.h:126
+msgid "Run merge conflict resolution tools to resolve merge conflicts"
+msgstr "병합 충돌 상황에서 병합 충돌 해결 도구를 실행합니다"
+
+#: command-list.h:127
+msgid "Show three-way merge without touching index"
+msgstr "인덱스를 바꾸지 않고 3-방향 병합을 표시합니다"
+
+#: command-list.h:128
+msgid "Creates a tag object"
+msgstr "태그 오브젝트를 만듭니다"
+
+#: command-list.h:129
+msgid "Build a tree-object from ls-tree formatted text"
+msgstr "ls-tree 포맷의 텍스트에서 tree-object를 만듭니다"
+
+#: command-list.h:130
 msgid "Move or rename a file, a directory, or a symlink"
 msgstr "파일, 디렉터리, 심볼릭 링크를 옮기거나 이름을 바꿉니다"
 
-#: common-cmds.h:30
+#: command-list.h:131
+msgid "Find symbolic names for given revs"
+msgstr "주어진 리비전에 대한 심볼 이름을 찾습니다"
+
+#: command-list.h:132
+msgid "Add or inspect object notes"
+msgstr "오브젝트 노트를 추가하거나 살펴봅니다"
+
+#: command-list.h:133
+msgid "Import from and submit to Perforce repositories"
+msgstr "Perforce 저장소에서 가져오거나 저장소로 제출합니다"
+
+#: command-list.h:134
+msgid "Create a packed archive of objects"
+msgstr "오브젝트의 묶음 아카이브를 만듭니다"
+
+#: command-list.h:135
+msgid "Find redundant pack files"
+msgstr "중복된 묶음 파일을 찾습니다"
+
+#: command-list.h:136
+msgid "Pack heads and tags for efficient repository access"
+msgstr "효율적인 저장소 접근을 위해 헤드와 태그를 묶습니다"
+
+#: command-list.h:137
+msgid "Routines to help parsing remote repository access parameters"
+msgstr "원격 저장소 접근 파라미터를 파싱하는데 사용하는 공통 기능"
+
+#: command-list.h:138
+msgid "Compute unique ID for a patch"
+msgstr "패치에 대한 유일한 ID를 계산합니다"
+
+#: command-list.h:139
+msgid "Prune all unreachable objects from the object database"
+msgstr "오브젝트 데이터베이스에서 도달할 수 없는 오브젝트를 모두 잘라냅니다"
+
+#: command-list.h:140
+msgid "Remove extra objects that are already in pack files"
+msgstr "묶음 파일에 이미 들어 있는 오브젝트를 추가로 제거합니다"
+
+#: command-list.h:141
 msgid "Fetch from and integrate with another repository or a local branch"
 msgstr "다른 저장소 또는 다른 로컬 브랜치에서 가져오거나 통합합니다"
 
-#: common-cmds.h:31
+#: command-list.h:142
 msgid "Update remote refs along with associated objects"
 msgstr "원격 레퍼런스 및 그와 관련된 오브젝트를 업데이트합니다"
 
-#: common-cmds.h:32
+#: command-list.h:143
+msgid "Applies a quilt patchset onto the current branch"
+msgstr "현재 브랜치에 quilt 패치 모음을 적용합니다"
+
+#: command-list.h:144
+msgid "Reads tree information into the index"
+msgstr "트리 정보를 인덱스로 읽습니다"
+
+#: command-list.h:145
 msgid "Reapply commits on top of another base tip"
 msgstr "커밋을 다른 베이스 끝의 최상위에서 적용합니다"
 
-#: common-cmds.h:33
+#: command-list.h:146
+msgid "Receive what is pushed into the repository"
+msgstr "저장소에 푸시한 내용을 받습니다"
+
+#: command-list.h:147
+msgid "Manage reflog information"
+msgstr "reflog 정보를 관리합니다"
+
+#: command-list.h:148
+msgid "Manage set of tracked repositories"
+msgstr "추적하는 저장소 모음을 관리합니다"
+
+#: command-list.h:149
+msgid "Pack unpacked objects in a repository"
+msgstr "저장소의 묶여지지 않은 오브젝트를 묶습니다"
+
+#: command-list.h:150
+msgid "Create, list, delete refs to replace objects"
+msgstr "오브젝트를 바꾸는 레퍼런스를 만들거나, 표시하거나, 삭제합니다"
+
+#: command-list.h:151
+msgid "Generates a summary of pending changes"
+msgstr "예정된 변경 사항의 요약을 만듭니다"
+
+#: command-list.h:152
+msgid "Reuse recorded resolution of conflicted merges"
+msgstr "충돌하는 병합의 기록된 해결 방법을 다시 사용합니다"
+
+#: command-list.h:153
 msgid "Reset current HEAD to the specified state"
 msgstr "현재 HEAD를 지정한 상태로 재설정화합니다"
 
-#: common-cmds.h:34
+#: command-list.h:154
+msgid "Revert some existing commits"
+msgstr "기존 커밋을 되돌립니다"
+
+#: command-list.h:155
+msgid "Lists commit objects in reverse chronological order"
+msgstr "시간 반대 순서에 따라 커밋 오브젝트를 열거합니다"
+
+#: command-list.h:156
+msgid "Pick out and massage parameters"
+msgstr "파라미터를 찾아내서 조정합니다"
+
+#: command-list.h:157
 msgid "Remove files from the working tree and from the index"
 msgstr "파일을 작업 폴더에서 제거하고 인덱스에서도 제거합니다"
 
-#: common-cmds.h:35
+#: command-list.h:158
+msgid "Send a collection of patches as emails"
+msgstr "패치 모음을 메일로 보냅니다"
+
+#: command-list.h:159
+msgid "Push objects over Git protocol to another repository"
+msgstr "오브젝트를 깃 프로토콜을 통해 다른 저장소로 푸시합니다"
+
+#: command-list.h:160
+msgid "Restricted login shell for Git-only SSH access"
+msgstr "깃만 사용하는 SSH 접근에 필요한 제한된 로그인 셸"
+
+#: command-list.h:161
+msgid "Summarize 'git log' output"
+msgstr "'git log' 출력을 요약합니다"
+
+#: command-list.h:162
 msgid "Show various types of objects"
 msgstr "여러가지 종류의 오브젝트를 표시합니다"
 
-#: common-cmds.h:36
+#: command-list.h:163
+msgid "Show branches and their commits"
+msgstr "브랜치 목록과 그 커밋을 표시합니다"
+
+#: command-list.h:164
+msgid "Show packed archive index"
+msgstr "묶여진 아카이브 인덱스를 표시합니다"
+
+#: command-list.h:165
+msgid "List references in a local repository"
+msgstr "로컬 저장소의 레퍼런스를 열거합니다"
+
+#: command-list.h:166
+msgid "Git's i18n setup code for shell scripts"
+msgstr "셸 스크립트를 위한 깃의 국제화 준비 코드"
+
+#: command-list.h:167
+msgid "Common Git shell script setup code"
+msgstr "공통 깃 셸 스크립트 준비 코드"
+
+#: command-list.h:168
+msgid "Stash the changes in a dirty working directory away"
+msgstr "작업 폴더의 변경 사항을 임시로 다른 곳에 저장합니다"
+
+#: command-list.h:169
+msgid "Add file contents to the staging area"
+msgstr "파일 내용을 스테이징 영역에 추가합니다"
+
+#: command-list.h:170
 msgid "Show the working tree status"
 msgstr "작업 폴더 상태를 표시합니다"
 
-#: common-cmds.h:37
+#: command-list.h:171
+msgid "Remove unnecessary whitespace"
+msgstr "불필요한 공백 문자를 제거합니다"
+
+#: command-list.h:172
+msgid "Initialize, update or inspect submodules"
+msgstr "하위 모듈을 초기화하거나, 업데이트하거나, 조사합니다"
+
+#: command-list.h:173
+msgid "Bidirectional operation between a Subversion repository and Git"
+msgstr "서브버전 저장소와 깃 사이의 양방향 동작"
+
+#: command-list.h:174
+msgid "Read, modify and delete symbolic refs"
+msgstr "심볼릭 레퍼런스를 읽고, 수정하고, 삭제합니다"
+
+#: command-list.h:175
 msgid "Create, list, delete or verify a tag object signed with GPG"
 msgstr "태그를 만들거나, 표시하거나, 삭제하거나, GPG 서명을 검증합니다"
 
-#: parse-options.h:157
-msgid "expiry-date"
-msgstr "ë§\8cë£\8c\8b\9cê°\81"
+#: command-list.h:176
+msgid "Creates a temporary file with a blob's contents"
+msgstr "ë¸\94ë¡­ì\9d\98 ë\82´ì\9a©ì\9c¼ë¡\9c ì\9e\84ì\8b\9c í\8c\8cì\9d¼ì\9d\84 ë§\8cë\93­ë\8b\88ë\8b¤"
 
-#: parse-options.h:172
-msgid "no-op (backward compatibility)"
-msgstr "아무 동작도 하지 않음 (호환용)"
+#: command-list.h:177
+msgid "Unpack objects from a packed archive"
+msgstr "묶음 아카이브에서 오브젝트를 풀어냅니다"
 
-#: parse-options.h:250
-msgid "be more verbose"
-msgstr "더 자세히 표시합니다"
+#: command-list.h:178
+msgid "Register file contents in the working tree to the index"
+msgstr "작업 폴더에서 파일 내용을 인덱스에 등록합니다"
 
-#: parse-options.h:252
-msgid "be more quiet"
-msgstr "ë\8d\94 ê°\84ë\9eµí\9e\88 í\91\9cì\8b\9c합니다"
+#: command-list.h:179
+msgid "Update the object name stored in a ref safely"
+msgstr "ë \88í\8d¼ë\9f°ì\8a¤ì\97\90 ì \80ì\9e¥ë\90\9c ì\98¤ë¸\8cì \9dí\8a¸ ì\9d´ë¦\84ì\9d\84 ì\95\88ì \84í\95\98ê²\8c ì\97\85ë\8d°ì\9d´í\8a¸합니다"
 
-#: parse-options.h:258
-msgid "use <n> digits to display SHA-1s"
-msgstr "SHA-1 표시에 <n>개의 숫자를 사용합니다"
+#: command-list.h:180
+msgid "Update auxiliary info file to help dumb servers"
+msgstr "단순 서버에 도움을 주도록 보조 정보 파일을 업데이트합니다"
+
+#: command-list.h:181
+msgid "Send archive back to git-archive"
+msgstr "아카이브를 다시 git-archive로 보냅니다"
+
+#: command-list.h:182
+msgid "Send objects packed back to git-fetch-pack"
+msgstr "묶은 오브젝트를 다시 git-fetch-pack으로 보냅니다"
+
+#: command-list.h:183
+msgid "Show a Git logical variable"
+msgstr "깃의 논리적 변수를 표시합니다"
+
+#: command-list.h:184
+msgid "Check the GPG signature of commits"
+msgstr "커밋의 GPG 서명을 확인합니다"
+
+#: command-list.h:185
+msgid "Validate packed Git archive files"
+msgstr "묶음 깃 아카이브 파일을 검증합니다"
+
+#: command-list.h:186
+msgid "Check the GPG signature of tags"
+msgstr "태그의 GPG 서명을 확인합니다"
+
+#: command-list.h:187
+msgid "Git web interface (web frontend to Git repositories)"
+msgstr "깃 웹 인터페이스 (깃 저장소에 대한 웹 프론트엔드)"
+
+#: command-list.h:188
+msgid "Show logs with difference each commit introduces"
+msgstr "각 커밋으로 발생하는 차이점마다 기록을 표시합니다"
+
+#: command-list.h:189
+msgid "Manage multiple working trees"
+msgstr "여러 개의 작업 폴더를 관리합니다"
+
+#: command-list.h:190
+msgid "Create a tree object from the current index"
+msgstr "현재 인덱스에서 트리 오브젝트를 만듭니다"
+
+#: command-list.h:191
+msgid "Defining attributes per path"
+msgstr "경로마다 속성 정의하기"
+
+#: command-list.h:192
+msgid "Git command-line interface and conventions"
+msgstr "깃 명령행 인터페이스 및 관습"
+
+#: command-list.h:193
+msgid "A Git core tutorial for developers"
+msgstr "개발자를 위한 깃 핵심 따라하기 문서"
+
+#: command-list.h:194
+msgid "Git for CVS users"
+msgstr "CVS 사용자를 위한 깃"
+
+#: command-list.h:195
+msgid "Tweaking diff output"
+msgstr "diff 출력 미세 조정"
+
+#: command-list.h:196
+msgid "A useful minimum set of commands for Everyday Git"
+msgstr "매일매일 유용하게 사용할 최소한의 깃 명령어 모음"
+
+#: command-list.h:197
+msgid "A Git Glossary"
+msgstr "깃 용어 사전"
+
+#: command-list.h:198
+msgid "Hooks used by Git"
+msgstr "깃에서 사용하는 후크"
+
+#: command-list.h:199
+msgid "Specifies intentionally untracked files to ignore"
+msgstr "의도적으로 추적하지 않는 파일을 무시하게 지정하기"
+
+#: command-list.h:200
+msgid "Defining submodule properties"
+msgstr "하위 모듈 속성 정의하기"
+
+#: command-list.h:201
+msgid "Git namespaces"
+msgstr "깃 네임스페이스"
+
+#: command-list.h:202
+msgid "Git Repository Layout"
+msgstr "깃 저장소 구조"
+
+#: command-list.h:203
+msgid "Specifying revisions and ranges for Git"
+msgstr "깃의 리비전 및 범위를 지정하기"
+
+#: command-list.h:204
+msgid "A tutorial introduction to Git: part two"
+msgstr "깃 따라하기 안내서: 2부"
+
+#: command-list.h:205
+msgid "A tutorial introduction to Git"
+msgstr "깃 따라하기 안내서"
+
+#: command-list.h:206
+msgid "An overview of recommended workflows with Git"
+msgstr "추천하는 깃 활용 작업 순서의 개요"
 
 #: rerere.h:40
 msgid "update the index with reused conflict resolution if possible"
@@ -15137,7 +16206,7 @@ msgstr "$pretty_name에 간단한 병합 시도합니다"
 msgid "Simple merge did not work, trying automatic merge."
 msgstr "간단한 병합이 동작하지 않습니다. 자동 병합을 시도합니다."
 
-#: git-rebase.sh:60
+#: git-rebase.sh:61
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
@@ -15153,41 +16222,41 @@ msgstr ""
 "abort\"\n"
 "명령을 실행하십시오."
 
-#: git-rebase.sh:163 git-rebase.sh:409
+#: git-rebase.sh:173 git-rebase.sh:442
 #, sh-format
 msgid "Could not move back to $head_name"
 msgstr "'$head_name' 위치로 돌아갈 수 없습니다"
 
-#: git-rebase.sh:174
+#: git-rebase.sh:184
 msgid "Applied autostash."
 msgstr "자동스태시 적용."
 
-#: git-rebase.sh:177
+#: git-rebase.sh:187
 #, sh-format
 msgid "Cannot store $stash_sha1"
 msgstr "\"$stash_sha1\"을(를) 저장할 수 없습니다"
 
-#: git-rebase.sh:218
+#: git-rebase.sh:229
 msgid "The pre-rebase hook refused to rebase."
 msgstr "리베이스 전 후크에서 리베이스를 거부했습니다."
 
-#: git-rebase.sh:223
+#: git-rebase.sh:234
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr "'git am'이 진행 중인 것처럼 보입니다. 리베이스할 수 없습니다."
 
-#: git-rebase.sh:370
+#: git-rebase.sh:403
 msgid "No rebase in progress?"
 msgstr "리베이스가 진행 중이지 않습니다"
 
-#: git-rebase.sh:381
+#: git-rebase.sh:414
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr "--edit-todo 동작은 대화형 리베이스에서만 사용할 수 있습니다."
 
-#: git-rebase.sh:388
+#: git-rebase.sh:421
 msgid "Cannot read HEAD"
 msgstr "HEAD를 읽을 수 없습니다"
 
-#: git-rebase.sh:391
+#: git-rebase.sh:424
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
@@ -15195,7 +16264,7 @@ msgstr ""
 "모든 병합 충돌을 편집하고 git add\n"
 "명령으로 해결되었다고 표시해야 합니다"
 
-#: git-rebase.sh:435
+#: git-rebase.sh:468
 #, sh-format
 msgid ""
 "It seems that there is already a $state_dir_base directory, and\n"
@@ -15216,74 +16285,79 @@ msgstr ""
 "이 명령을 다시 실행하십시오. 중요한 사항이 남아 있을 경우를\n"
 "대비해 여기서 멈춥니다."
 
-#: git-rebase.sh:491
+#: git-rebase.sh:509
+msgid "error: cannot combine '--signoff' with '--preserve-merges'"
+msgstr ""
+"오류: '--signoff' 옵션과 '--preserve-merges' 옵션을 같이 쓸 수 없습니다"
+
+#: git-rebase.sh:537
 #, sh-format
 msgid "invalid upstream '$upstream_name'"
 msgstr "잘못된 업스트림 '$upstream_name'"
 
-#: git-rebase.sh:515
+#: git-rebase.sh:561
 #, sh-format
 msgid "$onto_name: there are more than one merge bases"
 msgstr "$onto_name: 여러 개의 병합 베이스가 있습니다"
 
-#: git-rebase.sh:518 git-rebase.sh:522
+#: git-rebase.sh:564 git-rebase.sh:568
 #, sh-format
 msgid "$onto_name: there is no merge base"
 msgstr "$onto_name: 병합 베이스가 없습니다"
 
-#: git-rebase.sh:527
+#: git-rebase.sh:573
 #, sh-format
 msgid "Does not point to a valid commit: $onto_name"
 msgstr "올바른 커밋을 가리키지 않습니다: $onto_name"
 
-#: git-rebase.sh:553
+#: git-rebase.sh:599
 #, sh-format
 msgid "fatal: no such branch/commit '$branch_name'"
 msgstr "치명적 이상: 그런 브랜치/커밋이 없습니다 '$branch_name'"
 
-#: git-rebase.sh:586
+#: git-rebase.sh:632
 msgid "Cannot autostash"
 msgstr "자동 스태시를 할 수 없습니다"
 
-#: git-rebase.sh:591
+#: git-rebase.sh:637
 #, sh-format
 msgid "Created autostash: $stash_abbrev"
 msgstr "자동 스태시를 만들었습니다: $stash_abbrev"
 
-#: git-rebase.sh:595
+#: git-rebase.sh:641
 msgid "Please commit or stash them."
 msgstr "커밋하거나 스태시에 넣으십시오."
 
-#: git-rebase.sh:618
+#: git-rebase.sh:664
 #, sh-format
 msgid "HEAD is up to date."
 msgstr "HEAD가 최신 상태입니다."
 
-#: git-rebase.sh:620
+#: git-rebase.sh:666
 #, sh-format
 msgid "Current branch $branch_name is up to date."
 msgstr "현재 브랜치가 ($branch_name) 최신 상태입니다."
 
-#: git-rebase.sh:628
+#: git-rebase.sh:674
 #, sh-format
 msgid "HEAD is up to date, rebase forced."
 msgstr "HEAD가 최신 상태입니다. 강제 리베이스합니다."
 
-#: git-rebase.sh:630
+#: git-rebase.sh:676
 #, sh-format
 msgid "Current branch $branch_name is up to date, rebase forced."
 msgstr "현재 브랜치가 ($branch_name) 최신 상태입니다. 강제 리베이스합니다."
 
-#: git-rebase.sh:642
+#: git-rebase.sh:688
 #, sh-format
 msgid "Changes from $mb to $onto:"
 msgstr "변경 사항 '$mb'에서 '$onto'(으)로:"
 
-#: git-rebase.sh:651
+#: git-rebase.sh:697
 msgid "First, rewinding head to replay your work on top of it..."
 msgstr "작업 사항을 다시 넣기 위해 먼저 헤드를 뒤로 돌립니다..."
 
-#: git-rebase.sh:661
+#: git-rebase.sh:707
 #, sh-format
 msgid "Fast-forwarded $branch_name to $onto_name."
 msgstr "$branch_name 브랜치를 $onto_name 위치로 정방향 진행합니다."
@@ -15352,109 +16426,109 @@ msgstr "현재 상태를 저장할 수 없습니다"
 msgid "Saved working directory and index state $stash_msg"
 msgstr "작업 폴더와 $stash_msg 인덱스 상태를 저장했습니다"
 
-#: git-stash.sh:340
+#: git-stash.sh:342
 msgid "Cannot remove worktree changes"
 msgstr "작업폴더 변경 사항을 제거할 수 없습니다"
 
-#: git-stash.sh:488
+#: git-stash.sh:490
 #, sh-format
 msgid "unknown option: $opt"
 msgstr "알 수 없는 옵션: $opt"
 
-#: git-stash.sh:501
+#: git-stash.sh:503
 msgid "No stash entries found."
 msgstr "스태시 항목이 없습니다."
 
-#: git-stash.sh:508
+#: git-stash.sh:510
 #, sh-format
 msgid "Too many revisions specified: $REV"
 msgstr "너무 많은 리비전을 지정했습니다: $REV"
 
-#: git-stash.sh:523
+#: git-stash.sh:525
 #, sh-format
 msgid "$reference is not a valid reference"
 msgstr "$reference은(는) 올바른 레퍼런스가 아닙니다"
 
-#: git-stash.sh:551
+#: git-stash.sh:553
 #, sh-format
 msgid "'$args' is not a stash-like commit"
 msgstr "'$args'은(는) 스태시 커밋이 아닙니다"
 
-#: git-stash.sh:562
+#: git-stash.sh:564
 #, sh-format
 msgid "'$args' is not a stash reference"
 msgstr "'$args'은(는) 스태시 레퍼런스가 아닙니다"
 
-#: git-stash.sh:570
+#: git-stash.sh:572
 msgid "unable to refresh index"
 msgstr "인덱스를 새로 고칠 수 없습니다"
 
-#: git-stash.sh:574
+#: git-stash.sh:576
 msgid "Cannot apply a stash in the middle of a merge"
 msgstr "병합 도중에 스태시를 적용할 수 없습니다"
 
-#: git-stash.sh:582
+#: git-stash.sh:584
 msgid "Conflicts in index. Try without --index."
 msgstr "인덱스에 충돌. --index 없이 시도해 보십시오."
 
-#: git-stash.sh:584
+#: git-stash.sh:586
 msgid "Could not save index tree"
 msgstr "인덱스 트리를 저장할 수 없습니다"
 
-#: git-stash.sh:593
+#: git-stash.sh:595
 msgid "Could not restore untracked files from stash entry"
 msgstr "스태시 항목에서 추적하지 않는 파일을 복구할 수 없습니다"
 
-#: git-stash.sh:618
+#: git-stash.sh:620
 msgid "Cannot unstage modified files"
 msgstr "수정한 파일을 스테이지에서 뺄 수 없습니다"
 
-#: git-stash.sh:633
+#: git-stash.sh:635
 msgid "Index was not unstashed."
 msgstr "인덱스가 스태시에서 빠졌습니다."
 
-#: git-stash.sh:647
+#: git-stash.sh:649
 msgid "The stash entry is kept in case you need it again."
 msgstr "다시 필요할 때를 대비해 스태시 항목을 보관합니다."
 
-#: git-stash.sh:656
+#: git-stash.sh:658
 #, sh-format
 msgid "Dropped ${REV} ($s)"
 msgstr "${REV} 지움 ($s)"
 
-#: git-stash.sh:657
+#: git-stash.sh:659
 #, sh-format
 msgid "${REV}: Could not drop stash entry"
 msgstr "${REV}: 스태시 항목을 지울 수 없습니다"
 
-#: git-stash.sh:665
+#: git-stash.sh:667
 msgid "No branch name specified"
 msgstr "브랜치 이름을 지정하지 않았습니다"
 
-#: git-stash.sh:744
+#: git-stash.sh:746
 msgid "(To restore them type \"git stash apply\")"
 msgstr "(복구하려면 \"git stash apply\"를 실행하십시오)"
 
-#: git-submodule.sh:181
+#: git-submodule.sh:188
 msgid "Relative path can only be used from the toplevel of the working tree"
 msgstr "상대 경로는 작업 폴더의 최상위에서만 쓸 수 있습니다"
 
-#: git-submodule.sh:191
+#: git-submodule.sh:198
 #, sh-format
 msgid "repo URL: '$repo' must be absolute or begin with ./|../"
 msgstr "저장소 URL: '$repo' 값은 절대 경로거나 ./ 또는 ../로 시작해야 합니다."
 
-#: git-submodule.sh:210
+#: git-submodule.sh:217
 #, sh-format
 msgid "'$sm_path' already exists in the index"
 msgstr "'$sm_path'은(는) 이미 인덱스에 있습니다"
 
-#: git-submodule.sh:213
+#: git-submodule.sh:220
 #, sh-format
 msgid "'$sm_path' already exists in the index and is not a submodule"
 msgstr "'$sm_path'은(는) 이미 인덱스에 있고 하위 모듈이 아닙니다"
 
-#: git-submodule.sh:219
+#: git-submodule.sh:226
 #, sh-format
 msgid ""
 "The following path is ignored by one of your .gitignore files:\n"
@@ -15465,22 +16539,22 @@ msgstr ""
 "$sm_path\n"
 "정말로 추가하려면 -f 옵션을 사용하십시오."
 
-#: git-submodule.sh:237
+#: git-submodule.sh:249
 #, sh-format
 msgid "Adding existing repo at '$sm_path' to the index"
 msgstr "'$sm_path'의 기존 저장소를 인덱스에 추가합니다"
 
-#: git-submodule.sh:239
+#: git-submodule.sh:251
 #, sh-format
 msgid "'$sm_path' already exists and is not a valid git repo"
 msgstr "'$sm_path'이(가) 이미 있고 올바른 git 저장소가 아닙니다"
 
-#: git-submodule.sh:247
+#: git-submodule.sh:259
 #, sh-format
 msgid "A git directory for '$sm_name' is found locally with remote(s):"
 msgstr "'$sm_name'에 대한 깃 디렉터리가 로컬에서 리모트가 있는 채로 있습니다:"
 
-#: git-submodule.sh:249
+#: git-submodule.sh:261
 #, sh-format
 msgid ""
 "If you want to reuse this local git directory instead of cloning again from\n"
@@ -15495,47 +16569,47 @@ msgstr ""
 "'--force' 옵션을 사용하십시오. 로컬 깃 디렉터리가 올바른 저장소가 아니거나\n"
 "무슨 의미인지 잘 모르겠으면 '--name' 옵션으로 다른 이름을 선택하십시오."
 
-#: git-submodule.sh:255
+#: git-submodule.sh:267
 #, sh-format
 msgid "Reactivating local git directory for submodule '$sm_name'."
 msgstr "로컬 깃 디렉터리를 '$sm_name' 하위모듈로 다시 활성화합니다."
 
-#: git-submodule.sh:267
+#: git-submodule.sh:279
 #, sh-format
 msgid "Unable to checkout submodule '$sm_path'"
 msgstr "'$sm_path' 하위 모듈을 체크아웃할 수 없습니다"
 
-#: git-submodule.sh:272
+#: git-submodule.sh:284
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr "'$sm_path' 하위 모듈을 추가하는데 실패했습니다"
 
-#: git-submodule.sh:281
+#: git-submodule.sh:293
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
 msgstr "'$sm_path' 하위 모듈을 등록하는데 실패했습니다"
 
-#: git-submodule.sh:342
+#: git-submodule.sh:354
 #, sh-format
 msgid "Entering '$displaypath'"
 msgstr "'$displaypath' 들어감"
 
-#: git-submodule.sh:362
+#: git-submodule.sh:374
 #, sh-format
 msgid "Stopping at '$displaypath'; script returned non-zero status."
 msgstr "'$displaypath'에서 멈춤. 스크립트가 0이 아닌 상태를 리턴함."
 
-#: git-submodule.sh:584
+#: git-submodule.sh:600
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
 msgstr "하위 모듈 경로에서 ('$displaypath') 현재 리비전을 찾을 수 없습니다"
 
-#: git-submodule.sh:594
+#: git-submodule.sh:610
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr "하위 모듈 경로 '$sm_path'에서 가져올 수 없습니다"
 
-#: git-submodule.sh:599
+#: git-submodule.sh:615
 #, sh-format
 msgid ""
 "Unable to find current ${remote_name}/${branch} revision in submodule path "
@@ -15544,12 +16618,12 @@ msgstr ""
 "하위 모듈 경로 '$sm_path'에서 현재 ${remote_name}/${branch} 리비전을 찾을 수 "
 "없습니다"
 
-#: git-submodule.sh:617
+#: git-submodule.sh:633
 #, sh-format
 msgid "Unable to fetch in submodule path '$displaypath'"
 msgstr "하위 모듈 경로 '$displaypath'에서 가져올 수 없습니다"
 
-#: git-submodule.sh:623
+#: git-submodule.sh:639
 #, sh-format
 msgid ""
 "Fetched in submodule path '$displaypath', but it did not contain $sha1. "
@@ -15558,71 +16632,71 @@ msgstr ""
 "'$displaypath' 하위 모듈 경로에서 가져왔지만, $sha1 커밋이 들어있지 않습니"
 "다. 이 커밋을 직접 가져오는데 실패했습니다."
 
-#: git-submodule.sh:630
+#: git-submodule.sh:646
 #, sh-format
 msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
 msgstr "하위 모듈 경로 '$displaypath'에서 '$sha1'을(를) 체크아웃할 수 없습니다"
 
-#: git-submodule.sh:631
+#: git-submodule.sh:647
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
 msgstr "하위 모듈 경로 '$displaypath': '$sha1' 체크아웃"
 
-#: git-submodule.sh:635
+#: git-submodule.sh:651
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
 msgstr "하위 모듈 경로 '$displaypath'에서 '$sha1'을(를) 리베이스할 수 없습니다"
 
-#: git-submodule.sh:636
+#: git-submodule.sh:652
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
 msgstr "하위 모듈 경로 '$displaypath': '$sha1'(으)로 리베이스"
 
-#: git-submodule.sh:641
+#: git-submodule.sh:657
 #, sh-format
 msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
 msgstr "하위 모듈 경로 '$displaypath'에서 '$sha1' 병합할 수 없습니다"
 
-#: git-submodule.sh:642
+#: git-submodule.sh:658
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
 msgstr "하위 모듈 경로 '$displaypath': '$sha1'에서 병합"
 
-#: git-submodule.sh:647
+#: git-submodule.sh:663
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
 msgstr "'$command $sha1' 실행이 하위 모듈 경로 '$displaypath'에서 실패했습니다"
 
-#: git-submodule.sh:648
+#: git-submodule.sh:664
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr "하위 모듈 경로 '$displaypath': '$command $sha1'"
 
-#: git-submodule.sh:679
+#: git-submodule.sh:695
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "재귀적으로 하위 모듈 경로 '$displaypath'에 들어가는데 실패했습니다"
 
-#: git-submodule.sh:775
+#: git-submodule.sh:791
 msgid "The --cached option cannot be used with the --files option"
 msgstr "--cached 옵션은 --files 옵션과 같이 쓸 수 없습니다"
 
-#: git-submodule.sh:827
+#: git-submodule.sh:843
 #, sh-format
 msgid "unexpected mode $mod_dst"
 msgstr "예상치 못한 모드 $mod_dst"
 
-#: git-submodule.sh:847
+#: git-submodule.sh:863
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_src"
 msgstr "  경고: '$display_name'에 '$sha1_src' 커밋이 들어있지 않습니다"
 
-#: git-submodule.sh:850
+#: git-submodule.sh:866
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_dst"
 msgstr "  경고: '$display_name'에 '$sha1_dst' 커밋이 들어있지 않습니다"
 
-#: git-submodule.sh:853
+#: git-submodule.sh:869
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
 msgstr ""
@@ -15633,22 +16707,28 @@ msgstr ""
 msgid "See git-${cmd}(1) for details."
 msgstr "자세한 정보는 git-${cmd}(1) 페이지를 참고하십시오."
 
-#: git-rebase--interactive.sh:140
+#: git-rebase--interactive.sh:142
 #, sh-format
 msgid "Rebasing ($new_count/$total)"
 msgstr "리베이스중 ($new_count/$total)"
 
-#: git-rebase--interactive.sh:156
+#: git-rebase--interactive.sh:158
 msgid ""
 "\n"
 "Commands:\n"
-"p, pick = use commit\n"
-"r, reword = use commit, but edit the commit message\n"
-"e, edit = use commit, but stop for amending\n"
-"s, squash = use commit, but meld into previous commit\n"
-"f, fixup = like \"squash\", but discard this commit's log message\n"
-"x, exec = run command (the rest of the line) using shell\n"
-"d, drop = remove commit\n"
+"p, pick <commit> = use commit\n"
+"r, reword <commit> = use commit, but edit the commit message\n"
+"e, edit <commit> = use commit, but stop for amending\n"
+"s, squash <commit> = use commit, but meld into previous commit\n"
+"f, fixup <commit> = like \"squash\", but discard this commit's log message\n"
+"x, exec <command> = run command (the rest of the line) using shell\n"
+"d, drop <commit> = remove commit\n"
+"l, label <label> = label current HEAD with a name\n"
+"t, reset <label> = reset HEAD to a label\n"
+"m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]\n"
+".       create a merge commit using the original merge commit's\n"
+".       message (or the oneline, if no original merge commit was\n"
+".       specified). Use -c <commit> to reword the commit message.\n"
 "\n"
 "These lines can be re-ordered; they are executed from top to bottom.\n"
 msgstr ""
@@ -15661,10 +16741,16 @@ msgstr ""
 " f, fixup = \"squash\"와 같지만, 이 커밋의 로그 메시지를 버림\n"
 " x, exec = 셸을 사용해 명령 실행 (뒤에 명령 지정)\n"
 " d, drop = 커밋 제거\n"
+" l, label <레이블> = 현재 HEAD에 이름을 붙입니다\n"
+" t, reset <레이블> = HEAD를 레이블 위치로 리셋합니다\n"
+" m, merge [-C <커밋> | -c <커밋>] <레이블> [# <한줄>]\n"
+" .       본래 병합 커밋의 메시지를 이용해 병합 커밋을 만듭니다.\n"
+" .       (본래 병합 커밋을 지정하지 않는 경우, <한줄>을 메시지로\n"
+" .       사용합니다.) 커밋 메시지를 편집하려면 -c <커밋>을 사용.\n"
 "\n"
 "이 줄은 순서를 바꿀 수 있습니다. 위에서 아래 순서로 실행합니다.\n"
 
-#: git-rebase--interactive.sh:171
+#: git-rebase--interactive.sh:179
 msgid ""
 "\n"
 "Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
@@ -15672,7 +16758,7 @@ msgstr ""
 "\n"
 "줄을 제거하지 않습니다. 커밋을 제거하려면 명시적으로 'drop'을 사용하십시오.\n"
 
-#: git-rebase--interactive.sh:175
+#: git-rebase--interactive.sh:183
 msgid ""
 "\n"
 "If you remove a line here THAT COMMIT WILL BE LOST.\n"
@@ -15680,7 +16766,7 @@ msgstr ""
 "\n"
 "여기 줄을 제거하면 해당 커밋을 잃어버립니다!\n"
 
-#: git-rebase--interactive.sh:213
+#: git-rebase--interactive.sh:221
 #, sh-format
 msgid ""
 "You can amend the commit now, with\n"
@@ -15699,82 +16785,82 @@ msgstr ""
 "\n"
 "\tgit rebase --continue"
 
-#: git-rebase--interactive.sh:238
+#: git-rebase--interactive.sh:246
 #, sh-format
 msgid "$sha1: not a commit that can be picked"
 msgstr "$sha1: 빼오기가 가능한 커밋이 아닙니다"
 
-#: git-rebase--interactive.sh:277
+#: git-rebase--interactive.sh:285
 #, sh-format
 msgid "Invalid commit name: $sha1"
 msgstr "잘못된 커밋 이름: $sha1"
 
-#: git-rebase--interactive.sh:319
+#: git-rebase--interactive.sh:325
 msgid "Cannot write current commit's replacement sha1"
 msgstr "현재 커밋의 대체 sha1을 쓸 수 없습니다"
 
-#: git-rebase--interactive.sh:371
+#: git-rebase--interactive.sh:376
 #, sh-format
 msgid "Fast-forward to $sha1"
 msgstr "정방향 진행, $sha1 위치로"
 
-#: git-rebase--interactive.sh:373
+#: git-rebase--interactive.sh:378
 #, sh-format
 msgid "Cannot fast-forward to $sha1"
 msgstr "$sha1 위치로 정방향 진행할 수 없습니다"
 
-#: git-rebase--interactive.sh:382
+#: git-rebase--interactive.sh:387
 #, sh-format
 msgid "Cannot move HEAD to $first_parent"
 msgstr "HEAD를 $first_parent 위치로 옮길 수 없습니다"
 
-#: git-rebase--interactive.sh:387
+#: git-rebase--interactive.sh:392
 #, sh-format
 msgid "Refusing to squash a merge: $sha1"
 msgstr "병합 squash 거부: $sha1"
 
-#: git-rebase--interactive.sh:405
+#: git-rebase--interactive.sh:410
 #, sh-format
 msgid "Error redoing merge $sha1"
 msgstr "$sha1 병합을 다시 하는데 오류"
 
-#: git-rebase--interactive.sh:414
+#: git-rebase--interactive.sh:419
 #, sh-format
 msgid "Could not pick $sha1"
 msgstr "$sha1을 빼오기 할 수 없습니다"
 
-#: git-rebase--interactive.sh:423
+#: git-rebase--interactive.sh:428
 #, sh-format
 msgid "This is the commit message #${n}:"
 msgstr "커밋 메시지 #${n}번입니다:"
 
-#: git-rebase--interactive.sh:428
+#: git-rebase--interactive.sh:433
 #, sh-format
 msgid "The commit message #${n} will be skipped:"
 msgstr "#${n}번째 커밋 메시지를 건너뜁니다:"
 
-#: git-rebase--interactive.sh:439
+#: git-rebase--interactive.sh:444
 #, sh-format
 msgid "This is a combination of $count commit."
 msgid_plural "This is a combination of $count commits."
 msgstr[0] "커밋 $count개가 섞인 결과입니다."
 
-#: git-rebase--interactive.sh:448
+#: git-rebase--interactive.sh:453
 #, sh-format
 msgid "Cannot write $fixup_msg"
 msgstr "$fixup_msg를 쓸 수 없습니다"
 
-#: git-rebase--interactive.sh:451
+#: git-rebase--interactive.sh:456
 msgid "This is a combination of 2 commits."
 msgstr "커밋 2개가 섞인 결과입니다."
 
-#: git-rebase--interactive.sh:492 git-rebase--interactive.sh:535
-#: git-rebase--interactive.sh:538
+#: git-rebase--interactive.sh:497 git-rebase--interactive.sh:540
+#: git-rebase--interactive.sh:543
 #, sh-format
 msgid "Could not apply $sha1... $rest"
 msgstr "다음을 적용할(apply) 수 없습니다: $sha1... $rest"
 
-#: git-rebase--interactive.sh:567
+#: git-rebase--interactive.sh:572
 #, sh-format
 msgid ""
 "Could not amend commit after successfully picking $sha1... $rest\n"
@@ -15787,31 +16873,31 @@ msgstr ""
 "대부분의 경우 빈 커밋 메시지 때문이거나, 또는 커밋 전 후크가 실패했기\n"
 "때문입니다. 커밋 메시지를 수정하기 전에 이 문제를 먼저 해결해야 합니다."
 
-#: git-rebase--interactive.sh:582
+#: git-rebase--interactive.sh:587
 #, sh-format
 msgid "Stopped at $sha1_abbrev... $rest"
 msgstr "다음에서 멈춥니다: $sha1_abbrev... $rest"
 
-#: git-rebase--interactive.sh:597
+#: git-rebase--interactive.sh:602
 #, sh-format
 msgid "Cannot '$squash_style' without a previous commit"
 msgstr "이전 커밋 없이 '$squash_style' 수행할 수 없습니다"
 
-#: git-rebase--interactive.sh:639
+#: git-rebase--interactive.sh:644
 #, sh-format
 msgid "Executing: $rest"
 msgstr "실행 중: $rest"
 
-#: git-rebase--interactive.sh:647
+#: git-rebase--interactive.sh:652
 #, sh-format
 msgid "Execution failed: $rest"
 msgstr "실행 실패: $rest"
 
-#: git-rebase--interactive.sh:649
+#: git-rebase--interactive.sh:654
 msgid "and made changes to the index and/or the working tree"
 msgstr "그리고 인덱스 그리고/또는 작업 폴더에 변경 사항이 있습니다"
 
-#: git-rebase--interactive.sh:651
+#: git-rebase--interactive.sh:656
 msgid ""
 "You can fix the problem, and then run\n"
 "\n"
@@ -15822,7 +16908,7 @@ msgstr ""
 "\tgit rebase --continue"
 
 #. TRANSLATORS: after these lines is a command to be issued by the user
-#: git-rebase--interactive.sh:664
+#: git-rebase--interactive.sh:669
 #, sh-format
 msgid ""
 "Execution succeeded: $rest\n"
@@ -15837,29 +16923,29 @@ msgstr ""
 "\n"
 "\tgit rebase --continue"
 
-#: git-rebase--interactive.sh:675
+#: git-rebase--interactive.sh:680
 #, sh-format
 msgid "Unknown command: $command $sha1 $rest"
 msgstr "알 수 없는 명령: $command $sha1 $rest"
 
-#: git-rebase--interactive.sh:676
+#: git-rebase--interactive.sh:681
 msgid "Please fix this using 'git rebase --edit-todo'."
 msgstr "'git rebase --edit-todo' 명령으로 바로잡으십시오."
 
-#: git-rebase--interactive.sh:711
+#: git-rebase--interactive.sh:716
 #, sh-format
 msgid "Successfully rebased and updated $head_name."
 msgstr "성공적으로 리베이스했고 $head_name 업데이트했습니다."
 
-#: git-rebase--interactive.sh:735
+#: git-rebase--interactive.sh:740
 msgid "could not detach HEAD"
 msgstr "HEAD는 분리할 수 없습니다"
 
-#: git-rebase--interactive.sh:771
+#: git-rebase--interactive.sh:778
 msgid "Could not remove CHERRY_PICK_HEAD"
 msgstr "CHERRY_PICK_HEAD를 제거할 수 없습니다"
 
-#: git-rebase--interactive.sh:776
+#: git-rebase--interactive.sh:783
 #, sh-format
 msgid ""
 "You have staged changes in your working tree.\n"
@@ -15890,11 +16976,11 @@ msgstr ""
 "\n"
 "  git rebase --continue\n"
 
-#: git-rebase--interactive.sh:793
+#: git-rebase--interactive.sh:800
 msgid "Error trying to find the author identity to amend commit"
 msgstr "커밋을 수정한 작성자 신원을 찾는데 오류"
 
-#: git-rebase--interactive.sh:798
+#: git-rebase--interactive.sh:805
 msgid ""
 "You have uncommitted changes in your working tree. Please commit them\n"
 "first and then run 'git rebase --continue' again."
@@ -15902,11 +16988,11 @@ msgstr ""
 "작업 폴더에 커밋하지 않은 변경 사항이 있습니다. 이 사항을 먼저\n"
 "커밋하고 'git rebase --continue' 명령을 다시 실행하십시오."
 
-#: git-rebase--interactive.sh:803 git-rebase--interactive.sh:807
+#: git-rebase--interactive.sh:810 git-rebase--interactive.sh:814
 msgid "Could not commit staged changes."
 msgstr "스테이징한 변경 사항은 커밋할 수 없습니다."
 
-#: git-rebase--interactive.sh:836
+#: git-rebase--interactive.sh:843
 msgid ""
 "\n"
 "You are editing the todo file of an ongoing interactive rebase.\n"
@@ -15920,56 +17006,58 @@ msgstr ""
 "    git rebase --continue\n"
 "\n"
 
-#: git-rebase--interactive.sh:844 git-rebase--interactive.sh:1008
+#: git-rebase--interactive.sh:851 git-rebase--interactive.sh:937
 msgid "Could not execute editor"
 msgstr "편집기를 실행할 수 없습니다"
 
-#: git-rebase--interactive.sh:860
+#: git-rebase--interactive.sh:872
 #, sh-format
 msgid "Could not checkout $switch_to"
 msgstr "$switch_to를 체크아웃할 수 없습니다"
 
-#: git-rebase--interactive.sh:865
+#: git-rebase--interactive.sh:879
 msgid "No HEAD?"
 msgstr "HEAD가 없습니다?"
 
-#: git-rebase--interactive.sh:866
+#: git-rebase--interactive.sh:880
 #, sh-format
 msgid "Could not create temporary $state_dir"
 msgstr "임시로 $state_dir 디렉터리를 만들 수 없습니다"
 
-#: git-rebase--interactive.sh:869
+#: git-rebase--interactive.sh:883
 msgid "Could not mark as interactive"
 msgstr "대화형으로 표시할 수 없습니다."
 
-#: git-rebase--interactive.sh:879 git-rebase--interactive.sh:884
-msgid "Could not init rewritten commits"
-msgstr "다시 작성된 커밋을 초기화할 수 없습니다"
-
-#: git-rebase--interactive.sh:910
-msgid "Could not generate todo list"
-msgstr "할 일 목록을 생성할 수 없습니다"
-
-#: git-rebase--interactive.sh:986
+#: git-rebase--interactive.sh:915
 #, sh-format
 msgid "Rebase $shortrevisions onto $shortonto ($todocount command)"
 msgid_plural "Rebase $shortrevisions onto $shortonto ($todocount commands)"
 msgstr[0] "리베이스 $shortrevisions, $shortonto 위로 (명령 $todocount개)"
 
-#: git-rebase--interactive.sh:991
+#: git-rebase--interactive.sh:920
 msgid ""
 "\n"
-"However, if you remove everything, the rebase will be aborted.\n"
+"\tHowever, if you remove everything, the rebase will be aborted.\n"
 "\n"
+"\t"
 msgstr ""
 "\n"
 "하지만 모두 제거할 경우, 리베이스를 중지합니다.\n"
 "\n"
+"\t"
 
-#: git-rebase--interactive.sh:998
+#: git-rebase--interactive.sh:927
 msgid "Note that empty commits are commented out"
 msgstr "단 빈 커밋은 주석 처리되었습니다."
 
+#: git-rebase--interactive.sh:980
+msgid "Could not generate todo list"
+msgstr "할 일 목록을 생성할 수 없습니다"
+
+#: git-rebase--interactive.sh:1001 git-rebase--interactive.sh:1006
+msgid "Could not init rewritten commits"
+msgstr "다시 작성된 커밋을 초기화할 수 없습니다"
+
 #: git-sh-setup.sh:89 git-sh-setup.sh:94
 #, sh-format
 msgid "usage: $dashless $USAGE"
@@ -16043,64 +17131,64 @@ msgstr "스테이징"
 msgid "unstaged"
 msgstr "안스테이징"
 
-#: git-add--interactive.perl:246 git-add--interactive.perl:271
+#: git-add--interactive.perl:253 git-add--interactive.perl:278
 msgid "binary"
 msgstr "바이너리"
 
-#: git-add--interactive.perl:255 git-add--interactive.perl:309
+#: git-add--interactive.perl:262 git-add--interactive.perl:316
 msgid "nothing"
 msgstr "없음"
 
-#: git-add--interactive.perl:291 git-add--interactive.perl:306
+#: git-add--interactive.perl:298 git-add--interactive.perl:313
 msgid "unchanged"
 msgstr "안바뀜"
 
-#: git-add--interactive.perl:602
+#: git-add--interactive.perl:609
 #, perl-format
 msgid "added %d path\n"
 msgid_plural "added %d paths\n"
 msgstr[0] "경로 %d개 추가\n"
 
-#: git-add--interactive.perl:605
+#: git-add--interactive.perl:612
 #, perl-format
 msgid "updated %d path\n"
 msgid_plural "updated %d paths\n"
 msgstr[0] "경로 %d개 업데이트\n"
 
-#: git-add--interactive.perl:608
+#: git-add--interactive.perl:615
 #, perl-format
 msgid "reverted %d path\n"
 msgid_plural "reverted %d paths\n"
 msgstr[0] "경로 %d개 되돌림\n"
 
-#: git-add--interactive.perl:611
+#: git-add--interactive.perl:618
 #, perl-format
 msgid "touched %d path\n"
 msgid_plural "touched %d paths\n"
 msgstr[0] "경로 %d개 건드림\n"
 
-#: git-add--interactive.perl:620
+#: git-add--interactive.perl:627
 msgid "Update"
 msgstr "업데이트"
 
-#: git-add--interactive.perl:632
+#: git-add--interactive.perl:639
 msgid "Revert"
 msgstr "되돌리기"
 
-#: git-add--interactive.perl:655
+#: git-add--interactive.perl:662
 #, perl-format
 msgid "note: %s is untracked now.\n"
 msgstr "주의: %s은(는) 현재 추적하지 않습니다.\n"
 
-#: git-add--interactive.perl:666
+#: git-add--interactive.perl:673
 msgid "Add untracked"
 msgstr "추적하지 않는 파일 추가"
 
-#: git-add--interactive.perl:672
+#: git-add--interactive.perl:679
 msgid "No untracked files.\n"
 msgstr "추적하지 않는 파일 없음.\n"
 
-#: git-add--interactive.perl:1026
+#: git-add--interactive.perl:1033
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
@@ -16108,7 +17196,7 @@ msgstr ""
 "패치가 깔끔하게 적용되면, 편집 부분은 즉시 스테이징으로\n"
 "표시됩니다."
 
-#: git-add--interactive.perl:1029
+#: git-add--interactive.perl:1036
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
@@ -16116,7 +17204,7 @@ msgstr ""
 "패치가 깔끔하게 적용되면, 편집 부분은 즉시 스태시에\n"
 "표시됩니다."
 
-#: git-add--interactive.perl:1032
+#: git-add--interactive.perl:1039
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
@@ -16124,7 +17212,7 @@ msgstr ""
 "패치가 깔끔하게 적용되면, 편집 부분은 즉시 스테이징 아님으로\n"
 "표시됩니다."
 
-#: git-add--interactive.perl:1035 git-add--interactive.perl:1044
+#: git-add--interactive.perl:1042 git-add--interactive.perl:1051
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
@@ -16132,7 +17220,7 @@ msgstr ""
 "패치가 깔끔하게 적용되면, 편집 부분은 즉시 적용으로\n"
 "표시됩니다."
 
-#: git-add--interactive.perl:1038 git-add--interactive.perl:1041
+#: git-add--interactive.perl:1045 git-add--interactive.perl:1048
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
@@ -16140,16 +17228,16 @@ msgstr ""
 "패치가 깔끔하게 적용되면, 편집 부분은 즉시 버림으로\n"
 "표시됩니다."
 
-#: git-add--interactive.perl:1078
+#: git-add--interactive.perl:1085
 #, perl-format
 msgid "failed to open hunk edit file for writing: %s"
 msgstr "부분 편집 파일을 쓰기용으로 여는데 실패: '%s'"
 
-#: git-add--interactive.perl:1079
+#: git-add--interactive.perl:1086
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr "수동 부분 편집 모드 -- 빠른 설명은 맨 아래를 보십시오.\n"
 
-#: git-add--interactive.perl:1085
+#: git-add--interactive.perl:1092
 #, perl-format
 msgid ""
 "---\n"
@@ -16163,7 +17251,7 @@ msgstr ""
 "%s(으)로 시작하는 줄은 제거됩니다\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: git-add--interactive.perl:1093
+#: git-add--interactive.perl:1100
 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"
@@ -16173,7 +17261,7 @@ msgstr ""
 "우,\n"
 "편집은 중단되고 이 부분은 변경되지 않은 상태로 남아있게 됩니다.\n"
 
-#: git-add--interactive.perl:1107
+#: git-add--interactive.perl:1114
 #, perl-format
 msgid "failed to open hunk edit file for reading: %s"
 msgstr "부분 편집 파일을 읽기용으로 여는데 실패: '%s'"
@@ -16184,14 +17272,14 @@ msgstr "부분 편집 파일을 읽기용으로 여는데 실패: '%s'"
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: git-add--interactive.perl:1206
+#: git-add--interactive.perl:1213
 msgid ""
 "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr ""
 "편집한 부분이 적용되지 않습니다. 다시 편집하시겠습니까 (\"no\"라고 하면 버립"
 "니다!) [y/n]? "
 
-#: git-add--interactive.perl:1215
+#: git-add--interactive.perl:1222
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -16205,7 +17293,7 @@ msgstr ""
 "a - 이 부분과 파일의 뒤 부분 모두 스테이징\n"
 "d - 이 부분과 파일의 뒤 부분 모두 스테이징하지 않음"
 
-#: git-add--interactive.perl:1221
+#: git-add--interactive.perl:1228
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -16219,7 +17307,7 @@ msgstr ""
 "a - 이 부분과 파일의 뒤 부분 모두 스태시\n"
 "d - 이 부분과 파일의 뒤 부분 모두 스태시하지 않음"
 
-#: git-add--interactive.perl:1227
+#: git-add--interactive.perl:1234
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -16233,7 +17321,7 @@ msgstr ""
 "a - 이 부분과 파일의 뒤 부분 모두 스테이징 해제\n"
 "d - 이 부분과 파일의 뒤 부분 모두 스테이징 해제하지 않음"
 
-#: git-add--interactive.perl:1233
+#: git-add--interactive.perl:1240
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -16247,7 +17335,7 @@ msgstr ""
 "a - 이 부분과 파일의 뒤 부분 모두 \n"
 "d - 이 부분과 파일의 뒤 부분 모두 적용하지 않음"
 
-#: git-add--interactive.perl:1239
+#: git-add--interactive.perl:1246
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -16261,7 +17349,7 @@ msgstr ""
 "a - 이 부분과 파일의 뒤 부분 모두 버림\n"
 "d - 이 부분과 파일의 뒤 부분 모두 버리지 않음"
 
-#: git-add--interactive.perl:1245
+#: git-add--interactive.perl:1252
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -16275,7 +17363,7 @@ msgstr ""
 "a - 이 부분과 파일의 뒤 부분 모두 버림\n"
 "d - 이 부분과 파일의 뒤 부분 모두 버리지 않음"
 
-#: git-add--interactive.perl:1251
+#: git-add--interactive.perl:1258
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -16289,7 +17377,7 @@ msgstr ""
 "a - 이 부분과 파일의 뒤 부분 모두 \n"
 "d - 이 부분과 파일의 뒤 부분 모두 적용하지 않음"
 
-#: git-add--interactive.perl:1266
+#: git-add--interactive.perl:1273
 msgid ""
 "g - select a hunk to go to\n"
 "/ - search for a hunk matching the given regex\n"
@@ -16311,209 +17399,209 @@ msgstr ""
 "e - 현재 부분을 수동으로 편집\n"
 "? - 도움말 보기\n"
 
-#: git-add--interactive.perl:1297
+#: git-add--interactive.perl:1304
 msgid "The selected hunks do not apply to the index!\n"
 msgstr "선택한 부분은 인덱스에 적용되지 않습니다!\n"
 
-#: git-add--interactive.perl:1298
+#: git-add--interactive.perl:1305
 msgid "Apply them to the worktree anyway? "
 msgstr "그래도 작업 폴더에 적용할까요?"
 
-#: git-add--interactive.perl:1301
+#: git-add--interactive.perl:1308
 msgid "Nothing was applied.\n"
 msgstr "아무 것도 적용되지 않았습니다.\n"
 
-#: git-add--interactive.perl:1312
+#: git-add--interactive.perl:1319
 #, perl-format
 msgid "ignoring unmerged: %s\n"
 msgstr "병합하지 않은 사항 무시: %s\n"
 
-#: git-add--interactive.perl:1321
+#: git-add--interactive.perl:1328
 msgid "Only binary files changed.\n"
 msgstr "바이너리 파일만 바뀌었습니다.\n"
 
-#: git-add--interactive.perl:1323
+#: git-add--interactive.perl:1330
 msgid "No changes.\n"
 msgstr "변경 사항 없음.\n"
 
-#: git-add--interactive.perl:1331
+#: git-add--interactive.perl:1338
 msgid "Patch update"
 msgstr "패치 업데이트"
 
-#: git-add--interactive.perl:1383
+#: git-add--interactive.perl:1390
 #, perl-format
 msgid "Stage mode change [y,n,q,a,d%s,?]? "
 msgstr "모드 변경을 스테이징합니까 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1384
+#: git-add--interactive.perl:1391
 #, perl-format
 msgid "Stage deletion [y,n,q,a,d%s,?]? "
 msgstr "삭제를 스테이징합니까 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1385
+#: git-add--interactive.perl:1392
 #, perl-format
 msgid "Stage this hunk [y,n,q,a,d%s,?]? "
 msgstr "이 부분 스테이징합니까 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1388
+#: git-add--interactive.perl:1395
 #, perl-format
 msgid "Stash mode change [y,n,q,a,d%s,?]? "
 msgstr "모드 변경 스태시합니까 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1389
+#: git-add--interactive.perl:1396
 #, perl-format
 msgid "Stash deletion [y,n,q,a,d%s,?]? "
 msgstr "삭제 스태시합니까 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1390
+#: git-add--interactive.perl:1397
 #, perl-format
 msgid "Stash this hunk [y,n,q,a,d%s,?]? "
 msgstr "이 부분 스태시합니까 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1393
+#: git-add--interactive.perl:1400
 #, perl-format
 msgid "Unstage mode change [y,n,q,a,d%s,?]? "
 msgstr "모드 변경을 스테이지 해제합니까 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1394
+#: git-add--interactive.perl:1401
 #, perl-format
 msgid "Unstage deletion [y,n,q,a,d%s,?]? "
 msgstr "삭제를 스테이지 해제합니까 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1395
+#: git-add--interactive.perl:1402
 #, perl-format
 msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
 msgstr "이 부분을 스테이지 해제합니까 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1398
+#: git-add--interactive.perl:1405
 #, perl-format
 msgid "Apply mode change to index [y,n,q,a,d%s,?]? "
 msgstr "모드 변경을 인덱스에 적용합니까 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1399
+#: git-add--interactive.perl:1406
 #, perl-format
 msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
 msgstr "삭제를 인덱스에 적용합니까 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1400
+#: git-add--interactive.perl:1407
 #, perl-format
 msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
 msgstr "이 부분을 인덱스에 적용합니까 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1403
+#: git-add--interactive.perl:1410
 #, perl-format
 msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
 msgstr "모드 변경을 작업 폴더에서 버립니까 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1404
+#: git-add--interactive.perl:1411
 #, perl-format
 msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
 msgstr "삭제를 작업 폴더에서 버립니까 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1405
+#: git-add--interactive.perl:1412
 #, perl-format
 msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
 msgstr "이 부분을 작업 폴더에서 버립니까 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1408
+#: git-add--interactive.perl:1415
 #, perl-format
 msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "모드 변경을 인덱스와 작업 폴더에서 버립니까 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1409
+#: git-add--interactive.perl:1416
 #, perl-format
 msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "삭제를 인덱스와 작업 폴더에서 버립니까 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1410
+#: git-add--interactive.perl:1417
 #, perl-format
 msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "이 부분을 인덱스와 작업 폴더에서 버립니까 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1413
+#: git-add--interactive.perl:1420
 #, perl-format
 msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "모드 변경을 인덱스와 작업 폴더에 적용합니까 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1414
+#: git-add--interactive.perl:1421
 #, perl-format
 msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "삭제를 인덱스와 작업 폴더에 적용합니까 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1415
+#: git-add--interactive.perl:1422
 #, perl-format
 msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "이 부분을 인덱스와 작업 폴더에 적용합니까 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1515
+#: git-add--interactive.perl:1522
 msgid "No other hunks to goto\n"
 msgstr "이동할 부분이 없습니다\n"
 
-#: git-add--interactive.perl:1522
+#: git-add--interactive.perl:1529
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "어느 부분으로 이동합니까 (더 보려면 <ret>)? "
 
-#: git-add--interactive.perl:1524
+#: git-add--interactive.perl:1531
 msgid "go to which hunk? "
 msgstr "어느 부분으로 이동합니까? "
 
-#: git-add--interactive.perl:1533
+#: git-add--interactive.perl:1540
 #, perl-format
 msgid "Invalid number: '%s'\n"
 msgstr "잘못된 번호: '%s'\n"
 
-#: git-add--interactive.perl:1538
+#: git-add--interactive.perl:1545
 #, 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:1564
+#: git-add--interactive.perl:1571
 msgid "No other hunks to search\n"
 msgstr "검색할 부분이 없습니다\n"
 
-#: git-add--interactive.perl:1568
+#: git-add--interactive.perl:1575
 msgid "search for regex? "
 msgstr "정규식을 검색합니까?"
 
-#: git-add--interactive.perl:1581
+#: git-add--interactive.perl:1588
 #, perl-format
 msgid "Malformed search regexp %s: %s\n"
 msgstr "잘못된 형태의 검색 정규식 %s: %s\n"
 
-#: git-add--interactive.perl:1591
+#: git-add--interactive.perl:1598
 msgid "No hunk matches the given pattern\n"
 msgstr "[주어진 패턴에 맞는 부분이 없습니다\n"
 
-#: git-add--interactive.perl:1603 git-add--interactive.perl:1625
+#: git-add--interactive.perl:1610 git-add--interactive.perl:1632
 msgid "No previous hunk\n"
 msgstr "이전 부분이 없습니다\n"
 
-#: git-add--interactive.perl:1612 git-add--interactive.perl:1631
+#: git-add--interactive.perl:1619 git-add--interactive.perl:1638
 msgid "No next hunk\n"
 msgstr "다음 부분이 없습니다\n"
 
-#: git-add--interactive.perl:1637
+#: git-add--interactive.perl:1644
 msgid "Sorry, cannot split this hunk\n"
 msgstr "미안합니다. 이 부분을 분리 할 수 없습니다\n"
 
-#: git-add--interactive.perl:1643
+#: git-add--interactive.perl:1650
 #, perl-format
 msgid "Split into %d hunk.\n"
 msgid_plural "Split into %d hunks.\n"
 msgstr[0] "%d개 부분으로 나눕니다.\n"
 
-#: git-add--interactive.perl:1653
+#: git-add--interactive.perl:1660
 msgid "Sorry, cannot edit this hunk\n"
 msgstr "미안합니다. 이 부분을 수정할 수 없습니다\n"
 
-#: git-add--interactive.perl:1699
+#: git-add--interactive.perl:1706
 msgid "Review diff"
 msgstr "diff 검토"
 
 #. TRANSLATORS: please do not translate the command names
 #. 'status', 'update', 'revert', etc.
-#: git-add--interactive.perl:1718
+#: git-add--interactive.perl:1725
 msgid ""
 "status        - show paths with changes\n"
 "update        - add working tree state to the staged set of changes\n"
@@ -16531,18 +17619,18 @@ msgstr ""
 "add untracked - 추적되지 않는 파일의 내용을 변경 사항 스테이징 모음에 추가합"
 "니다\n"
 
-#: git-add--interactive.perl:1735 git-add--interactive.perl:1740
-#: git-add--interactive.perl:1743 git-add--interactive.perl:1750
-#: git-add--interactive.perl:1754 git-add--interactive.perl:1760
+#: git-add--interactive.perl:1742 git-add--interactive.perl:1747
+#: git-add--interactive.perl:1750 git-add--interactive.perl:1757
+#: git-add--interactive.perl:1761 git-add--interactive.perl:1767
 msgid "missing --"
 msgstr "-- 빠짐"
 
-#: git-add--interactive.perl:1756
+#: git-add--interactive.perl:1763
 #, perl-format
 msgid "unknown --patch mode: %s"
 msgstr "알 수 없는 --patch 모드: %s"
 
-#: git-add--interactive.perl:1762 git-add--interactive.perl:1768
+#: git-add--interactive.perl:1769 git-add--interactive.perl:1775
 #, perl-format
 msgid "invalid argument %s, expecting --"
 msgstr "인자가 (%s) 잘못되었고, --가 와야 합니다"
@@ -16755,7 +17843,7 @@ msgstr "이 주소로 무엇을 하시겠습니까? ([q]끝내기|[d]버리기|[
 msgid "CA path \"%s\" does not exist"
 msgstr "\"%s\" CA 경로가 없습니다"
 
-#: git-send-email.perl:1395
+#: git-send-email.perl:1400
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -16779,203 +17867,134 @@ msgstr ""
 "    실행하십시오.\n"
 "\n"
 
-#. TRANSLATORS: Make sure to include [y] [n] [q] [a] in your
+#. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1410
-msgid "Send this email? ([y]es|[n]o|[q]uit|[a]ll): "
-msgstr "이 전자메일을 보내시겠습니까? ([y]예|[n]아니오|[q]끝내기|[a]모두): "
+#: git-send-email.perl:1415
+msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
+msgstr ""
+"이 전자메일을 보내시겠습니까? ([y]예|[n]아니오|[e]편집|[q]끝내기|[a]모두): "
 
-#: git-send-email.perl:1413
+#: git-send-email.perl:1418
 msgid "Send this email reply required"
 msgstr "필요한 전자메일 답장 보냅니다"
 
-#: git-send-email.perl:1439
+#: git-send-email.perl:1446
 msgid "The required SMTP server is not properly defined."
 msgstr "필요한 SMTP 서버를 제대로 지정하지 않았습니다."
 
-#: git-send-email.perl:1486
+#: git-send-email.perl:1493
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
 msgstr "서버에서 STARTTLS를 지원하지 않습니다! %s"
 
-#: git-send-email.perl:1491 git-send-email.perl:1495
+#: git-send-email.perl:1498 git-send-email.perl:1502
 #, perl-format
 msgid "STARTTLS failed! %s"
 msgstr "STARTTLS 실패! %s"
 
-#: git-send-email.perl:1505
+#: git-send-email.perl:1512
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
 msgstr ""
 "SMTP를 제대로 초기화할 수 없습니다. 설정을 확인하고 --smtp-debug 옵션을 사용"
 "하십시오."
 
-#: git-send-email.perl:1523
+#: git-send-email.perl:1530
 #, perl-format
 msgid "Failed to send %s\n"
 msgstr "%s을(를) 보내는데 실패했습니다\n"
 
-#: git-send-email.perl:1526
+#: git-send-email.perl:1533
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr "%s 보내는 흉내\n"
 
-#: git-send-email.perl:1526
+#: git-send-email.perl:1533
 #, perl-format
 msgid "Sent %s\n"
 msgstr "%s 보냄\n"
 
-#: git-send-email.perl:1528
+#: git-send-email.perl:1535
 msgid "Dry-OK. Log says:\n"
 msgstr "성공 흉내. 기록은:\n"
 
-#: git-send-email.perl:1528
+#: git-send-email.perl:1535
 msgid "OK. Log says:\n"
 msgstr "성공. 기록은:\n"
 
-#: git-send-email.perl:1540
+#: git-send-email.perl:1547
 msgid "Result: "
 msgstr "결과: "
 
-#: git-send-email.perl:1543
+#: git-send-email.perl:1550
 msgid "Result: OK\n"
 msgstr "결과: 정상\n"
 
-#: git-send-email.perl:1556
+#: git-send-email.perl:1568
 #, perl-format
 msgid "can't open file %s"
 msgstr "%s 파일을 열 수 없습니다"
 
-#: git-send-email.perl:1603 git-send-email.perl:1623
+#: git-send-email.perl:1615 git-send-email.perl:1635
 #, perl-format
 msgid "(mbox) Adding cc: %s from line '%s'\n"
 msgstr "(mbox) cc: %s 추가, '%s' 줄에서\n"
 
-#: git-send-email.perl:1609
+#: git-send-email.perl:1621
 #, perl-format
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) to: %s 추가, '%s' 줄에서\n"
 
-#: git-send-email.perl:1657
+#: git-send-email.perl:1674
 #, perl-format
 msgid "(non-mbox) Adding cc: %s from line '%s'\n"
 msgstr "(mbox아님) cc: %s 추가, '%s' 줄에서\n"
 
-#: git-send-email.perl:1682
+#: git-send-email.perl:1699
 #, perl-format
 msgid "(body) Adding cc: %s from line '%s'\n"
 msgstr "(본문) cc: %s 추가, '%s' 줄에서\n"
 
-#: git-send-email.perl:1788
+#: git-send-email.perl:1817
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) '%s'을 실행할 수 없습니다"
 
-#: git-send-email.perl:1795
+#: git-send-email.perl:1824
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) %s: %s 추가, '%s' 줄에서\n"
 
-#: git-send-email.perl:1799
+#: git-send-email.perl:1828
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) '%s'(을)를 향한 파이프를 닫는데 실패했습니다"
 
-#: git-send-email.perl:1826
+#: git-send-email.perl:1855
 msgid "cannot send message as 7bit"
 msgstr "메시지를 7비트로 보낼 수 없습니다"
 
-#: git-send-email.perl:1834
+#: git-send-email.perl:1863
 msgid "invalid transfer encoding"
 msgstr "잘못된 전송 인코딩"
 
-#: git-send-email.perl:1872 git-send-email.perl:1923 git-send-email.perl:1933
+#: git-send-email.perl:1901 git-send-email.perl:1952 git-send-email.perl:1962
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "%s을(를) 열 수 없습니다: %s\n"
 
-#: git-send-email.perl:1875
+#: git-send-email.perl:1904
 #, perl-format
 msgid "%s: patch contains a line longer than 998 characters"
 msgstr "%s: 패치에 998자보다 더 긴 줄이 들어 있습니다"
 
-#: git-send-email.perl:1891
+#: git-send-email.perl:1920
 #, 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:1895
+#: git-send-email.perl:1924
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "정말로 %s 파일을 보내시겠습니까? [y|N]: "
-
-#~ msgid "git fetch-pack: expected ACK/NAK, got EOF"
-#~ msgstr "git fetch-pack: ACK/NAK가 와야 하지만, EOF를 받았습니다"
-
-#~ msgid "invalid filter-spec expression '%s'"
-#~ msgstr "잘못된 필터 양식 '%s'"
-
-#~ msgid "The copy of the patch that failed is found in: %s"
-#~ msgstr "실패한 패치의 복사본이 다음 위치에 있습니다: %s"
-
-#~ msgid "pathspec and --all are incompatible"
-#~ msgstr "경로명세 및 --all 옵션은 호환되지 않습니다"
-
-#~ msgid "Submodule '$name' ($url) unregistered for path '$displaypath'"
-#~ msgstr ""
-#~ "'$name' 하위 모듈이 ($url) '$displaypath' 경로에 대해 등록되지 않았습니다"
-
-#~ msgid "To/Cc/Bcc fields are not interpreted yet, they have been ignored\n"
-#~ msgstr "To/Cc/Bcc 필드가 해석되지 않아서, 무시합니다\n"
-
-#~ msgid ""
-#~ "empty strings as pathspecs will be made invalid in upcoming releases. "
-#~ "please use . instead if you meant to match all paths"
-#~ msgstr ""
-#~ "경로명세로 빈 문자열을 넣는 일은 다음 릴리스에서 오류로 취급할 예정입니"
-#~ "다. 모든 경로를 지정하려면 점(.)을 사용하십시오."
-
-#~ msgid "unable to open '%s' for writing"
-#~ msgstr "'%s'을(를) 쓰기 용으로 열 수 없습니다"
-
-#~ msgid "could not truncate '%s'"
-#~ msgstr "'%s' 파일을 자를 수 없습니다"
-
-#~ msgid "could not finish '%s'"
-#~ msgstr "'%s'을(를) 마칠 수 없습니다"
-
-#~ msgid "could not close %s"
-#~ msgstr "%s을(를) 닫을 수 없습니다"
-
-#~ msgid "Copied a misnamed branch '%s' away"
-#~ msgstr "이름이 잘못된 '%s' 브랜치를 복사합니다"
-
-#~ msgid "it does not make sense to create 'HEAD' manually"
-#~ msgstr "'HEAD'를 수동으로 만드는 건 앞뒤가 맞지 않습니다"
-
-#~ msgid "Don't know how to clone %s"
-#~ msgstr "%s의 복제 방법을 알지 못합니다"
-
-#~ msgid "show ignored files"
-#~ msgstr "무시되는 파일을 표시합니다"
-
-#~ msgid "%s is not a valid '%s' object"
-#~ msgstr "%s은(는) 올바른 '%s' 오브젝트가 아닙니다"
-
-#~ msgid "Don't know how to fetch from %s"
-#~ msgstr "'%s'에서 가져오는 방법을 알 수 없습니다"
-
-#~ msgid "'$term' is not a valid term"
-#~ msgstr "'$term'이(가) 올바른 용어가 아닙니다"
-
-#~ msgid ""
-#~ "error: unknown option for 'stash save': $option\n"
-#~ "       To provide a message, use git stash save -- '$option'"
-#~ msgstr ""
-#~ "오류: 'stash save'에 대해 알 수 없는 옵션: $option\n"
-#~ "       메시지를 넘기려면, 다음과 같이 쓰십시오: git stash save -- "
-#~ "'$option'"
-
-#~ msgid "Failed to recurse into submodule path '$sm_path'"
-#~ msgstr "재귀적으로 하위 모듈 경로 '$sm_path'에 들어가는데 실패했습니다"
index 8331e777dcba3d60e8521d63c68a93ae68173013..502a32d7e7505a819f44fa59d571d109817e36f0 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
@@ -5,10 +5,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: git 2.16.0\n"
+"Project-Id-Version: git 2.18.0\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2018-03-16 07:29+0800\n"
-"PO-Revision-Date: 2018-03-18 20:55+0100\n"
+"POT-Creation-Date: 2018-06-08 09:03+0800\n"
+"PO-Revision-Date: 2018-06-08 22:53+0100\n"
 "Last-Translator: Peter Krefting <peter@softwolves.pp.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
 "Language: sv\n"
@@ -18,47 +18,47 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Gtranslator 2.91.7\n"
 
-#: advice.c:62
+#: advice.c:92
 #, c-format
-msgid "hint: %.*s\n"
-msgstr "tips: %.*s\n"
+msgid "%shint: %.*s%s\n"
+msgstr "%stips: %.*s%s\n"
 
-#: advice.c:90
+#: advice.c:137
 msgid "Cherry-picking is not possible because you have unmerged files."
 msgstr ""
 "Du kan inte utföra en cherry-pick eftersom du har filer som inte slagits "
 "samman."
 
-#: advice.c:92
+#: advice.c:139
 msgid "Committing is not possible because you have unmerged files."
 msgstr ""
 "Du kan inte utföra en incheckning eftersom du har filer som inte slagits "
 "samman."
 
-#: advice.c:94
+#: advice.c:141
 msgid "Merging is not possible because you have unmerged files."
 msgstr ""
 "Du kan inte utföra en sammanslagning eftersom du har filer som inte slagits "
 "samman."
 
-#: advice.c:96
+#: advice.c:143
 msgid "Pulling is not possible because you have unmerged files."
 msgstr ""
 "Du kan inte utföra en \"pull\" eftersom du har filer som inte slagits samman."
 
-#: advice.c:98
+#: advice.c:145
 msgid "Reverting is not possible because you have unmerged files."
 msgstr ""
 "Du kan inte utföra en \"revert\" eftersom du har filer som inte slagits "
 "samman."
 
-#: advice.c:100
+#: advice.c:147
 #, c-format
 msgid "It is not possible to %s because you have unmerged files."
 msgstr ""
 "Du kan inte utföra en \"%s\" eftersom du har filer som inte slagits samman."
 
-#: advice.c:108
+#: advice.c:155
 msgid ""
 "Fix them up in the work tree, and then use 'git add/rm <file>'\n"
 "as appropriate to mark resolution and make a commit."
@@ -66,23 +66,23 @@ msgstr ""
 "Rätta dem i din arbetskatalog och använd sedan \"git add/rm <fil>\"\n"
 "som lämpligt för att ange lösning och checka in."
 
-#: advice.c:116
+#: advice.c:163
 msgid "Exiting because of an unresolved conflict."
 msgstr "Avslutar på grund av olöst konflikgt."
 
-#: advice.c:121 builtin/merge.c:1251
+#: advice.c:168 builtin/merge.c:1250
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "Du har inte avslutat sammanslagningen (MERGE_HEAD finns)."
 
-#: advice.c:123
+#: advice.c:170
 msgid "Please, commit your changes before merging."
 msgstr "Checka in dina ändringar innan du utför sammanslagningen."
 
-#: advice.c:124
+#: advice.c:171
 msgid "Exiting because of unfinished merge."
 msgstr "Avslutar på grund av ofullbordad sammanslagning."
 
-#: advice.c:130
+#: advice.c:177
 #, c-format
 msgid ""
 "Note: checking out '%s'.\n"
@@ -352,7 +352,7 @@ msgstr "patch misslyckades: %s:%ld"
 msgid "cannot checkout %s"
 msgstr "kan inte checka ut %s"
 
-#: apply.c:3396 apply.c:3407 apply.c:3453 setup.c:277
+#: apply.c:3396 apply.c:3407 apply.c:3453 setup.c:278
 #, c-format
 msgid "failed to read %s"
 msgstr "misslyckades läsa %s"
@@ -553,7 +553,7 @@ msgstr[1] "Tillämpade patchen %%s med %d refuserade..."
 msgid "truncating .rej filename to %.*s.rej"
 msgstr "trunkerar .rej-filnamnet till %.*s.rej"
 
-#: apply.c:4545 builtin/fetch.c:775 builtin/fetch.c:1025
+#: apply.c:4545 builtin/fetch.c:786 builtin/fetch.c:1036
 #, c-format
 msgid "cannot open %s"
 msgstr "kan inte öppna %s"
@@ -607,15 +607,15 @@ msgid_plural "%d lines applied after fixing whitespace errors."
 msgstr[0] "%d rad applicerade efter att ha rättat fel i blanksteg."
 msgstr[1] "%d rader applicerade efter att ha rättat fel i blanksteg."
 
-#: apply.c:4894 builtin/add.c:539 builtin/mv.c:298 builtin/rm.c:390
+#: apply.c:4894 builtin/add.c:538 builtin/mv.c:300 builtin/rm.c:389
 msgid "Unable to write new index file"
 msgstr "Kunde inte skriva ny indexfil"
 
 #: apply.c:4921 apply.c:4924 builtin/am.c:2254 builtin/am.c:2257
-#: builtin/clone.c:118 builtin/fetch.c:127 builtin/pull.c:193
-#: builtin/submodule--helper.c:403 builtin/submodule--helper.c:1197
-#: builtin/submodule--helper.c:1200 builtin/submodule--helper.c:1567
-#: builtin/submodule--helper.c:1570 builtin/submodule--helper.c:1787
+#: builtin/clone.c:120 builtin/fetch.c:126 builtin/pull.c:198
+#: builtin/submodule--helper.c:405 builtin/submodule--helper.c:1210
+#: builtin/submodule--helper.c:1213 builtin/submodule--helper.c:1584
+#: builtin/submodule--helper.c:1587 builtin/submodule--helper.c:1807
 #: git-add--interactive.perl:197
 msgid "path"
 msgstr "sökväg"
@@ -690,7 +690,7 @@ msgstr "se till att åtminstone <n> rader sammanhang är lika"
 
 #: apply.c:4960 builtin/am.c:2242 builtin/interpret-trailers.c:95
 #: builtin/interpret-trailers.c:97 builtin/interpret-trailers.c:99
-#: builtin/pack-objects.c:3035
+#: builtin/pack-objects.c:3177
 msgid "action"
 msgstr "åtgärd"
 
@@ -718,9 +718,9 @@ msgstr "lämna refuserade stycken i motsvarande *.rej-filer"
 msgid "allow overlapping hunks"
 msgstr "tillåt överlappande stycken"
 
-#: apply.c:4977 builtin/add.c:292 builtin/check-ignore.c:21
-#: builtin/commit.c:1276 builtin/count-objects.c:96 builtin/fsck.c:665
-#: builtin/log.c:1901 builtin/mv.c:123 builtin/read-tree.c:125
+#: apply.c:4977 builtin/add.c:290 builtin/check-ignore.c:21
+#: builtin/commit.c:1301 builtin/count-objects.c:98 builtin/fsck.c:666
+#: builtin/log.c:1901 builtin/mv.c:122 builtin/read-tree.c:124
 msgid "be verbose"
 msgstr "var pratsam"
 
@@ -759,98 +759,98 @@ msgstr ""
 msgid "git archive --remote <repo> [--exec <cmd>] --list"
 msgstr "git archive --remote <arkiv> [--exec <kmd>] --list"
 
-#: archive.c:351 builtin/add.c:176 builtin/add.c:515 builtin/rm.c:299
+#: archive.c:351 builtin/add.c:176 builtin/add.c:514 builtin/rm.c:298
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "sökvägsangivelsen \"%s\" motsvarade inte några filer"
 
-#: archive.c:436
+#: archive.c:434
 msgid "fmt"
 msgstr "fmt"
 
-#: archive.c:436
+#: archive.c:434
 msgid "archive format"
 msgstr "arkivformat"
 
-#: archive.c:437 builtin/log.c:1462
+#: archive.c:435 builtin/log.c:1462
 msgid "prefix"
 msgstr "prefix"
 
-#: archive.c:438
+#: archive.c:436
 msgid "prepend prefix to each pathname in the archive"
 msgstr "lägg till prefix till varje sökväg i arkivet"
 
-#: archive.c:439 builtin/blame.c:702 builtin/blame.c:703 builtin/config.c:62
-#: builtin/fast-export.c:1005 builtin/fast-export.c:1007 builtin/grep.c:869
+#: archive.c:437 builtin/blame.c:813 builtin/blame.c:814 builtin/config.c:127
+#: builtin/fast-export.c:1007 builtin/fast-export.c:1009 builtin/grep.c:869
 #: builtin/hash-object.c:103 builtin/ls-files.c:551 builtin/ls-files.c:554
-#: builtin/notes.c:405 builtin/notes.c:568 builtin/read-tree.c:120
+#: builtin/notes.c:405 builtin/notes.c:568 builtin/read-tree.c:119
 #: parse-options.h:165
 msgid "file"
 msgstr "fil"
 
-#: archive.c:440 builtin/archive.c:89
+#: archive.c:438 builtin/archive.c:89
 msgid "write the archive to this file"
 msgstr "skriv arkivet till filen"
 
-#: archive.c:442
+#: archive.c:440
 msgid "read .gitattributes in working directory"
 msgstr "läs .gitattributes i arbetskatalogen"
 
-#: archive.c:443
+#: archive.c:441
 msgid "report archived files on stderr"
 msgstr "rapportera arkiverade filer på standard fel"
 
-#: archive.c:444
+#: archive.c:442
 msgid "store only"
 msgstr "endast spara"
 
-#: archive.c:445
+#: archive.c:443
 msgid "compress faster"
 msgstr "komprimera snabbare"
 
-#: archive.c:453
+#: archive.c:451
 msgid "compress better"
 msgstr "komprimera bättre"
 
-#: archive.c:456
+#: archive.c:454
 msgid "list supported archive formats"
 msgstr "visa understödda arkivformat"
 
-#: archive.c:458 builtin/archive.c:90 builtin/clone.c:108 builtin/clone.c:111
-#: builtin/submodule--helper.c:1209 builtin/submodule--helper.c:1576
+#: archive.c:456 builtin/archive.c:90 builtin/clone.c:110 builtin/clone.c:113
+#: builtin/submodule--helper.c:1222 builtin/submodule--helper.c:1593
 msgid "repo"
 msgstr "arkiv"
 
-#: archive.c:459 builtin/archive.c:91
+#: archive.c:457 builtin/archive.c:91
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "hämta arkivet från fjärrarkivet <arkiv>"
 
-#: archive.c:460 builtin/archive.c:92 builtin/notes.c:489
+#: archive.c:458 builtin/archive.c:92 builtin/notes.c:489
 msgid "command"
 msgstr "kommando"
 
-#: archive.c:461 builtin/archive.c:93
+#: archive.c:459 builtin/archive.c:93
 msgid "path to the remote git-upload-archive command"
 msgstr "sökväg till kommandot git-upload-archive på fjärren"
 
-#: archive.c:468
+#: archive.c:466
 msgid "Unexpected option --remote"
 msgstr "Oväntad flagga --remote"
 
-#: archive.c:470
+#: archive.c:468
 msgid "Option --exec can only be used together with --remote"
 msgstr "Flaggan --exec kan endast användas tillsammans med --remote"
 
-#: archive.c:472
+#: archive.c:470
 msgid "Unexpected option --output"
 msgstr "Oväntad flagga --output"
 
-#: archive.c:494
+#: archive.c:492
 #, c-format
 msgid "Unknown archive format '%s'"
 msgstr "Okänt arkivformat \"%s\""
 
-#: archive.c:501
+#: archive.c:499
 #, c-format
 msgid "Argument not supported for format '%s': -%d"
 msgstr "Argumentet stöd inte för formatet \"%s\": -%d"
@@ -868,22 +868,22 @@ msgstr ""
 "Negativa mönster ignoreras i git-attribut\n"
 "Använd '\\!' för att inleda med ett utropstecken."
 
-#: bisect.c:460
+#: bisect.c:461
 #, c-format
 msgid "Badly quoted content in file '%s': %s"
 msgstr "Felaktigt citerat innehåll i filen \"%s\": %s"
 
-#: bisect.c:668
+#: bisect.c:669
 #, c-format
 msgid "We cannot bisect more!\n"
 msgstr "Det finns inte mer att göra \"bisect\" på!\n"
 
-#: bisect.c:722
+#: bisect.c:723
 #, c-format
 msgid "Not a valid commit name %s"
 msgstr "Namnet på incheckningen är inte giltigt: %s"
 
-#: bisect.c:746
+#: bisect.c:747
 #, c-format
 msgid ""
 "The merge base %s is bad.\n"
@@ -892,7 +892,7 @@ msgstr ""
 "Sammanslagningsbasen %s är trasig.\n"
 "Det betyder att felet har rättats mellan %s och [%s].\n"
 
-#: bisect.c:751
+#: bisect.c:752
 #, c-format
 msgid ""
 "The merge base %s is new.\n"
@@ -901,7 +901,7 @@ msgstr ""
 "Sammanslagningsbasen %s är ny.\n"
 "Egenskapen har ändrats mellan %s och [%s].\n"
 
-#: bisect.c:756
+#: bisect.c:757
 #, c-format
 msgid ""
 "The merge base %s is %s.\n"
@@ -910,7 +910,7 @@ msgstr ""
 "Sammanslagningsbasen %s är %s.\n"
 "Det betyder att den första \"%s\" incheckningen är mellan %s och [%s].\n"
 
-#: bisect.c:764
+#: bisect.c:765
 #, c-format
 msgid ""
 "Some %s revs are not ancestors of the %s rev.\n"
@@ -921,7 +921,7 @@ msgstr ""
 "git bisect kan inte fungera korrekt i detta fall.\n"
 "Kanske du skrev fel %s- och %s-revisioner?\n"
 
-#: bisect.c:777
+#: bisect.c:778
 #, c-format
 msgid ""
 "the merge base between %s and [%s] must be skipped.\n"
@@ -933,36 +933,36 @@ msgstr ""
 "%s.\n"
 "Vi fortsätter ändå."
 
-#: bisect.c:810
+#: bisect.c:811
 #, c-format
 msgid "Bisecting: a merge base must be tested\n"
 msgstr "Bisect: en sammanslagningsbas måste testas\n"
 
-#: bisect.c:850
+#: bisect.c:851
 #, c-format
 msgid "a %s revision is needed"
 msgstr "en %s-revision behövs"
 
-#: bisect.c:869 builtin/notes.c:175 builtin/tag.c:235
+#: bisect.c:870 builtin/notes.c:175 builtin/tag.c:236
 #, c-format
 msgid "could not create file '%s'"
 msgstr "kunde inte skapa filen \"%s\""
 
-#: bisect.c:920
+#: bisect.c:921
 #, c-format
 msgid "could not read file '%s'"
 msgstr "kunde inte läsa filen \"%s\""
 
-#: bisect.c:950
+#: bisect.c:951
 msgid "reading bisect refs failed"
 msgstr "misslyckades läsa bisect-referenser"
 
-#: bisect.c:969
+#: bisect.c:970
 #, c-format
 msgid "%s was both %s and %s\n"
 msgstr "%s var både %s och %s\n"
 
-#: bisect.c:977
+#: bisect.c:978
 #, c-format
 msgid ""
 "No testable commit found.\n"
@@ -971,7 +971,7 @@ msgstr ""
 "Ingen testbar incheckning hittades.\n"
 "Kanske du startade med felaktiga sökvägsparametrar?\n"
 
-#: bisect.c:996
+#: bisect.c:997
 #, c-format
 msgid "(roughly %d step)"
 msgid_plural "(roughly %d steps)"
@@ -981,52 +981,52 @@ msgstr[1] "(ungefär %d steg)"
 #. TRANSLATORS: the last %s will be replaced with "(roughly %d
 #. steps)" translation.
 #.
-#: bisect.c:1002
+#: bisect.c:1003
 #, c-format
 msgid "Bisecting: %d revision left to test after this %s\n"
 msgid_plural "Bisecting: %d revisions left to test after this %s\n"
 msgstr[0] "Bisect: %d revision kvar att testa efter denna %s\n"
 msgstr[1] "Bisect: %d revisioner kvar att testa efter denna %s\n"
 
-#: blame.c:1758
+#: blame.c:1756
 msgid "--contents and --reverse do not blend well."
 msgstr "--contents och --reverse fungerar inte så bra tillsammans."
 
-#: blame.c:1769
+#: blame.c:1767
 msgid "cannot use --contents with final commit object name"
 msgstr "kan inte använda --contents med namn på slutgiltigt incheckningsobjekt"
 
-#: blame.c:1789
+#: blame.c:1787
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr ""
 "--reverse och --first-parent tillsammans kräver att du anger senaste "
 "incheckningen"
 
-#: blame.c:1798 bundle.c:160 ref-filter.c:1978 sequencer.c:1699
-#: sequencer.c:2901 builtin/commit.c:976 builtin/log.c:366 builtin/log.c:920
-#: builtin/log.c:1371 builtin/log.c:1702 builtin/log.c:1950 builtin/merge.c:370
-#: builtin/shortlog.c:191
+#: blame.c:1796 bundle.c:160 ref-filter.c:2075 sequencer.c:1861
+#: sequencer.c:3632 builtin/commit.c:981 builtin/log.c:366 builtin/log.c:920
+#: builtin/log.c:1371 builtin/log.c:1702 builtin/log.c:1950 builtin/merge.c:372
+#: builtin/shortlog.c:192
 msgid "revision walk setup failed"
 msgstr "misslyckades skapa revisionstraversering"
 
-#: blame.c:1816
+#: blame.c:1814
 msgid ""
 "--reverse --first-parent together require range along first-parent chain"
 msgstr ""
 "--reverse --first-parent tillsammans kräver ett intervall på första-förälder-"
 "kedjan"
 
-#: blame.c:1827
+#: blame.c:1825
 #, c-format
 msgid "no such path %s in %s"
 msgstr "sökvägen %s i %s finns inte"
 
-#: blame.c:1838
+#: blame.c:1836
 #, c-format
 msgid "cannot read blob %s for path %s"
 msgstr "kan inte läsa objektet %s för sökvägen %s"
 
-#: branch.c:53
+#: branch.c:54
 #, c-format
 msgid ""
 "\n"
@@ -1039,92 +1039,92 @@ msgstr ""
 "fjärrspårningsinformationen genom att utföra\n"
 "\"git branch --set-upstream-to=%s%s%s\"."
 
-#: branch.c:67
+#: branch.c:68
 #, c-format
 msgid "Not setting branch %s as its own upstream."
 msgstr "Ställer inte in grenen %s som sin egen uppströmsgren."
 
-#: branch.c:93
+#: branch.c:94
 #, c-format
 msgid "Branch '%s' set up to track remote branch '%s' from '%s' by rebasing."
 msgstr ""
 "Grenen %s ställdes in att spåra fjärrgrenen \"%s\" från \"%s\" genom "
 "ombasering."
 
-#: branch.c:94
+#: branch.c:95
 #, c-format
 msgid "Branch '%s' set up to track remote branch '%s' from '%s'."
 msgstr "Grenen %s ställdes in att spåra fjärrgrenen \"%s\" från \"%s\"."
 
-#: branch.c:98
+#: branch.c:99
 #, c-format
 msgid "Branch '%s' set up to track local branch '%s' by rebasing."
 msgstr ""
 "Grenen \"%s\" ställdes in att spåra den lokala grenen \"%s\"  genom "
 "ombasering."
 
-#: branch.c:99
+#: branch.c:100
 #, c-format
 msgid "Branch '%s' set up to track local branch '%s'."
 msgstr "Grenen \"%s\" ställdes in att spåra den lokala grenen \"%s\"."
 
-#: branch.c:104
+#: branch.c:105
 #, c-format
 msgid "Branch '%s' set up to track remote ref '%s' by rebasing."
 msgstr ""
 "Grenen \"%s\" ställdes in att spåra fjärreferensen \"%s\" genom ombasering."
 
-#: branch.c:105
+#: branch.c:106
 #, c-format
 msgid "Branch '%s' set up to track remote ref '%s'."
 msgstr "Grenen \"%s\" ställdes in att spåra fjärreferensen \"%s\"."
 
-#: branch.c:109
+#: branch.c:110
 #, c-format
 msgid "Branch '%s' set up to track local ref '%s' by rebasing."
 msgstr ""
 "Grenen \"%s\" ställdes in att spåra den lokala referensen \"%s\" genom "
 "ombasering."
 
-#: branch.c:110
+#: branch.c:111
 #, c-format
 msgid "Branch '%s' set up to track local ref '%s'."
 msgstr "Grenen \"%s\" ställdes in att spåra den lokala referensen \"%s\"."
 
-#: branch.c:119
+#: branch.c:120
 msgid "Unable to write upstream branch configuration"
 msgstr "Kan inte skriva inställningar för uppströmsgren"
 
-#: branch.c:156
+#: branch.c:157
 #, c-format
 msgid "Not tracking: ambiguous information for ref %s"
 msgstr "Spårar inte: tvetydig information för referensen %s"
 
-#: branch.c:189
+#: branch.c:190
 #, c-format
 msgid "'%s' is not a valid branch name."
 msgstr "\"%s\" är inte ett giltigt grennamn."
 
-#: branch.c:208
+#: branch.c:209
 #, c-format
 msgid "A branch named '%s' already exists."
 msgstr "Det finns redan en gren som heter ”%s”."
 
-#: branch.c:213
+#: branch.c:214
 msgid "Cannot force update the current branch."
 msgstr "Kan inte tvinga uppdatering av aktuell gren."
 
-#: branch.c:233
+#: branch.c:234
 #, c-format
 msgid "Cannot setup tracking information; starting point '%s' is not a branch."
 msgstr "Kan inte ställa in spårning; startpunkten \"%s\" är inte en gren."
 
-#: branch.c:235
+#: branch.c:236
 #, c-format
 msgid "the requested upstream branch '%s' does not exist"
 msgstr "den efterfrågade uppströmsgrenen \"%s\" finns inte"
 
-#: branch.c:237
+#: branch.c:238
 msgid ""
 "\n"
 "If you are planning on basing your work on an upstream\n"
@@ -1144,27 +1144,27 @@ msgstr ""
 "spåra dess fjärrmotsvarighet kan du använda \"git push -u\"\n"
 "för att ställa in uppströmskonfigurationen när du sänder in."
 
-#: branch.c:280
+#: branch.c:281
 #, c-format
 msgid "Not a valid object name: '%s'."
 msgstr "Objektnamnet är inte giltigt: \"%s\"."
 
-#: branch.c:300
+#: branch.c:301
 #, c-format
 msgid "Ambiguous object name: '%s'."
 msgstr "Objektnamnet är tvetydigt: \"%s\"."
 
-#: branch.c:305
+#: branch.c:306
 #, c-format
 msgid "Not a valid branch point: '%s'."
 msgstr "Avgreningspunkten är inte giltig: ”%s”."
 
-#: branch.c:359
+#: branch.c:360
 #, c-format
 msgid "'%s' is already checked out at '%s'"
 msgstr "\"%s\" är redan utcheckad på \"%s\""
 
-#: branch.c:382
+#: branch.c:383
 #, c-format
 msgid "HEAD of working tree %s is not updated"
 msgstr "HEAD i arbetskatalogen %s har inte uppdaterats"
@@ -1179,7 +1179,7 @@ msgstr "'%s' ser inte ut som en v2-bundle-fil"
 msgid "unrecognized header: %s%s (%d)"
 msgstr "okänt huvud: %s%s (%d)"
 
-#: bundle.c:88 sequencer.c:1879 sequencer.c:2337 builtin/commit.c:750
+#: bundle.c:88 sequencer.c:2081 sequencer.c:2558 builtin/commit.c:755
 #, c-format
 msgid "could not open '%s'"
 msgstr "kunde inte öppna \"%s\""
@@ -1223,7 +1223,7 @@ msgstr "rev-list dog"
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "referensen \"%s\" exkluderas av argumenten till rev-list"
 
-#: bundle.c:450 builtin/log.c:183 builtin/log.c:1607 builtin/shortlog.c:296
+#: bundle.c:450 builtin/log.c:183 builtin/log.c:1607 builtin/shortlog.c:303
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "okänt argument: %s"
@@ -1246,18 +1246,39 @@ msgstr "index-pack dog"
 msgid "invalid color value: %.*s"
 msgstr "felaktigt färgvärde: %.*s"
 
-#: commit.c:41 sequencer.c:2141 builtin/am.c:421 builtin/am.c:465
-#: builtin/am.c:1436 builtin/am.c:2072
+#: commit.c:43 sequencer.c:2364 builtin/am.c:421 builtin/am.c:465
+#: builtin/am.c:1436 builtin/am.c:2072 builtin/replace.c:376
+#: builtin/replace.c:448
 #, c-format
 msgid "could not parse %s"
 msgstr "kunde inte tolka %s"
 
-#: commit.c:43
+#: commit.c:45
 #, c-format
 msgid "%s %s is not a commit!"
 msgstr "%s %s är inte en incheckning!"
 
-#: commit.c:1506
+#: commit.c:182
+msgid ""
+"Support for <GIT_DIR>/info/grafts is deprecated\n"
+"and will be removed in a future Git version.\n"
+"\n"
+"Please use \"git replace --convert-graft-file\"\n"
+"to convert the grafts into replace refs.\n"
+"\n"
+"Turn this message off by running\n"
+"\"git config advice.graftFileDeprecated false\""
+msgstr ""
+"Stöd för <GIT_DIR>/info/grafts avråds från och\n"
+"kommer tas bort i en framtida version av Git.\n"
+"\n"
+"Använd \"git replace --convert-graft-file\"\n"
+"för att omvandla grafts till ersättningsreferenser.\n"
+"\n"
+"Slå av detta meddelande genom att skriva\n"
+"\"git config advice.graftFileDeprecated false\""
+
+#: commit.c:1537
 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"
@@ -1267,178 +1288,192 @@ msgstr ""
 "Uppdatera det efter att ha rättat meddelandet, eller ändra variabeln\n"
 "i18n.commitencoding till den teckenkodning som används i ditt projekt.\n"
 
+#: commit-graph.c:669
+#, c-format
+msgid "the commit graph format cannot write %d commits"
+msgstr "formatet på incheckningsgrafen kan inte visa %d incheckningar"
+
+#: commit-graph.c:696
+msgid "too many commits to write graph"
+msgstr "för många incheckningar för att skriva graf"
+
+#: commit-graph.c:707 builtin/init-db.c:516 builtin/init-db.c:521
+#, c-format
+msgid "cannot mkdir %s"
+msgstr "kan inte skapa katalogen (mkdir) %s"
+
 #: compat/obstack.c:405 compat/obstack.c:407
 msgid "memory exhausted"
 msgstr "minnet slut"
 
-#: config.c:186
+#: config.c:187
 msgid "relative config include conditionals must come from files"
 msgstr "relativa konfigureringsinkluderingsvillkor måste komma från filer"
 
-#: config.c:720
+#: config.c:788
 #, c-format
 msgid "bad config line %d in blob %s"
 msgstr "felaktig konfigurationsfil rad %d i blob:en %s"
 
-#: config.c:724
+#: config.c:792
 #, c-format
 msgid "bad config line %d in file %s"
 msgstr "felaktig konfigurationsfil rad %d i filen %s"
 
-#: config.c:728
+#: config.c:796
 #, c-format
 msgid "bad config line %d in standard input"
 msgstr "felaktig konfigurationsfil rad %d i standard in"
 
-#: config.c:732
+#: config.c:800
 #, c-format
 msgid "bad config line %d in submodule-blob %s"
 msgstr "felaktig konfigurationsfil rad %d i undermoduls-blob:en %s"
 
-#: config.c:736
+#: config.c:804
 #, c-format
 msgid "bad config line %d in command line %s"
 msgstr "felaktig konfigurationsfil rad %d i kommandoraden %s"
 
-#: config.c:740
+#: config.c:808
 #, c-format
 msgid "bad config line %d in %s"
 msgstr "felaktig konfigurationsfil rad %d i %s"
 
-#: config.c:868
+#: config.c:936
 msgid "out of range"
 msgstr "utanför intervallet"
 
-#: config.c:868
+#: config.c:936
 msgid "invalid unit"
 msgstr "ogiltig enhet"
 
-#: config.c:874
+#: config.c:942
 #, c-format
 msgid "bad numeric config value '%s' for '%s': %s"
 msgstr "felaktigt numeriskt konfigurationsvärde \"%s\" för \"%s\": %s"
 
-#: config.c:879
+#: config.c:947
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
 msgstr ""
 "felaktigt numeriskt konfigurationsvärde \"%s\" för \"%s\" i blob:en %s: %s"
 
-#: config.c:882
+#: config.c:950
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in file %s: %s"
 msgstr ""
 "felaktigt numeriskt konfigurationsvärde \"%s\" för \"%s\" i filen %s: %s"
 
-#: config.c:885
+#: config.c:953
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
 msgstr ""
 "felaktigt numeriskt konfigurationsvärde \"%s\" för \"%s\" i standard in: %s"
 
-#: config.c:888
+#: config.c:956
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
 msgstr ""
 "felaktigt numeriskt konfigurationsvärde \"%s\" för \"%s\" i undermodul-blob:"
 "en %s: %s"
 
-#: config.c:891
+#: config.c:959
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
 msgstr ""
 "felaktigt numeriskt konfigurationsvärde \"%s\" för \"%s\" i kommandoraden "
 "%s: %s"
 
-#: config.c:894
+#: config.c:962
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in %s: %s"
 msgstr "felaktigt numeriskt konfigurationsvärde \"%s\" för \"%s\" i %s: %s"
 
-#: config.c:989
+#: config.c:1057
 #, c-format
 msgid "failed to expand user dir in: '%s'"
 msgstr "misslyckades expandera användarkatalog i: \"%s\""
 
-#: config.c:998
+#: config.c:1066
 #, c-format
 msgid "'%s' for '%s' is not a valid timestamp"
 msgstr "\"%s\" för \"%s\" är inte en giltig tidsstämpel"
 
-#: config.c:1094 config.c:1105
+#: config.c:1171 config.c:1182
 #, c-format
 msgid "bad zlib compression level %d"
 msgstr "felaktigt zlib-komprimeringsgrad %d"
 
-#: config.c:1225
+#: config.c:1307
 #, c-format
 msgid "invalid mode for object creation: %s"
 msgstr "felaktigt läge för skapande av objekt: %s"
 
-#: config.c:1386
+#: config.c:1473
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "felaktig paketkomprimeringsgrad %d"
 
-#: config.c:1582
+#: config.c:1681
 msgid "unable to parse command-line config"
 msgstr "kan inte tolka kommandoradskonfiguration"
 
-#: config.c:1914
+#: config.c:2013
 msgid "unknown error occurred while reading the configuration files"
 msgstr "okänt fel uppstod vid läsning av konfigurationsfilerna"
 
-#: config.c:2101
+#: config.c:2200
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "Felaktigt %s: \"%s\""
 
-#: config.c:2144
+#: config.c:2243
 #, c-format
 msgid "unknown core.untrackedCache value '%s'; using 'keep' default value"
 msgstr ""
 "okänt värde \"%s\" för core.untrackedCache; använder standardvärdet \"keep\""
 
-#: config.c:2170
+#: config.c:2269
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr "värdet \"%d\" för splitIndex.maxPercentage borde vara mellan 0 och 100"
 
-#: config.c:2195
+#: config.c:2294
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "kunde inte tolka värdet \"%s\" från kommandoradskonfiguration"
 
-#: config.c:2197
+#: config.c:2296
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "felaktig konfigurationsvariabel \"%s\" i filen \"%s\" på rad %d"
 
-#: config.c:2256
+#: config.c:2402
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s har flera värden"
 
-#: config.c:2599 config.c:2816
+#: config.c:2766 config.c:3019
 #, c-format
 msgid "fstat on %s failed"
 msgstr "fstat misslyckades på %s"
 
-#: config.c:2706
+#: config.c:2905
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "kunde inte ställa in \"%s\" till \"%s\""
 
-#: config.c:2708 builtin/remote.c:776
+#: config.c:2907 builtin/remote.c:779
 #, c-format
 msgid "could not unset '%s'"
 msgstr "kunde inte ta bort inställning för \"%s\""
 
-#: connect.c:52
+#: connect.c:61
 msgid "The remote end hung up upon initial contact"
 msgstr "Fjärren lade på vid inledande kontakt"
 
-#: connect.c:54
+#: connect.c:63
 msgid ""
 "Could not read from remote repository.\n"
 "\n"
@@ -1452,7 +1487,7 @@ msgstr ""
 
 # Vague original, not networking-related, but rather related to the actual
 # objects in the database.
-#: connected.c:66 builtin/fsck.c:198 builtin/prune.c:144
+#: connected.c:66 builtin/fsck.c:201 builtin/prune.c:145
 msgid "Checking connectivity"
 msgstr "Kontrollerar konnektivitet"
 
@@ -1468,12 +1503,12 @@ msgstr "kunde inte skriva till rev-list"
 msgid "failed to close rev-list's stdin"
 msgstr "kunde inte stänga rev-list:s standard in"
 
-#: convert.c:205
+#: convert.c:206
 #, c-format
 msgid "CRLF would be replaced by LF in %s."
 msgstr "CRLF skulle ersättas av LF i %s."
 
-#: convert.c:207
+#: convert.c:208
 #, c-format
 msgid ""
 "CRLF will be replaced by LF in %s.\n"
@@ -1482,12 +1517,12 @@ msgstr ""
 "CRLF kommer att ersättas av LF i %s.\n"
 "Filen kommer att ha sina ursprungliga radbrytningar i din arbetskatalog."
 
-#: convert.c:215
+#: convert.c:216
 #, c-format
 msgid "LF would be replaced by CRLF in %s"
 msgstr "LF skulle ersättas av CRLF i %s"
 
-#: convert.c:217
+#: convert.c:218
 #, c-format
 msgid ""
 "LF will be replaced by CRLF in %s.\n"
@@ -1496,6 +1531,49 @@ msgstr ""
 "LF kommer att ersättas av CRLF i %s.\n"
 "Filen kommer att ha sina ursprungliga radbrytningar i din arbetskatalog."
 
+#: convert.c:279
+#, c-format
+msgid "BOM is prohibited in '%s' if encoded as %s"
+msgstr "BOM är förbjudet i \"%s\" om kodat som %s"
+
+#: convert.c:286
+#, c-format
+msgid ""
+"The file '%s' contains a byte order mark (BOM). Please use UTF-%s as working-"
+"tree-encoding."
+msgstr ""
+"Filen \"%s\" innehåller byte order mark (BOM). Använd UTF-%s som "
+"teckenkodning i arbetskatalogen."
+
+#: convert.c:304
+#, c-format
+msgid "BOM is required in '%s' if encoded as %s"
+msgstr "BOM krävs om \"%s\" kodas som %s"
+
+#: convert.c:306
+#, c-format
+msgid ""
+"The file '%s' is missing a byte order mark (BOM). Please use UTF-%sBE or UTF-"
+"%sLE (depending on the byte order) as working-tree-encoding."
+msgstr ""
+"Filen \"%s\" saknar byte order mark (BOM). Använd UTF-%sBE eller UTF-%sLE "
+"(beroende på byteordning) som teckenkodning i arbetskatalogen."
+
+#: convert.c:424
+#, c-format
+msgid "failed to encode '%s' from %s to %s"
+msgstr "misslyckades omkoda \"%s\" från %s till %s"
+
+#: convert.c:467
+#, c-format
+msgid "encoding '%s' from %s to %s and back is not the same"
+msgstr ""
+"omkodning av \"%s\" från %s till %s och tillbaka ger inte samma resultat"
+
+#: convert.c:1225
+msgid "true/false are no valid working-tree-encodings"
+msgstr "true/false är inte giltig teckenkodning för arbetskatalogen"
+
 #: date.c:116
 msgid "in the future"
 msgstr "i framtiden"
@@ -1610,24 +1688,24 @@ msgstr ""
 "Hittade fel i konfigurationsvariabeln \"diff.dirstat\":\n"
 "%s"
 
-#: diff.c:3822
+#: diff.c:3823
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "extern diff dog, stannar vid %s"
 
-#: diff.c:4146
+#: diff.c:4153
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only, --name-status, -check och -s är ömsesidigt uteslutande"
 
-#: diff.c:4149
+#: diff.c:4156
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G, -S och --find-object är ömsesidigt uteslutande"
 
-#: diff.c:4237
+#: diff.c:4244
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow kräver exakt en sökvägsangivelse"
 
-#: diff.c:4403
+#: diff.c:4410
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -1636,46 +1714,46 @@ msgstr ""
 "Misslyckades tolka argument till flaggan --dirstat/-X;\n"
 "%s"
 
-#: diff.c:4417
+#: diff.c:4424
 #, c-format
 msgid "Failed to parse --submodule option parameter: '%s'"
 msgstr "Misslyckades tolka argument till flaggan --submodule: \"%s\""
 
-#: diff.c:5493
+#: diff.c:5500
 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:5496
+#: diff.c:5503
 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:5499
+#: diff.c:5506
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
 msgstr ""
 "du kan sätta variabeln %s till åtminstone %d och försöka kommandot på nytt."
 
-#: dir.c:1866
+#: dir.c:1867
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "kunde inte öppna katalogen \"%s\""
 
-#: dir.c:2108
+#: dir.c:2109
 msgid "failed to get kernel name and information"
 msgstr "misslyckades hämta kärnans namn och information"
 
-#: dir.c:2232
+#: dir.c:2233
 msgid "Untracked cache is disabled on this system or location."
 msgstr "Ospårad cache är inaktiverad på systemet eller platsen."
 
-#: dir.c:3024 dir.c:3029
+#: dir.c:3075 dir.c:3080
 #, c-format
 msgid "could not create directories for %s"
 msgstr "kunde inte skapa kataloger för %s"
 
-#: dir.c:3054
+#: dir.c:3109
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "kunde inte migrera git-katalog från \"%s\" till \"%s\""
@@ -1698,201 +1776,205 @@ msgstr "kunde inte ta status på filen \"%s\""
 msgid "Remote with no URL"
 msgstr "Fjärr utan URL"
 
-#: fetch-pack.c:253
+#: fetch-pack.c:254
 msgid "git fetch-pack: expected shallow list"
 msgstr "git fetch-pack: förväntade grund lista"
 
-#: fetch-pack.c:265
+#: fetch-pack.c:266
 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:284 builtin/archive.c:63
+#: fetch-pack.c:285 builtin/archive.c:63
 #, c-format
 msgid "remote error: %s"
 msgstr "fjärrfel: %s"
 
-#: fetch-pack.c:285
+#: fetch-pack.c:286
 #, 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:337
+#: fetch-pack.c:338
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc kräver ”multi_ack_detailed”"
 
-#: fetch-pack.c:428
+#: fetch-pack.c:429 fetch-pack.c:1310
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "ogiltig \"shallow\"-rad: %s"
 
-#: fetch-pack.c:434
+#: fetch-pack.c:435 fetch-pack.c:1316
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "ogiltig \"unshallow\"-rad: %s"
 
-#: fetch-pack.c:436
+#: fetch-pack.c:437 fetch-pack.c:1318
 #, c-format
 msgid "object not found: %s"
 msgstr "objektet hittades inte: %s"
 
-#: fetch-pack.c:439
+#: fetch-pack.c:440 fetch-pack.c:1321
 #, c-format
 msgid "error in object: %s"
 msgstr "fel i objekt: %s"
 
-#: fetch-pack.c:441
+#: fetch-pack.c:442 fetch-pack.c:1323
 #, c-format
 msgid "no shallow found: %s"
 msgstr "ingen \"shallow\" hittades: %s"
 
-#: fetch-pack.c:444
+#: fetch-pack.c:445 fetch-pack.c:1326
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "förväntade shallow/unshallow, fick %s"
 
-#: fetch-pack.c:485
+#: fetch-pack.c:486
 #, c-format
 msgid "got %s %d %s"
 msgstr "fick %s %d %s"
 
-#: fetch-pack.c:499
+#: fetch-pack.c:500
 #, c-format
 msgid "invalid commit %s"
 msgstr "ogiltig incheckning %s"
 
-#: fetch-pack.c:532
+#: fetch-pack.c:533
 msgid "giving up"
 msgstr "ger upp"
 
-#: fetch-pack.c:542 progress.c:229
+#: fetch-pack.c:543 progress.c:229
 msgid "done"
 msgstr "klart"
 
-#: fetch-pack.c:554
+#: fetch-pack.c:555
 #, c-format
 msgid "got %s (%d) %s"
 msgstr "fick %s (%d) %s"
 
-#: fetch-pack.c:600
+#: fetch-pack.c:601
 #, c-format
 msgid "Marking %s as complete"
 msgstr "Markerar %s som komplett"
 
-#: fetch-pack.c:788
+#: fetch-pack.c:828
 #, c-format
 msgid "already have %s (%s)"
 msgstr "har redan %s (%s)"
 
-#: fetch-pack.c:829
+#: fetch-pack.c:869
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-patch: kunde inte grena av sidbandsmultiplexare"
 
-#: fetch-pack.c:837
+#: fetch-pack.c:877
 msgid "protocol error: bad pack header"
 msgstr "protokollfel: felaktigt packhuvud"
 
-#: fetch-pack.c:895
+#: fetch-pack.c:944
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-patch: kunde inte grena av %s"
 
-#: fetch-pack.c:911
+#: fetch-pack.c:960
 #, c-format
 msgid "%s failed"
 msgstr "%s misslyckades"
 
-#: fetch-pack.c:913
+#: fetch-pack.c:962
 msgid "error in sideband demultiplexer"
 msgstr "fel i sidbands-avmultiplexare"
 
-#: fetch-pack.c:940
+#: fetch-pack.c:989
 msgid "Server does not support shallow clients"
 msgstr "Servern stöder inte klienter med grunda arkiv"
 
-#: fetch-pack.c:944
+#: fetch-pack.c:993
 msgid "Server supports multi_ack_detailed"
 msgstr "Servern stöder \"multi_ack_detailed\""
 
-#: fetch-pack.c:947
+#: fetch-pack.c:996
 msgid "Server supports no-done"
 msgstr "Servern stöder \"no-done\""
 
-#: fetch-pack.c:953
+#: fetch-pack.c:1002
 msgid "Server supports multi_ack"
 msgstr "Servern stöder \"multi_ack\""
 
-#: fetch-pack.c:957
+#: fetch-pack.c:1006
 msgid "Server supports side-band-64k"
 msgstr "Servern stöder \"side-band-64k\""
 
-#: fetch-pack.c:961
+#: fetch-pack.c:1010
 msgid "Server supports side-band"
 msgstr "Servern stöder \"side-band\""
 
-#: fetch-pack.c:965
+#: fetch-pack.c:1014
 msgid "Server supports allow-tip-sha1-in-want"
 msgstr "Servern stöder \"allow-tip-sha1-in-want\""
 
-#: fetch-pack.c:969
+#: fetch-pack.c:1018
 msgid "Server supports allow-reachable-sha1-in-want"
 msgstr "Servern stöder \"allow-reachable-sha1-in-want\""
 
-#: fetch-pack.c:979
+#: fetch-pack.c:1028
 msgid "Server supports ofs-delta"
 msgstr "Servern stöder \"ofs-delta\""
 
-#: fetch-pack.c:985
+#: fetch-pack.c:1034 fetch-pack.c:1204
 msgid "Server supports filter"
 msgstr "Servern stöder filter"
 
-#: fetch-pack.c:993
+#: fetch-pack.c:1042
 #, c-format
 msgid "Server version is %.*s"
 msgstr "Serverversionen är %.*s"
 
-#: fetch-pack.c:999
+#: fetch-pack.c:1048
 msgid "Server does not support --shallow-since"
 msgstr "Servern stöder inte --shallow-since"
 
-#: fetch-pack.c:1003
+#: fetch-pack.c:1052
 msgid "Server does not support --shallow-exclude"
 msgstr "Servern stöder inte --shallow-exclude"
 
-#: fetch-pack.c:1005
+#: fetch-pack.c:1054
 msgid "Server does not support --deepen"
 msgstr "Servern stöder inte --deepen"
 
-#: fetch-pack.c:1016
+#: fetch-pack.c:1065
 msgid "no common commits"
 msgstr "inga gemensamma incheckningar"
 
-#: fetch-pack.c:1028
+#: fetch-pack.c:1077 fetch-pack.c:1414
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-patch: hämtning misslyckades."
 
-#: fetch-pack.c:1190
+#: fetch-pack.c:1199
+msgid "Server does not support shallow requests"
+msgstr "Servern stöder inte grunda förfrågningar"
+
+#: fetch-pack.c:1584
 msgid "no matching remote head"
 msgstr "inget motsvarande fjärrhuvud"
 
-#: fetch-pack.c:1212
+#: fetch-pack.c:1610
 #, c-format
 msgid "no such remote ref %s"
 msgstr "ingen sådan fjärreferens: %s"
 
-#: fetch-pack.c:1215
+#: fetch-pack.c:1613
 #, 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"
 
-#: gpg-interface.c:181
+#: gpg-interface.c:185
 msgid "gpg failed to sign the data"
 msgstr "gpg misslyckades signera data"
 
-#: gpg-interface.c:211
+#: gpg-interface.c:210
 msgid "could not create temporary file"
 msgstr "kunde inte skapa temporära fil"
 
-#: gpg-interface.c:214
+#: gpg-interface.c:213
 #, c-format
 msgid "failed writing detached signature to '%s'"
 msgstr "misslyckades skriva fristående signatur till \"%s\""
@@ -1902,36 +1984,97 @@ msgstr "misslyckades skriva fristående signatur till \"%s\""
 msgid "ignore invalid color '%.*s' in log.graphColors"
 msgstr "ignorera felaktig färg \"%.*s\" i log.graphColors"
 
-#: grep.c:2022
+#: grep.c:2020
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "\"%s\" kunde inte läsa %s"
 
-#: grep.c:2039 setup.c:163 builtin/clone.c:407 builtin/diff.c:81
+#: grep.c:2037 setup.c:164 builtin/clone.c:409 builtin/diff.c:81
 #: builtin/rm.c:134
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "misslyckades ta status på \"%s\""
 
-#: grep.c:2050
+#: grep.c:2048
 #, c-format
 msgid "'%s': short read"
 msgstr "\"%s\": kort läsning"
 
-#: help.c:179
+#: help.c:23
+msgid "start a working area (see also: git help tutorial)"
+msgstr "starta arbetskatalog (se också: git help tutorial)"
+
+#: help.c:24
+msgid "work on the current change (see also: git help everyday)"
+msgstr "jobba med aktuell förändring (se också: git help everyday)"
+
+#: help.c:25
+msgid "examine the history and state (see also: git help revisions)"
+msgstr "utforska historiken och tillståndet (se också: git help revisions)"
+
+#: help.c:26
+msgid "grow, mark and tweak your common history"
+msgstr "utöka, markera och justera din gemensamma historik"
+
+#: help.c:27
+msgid "collaborate (see also: git help workflows)"
+msgstr "samarbeta (se också: git help workflows)"
+
+#: help.c:31
+msgid "Main Porcelain Commands"
+msgstr "Huvudsakliga porslinskommandon"
+
+#: help.c:32
+msgid "Ancillary Commands / Manipulators"
+msgstr "Tilläggskommandon / manipulerare"
+
+#: help.c:33
+msgid "Ancillary Commands / Interrogators"
+msgstr "Tilläggskommandon / frågare"
+
+#: help.c:34
+msgid "Interacting with Others"
+msgstr "Interaktion med andra"
+
+#: help.c:35
+msgid "Low-level Commands / Manipulators"
+msgstr "Lågnivåkommandon / maniupulerare"
+
+#: help.c:36
+msgid "Low-level Commands / Interrogators"
+msgstr "Lågnivåkommandon / frågare"
+
+#: help.c:37
+msgid "Low-level Commands / Synching Repositories"
+msgstr "Lågnivåkommandon / synka arkiv"
+
+#: help.c:38
+msgid "Low-level Commands / Internal Helpers"
+msgstr "Lågnivåkommandon / interna hjälpare"
+
+#: help.c:293
 #, c-format
 msgid "available git commands in '%s'"
 msgstr "git-kommandon tillgängliga i \"%s\""
 
-#: help.c:186
+#: help.c:300
 msgid "git commands available from elsewhere on your $PATH"
 msgstr "git-kommandon från andra platser i din $PATH"
 
-#: help.c:217
+#: help.c:309
 msgid "These are common Git commands used in various situations:"
 msgstr "Dessa vanliga Git-kommandon används i olika situationer:"
 
-#: help.c:281
+#: help.c:358 git.c:90
+#, c-format
+msgid "unsupported command listing type '%s'"
+msgstr "okänd kommandolisttyp \"%s\""
+
+#: help.c:405
+msgid "The common Git guides are:"
+msgstr "De vanliga Git-vägledningarna är:"
+
+#: help.c:467
 #, c-format
 msgid ""
 "'%s' appears to be a git command, but we were not\n"
@@ -1940,32 +2083,32 @@ msgstr ""
 "\"%s\" verkar vara ett git-kommando, men vi kan inte\n"
 "köra det. Kanske git-%s är trasigt?"
 
-#: help.c:336
+#: help.c:526
 msgid "Uh oh. Your system reports no Git commands at all."
 msgstr "Oj då. Ditt system rapporterar inga Git-kommandon alls."
 
-#: help.c:358
+#: help.c:548
 #, c-format
 msgid "WARNING: You called a Git command named '%s', which does not exist."
 msgstr "VARNING: Du anropade ett Git-kommando vid namn \"%s\", som inte finns."
 
-#: help.c:363
+#: help.c:553
 #, c-format
 msgid "Continuing under the assumption that you meant '%s'."
 msgstr "Fortsätter under förutsättningen att du menade ”%s”."
 
-#: help.c:368
+#: help.c:558
 #, c-format
 msgid "Continuing in %0.1f seconds, assuming that you meant '%s'."
 msgstr ""
 "Fortsätter om %0.1f sekunder, under förutsättningen att du menade ”%s”."
 
-#: help.c:376
+#: help.c:566
 #, c-format
 msgid "git: '%s' is not a git command. See 'git --help'."
 msgstr "git: \"%s\" är inte ett git-kommando. Se \"git --help\"."
 
-#: help.c:380
+#: help.c:570
 msgid ""
 "\n"
 "The most similar command is"
@@ -1979,16 +2122,16 @@ msgstr[1] ""
 "\n"
 "Mest lika kommandon är"
 
-#: help.c:395
+#: help.c:585
 msgid "git version [<options>]"
 msgstr "git version [<flaggor>]"
 
-#: help.c:462
+#: help.c:652
 #, c-format
 msgid "%s: %s - %s"
 msgstr "%s: %s - %s"
 
-#: help.c:466
+#: help.c:656
 msgid ""
 "\n"
 "Did you mean this?"
@@ -2056,7 +2199,7 @@ msgstr "tomt ident-namn (för <%s>) ej tillåtet"
 msgid "name consists only of disallowed characters: %s"
 msgstr "namnet består enbart av ej tillåtna tecken: %s"
 
-#: ident.c:416 builtin/commit.c:582
+#: ident.c:416 builtin/commit.c:587
 #, c-format
 msgid "invalid date format: %s"
 msgstr "felaktigt datumformat: %s"
@@ -2094,82 +2237,166 @@ msgstr ""
 msgid "Unable to create '%s.lock': %s"
 msgstr "Kunde inte skapa \"%s.lock\": %s"
 
-#: merge.c:74
+#: merge.c:71
 msgid "failed to read the cache"
 msgstr "misslyckades läsa cachen"
 
-#: merge.c:134 builtin/am.c:1946 builtin/am.c:1980 builtin/checkout.c:378
-#: builtin/checkout.c:599 builtin/clone.c:759
+#: merge.c:136 builtin/am.c:1946 builtin/am.c:1980 builtin/checkout.c:378
+#: builtin/checkout.c:606 builtin/clone.c:761
 msgid "unable to write new index file"
 msgstr "kunde inte skriva ny indexfil"
 
-#: merge-recursive.c:235
+#: merge-recursive.c:298
 msgid "(bad commit)\n"
 msgstr "(felaktig incheckning)\n"
 
-#: merge-recursive.c:257 merge-recursive.c:265
+#: merge-recursive.c:320
+#, c-format
+msgid "add_cacheinfo failed for path '%s'; merge aborting."
+msgstr ""
+"add_cahceinfo misslyckades för sökvägen \"%s\"; avslutar sammanslagningen."
+
+#: merge-recursive.c:328
 #, c-format
-msgid "addinfo_cache failed for path '%s'"
-msgstr "addinfo_cache misslyckades för sökvägen \"%s\""
+msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+msgstr ""
+"add_cacheinfo misslyckades uppdatera för sökvägen \"%s\"; avslutar "
+"sammanslagningen."
 
-#: merge-recursive.c:329
+#: merge-recursive.c:410
 msgid "error building trees"
 msgstr "fel vid byggande av träd"
 
-#: merge-recursive.c:771
+#: merge-recursive.c:881
 #, c-format
 msgid "failed to create path '%s'%s"
 msgstr "misslyckades skapa sökvägen \"%s\"%s"
 
-#: merge-recursive.c:782
+#: merge-recursive.c:892
 #, c-format
 msgid "Removing %s to make room for subdirectory\n"
 msgstr "Tar bort %s för att göra plats för underkatalog\n"
 
-#: merge-recursive.c:796 merge-recursive.c:815
+#: merge-recursive.c:906 merge-recursive.c:925
 msgid ": perhaps a D/F conflict?"
 msgstr ": kanske en K/F-konflikt?"
 
-#: merge-recursive.c:805
+#: merge-recursive.c:915
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
 msgstr "vägrar förlora ospårad fil vid \"%s\""
 
-#: merge-recursive.c:847 builtin/cat-file.c:37
+#: merge-recursive.c:957 builtin/cat-file.c:37
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr "kan inte läsa objektet %s: \"%s\""
 
-#: merge-recursive.c:849
+#: merge-recursive.c:959
 #, c-format
 msgid "blob expected for %s '%s'"
 msgstr "blob förväntades för %s \"%s\""
 
-#: merge-recursive.c:873
+#: merge-recursive.c:983
 #, c-format
 msgid "failed to open '%s': %s"
 msgstr "misslyckades öppna \"%s\": %s"
 
-#: merge-recursive.c:884
+#: merge-recursive.c:994
 #, c-format
 msgid "failed to symlink '%s': %s"
 msgstr "misslyckades skapa symboliska länken \"%s\": %s"
 
-#: merge-recursive.c:889
+#: merge-recursive.c:999
 #, c-format
 msgid "do not know what to do with %06o %s '%s'"
 msgstr "vet inte hur %06o %s \"%s\" skall hanteras"
 
-#: merge-recursive.c:1029
+#: merge-recursive.c:1186
+#, c-format
+msgid "Failed to merge submodule %s (not checked out)"
+msgstr "Misslyckades slå ihop undermodulen %s (ej utcheckad)"
+
+#: merge-recursive.c:1193
+#, c-format
+msgid "Failed to merge submodule %s (commits not present)"
+msgstr "Misslyckades slå ihop undermodulen %s (incheckningar saknas)"
+
+#: merge-recursive.c:1200
+#, c-format
+msgid "Failed to merge submodule %s (commits don't follow merge-base)"
+msgstr ""
+"Misslyckades slå ihop undermodulen %s (incheckningar följer inte "
+"sammanslagningsbasen)"
+
+#: merge-recursive.c:1208 merge-recursive.c:1220
+#, c-format
+msgid "Fast-forwarding submodule %s to the following commit:"
+msgstr "Snabbspolar undermodulen %s till följande incheckning:"
+
+#: merge-recursive.c:1211 merge-recursive.c:1223
+#, c-format
+msgid "Fast-forwarding submodule %s to %s"
+msgstr "Snabbspolar undermodulen %s till %s"
+
+#: merge-recursive.c:1245
+#, c-format
+msgid "Failed to merge submodule %s (merge following commits not found)"
+msgstr ""
+"Misslyckades slå ihop undermodulen %s (sammanslagning efter incheckningar "
+"hittades inte)"
+
+#: merge-recursive.c:1249
+#, c-format
+msgid "Failed to merge submodule %s (not fast-forward)"
+msgstr "Misslyckades slå ihop undermodulen %s (ej snabbspolning)"
+
+#: merge-recursive.c:1250
+msgid "Found a possible merge resolution for the submodule:\n"
+msgstr "Hittade en möjlig lösning av sammanslagning för undermodulen:\n"
+
+#: merge-recursive.c:1253
+#, c-format
+msgid ""
+"If this is correct simply add it to the index for example\n"
+"by using:\n"
+"\n"
+"  git update-index --cacheinfo 160000 %s \"%s\"\n"
+"\n"
+"which will accept this suggestion.\n"
+msgstr ""
+"Om detta är riktigt lägger du bara till det i indexet, till\n"
+"exempel så här:\n"
+"\n"
+"  git update-index --cacheinfo 160000 %s \"%s\"\n"
+"\n"
+"vilket godtar lösningen.\n"
+
+#: merge-recursive.c:1262
+#, c-format
+msgid "Failed to merge submodule %s (multiple merges found)"
+msgstr ""
+"Misslyckades slå ihop undermodulen %s (flera sammanslagningar hittades)"
+
+#: merge-recursive.c:1321
 msgid "Failed to execute internal merge"
 msgstr "Misslyckades exekvera intern sammanslagning"
 
-#: merge-recursive.c:1034
+#: merge-recursive.c:1326
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "Kunde inte lägga till %s till databasen"
 
-#: merge-recursive.c:1146
+#: merge-recursive.c:1358
+#, c-format
+msgid "Auto-merging %s"
+msgstr "Slår ihop %s automatiskt"
+
+#: merge-recursive.c:1423
+#, c-format
+msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+msgstr "Fel: Vägrar förlora ospårad fil vid %s; skriver till %s istället."
+
+#: merge-recursive.c:1475
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -2178,7 +2405,7 @@ msgstr ""
 "KONFLIKT (%s/radera): %s raderad i %s och %s i %s. Versionen %s av %s lämnad "
 "i trädet."
 
-#: merge-recursive.c:1151
+#: merge-recursive.c:1480
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -2187,7 +2414,7 @@ msgstr ""
 "KONFLIKT (%s/radera): %s raderad i %s och %s till %s i %s. Versionen %s av "
 "%s lämnad i trädet."
 
-#: merge-recursive.c:1158
+#: merge-recursive.c:1487
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -2196,7 +2423,7 @@ msgstr ""
 "KONFLIKT (%s/radera): %s raderad i %s och %s i %s. Versionen %s av %s lämnad "
 "i trädet vid %s."
 
-#: merge-recursive.c:1163
+#: merge-recursive.c:1492
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -2205,20 +2432,31 @@ msgstr ""
 "KONFLIKT (%s/radera): %s raderad i %s och %s till %s i %s. Versionen %s av "
 "%s lämnad i trädet vid %s."
 
-#: merge-recursive.c:1197
+#: merge-recursive.c:1526
 msgid "rename"
 msgstr "namnbyte"
 
-#: merge-recursive.c:1197
+#: merge-recursive.c:1526
 msgid "renamed"
 msgstr "namnbytt"
 
-#: merge-recursive.c:1254
+#: merge-recursive.c:1580 merge-recursive.c:1736 merge-recursive.c:2368
+#: merge-recursive.c:3086
+#, c-format
+msgid "Refusing to lose dirty file at %s"
+msgstr "Vägrar förlora lortig fil vid \"%s\""
+
+#: merge-recursive.c:1594
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr "%s är en katalog i %s lägger till som %s istället"
 
-#: merge-recursive.c:1279
+#: merge-recursive.c:1599
+#, c-format
+msgid "Refusing to lose untracked file at %s; adding as %s instead"
+msgstr "Vägrar förlora ospårad fil vid %s; lägger till som %s istället"
+
+#: merge-recursive.c:1625
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
@@ -2227,140 +2465,187 @@ msgstr ""
 "KONFLIKT (namnbyte/namnbyte): Namnbyte \"%s\"->\"%s\" på grenen \"%s\" "
 "namnbyte \"%s\"->\"%s\" i \"%s\"%s"
 
-#: merge-recursive.c:1284
+#: merge-recursive.c:1630
 msgid " (left unresolved)"
 msgstr " (lämnad olöst)"
 
-#: merge-recursive.c:1346
+#: merge-recursive.c:1694
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
 msgstr ""
 "KONFLIKT (namnbyte/namnbyte): Namnbyte %s->%s i %s. Namnbyte %s->%s i %s"
 
-#: merge-recursive.c:1379
+#: merge-recursive.c:1733
 #, c-format
 msgid "Renaming %s to %s and %s to %s instead"
 msgstr "Byter namn på %s till %s och %s till %s istället"
 
-#: merge-recursive.c:1582
+#: merge-recursive.c:1745
+#, c-format
+msgid "Refusing to lose untracked file at %s, even though it's in the way."
+msgstr "Vägrar förlora ospårad fil vid %s, trots att den är i vägen."
+
+#: merge-recursive.c:1951
+#, c-format
+msgid ""
+"CONFLICT (directory rename split): Unclear where to place %s because "
+"directory %s was renamed to multiple other directories, with no destination "
+"getting a majority of the files."
+msgstr ""
+"KONFLIKT (namnändrad delad katalog): Osäker på var %s skall placeras då "
+"katalogen %s bytte namn till flera andra kataloger, utan att någon "
+"destination fick en majoritet av filerna."
+
+#: merge-recursive.c:1983
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
+"implicit directory rename(s) putting the following path(s) there: %s."
+msgstr ""
+"KONFLIKT (implicit nämnändrad kat): Befintlig fil/kat vid %s är i vägen för "
+"implicit namnändrad(e) katalog(er) som lägger dit följande sökväg(ar): %s."
+
+#: merge-recursive.c:1993
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
+"implicit directory renames tried to put these paths there: %s"
+msgstr ""
+"KONFLIKT (implicit namnändrad kat): Kan inte koppla mer än en sökväg till "
+"%s; implicita katalognamnändringar försökte lägga följande sökvägar där: %s"
+
+#: merge-recursive.c:2085
+#, c-format
+msgid ""
+"CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
+">%s in %s"
+msgstr ""
+"KONFLIKT (namnbyte/namnbyte): Namnbytt katalog %s->%s i %s. Namnbytt katalog "
+"%s->%s i %s"
+
+#: merge-recursive.c:2330
+#, c-format
+msgid ""
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
+msgstr ""
+"VARNING: Undviker att applicera namnändring %s -> %s på %s, då %s själv har "
+"bytt namn."
+
+#: merge-recursive.c:2736
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s. %s added in %s"
 msgstr "KONFLIKT (namnbyte/tillägg): Namnbyte %s->%s i %s. %s tillagd i %s"
 
-#: merge-recursive.c:1597
+#: merge-recursive.c:2751
 #, c-format
 msgid "Adding merged %s"
 msgstr "Lägger till sammanslagen %s"
 
-#: merge-recursive.c:1604 merge-recursive.c:1834
+#: merge-recursive.c:2758 merge-recursive.c:3089
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Lägger till som %s istället"
 
-#: merge-recursive.c:1661
+#: merge-recursive.c:2914
 #, c-format
 msgid "cannot read object %s"
 msgstr "kan inte läsa objektet %s"
 
-#: merge-recursive.c:1664
+#: merge-recursive.c:2917
 #, c-format
 msgid "object %s is not a blob"
 msgstr "objektet %s är inte en blob"
 
-#: merge-recursive.c:1733
+#: merge-recursive.c:2986
 msgid "modify"
 msgstr "ändra"
 
-#: merge-recursive.c:1733
+#: merge-recursive.c:2986
 msgid "modified"
 msgstr "ändrad"
 
-#: merge-recursive.c:1743
+#: merge-recursive.c:2997
 msgid "content"
 msgstr "innehåll"
 
-#: merge-recursive.c:1750
+#: merge-recursive.c:3004
 msgid "add/add"
 msgstr "tillägg/tillägg"
 
-#: merge-recursive.c:1786
+#: merge-recursive.c:3046
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "Hoppade över %s (sammanslagen samma som befintlig)"
 
-#: merge-recursive.c:1800
-#, c-format
-msgid "Auto-merging %s"
-msgstr "Slår ihop %s automatiskt"
-
-#: merge-recursive.c:1804 git-submodule.sh:879
+#: merge-recursive.c:3055 git-submodule.sh:895
 msgid "submodule"
 msgstr "undermodul"
 
-#: merge-recursive.c:1805
+#: merge-recursive.c:3056
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr "KONFLIKT (%s): Sammanslagningskonflikt i %s"
 
-#: merge-recursive.c:1899
+#: merge-recursive.c:3178
 #, c-format
 msgid "Removing %s"
 msgstr "Tar bort %s"
 
-#: merge-recursive.c:1925
+#: merge-recursive.c:3204
 msgid "file/directory"
 msgstr "fil/katalog"
 
-#: merge-recursive.c:1931
+#: merge-recursive.c:3210
 msgid "directory/file"
 msgstr "katalog/fil"
 
-#: merge-recursive.c:1938
+#: merge-recursive.c:3217
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
 msgstr ""
 "KONFLIKT (%s): Det finns en katalog med namnet %s i %s. Lägger till %s som %s"
 
-#: merge-recursive.c:1947
+#: merge-recursive.c:3226
 #, c-format
 msgid "Adding %s"
 msgstr "Lägger till %s"
 
-#: merge-recursive.c:1987
+#: merge-recursive.c:3267
 #, c-format
 msgid "Dirty index: cannot merge (dirty: %s)"
 msgstr "Smutsigt index: kan inte slå ihop (smutsiga: %s)"
 
-#: merge-recursive.c:1991
+#: merge-recursive.c:3271
 msgid "Already up to date!"
 msgstr "Redan à jour!"
 
-#: merge-recursive.c:2000
+#: merge-recursive.c:3280
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr "sammanslagning av träden %s och %s misslyckades"
 
-#: merge-recursive.c:2097
+#: merge-recursive.c:3379
 msgid "Merging:"
 msgstr "Slår ihop:"
 
-#: merge-recursive.c:2110
+#: merge-recursive.c:3392
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] "hittade %u gemensam förfader:"
 msgstr[1] "hittade %u gemensamma förfäder:"
 
-#: merge-recursive.c:2149
+#: merge-recursive.c:3431
 msgid "merge returned no commit"
 msgstr "sammanslagningen returnerade ingen incheckning"
 
-#: merge-recursive.c:2212
+#: merge-recursive.c:3495
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "Kunde inte tolka objektet \"%s\""
 
-#: merge-recursive.c:2228 builtin/merge.c:657 builtin/merge.c:816
+#: merge-recursive.c:3511 builtin/merge.c:659 builtin/merge.c:816
 msgid "Unable to write index."
 msgstr "Kunde inte skriva indexet."
 
@@ -2404,30 +2689,30 @@ msgstr "Vägrar skriva över anteckningar i %s (utanför refs/notes/)"
 msgid "Bad %s value: '%s'"
 msgstr "Felaktigt värde på %s: \"%s\""
 
-#: object.c:239
+#: object.c:242
 #, c-format
 msgid "unable to parse object: %s"
 msgstr "kunde inte tolka objektet: %s"
 
-#: packfile.c:561
+#: packfile.c:563
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "offset före slutet av packfilen (trasig .idx?)"
 
-#: packfile.c:1694
+#: packfile.c:1742
 #, 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:1698
+#: packfile.c:1746
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr "offset borton slutet av packindex för %s (trunkerat index?)"
 
-#: parse-options.c:619
+#: parse-options.c:621
 msgid "..."
 msgstr "..."
 
-#: parse-options.c:638
+#: parse-options.c:640
 #, c-format
 msgid "usage: %s"
 msgstr "användning: %s"
@@ -2435,26 +2720,31 @@ msgstr "användning: %s"
 #. TRANSLATORS: the colon here should align with the
 #. one in "usage: %s" translation.
 #.
-#: parse-options.c:644
+#: parse-options.c:646
 #, c-format
 msgid "   or: %s"
 msgstr "     eller: %s"
 
-#: parse-options.c:647
+#: parse-options.c:649
 #, c-format
 msgid "    %s"
 msgstr "    %s"
 
-#: parse-options.c:686
+#: parse-options.c:688
 msgid "-NUM"
 msgstr "-TAL"
 
-#: parse-options-cb.c:108
+#: parse-options-cb.c:44
+#, c-format
+msgid "malformed expiration date '%s'"
+msgstr "trasigt utlöpsdatum: ”%s”"
+
+#: parse-options-cb.c:112
 #, c-format
 msgid "malformed object name '%s'"
 msgstr "felformat objektnamn \"%s\""
 
-#: path.c:891
+#: path.c:892
 #, c-format
 msgid "Could not make %s writable by group"
 msgstr "Kunde inte göra %s skrivbar för gruppen"
@@ -2537,7 +2827,7 @@ msgstr "sökvägsangivelsen \"%s\" är på andra sidan av en symbolisk länk"
 msgid "unable to parse --pretty format"
 msgstr "kunde inte tolka format för --pretty"
 
-#: read-cache.c:1473
+#: read-cache.c:1500
 #, c-format
 msgid ""
 "index.version set, but the value is invalid.\n"
@@ -2546,7 +2836,7 @@ msgstr ""
 "index.version satt, men värdet är ogiltigt.\n"
 "Använder version %i"
 
-#: read-cache.c:1483
+#: read-cache.c:1510
 #, c-format
 msgid ""
 "GIT_INDEX_VERSION set, but the value is invalid.\n"
@@ -2555,52 +2845,53 @@ msgstr ""
 "GIT_INDEX_VERSION satt, men värdet är ogiltigt.\n"
 "Använder version %i"
 
-#: read-cache.c:2375 sequencer.c:3248 wrapper.c:658 builtin/merge.c:1049
+#: read-cache.c:2404 sequencer.c:4338 wrapper.c:658 builtin/merge.c:1048
 #, c-format
 msgid "could not close '%s'"
 msgstr "kunde inte stänga \"%s\""
 
-#: read-cache.c:2448 sequencer.c:1900 sequencer.c:2627
+#: read-cache.c:2477 sequencer.c:2102 sequencer.c:3234
 #, c-format
 msgid "could not stat '%s'"
 msgstr "kunde inte ta status på \"%s\""
 
-#: read-cache.c:2461
+#: read-cache.c:2490
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr "kunde inte öppna git-katalog: %s"
 
-#: read-cache.c:2473
+#: read-cache.c:2502
 #, c-format
 msgid "unable to unlink: %s"
 msgstr "misslyckades ta bort länken: %s"
 
-#: refs.c:706
+#: refs.c:732 sequencer.c:4334 sequencer.c:4393 wrapper.c:225 wrapper.c:395
+#: builtin/am.c:779
 #, c-format
-msgid "Could not open '%s' for writing"
-msgstr "Kunde inte öppna \"%s\" för skrivning"
+msgid "could not open '%s' for writing"
+msgstr "kunde inte öppna \"%s\" för skrivning"
 
-#: refs.c:1850
+#: refs.c:1880
 msgid "ref updates forbidden inside quarantine environment"
 msgstr "referensuppdateringar förbjudna i karantänmiljö"
 
-#: refs/files-backend.c:1189
+#: refs/files-backend.c:1191
 #, c-format
 msgid "could not remove reference %s"
 msgstr "kunde inte ta bort referensen %s"
 
-#: refs/files-backend.c:1203 refs/packed-backend.c:1528
-#: refs/packed-backend.c:1538
+#: refs/files-backend.c:1205 refs/packed-backend.c:1531
+#: refs/packed-backend.c:1541
 #, c-format
 msgid "could not delete reference %s: %s"
 msgstr "kunde inte ta bort referensen %s: %s"
 
-#: refs/files-backend.c:1206 refs/packed-backend.c:1541
+#: refs/files-backend.c:1208 refs/packed-backend.c:1544
 #, c-format
 msgid "could not delete references: %s"
 msgstr "kunde inte ta bort referenser: %s"
 
-#: ref-filter.c:35 wt-status.c:1842
+#: ref-filter.c:35 wt-status.c:1850
 msgid "gone"
 msgstr "försvunnen"
 
@@ -2619,157 +2910,162 @@ msgstr "bakom %d"
 msgid "ahead %d, behind %d"
 msgstr "före %d, bakom %d"
 
-#: ref-filter.c:107
+#: ref-filter.c:121
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr "förväntat format: %%(color:<color>)"
 
-#: ref-filter.c:109
+#: ref-filter.c:123
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr "okänd färg: %%(color:%s)"
 
-#: ref-filter.c:129
+#: ref-filter.c:145
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr "Heltalsvärde förväntades refname:lstrip=%s"
 
-#: ref-filter.c:133
+#: ref-filter.c:149
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr "Heltalsvärde förväntades refname:rstrip=%s"
 
-#: ref-filter.c:135
+#: ref-filter.c:151
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr "okänt %%(%s)-argument: %s"
 
-#: ref-filter.c:184
+#: ref-filter.c:206
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr "%%(body) tar inte argument"
 
-#: ref-filter.c:191
+#: ref-filter.c:215
 #, c-format
 msgid "%%(subject) does not take arguments"
 msgstr "%%(subject) tar inte argument"
 
-#: ref-filter.c:209
+#: ref-filter.c:235
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr "okänt %%(trailers)-argument: %s"
 
-#: ref-filter.c:232
+#: ref-filter.c:264
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr "positivt värde förväntat contents:lines=%s"
 
-#: ref-filter.c:234
+#: ref-filter.c:266
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr "okänt %%(contents)-argument: %s"
 
-#: ref-filter.c:247
+#: ref-filter.c:281
 #, c-format
 msgid "positive value expected objectname:short=%s"
 msgstr "positivt värde förväntat objectname:short=%s"
 
-#: ref-filter.c:251
+#: ref-filter.c:285
 #, c-format
 msgid "unrecognized %%(objectname) argument: %s"
 msgstr "okänt %%(objectname)-argument: %s"
 
-#: ref-filter.c:278
+#: ref-filter.c:315
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr "förväntat format: %%(align:<bredd>,<position>)"
 
-#: ref-filter.c:290
+#: ref-filter.c:327
 #, c-format
 msgid "unrecognized position:%s"
 msgstr "okänd position:%s"
 
-#: ref-filter.c:294
+#: ref-filter.c:334
 #, c-format
 msgid "unrecognized width:%s"
 msgstr "okänd bredd:%s"
 
-#: ref-filter.c:300
+#: ref-filter.c:343
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr "okänt %%(align)-argument: %s"
 
-#: ref-filter.c:304
+#: ref-filter.c:351
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr "positiv bredd förväntad med atomen %%(align)"
 
-#: ref-filter.c:319
+#: ref-filter.c:369
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
 msgstr "okänt %%(if)-argument: %s"
 
-#: ref-filter.c:409
+#: ref-filter.c:464
 #, c-format
 msgid "malformed field name: %.*s"
 msgstr "felformat fältnamn: %.*s"
 
-#: ref-filter.c:435
+#: ref-filter.c:491
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr "okänt fältnamn: %.*s"
 
-#: ref-filter.c:547
+#: ref-filter.c:608
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr "format: atomen %%(if) använd utan en %%(then)-atom"
 
-#: ref-filter.c:607
+#: ref-filter.c:671
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr "format: atomen %%(then) använd utan en %%(if)-atom"
 
-#: ref-filter.c:609
+#: ref-filter.c:673
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr "format: atomen %%(then) använd mer än en gång"
 
-#: ref-filter.c:611
+#: ref-filter.c:675
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr "format: atomen %%(then) använd efter %%(else)"
 
-#: ref-filter.c:637
+#: ref-filter.c:703
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr "format: atomen %%(else) använd utan en %%(if)-atom"
 
-#: ref-filter.c:639
+#: ref-filter.c:705
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr "format: atomen %%(else) använd utan en %%(then)-atom"
 
-#: ref-filter.c:641
+#: ref-filter.c:707
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr "format: atomen %%(else) använd mer än en gång"
 
-#: ref-filter.c:654
+#: ref-filter.c:722
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr "format: atomen %%(end) använd utan motsvarande atom"
 
-#: ref-filter.c:709
+#: ref-filter.c:779
 #, c-format
 msgid "malformed format string %s"
 msgstr "felformad formatsträng %s"
 
-#: ref-filter.c:1313
+#: ref-filter.c:1387
 #, c-format
 msgid "(no branch, rebasing %s)"
 msgstr "(ingen gren, ombaserar %s)"
 
-#: ref-filter.c:1316
+#: ref-filter.c:1390
+#, c-format
+msgid "(no branch, rebasing detached HEAD %s)"
+msgstr "(ingen gren, ombaserar frånkopplat HEAD %s)"
+
+#: ref-filter.c:1393
 #, c-format
 msgid "(no branch, bisect started on %s)"
 msgstr "(ingen gren, \"bisect\" startad på %s)"
@@ -2777,7 +3073,7 @@ msgstr "(ingen gren, \"bisect\" startad på %s)"
 #. TRANSLATORS: make sure this matches "HEAD
 #. detached at " in wt-status.c
 #.
-#: ref-filter.c:1324
+#: ref-filter.c:1401
 #, c-format
 msgid "(HEAD detached at %s)"
 msgstr "(HEAD frånkopplat vid %s)"
@@ -2785,147 +3081,147 @@ msgstr "(HEAD frånkopplat vid %s)"
 #. TRANSLATORS: make sure this matches "HEAD
 #. detached from " in wt-status.c
 #.
-#: ref-filter.c:1331
+#: ref-filter.c:1408
 #, c-format
 msgid "(HEAD detached from %s)"
 msgstr "(HEAD frånkopplat från %s)"
 
-#: ref-filter.c:1335
+#: ref-filter.c:1412
 msgid "(no branch)"
 msgstr "(ingen gren)"
 
-#: ref-filter.c:1364
+#: ref-filter.c:1442
 #, c-format
 msgid "missing object %s for %s"
 msgstr "objektet %s saknas för %s"
 
-#: ref-filter.c:1367
+#: ref-filter.c:1445
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr "parse_object_buffer misslyckades på %s för %s"
 
-#: ref-filter.c:1819
+#: ref-filter.c:1902
 #, c-format
 msgid "malformed object at '%s'"
 msgstr "felformat objekt vid \"%s\""
 
-#: ref-filter.c:1886
+#: ref-filter.c:1984
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr "ignorerar referens med trasigt namn %s"
 
-#: ref-filter.c:1891
+#: ref-filter.c:1989
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "ignorerar trasig referens %s"
 
-#: ref-filter.c:2152
+#: ref-filter.c:2261
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr "format: atomen %%(end) saknas"
 
-#: ref-filter.c:2246
+#: ref-filter.c:2365
 #, c-format
 msgid "malformed object name %s"
 msgstr "felformat objektnamn %s"
 
-#: remote.c:795
+#: remote.c:605
 #, c-format
 msgid "Cannot fetch both %s and %s to %s"
 msgstr "Kan inte hämta både %s och %s till %s"
 
-#: remote.c:799
+#: remote.c:609
 #, c-format
 msgid "%s usually tracks %s, not %s"
 msgstr "%s spårar vanligtvis %s, inte %s"
 
-#: remote.c:803
+#: remote.c:613
 #, c-format
 msgid "%s tracks both %s and %s"
 msgstr "%s spårar både %s och %s"
 
-#: remote.c:811
+#: remote.c:621
 msgid "Internal error"
 msgstr "Internt fel"
 
-#: remote.c:1726 remote.c:1828
+#: remote.c:1534 remote.c:1635
 msgid "HEAD does not point to a branch"
 msgstr "HEAD pekar inte på en gren"
 
-#: remote.c:1735
+#: remote.c:1543
 #, c-format
 msgid "no such branch: '%s'"
 msgstr "okänd gren: \"%s\""
 
-#: remote.c:1738
+#: remote.c:1546
 #, c-format
 msgid "no upstream configured for branch '%s'"
 msgstr "ingen standarduppström angiven för grenen \"%s\""
 
-#: remote.c:1744
+#: remote.c:1552
 #, c-format
 msgid "upstream branch '%s' not stored as a remote-tracking branch"
 msgstr "uppströmsgrenen \"%s\" är inte lagrad som en fjärrspårande gren"
 
-#: remote.c:1759
+#: remote.c:1567
 #, c-format
 msgid "push destination '%s' on remote '%s' has no local tracking branch"
 msgstr "push-målet \"%s\" på fjärren \"%s\" har ingen lokalt spårande gren"
 
-#: remote.c:1771
+#: remote.c:1579
 #, c-format
 msgid "branch '%s' has no remote for pushing"
 msgstr "grenen \"%s\" har ingen fjärr för \"push\""
 
-#: remote.c:1782
+#: remote.c:1589
 #, c-format
 msgid "push refspecs for '%s' do not include '%s'"
 msgstr "\"push\"-referensspecifikation för \"%s\" innehåller inte \"%s\""
 
-#: remote.c:1795
+#: remote.c:1602
 msgid "push has no destination (push.default is 'nothing')"
 msgstr "\"push\" har inget mål (push.default är \"ingenting\")"
 
-#: remote.c:1817
+#: remote.c:1624
 msgid "cannot resolve 'simple' push to a single destination"
 msgstr "\"enkel push\" motsvarar flera olika mål"
 
-#: remote.c:2132
+#: remote.c:1939
 #, c-format
 msgid "Your branch is based on '%s', but the upstream is gone.\n"
 msgstr "Din gren är baserad på \"%s\", men den har försvunnit uppströms.\n"
 
-#: remote.c:2136
+#: remote.c:1943
 msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
 msgstr "  (använd \"git branch --unset-upstream\" för att rätta)\n"
 
-#: remote.c:2139
+#: remote.c:1946
 #, c-format
 msgid "Your branch is up to date with '%s'.\n"
 msgstr "Din gren är à jour med \"%s\".\n"
 
-#: remote.c:2143
+#: remote.c:1950
 #, c-format
 msgid "Your branch and '%s' refer to different commits.\n"
 msgstr "Din gren och \"%s\" pekar på olika incheckningar.\n"
 
-#: remote.c:2146
+#: remote.c:1953
 #, c-format
 msgid "  (use \"%s\" for details)\n"
 msgstr "  (använd \"%s\" för detaljer)\n"
 
-#: remote.c:2150
+#: remote.c:1957
 #, c-format
 msgid "Your branch is ahead of '%s' by %d commit.\n"
 msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
 msgstr[0] "Din gren ligger före \"%s\" med %d incheckning.\n"
 msgstr[1] "Din gren ligger före \"%s\" med %d incheckningar.\n"
 
-#: remote.c:2156
+#: remote.c:1963
 msgid "  (use \"git push\" to publish your local commits)\n"
 msgstr "  (använd \"git push\" för att publicera dina lokala incheckningar)\n"
 
-#: remote.c:2159
+#: remote.c:1966
 #, c-format
 msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
 msgid_plural ""
@@ -2935,11 +3231,11 @@ msgstr[0] ""
 msgstr[1] ""
 "Din gren ligger efter \"%s\" med %d incheckningar, och kan snabbspolas.\n"
 
-#: remote.c:2167
+#: remote.c:1974
 msgid "  (use \"git pull\" to update your local branch)\n"
 msgstr "  (använd \"git pull\" för att uppdatera din lokala gren)\n"
 
-#: remote.c:2170
+#: remote.c:1977
 #, c-format
 msgid ""
 "Your branch and '%s' have diverged,\n"
@@ -2954,28 +3250,28 @@ msgstr[1] ""
 "Din gren och \"%s\" har divergerat,\n"
 "och har %d respektive %d olika incheckningar.\n"
 
-#: remote.c:2180
+#: remote.c:1987
 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"
 
-#: revision.c:2277
+#: revision.c:2289
 msgid "your current branch appears to be broken"
 msgstr "din nuvarande gren verkar vara trasig"
 
-#: revision.c:2280
+#: revision.c:2292
 #, 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:2477
+#: revision.c:2489
 msgid "--first-parent is incompatible with --bisect"
 msgstr "--first-parent är inkompatibelt med --bisect"
 
-#: run-command.c:731
+#: run-command.c:728
 msgid "open /dev/null failed"
 msgstr "misslyckades öppna /dev/null"
 
-#: run-command.c:1274
+#: run-command.c:1271
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
@@ -3022,29 +3318,34 @@ msgstr "mottagarsidan stöder inte push med --atomic"
 msgid "the receiving end does not support push options"
 msgstr "mottagarsidan stöder inte push-flaggor"
 
-#: sequencer.c:158
+#: sequencer.c:175
 #, c-format
 msgid "invalid commit message cleanup mode '%s'"
 msgstr "felaktigt incheckningsmeddelandestädningsläge \"%s\""
 
-#: sequencer.c:267
+#: sequencer.c:275
+#, c-format
+msgid "could not delete '%s'"
+msgstr "kunde inte ta bort \"%s\""
+
+#: sequencer.c:301
 msgid "revert"
 msgstr "revert"
 
-#: sequencer.c:269
+#: sequencer.c:303
 msgid "cherry-pick"
 msgstr "cherry-pick"
 
-#: sequencer.c:271
+#: sequencer.c:305
 msgid "rebase -i"
 msgstr "rebase -i"
 
-#: sequencer.c:273
+#: sequencer.c:307
 #, c-format
 msgid "Unknown action: %d"
 msgstr "Okänd funktion: %d"
 
-#: sequencer.c:330
+#: sequencer.c:364
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'"
@@ -3052,7 +3353,7 @@ msgstr ""
 "efter att ha löst konflikterna, markera de rättade sökvägarna\n"
 "med \"git add <sökvägar>\" eller \"git rm <sökvägar>\""
 
-#: sequencer.c:333
+#: sequencer.c:367
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'\n"
@@ -3062,43 +3363,45 @@ msgstr ""
 "med \"git add <sökvägar>\" eller \"git rm <sökvägar>\"\n"
 "och checka in resultatet med \"git commit\""
 
-#: sequencer.c:346 sequencer.c:2245
+#: sequencer.c:380 sequencer.c:2468
 #, c-format
 msgid "could not lock '%s'"
 msgstr "kunde inte låsa \"%s\""
 
-#: sequencer.c:349 sequencer.c:2124 sequencer.c:2250 sequencer.c:2264
-#: sequencer.c:3246 sequencer.c:3310 wrapper.c:656
+#: sequencer.c:382 sequencer.c:2346 sequencer.c:2472 sequencer.c:2486
+#: sequencer.c:2694 sequencer.c:4336 sequencer.c:4399 wrapper.c:656
 #, c-format
 msgid "could not write to '%s'"
 msgstr "kunde inte skriva till \"%s\""
 
-#: sequencer.c:353
+#: sequencer.c:387
 #, c-format
 msgid "could not write eol to '%s'"
 msgstr "kunde inte skriva radslut till \"%s\""
 
-#: sequencer.c:356 sequencer.c:2128 sequencer.c:2252
+#: sequencer.c:392 sequencer.c:2351 sequencer.c:2474 sequencer.c:2488
+#: sequencer.c:2702
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr "misslyckades färdigställa \"%s\""
 
-#: sequencer.c:379 sequencer.c:1340 sequencer.c:2148 builtin/am.c:259
-#: builtin/commit.c:722 builtin/merge.c:1047
+#: sequencer.c:415 sequencer.c:804 sequencer.c:1493 sequencer.c:2371
+#: sequencer.c:2684 sequencer.c:2788 builtin/am.c:259 builtin/commit.c:727
+#: builtin/merge.c:1046
 #, c-format
 msgid "could not read '%s'"
 msgstr "kunde inte läsa \"%s\""
 
-#: sequencer.c:405
+#: sequencer.c:441
 #, c-format
 msgid "your local changes would be overwritten by %s."
 msgstr "dina lokala ändringar skulle skrivas över av %s."
 
-#: sequencer.c:409
+#: sequencer.c:445
 msgid "commit your changes or stash them to proceed."
 msgstr "checka in dina ändringar eller använd \"stash\" för att fortsätta."
 
-#: sequencer.c:438
+#: sequencer.c:474
 #, c-format
 msgid "%s: fast-forward"
 msgstr "%s: snabbspola"
@@ -3106,20 +3409,20 @@ msgstr "%s: snabbspola"
 #. TRANSLATORS: %s will be "revert", "cherry-pick" or
 #. "rebase -i".
 #.
-#: sequencer.c:526
+#: sequencer.c:563
 #, c-format
 msgid "%s: Unable to write new index file"
 msgstr "%s: Kunde inte skriva ny indexfil"
 
-#: sequencer.c:542
-msgid "could not resolve HEAD commit"
-msgstr "kunde inte bestämma HEAD:s incheckning"
-
-#: sequencer.c:562
+#: sequencer.c:579
 msgid "unable to update cache tree"
 msgstr "kan inte uppdatera cacheträd"
 
-#: sequencer.c:658
+#: sequencer.c:592
+msgid "could not resolve HEAD commit"
+msgstr "kunde inte bestämma HEAD:s incheckning"
+
+#: sequencer.c:749
 #, c-format
 msgid ""
 "you have staged changes in your working tree\n"
@@ -3148,11 +3451,15 @@ msgstr ""
 "\n"
 "  git rebase --continue\n"
 
-#: sequencer.c:915
+#: sequencer.c:818
+msgid "writing root commit"
+msgstr "skriver rotincheckning"
+
+#: sequencer.c:1043
 msgid "'prepare-commit-msg' hook failed"
 msgstr "kroken \"prepare-commit-msg\" misslyckades"
 
-#: sequencer.c:922
+#: sequencer.c:1050
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -3179,7 +3486,7 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:935
+#: sequencer.c:1063
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -3204,329 +3511,315 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:975
+#: sequencer.c:1103
 msgid "couldn't look up newly created commit"
 msgstr "kunde inte slå upp en precis skapad incheckning"
 
-#: sequencer.c:977
+#: sequencer.c:1105
 msgid "could not parse newly created commit"
 msgstr "kunde inte tolka en precis skapad incheckning"
 
-#: sequencer.c:1023
+#: sequencer.c:1151
 msgid "unable to resolve HEAD after creating commit"
 msgstr "kunde inte bestämma HEAD efter att ha skapat incheckning"
 
-#: sequencer.c:1025
+#: sequencer.c:1153
 msgid "detached HEAD"
 msgstr "frånkopplad HEAD"
 
-#: sequencer.c:1029
+#: sequencer.c:1157
 msgid " (root-commit)"
 msgstr " (rotincheckning)"
 
-#: sequencer.c:1050
+#: sequencer.c:1178
 msgid "could not parse HEAD"
 msgstr "kunde inte tolka HEAD"
 
-#: sequencer.c:1052
+#: sequencer.c:1180
 #, c-format
 msgid "HEAD %s is not a commit!"
 msgstr "HEAD %s är inte en incheckning!"
 
-#: sequencer.c:1056 builtin/commit.c:1491
+#: sequencer.c:1184 builtin/commit.c:1528
 msgid "could not parse HEAD commit"
 msgstr "kunde inte tolka HEAD:s incheckning"
 
-#: sequencer.c:1107 sequencer.c:1673
+#: sequencer.c:1235 sequencer.c:1832
 msgid "unable to parse commit author"
 msgstr "kunde inte tolka incheckningens författare"
 
-#: sequencer.c:1117 builtin/am.c:1630 builtin/merge.c:643
+#: sequencer.c:1245 builtin/am.c:1630 builtin/merge.c:645
 msgid "git write-tree failed to write a tree"
 msgstr "git write-tree misslyckades skriva ett träd"
 
-#: sequencer.c:1134 sequencer.c:1186
+#: sequencer.c:1262 sequencer.c:1317
 #, c-format
 msgid "unable to read commit message from '%s'"
 msgstr "kunde inte läsa incheckningsmeddelande från \"%s\""
 
-#: sequencer.c:1154 builtin/am.c:1650 builtin/commit.c:1594 builtin/merge.c:826
-#: builtin/merge.c:851
+#: sequencer.c:1284 builtin/am.c:1650 builtin/commit.c:1631 builtin/merge.c:825
+#: builtin/merge.c:850
 msgid "failed to write commit object"
 msgstr "kunde inte skriva incheckningsobjekt"
 
-#: sequencer.c:1213
+#: sequencer.c:1344
 #, c-format
 msgid "could not parse commit %s"
 msgstr "kunde inte tolka incheckningen %s"
 
-#: sequencer.c:1218
+#: sequencer.c:1349
 #, c-format
 msgid "could not parse parent commit %s"
 msgstr "kunde inte tolka föräldraincheckningen %s"
 
-#: sequencer.c:1347
-#, c-format
-msgid ""
-"unexpected 1st line of squash message:\n"
-"\n"
-"\t%.*s"
-msgstr ""
-"oväntad första rad i squash-meddelande:\n"
-"\n"
-"\t%.*s"
-
-#: sequencer.c:1353
-#, c-format
-msgid ""
-"invalid 1st line of squash message:\n"
-"\n"
-"\t%.*s"
-msgstr ""
-"ogiltig första rad i squash-meddelande:\n"
-"\n"
-"\t%.*s"
-
-#: sequencer.c:1359 sequencer.c:1384
+#: sequencer.c:1500 sequencer.c:1525
 #, c-format
 msgid "This is a combination of %d commits."
 msgstr "Det här är en kombination av %d incheckningar."
 
-#: sequencer.c:1368 sequencer.c:3265
+#: sequencer.c:1510 sequencer.c:4355
 msgid "need a HEAD to fixup"
 msgstr "behöver en HEAD-incheckning att rätta"
 
-#: sequencer.c:1370
+#: sequencer.c:1512 sequencer.c:2729
 msgid "could not read HEAD"
 msgstr "kunde inte läsa HEAD"
 
-#: sequencer.c:1372
+#: sequencer.c:1514
 msgid "could not read HEAD's commit message"
 msgstr "kunde inte läsa HEAD:s incheckningsmeddelande"
 
-#: sequencer.c:1378
+#: sequencer.c:1520
 #, c-format
 msgid "cannot write '%s'"
 msgstr "kan inte skriva \"%s\""
 
-#: sequencer.c:1387 git-rebase--interactive.sh:452
+#: sequencer.c:1527 git-rebase--interactive.sh:457
 msgid "This is the 1st commit message:"
 msgstr "Det här är 1:a incheckningsmeddelandet:"
 
-#: sequencer.c:1395
+#: sequencer.c:1535
 #, c-format
 msgid "could not read commit message of %s"
 msgstr "kunde inte läsa incheckningsmeddelande för %s"
 
-#: sequencer.c:1402
+#: sequencer.c:1542
 #, c-format
 msgid "This is the commit message #%d:"
 msgstr "Det här är incheckningsmeddelande %d:"
 
-#: sequencer.c:1407
+#: sequencer.c:1548
 #, c-format
 msgid "The commit message #%d will be skipped:"
 msgstr "Incheckningsmeddelande %d kommer hoppas över:"
 
-#: sequencer.c:1412
+#: sequencer.c:1553
 #, c-format
 msgid "unknown command: %d"
 msgstr "okänt kommando: %d"
 
-#: sequencer.c:1479
+#: sequencer.c:1631
 msgid "your index file is unmerged."
 msgstr "din indexfil har inte slagits ihop."
 
-#: sequencer.c:1498
+#: sequencer.c:1638
+msgid "cannot fixup root commit"
+msgstr "kan inte göra \"fixup\" på rotincheckning"
+
+#: sequencer.c:1657
 #, c-format
 msgid "commit %s is a merge but no -m option was given."
 msgstr "incheckning %s är en sammanslagning, men flaggan -m angavs inte."
 
-#: sequencer.c:1506
+#: sequencer.c:1665
 #, c-format
 msgid "commit %s does not have parent %d"
 msgstr "incheckning %s har inte förälder %d"
 
-#: sequencer.c:1510
+#: sequencer.c:1669
 #, c-format
 msgid "mainline was specified but commit %s is not a merge."
 msgstr "huvudlinje angavs, men incheckningen %s är inte en sammanslagning."
 
-#: sequencer.c:1516
+#: sequencer.c:1675
 #, c-format
 msgid "cannot get commit message for %s"
 msgstr "kan inte hämta incheckningsmeddelande för %s"
 
 #. TRANSLATORS: The first %s will be a "todo" command like
 #. "revert" or "pick", the second %s a SHA1.
-#: sequencer.c:1535
+#: sequencer.c:1694
 #, c-format
 msgid "%s: cannot parse parent commit %s"
 msgstr "%s: kan inte tolka föräldraincheckningen %s"
 
-#: sequencer.c:1600 sequencer.c:2397
+#: sequencer.c:1759
 #, c-format
 msgid "could not rename '%s' to '%s'"
 msgstr "kunde inte byta namn på \"%s\" till \"%s\""
 
-#: sequencer.c:1654
+#: sequencer.c:1813
 #, c-format
 msgid "could not revert %s... %s"
 msgstr "kunde inte ångra %s... %s"
 
-#: sequencer.c:1655
+#: sequencer.c:1814
 #, c-format
 msgid "could not apply %s... %s"
 msgstr "kunde inte tillämpa %s... %s"
 
-#: sequencer.c:1702
+#: sequencer.c:1864
 msgid "empty commit set passed"
 msgstr "den angivna uppsättningen incheckningar är tom"
 
-#: sequencer.c:1712
+#: sequencer.c:1874
 #, c-format
 msgid "git %s: failed to read the index"
 msgstr "git %s: misslyckades läsa indexet"
 
-#: sequencer.c:1718
+#: sequencer.c:1881
 #, c-format
 msgid "git %s: failed to refresh the index"
 msgstr "git %s: misslyckades uppdatera indexet"
 
-#: sequencer.c:1792
+#: sequencer.c:1961
 #, c-format
 msgid "%s does not accept arguments: '%s'"
 msgstr "%s tar inte argument: \"%s\""
 
-#: sequencer.c:1801
+#: sequencer.c:1970
 #, c-format
 msgid "missing arguments for %s"
 msgstr "argument saknas för %s"
 
-#: sequencer.c:1844
+#: sequencer.c:2029
 #, c-format
 msgid "invalid line %d: %.*s"
 msgstr "ogiltig rad %d: %.*s"
 
-#: sequencer.c:1852
+#: sequencer.c:2037
 #, c-format
 msgid "cannot '%s' without a previous commit"
 msgstr "kan inte utföra \"%s\" utan en föregående incheckning"
 
-#: sequencer.c:1883 sequencer.c:3056 sequencer.c:3091
+#: sequencer.c:2085 sequencer.c:4138 sequencer.c:4173
 #, c-format
 msgid "could not read '%s'."
 msgstr "kunde inte läsa \"%s\"."
 
-#: sequencer.c:1906
+#: sequencer.c:2108
 msgid "please fix this using 'git rebase --edit-todo'."
 msgstr "rätta det med \"git rebase --edit-todo\"."
 
-#: sequencer.c:1908
+#: sequencer.c:2110
 #, c-format
 msgid "unusable instruction sheet: '%s'"
 msgstr "oanvändbart manus: ”%s”"
 
-#: sequencer.c:1913
+#: sequencer.c:2115
 msgid "no commits parsed."
 msgstr "inga incheckningar lästes."
 
-#: sequencer.c:1924
+#: sequencer.c:2126
 msgid "cannot cherry-pick during a revert."
 msgstr "kan inte utföra \"cherry-pick\" under en \"revert\"."
 
-#: sequencer.c:1926
+#: sequencer.c:2128
 msgid "cannot revert during a cherry-pick."
 msgstr "kan inte utföra \"revert\" under en \"cherry-pick\"."
 
-#: sequencer.c:1993
+#: sequencer.c:2195
 #, c-format
 msgid "invalid key: %s"
 msgstr "felaktig nyckel: %s"
 
-#: sequencer.c:1996
+#: sequencer.c:2198
 #, c-format
 msgid "invalid value for %s: %s"
 msgstr "felaktigt värde för %s: %s"
 
-#: sequencer.c:2062
+#: sequencer.c:2269
+msgid "unusable squash-onto"
+msgstr "oanvändbar squash-onto"
+
+#: sequencer.c:2285
 #, c-format
 msgid "malformed options sheet: '%s'"
 msgstr "trasigt manus: ”%s”"
 
-#: sequencer.c:2100
+#: sequencer.c:2323
 msgid "a cherry-pick or revert is already in progress"
 msgstr "en \"cherry-pick\" eller \"revert\" pågår redan"
 
-#: sequencer.c:2101
+#: sequencer.c:2324
 msgid "try \"git cherry-pick (--continue | --quit | --abort)\""
 msgstr "testa \"git cherry-pick (--continue | --quit | --abort)\""
 
-#: sequencer.c:2104
+#: sequencer.c:2327
 #, c-format
 msgid "could not create sequencer directory '%s'"
 msgstr "kunde inte skapa \"sequencer\"-katalogen \"%s\""
 
-#: sequencer.c:2118
+#: sequencer.c:2341
 msgid "could not lock HEAD"
 msgstr "kunde inte låsa HEAD"
 
-#: sequencer.c:2173 sequencer.c:2761
+#: sequencer.c:2396 sequencer.c:3403
 msgid "no cherry-pick or revert in progress"
 msgstr "ingen \"cherry-pick\" eller \"revert\" pågår"
 
-#: sequencer.c:2175
+#: sequencer.c:2398
 msgid "cannot resolve HEAD"
 msgstr "kan inte bestämma HEAD"
 
-#: sequencer.c:2177 sequencer.c:2212
+#: sequencer.c:2400 sequencer.c:2435
 msgid "cannot abort from a branch yet to be born"
 msgstr "kan inte avbryta från en gren som ännu inte är född"
 
-#: sequencer.c:2198 builtin/grep.c:720
+#: sequencer.c:2421 builtin/grep.c:720
 #, c-format
 msgid "cannot open '%s'"
 msgstr "kan inte öppna \"%s\""
 
-#: sequencer.c:2200
+#: sequencer.c:2423
 #, c-format
 msgid "cannot read '%s': %s"
 msgstr "kan inte läsa \"%s\": %s"
 
-#: sequencer.c:2201
+#: sequencer.c:2424
 msgid "unexpected end of file"
 msgstr "oväntat filslut"
 
-#: sequencer.c:2207
+#: sequencer.c:2430
 #, c-format
 msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
 msgstr "sparad HEAD-fil från före \"cherry-pick\", \"%s\", är trasig"
 
-#: sequencer.c:2218
+#: sequencer.c:2441
 msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
 msgstr ""
 "Du verkar ha flyttat HEAD.\n"
 "Spolar inte tillbaka, kontrollera HEAD!"
 
-#: sequencer.c:2324 sequencer.c:2679
+#: sequencer.c:2545 sequencer.c:3321
 #, c-format
 msgid "could not update %s"
 msgstr "kunde inte uppdatera %s"
 
-#: sequencer.c:2362 sequencer.c:2659
+#: sequencer.c:2583 sequencer.c:3301
 msgid "cannot read HEAD"
 msgstr "kan inte läsa HEAD"
 
-#: sequencer.c:2402 builtin/difftool.c:639
+#: sequencer.c:2618 sequencer.c:2622 builtin/difftool.c:639
 #, c-format
 msgid "could not copy '%s' to '%s'"
 msgstr "kunde inte kopiera in \"%s\" till \"%s\""
 
-#: sequencer.c:2421
+#: sequencer.c:2641
 msgid "could not read index"
 msgstr "kunde inte läsa indexet"
 
-#: sequencer.c:2426
+#: sequencer.c:2646
 #, c-format
 msgid ""
 "execution failed: %s\n"
@@ -3541,11 +3834,11 @@ msgstr ""
 "\tgit rebase --continue\n"
 "\n"
 
-#: sequencer.c:2432
+#: sequencer.c:2652
 msgid "and made changes to the index and/or the working tree\n"
 msgstr "och gjorde ändringar till indexet och/eller arbetskatalogen\n"
 
-#: sequencer.c:2438
+#: sequencer.c:2658
 #, c-format
 msgid ""
 "execution succeeded: %s\n"
@@ -3562,17 +3855,62 @@ msgstr ""
 "\tgit rebase --continue\n"
 "\n"
 
-#: sequencer.c:2497
+#: sequencer.c:2771
+msgid "writing fake root commit"
+msgstr "skriver fejkad rotincheckning"
+
+#: sequencer.c:2776
+msgid "writing squash-onto"
+msgstr "skriver squash-onto"
+
+#: sequencer.c:2811
+#, c-format
+msgid "failed to find tree of %s"
+msgstr "kunde inte hitta trädet för %s."
+
+#: sequencer.c:2829
+msgid "could not write index"
+msgstr "kunde inte skriva indexet"
+
+#: sequencer.c:2861
+msgid "cannot merge without a current revision"
+msgstr "kan inte slå ihop utan en aktuell incheckning"
+
+#: sequencer.c:2884
+#, c-format
+msgid "could not resolve '%s'"
+msgstr "kunde inte upplösa \"%s\""
+
+#: sequencer.c:2906
+#, c-format
+msgid "could not get commit message of '%s'"
+msgstr "kunde inte läsa incheckningsmeddelande för \"%s\""
+
+#: sequencer.c:2916 sequencer.c:2941
+#, c-format
+msgid "could not write '%s'"
+msgstr "kunde inte skriva \"%s\""
+
+#: sequencer.c:3005
+#, c-format
+msgid "could not even attempt to merge '%.*s'"
+msgstr "kunde inte ens försöka slå ihop \"%.*s\""
+
+#: sequencer.c:3021
+msgid "merge: Unable to write new index file"
+msgstr "sammanslagning: Kunde inte skriva ny indexfil"
+
+#: sequencer.c:3088
 #, c-format
 msgid "Applied autostash.\n"
 msgstr "Tillämpade autostash.\n"
 
-#: sequencer.c:2509
+#: sequencer.c:3100
 #, c-format
 msgid "cannot store %s"
 msgstr "kan inte spara %s"
 
-#: sequencer.c:2512 git-rebase.sh:178
+#: sequencer.c:3103 git-rebase.sh:188
 #, c-format
 msgid ""
 "Applying autostash resulted in conflicts.\n"
@@ -3583,52 +3921,69 @@ msgstr ""
 "Dina ändringar är säkra i stashen.\n"
 "Du kan när som helst använda \"git stash pop\" eller \"git stash drop\".\n"
 
-#: sequencer.c:2595
+#: sequencer.c:3134
+#, c-format
+msgid ""
+"Could not execute the todo command\n"
+"\n"
+"    %.*s\n"
+"It has been rescheduled; To edit the command before continuing, please\n"
+"edit the todo list first:\n"
+"\n"
+"    git rebase --edit-todo\n"
+"    git rebase --continue\n"
+msgstr ""
+"Kunde inte köra todo-kommandot\n"
+"\n"
+"    %.*s\n"
+"Det har lagts tillbaka i kön; För att redigera kommandot innan du\n"
+"fortsätter, redigera först attgöra-listan:\n"
+"\n"
+"    git rebase --edit-todo\n"
+"    git rebase --continue\n"
+
+#: sequencer.c:3202
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
 msgstr "Stoppade på %s... %.*s\n"
 
-#: sequencer.c:2637
+#: sequencer.c:3264
 #, c-format
 msgid "unknown command %d"
 msgstr "okänt kommando %d"
 
-#: sequencer.c:2667
+#: sequencer.c:3309
 msgid "could not read orig-head"
 msgstr "kunde inte läsa orig-head"
 
-#: sequencer.c:2672 sequencer.c:3262
+#: sequencer.c:3314 sequencer.c:4352
 msgid "could not read 'onto'"
 msgstr "kunde inte läsa \"onto\""
 
-#: sequencer.c:2686
+#: sequencer.c:3328
 #, c-format
 msgid "could not update HEAD to %s"
 msgstr "kunde inte uppdatera HEAD till %s"
 
-#: sequencer.c:2770
+#: sequencer.c:3414
 msgid "cannot rebase: You have unstaged changes."
 msgstr "kan inte ombasera: Du har oköade ändringar."
 
-#: sequencer.c:2775
-msgid "could not remove CHERRY_PICK_HEAD"
-msgstr "kunde inte ta bort CHERRY_PICK_HEAD"
-
-#: sequencer.c:2784
+#: sequencer.c:3423
 msgid "cannot amend non-existing commit"
 msgstr "kan inte lägga till incheckning som inte finns"
 
-#: sequencer.c:2786
+#: sequencer.c:3425
 #, c-format
 msgid "invalid file: '%s'"
 msgstr "ogiltig fil: \"%s\""
 
-#: sequencer.c:2788
+#: sequencer.c:3427
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr "ogiltigt innehåll: \"%s\""
 
-#: sequencer.c:2791
+#: sequencer.c:3430
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
@@ -3638,45 +3993,54 @@ msgstr ""
 "Du har ändringar i arbetskatalogen som inte checkats in. Checka in dem\n"
 "först och kör sedan \"git rebase --continute\" igen."
 
-#: sequencer.c:2801
+#: sequencer.c:3455 sequencer.c:3493
+#, c-format
+msgid "could not write file: '%s'"
+msgstr "kunde inte skriva fil: \"%s\""
+
+#: sequencer.c:3508
+msgid "could not remove CHERRY_PICK_HEAD"
+msgstr "kunde inte ta bort CHERRY_PICK_HEAD"
+
+#: sequencer.c:3515
 msgid "could not commit staged changes."
 msgstr "kunde inte checka in köade ändringar."
 
-#: sequencer.c:2881
+#: sequencer.c:3612
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr "%s: kan inte göra \"cherry-pick\" på typen ”%s”"
 
-#: sequencer.c:2885
+#: sequencer.c:3616
 #, c-format
 msgid "%s: bad revision"
 msgstr "%s: felaktig revision"
 
-#: sequencer.c:2918
+#: sequencer.c:3649
 msgid "can't revert as initial commit"
 msgstr "kan inte ångra som första incheckning"
 
-#: sequencer.c:3023
+#: sequencer.c:4098
 msgid "make_script: unhandled options"
 msgstr "make_script: flaggor som inte stöds"
 
-#: sequencer.c:3026
+#: sequencer.c:4101
 msgid "make_script: error preparing revisions"
 msgstr "make_script: fel när revisioner skulle förberedas"
 
-#: sequencer.c:3060 sequencer.c:3095
+#: sequencer.c:4142 sequencer.c:4177
 #, c-format
 msgid "unusable todo list: '%s'"
 msgstr "oanvändbar todo-lista: %s"
 
-#: sequencer.c:3146
+#: sequencer.c:4236
 #, c-format
 msgid ""
 "unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
 msgstr ""
 "okänd inställning %s för flaggan rebase.missingCommitsCheck. Ignorerar."
 
-#: sequencer.c:3212
+#: sequencer.c:4302
 #, c-format
 msgid ""
 "Warning: some commits may have been dropped accidentally.\n"
@@ -3685,7 +4049,7 @@ msgstr ""
 "Varning: vissa incheckningar kan av misstag ha tappats.\n"
 "Tappade incheckningar (nyaste först):\n"
 
-#: sequencer.c:3219
+#: sequencer.c:4309
 #, c-format
 msgid ""
 "To avoid this message, use \"drop\" to explicitly remove a commit.\n"
@@ -3705,7 +4069,7 @@ msgstr ""
 "\" (fel).\n"
 "\n"
 
-#: sequencer.c:3231
+#: sequencer.c:4321
 #, c-format
 msgid ""
 "You can fix this with 'git rebase --edit-todo' and then run 'git rebase --"
@@ -3716,27 +4080,21 @@ msgstr ""
 "continue\".\n"
 "Avbryt ombaseringen med \"git rebase --abort\".\n"
 
-#: sequencer.c:3244 sequencer.c:3304 wrapper.c:225 wrapper.c:395
-#: builtin/am.c:779
-#, c-format
-msgid "could not open '%s' for writing"
-msgstr "kunde inte öppna \"%s\" för skrivning"
-
-#: sequencer.c:3285
+#: sequencer.c:4375
 #, c-format
 msgid "could not parse commit '%s'"
 msgstr "kunde inte tolka incheckningen\" %s\""
 
-#: sequencer.c:3401
+#: sequencer.c:4490
 msgid "the script was already rearranged."
 msgstr "skriptet har redan omordnats."
 
-#: setup.c:122
+#: setup.c:123
 #, c-format
 msgid "'%s' is outside repository"
 msgstr "\"%s\" är utanför arkivet"
 
-#: setup.c:171
+#: setup.c:172
 #, c-format
 msgid ""
 "%s: no such path in the working tree.\n"
@@ -3746,7 +4104,7 @@ msgstr ""
 "Använd \"git <kommando> -- <sökväg>..\" för att ange sökvägar som inte finns "
 "lokalt."
 
-#: setup.c:184
+#: setup.c:185
 #, c-format
 msgid ""
 "ambiguous argument '%s': unknown revision or path not in the working tree.\n"
@@ -3758,12 +4116,12 @@ msgstr ""
 "Använd \"--\" för att skilja sökvägar från revisioner, så här:\n"
 "\"git <kommando> [<revision>...] -- [<fil>...]\""
 
-#: setup.c:233
+#: setup.c:234
 #, c-format
 msgid "option '%s' must come before non-option arguments"
 msgstr "flaggan \"%s\" måste anges före argument som inte är flaggor"
 
-#: setup.c:252
+#: setup.c:253
 #, c-format
 msgid ""
 "ambiguous argument '%s': both revision and filename\n"
@@ -3774,92 +4132,92 @@ msgstr ""
 "Använd \"--\" för att skilja sökvägar från revisioner, så här:\n"
 "\"git <kommando> [<revision>...] -- [<fil>...]\""
 
-#: setup.c:388
+#: setup.c:389
 msgid "unable to set up work tree using invalid config"
 msgstr "kan inte skapa arbetskatalog med felaktig konfiguration"
 
-#: setup.c:395
+#: setup.c:393
 msgid "this operation must be run in a work tree"
 msgstr "funktionen måste köras i en arbetskatalog"
 
-#: setup.c:506
+#: setup.c:503
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "Förväntade git-arkivversion <= %d, hittade %d"
 
-#: setup.c:514
+#: setup.c:511
 msgid "unknown repository extensions found:"
 msgstr "okända arkivutökningar hittades:"
 
-#: setup.c:533
+#: setup.c:530
 #, c-format
 msgid "error opening '%s'"
 msgstr "fel vid öppning av \"%s\""
 
-#: setup.c:535
+#: setup.c:532
 #, 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:537
+#: setup.c:534
 #, c-format
 msgid "error reading %s"
 msgstr "fel vid läsning av %s"
 
-#: setup.c:539
+#: setup.c:536
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "ogiltigt gitfilformat: %s"
 
-#: setup.c:541
+#: setup.c:538
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "ingen sökväg i gitfil: %s"
 
-#: setup.c:543
+#: setup.c:540
 #, c-format
 msgid "not a git repository: %s"
 msgstr "inte ett git-arkiv: %s"
 
-#: setup.c:642
+#: setup.c:639
 #, c-format
 msgid "'$%s' too big"
 msgstr "\"$%s\" för stor"
 
-#: setup.c:656
+#: setup.c:653
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "inte ett git-arkiv: \"%s\""
 
-#: setup.c:685 setup.c:687 setup.c:718
+#: setup.c:682 setup.c:684 setup.c:715
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "kan inte byta katalog (chdir) till \"%s\""
 
-#: setup.c:690 setup.c:746 setup.c:756 setup.c:795 setup.c:803 setup.c:818
+#: setup.c:687 setup.c:743 setup.c:753 setup.c:792 setup.c:800 setup.c:815
 msgid "cannot come back to cwd"
 msgstr "kan inte gå tillbaka till arbetskatalogen (cwd)"
 
-#: setup.c:816
+#: setup.c:813
 #, 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:827
+#: setup.c:824
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "misslyckades ta status på \"%*ss%s%s\""
 
-#: setup.c:1057
+#: setup.c:1054
 msgid "Unable to read current working directory"
 msgstr "Kan inte läsa aktuell arbetskatalog"
 
-#: setup.c:1069 setup.c:1075
+#: setup.c:1066 setup.c:1072
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "kan inte byta till \"%s\""
 
-#: setup.c:1088
+#: setup.c:1085
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -3869,7 +4227,7 @@ msgstr ""
 "monteringspunkten %s)\n"
 "Stoppar vid filsystemsgräns (GIT_DISCOVERY_ACROSS_FILESYSTEM är inte satt)."
 
-#: setup.c:1172
+#: setup.c:1168
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -3878,53 +4236,53 @@ msgstr ""
 "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:1215
+#: setup.c:1211
 msgid "open /dev/null or dup failed"
 msgstr "misslyckades öppna /dev/null eller \"dup\""
 
-#: setup.c:1230
+#: setup.c:1226
 msgid "fork failed"
 msgstr "\"fork\" misslyckades"
 
-#: setup.c:1235
+#: setup.c:1231
 msgid "setsid failed"
 msgstr "\"setsid\" misslyckades"
 
-#: sha1_file.c:592
+#: sha1-file.c:625
 #, c-format
 msgid "path '%s' does not exist"
 msgstr "sökvägen \"%s\" finns inte"
 
-#: sha1_file.c:618
+#: sha1-file.c:651
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr "referensarkivet \"%s\" som en länkad utcheckning stöds inte ännu."
 
-#: sha1_file.c:624
+#: sha1-file.c:657
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr "referensarkivet \"%s\" är inte ett lokalt arkiv."
 
-#: sha1_file.c:630
+#: sha1-file.c:663
 #, c-format
 msgid "reference repository '%s' is shallow"
 msgstr "referensarkivet \"%s\" är grunt"
 
-#: sha1_file.c:638
+#: sha1-file.c:671
 #, c-format
 msgid "reference repository '%s' is grafted"
 msgstr "referensarkivet \"%s\" är ympat"
 
-#: sha1_name.c:422
+#: sha1-name.c:442
 #, c-format
 msgid "short SHA1 %s is ambiguous"
 msgstr "kort SHA1 %s är tvetydig"
 
-#: sha1_name.c:433
+#: sha1-name.c:453
 msgid "The candidates are:"
 msgstr "Kandidaterna är:"
 
-#: sha1_name.c:693
+#: sha1-name.c:695
 msgid ""
 "Git normally never creates a ref that ends with 40 hex characters\n"
 "because it will be ignored when you just specify 40-hex. These refs\n"
@@ -3946,71 +4304,71 @@ msgstr ""
 "Undersök referenserna och ta kanske bort dem. Stäng av meddelandet\n"
 "genom att köra \"git config advice.objectNameWarning false\""
 
-#: submodule.c:96 submodule.c:130
+#: submodule.c:97 submodule.c:131
 msgid "Cannot change unmerged .gitmodules, resolve merge conflicts first"
 msgstr ""
 "Kan inte ändra .gitmodules-fil som inte slagits ihop, lös "
 "sammanslagningskonflikter först"
 
-#: submodule.c:100 submodule.c:134
+#: submodule.c:101 submodule.c:135
 #, c-format
 msgid "Could not find section in .gitmodules where path=%s"
 msgstr "Hittade inte någon sektion i .gitmodules där sökväg=%s"
 
-#: submodule.c:108
+#: submodule.c:109
 #, c-format
 msgid "Could not update .gitmodules entry %s"
 msgstr "Kunde inte uppdatera .gitmodules-posten %s"
 
-#: submodule.c:141
+#: submodule.c:142
 #, c-format
 msgid "Could not remove .gitmodules entry for %s"
 msgstr "Kunde inte ta bort .gitmodules-posten för %s"
 
-#: submodule.c:152
+#: submodule.c:153
 msgid "staging updated .gitmodules failed"
 msgstr "misslyckades köa uppdaterad .gitmodules"
 
-#: submodule.c:312
+#: submodule.c:315
 #, c-format
 msgid "in unpopulated submodule '%s'"
 msgstr "i ej utcheckad undermodul \"%s\""
 
-#: submodule.c:343
+#: submodule.c:346
 #, c-format
 msgid "Pathspec '%s' is in submodule '%.*s'"
 msgstr "Sökvägsangivelsen \"%s\" är i undermodulen \"%.*s\""
 
-#: submodule.c:833
+#: submodule.c:837
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "undermodulposten \"%s\" (%s) är en %s, inte en incheckning"
 
-#: submodule.c:1065 builtin/branch.c:648 builtin/submodule--helper.c:1724
+#: submodule.c:1069 builtin/branch.c:651 builtin/submodule--helper.c:1743
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "Misslyckades slå upp HEAD som giltig referens."
 
-#: submodule.c:1370
+#: submodule.c:1375
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "\"%s\" känns inte igen som ett git-arkiv"
 
-#: submodule.c:1508
+#: submodule.c:1513
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "kunde inte starta \"git status\" i undermodulen \"%s\""
 
-#: submodule.c:1521
+#: submodule.c:1526
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "kunde inte köra \"git status\" i undermodulen \"%s\""
 
-#: submodule.c:1614
+#: submodule.c:1619
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "undermodulen \"%s\" har ett smutsigt index"
 
-#: submodule.c:1878
+#: submodule.c:1718
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
@@ -4018,18 +4376,18 @@ msgstr ""
 "relocate_gitdir för undermodulen \"%s\", som har mer än en arbetskatalog, "
 "stöds ej"
 
-#: submodule.c:1890 submodule.c:1946
+#: submodule.c:1730 submodule.c:1786
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "kunde inte slå upp namnet för undermodulen \"%s\""
 
-#: submodule.c:1894 builtin/submodule--helper.c:1246
-#: builtin/submodule--helper.c:1256
+#: submodule.c:1734 builtin/submodule--helper.c:1261
+#: builtin/submodule--helper.c:1271
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "kunde inte skapa katalogen \"%s\""
 
-#: submodule.c:1897
+#: submodule.c:1737
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -4040,29 +4398,30 @@ msgstr ""
 "\"%s\" till\n"
 "\"%s\"\n"
 
-#: submodule.c:1981
+#: submodule.c:1821
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "kunde inte rekursera in i undermodulen \"%s\""
 
-#: submodule.c:2025
+#: submodule.c:1865
 msgid "could not start ls-files in .."
 msgstr "kunde inte starta ls-files i .."
 
-#: submodule.c:2045
-msgid "BUG: returned path string doesn't match cwd?"
-msgstr "BUG: returnerad sökvägssträng matchar inte cwd?"
-
-#: submodule.c:2064
+#: submodule.c:1904
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree returnerade en oväntad returkod %d"
 
-#: submodule-config.c:263
+#: submodule-config.c:230
+#, c-format
+msgid "ignoring suspicious submodule name: %s"
+msgstr "ignorerar misstänkt undermodulnamn: %s"
+
+#: submodule-config.c:294
 msgid "negative values not allowed for submodule.fetchjobs"
 msgstr "negativa värden är inte tillåtna för submodule.fetchjobs"
 
-#: submodule-config.c:436
+#: submodule-config.c:467
 #, c-format
 msgid "invalid value for %s"
 msgstr "ogiltigt värde för %s"
@@ -4078,7 +4437,7 @@ msgstr "misslyckades utföra \"trailer\"-kommandot \"%s\""
 msgid "unknown value '%s' for key '%s'"
 msgstr "okänt värde \"%s\" för nyckeln \"%s\""
 
-#: trailer.c:539 trailer.c:544 builtin/remote.c:290
+#: trailer.c:539 trailer.c:544 builtin/remote.c:293
 #, c-format
 msgid "more than one %s"
 msgstr "mer än en %s"
@@ -4121,17 +4480,21 @@ msgstr "kunde inte öppna temporär fil"
 msgid "could not rename temporary file to %s"
 msgstr "kunde inte byta namn på temporär fil till %s"
 
-#: transport.c:63
+#: transport.c:116
 #, c-format
 msgid "Would set upstream of '%s' to '%s' of '%s'\n"
 msgstr "Skulle sätta uppströms för \"%s\" till \"%s\" från \"%s\"\n"
 
-#: transport.c:152
+#: transport.c:208
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "transport: ogiltig flagga för depth: ”%s”"
 
-#: transport.c:916
+#: transport.c:584
+msgid "could not parse transport.color.* config"
+msgstr "kunde inte tolka inställningen för transport.color.*"
+
+#: transport.c:996
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -4140,7 +4503,7 @@ msgstr ""
 "Följande undermodulsökvägar innehåller ändringar som\n"
 "inte kan hittas av fjärrarna:\n"
 
-#: transport.c:920
+#: transport.c:1000
 #, c-format
 msgid ""
 "\n"
@@ -4167,11 +4530,11 @@ msgstr ""
 "för att sända dem till fjärren.\n"
 "\n"
 
-#: transport.c:928
+#: transport.c:1008
 msgid "Aborting."
 msgstr "Avbryter."
 
-#: transport-helper.c:1079
+#: transport-helper.c:1087
 #, c-format
 msgid "Could not read ref %s"
 msgstr "Kunde inte läsa referensen %s"
@@ -4188,11 +4551,11 @@ msgstr "felformat läge i trädpost"
 msgid "empty filename in tree entry"
 msgstr "tomt filnamn i trädpost"
 
-#: tree-walk.c:114
+#: tree-walk.c:113
 msgid "too-short tree file"
 msgstr "trädfil för kort"
 
-#: unpack-trees.c:108
+#: unpack-trees.c:111
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by checkout:\n"
@@ -4201,7 +4564,7 @@ msgstr ""
 "Dina lokala ändringar av följande filer skulle skrivas över av utcheckning:\n"
 "%%sChecka in dina ändringar eller använd \"stash\" innan du byter gren."
 
-#: unpack-trees.c:110
+#: unpack-trees.c:113
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by checkout:\n"
@@ -4210,7 +4573,7 @@ msgstr ""
 "Dina lokala ändringar av följande filer skulle skrivas över av utcheckning:\n"
 "%%s"
 
-#: unpack-trees.c:113
+#: unpack-trees.c:116
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -4220,7 +4583,7 @@ msgstr ""
 "sammanslagning:\n"
 "%%sChecka in dina ändringar eller använd \"stash\" innan du byter gren."
 
-#: unpack-trees.c:115
+#: unpack-trees.c:118
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -4230,7 +4593,7 @@ msgstr ""
 "sammanslagning:\n"
 "%%s"
 
-#: unpack-trees.c:118
+#: unpack-trees.c:121
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by %s:\n"
@@ -4239,7 +4602,7 @@ msgstr ""
 "Dina lokala ändringar av följande filer skulle skrivas över av \"%s\":\n"
 "%%sChecka in dina ändringar eller använd \"stash\" innan du \"%s\"."
 
-#: unpack-trees.c:120
+#: unpack-trees.c:123
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by %s:\n"
@@ -4248,7 +4611,7 @@ msgstr ""
 "Dina lokala ändringar av följande filer skulle skrivas över av \"%s\":\n"
 "%%s"
 
-#: unpack-trees.c:125
+#: unpack-trees.c:128
 #, c-format
 msgid ""
 "Updating the following directories would lose untracked files in them:\n"
@@ -4258,7 +4621,7 @@ msgstr ""
 "dem:\n"
 "%s"
 
-#: unpack-trees.c:129
+#: unpack-trees.c:132
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by checkout:\n"
@@ -4267,7 +4630,7 @@ msgstr ""
 "Följande ospårade filer i arbetskatalogen skulle tas bort av utcheckningen:\n"
 "%%sFlytta eller ta bort dem innan du byter gren."
 
-#: unpack-trees.c:131
+#: unpack-trees.c:134
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by checkout:\n"
@@ -4276,7 +4639,7 @@ msgstr ""
 "Följande ospårade filer i arbetskatalogen skulle tas bort av utcheckningen:\n"
 "%%s"
 
-#: unpack-trees.c:134
+#: unpack-trees.c:137
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by merge:\n"
@@ -4286,7 +4649,7 @@ msgstr ""
 "sammanslagningen:\n"
 "%%sFlytta eller ta bort dem innan du slår samman."
 
-#: unpack-trees.c:136
+#: unpack-trees.c:139
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by merge:\n"
@@ -4296,7 +4659,7 @@ msgstr ""
 "sammanslagningen:\n"
 "%%s"
 
-#: unpack-trees.c:139
+#: unpack-trees.c:142
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by %s:\n"
@@ -4305,7 +4668,7 @@ msgstr ""
 "Följande ospårade filer i arbetskatalogen skulle tas bort av \"%s\":\n"
 "%%sFlytta eller ta bort dem innan du \"%s\"."
 
-#: unpack-trees.c:141
+#: unpack-trees.c:144
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by %s:\n"
@@ -4314,7 +4677,7 @@ msgstr ""
 "Följande ospårade filer i arbetskatalogen skulle tas bort av \"%s\":\n"
 "%%s"
 
-#: unpack-trees.c:146
+#: unpack-trees.c:150
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by "
@@ -4325,7 +4688,7 @@ msgstr ""
 "utcheckningen:\n"
 "%%sFlytta eller ta bort dem innan du byter gren."
 
-#: unpack-trees.c:148
+#: unpack-trees.c:152
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by "
@@ -4336,7 +4699,7 @@ msgstr ""
 "utcheckningen:\n"
 "%%s"
 
-#: unpack-trees.c:151
+#: unpack-trees.c:155
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by merge:\n"
@@ -4346,7 +4709,7 @@ msgstr ""
 "sammanslagningen:\n"
 "%%sFlytta eller ta bort dem innan du byter gren."
 
-#: unpack-trees.c:153
+#: unpack-trees.c:157
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by merge:\n"
@@ -4356,7 +4719,7 @@ msgstr ""
 "sammanslagningen:\n"
 "%%s"
 
-#: unpack-trees.c:156
+#: unpack-trees.c:160
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by %s:\n"
@@ -4365,7 +4728,7 @@ msgstr ""
 "Följande ospårade filer i arbetskatalogen skulle skrivas över av \"%s\":\n"
 "%%sFlytta eller ta bort dem innan du \"%s\"."
 
-#: unpack-trees.c:158
+#: unpack-trees.c:162
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by %s:\n"
@@ -4374,12 +4737,12 @@ msgstr ""
 "Följande ospårade filer i arbetskatalogen skulle skrivas över av \"%s\":\n"
 "%%s"
 
-#: unpack-trees.c:165
+#: unpack-trees.c:170
 #, c-format
 msgid "Entry '%s' overlaps with '%s'.  Cannot bind."
 msgstr "Posten \"%s\" överlappar \"%s\". Kan inte binda."
 
-#: unpack-trees.c:168
+#: unpack-trees.c:173
 #, c-format
 msgid ""
 "Cannot update sparse checkout: the following entries are not up to date:\n"
@@ -4388,7 +4751,7 @@ msgstr ""
 "Kan inte uppdatera gles utcheckning: följande poster är inte à jour:\n"
 "%s"
 
-#: unpack-trees.c:170
+#: unpack-trees.c:175
 #, c-format
 msgid ""
 "The following working tree files would be overwritten by sparse checkout "
@@ -4399,7 +4762,7 @@ msgstr ""
 "utcheckning:\n"
 "%s"
 
-#: unpack-trees.c:172
+#: unpack-trees.c:177
 #, c-format
 msgid ""
 "The following working tree files would be removed by sparse checkout "
@@ -4410,7 +4773,7 @@ msgstr ""
 "utcheckning:\n"
 "%s"
 
-#: unpack-trees.c:174
+#: unpack-trees.c:179
 #, c-format
 msgid ""
 "Cannot update submodule:\n"
@@ -4419,12 +4782,12 @@ msgstr ""
 "Kan inte uppdatera undermodul:\n"
 "%s"
 
-#: unpack-trees.c:251
+#: unpack-trees.c:262
 #, c-format
 msgid "Aborting\n"
 msgstr "Avbryter\n"
 
-#: unpack-trees.c:333
+#: unpack-trees.c:344
 msgid "Checking out files"
 msgstr "Checkar ut filer"
 
@@ -4493,7 +4856,7 @@ msgid "could not open '%s' for reading and writing"
 msgstr "kunde inte öppna \"%s\" för läsning och skrivning"
 
 #: wrapper.c:227 wrapper.c:397 builtin/am.c:320 builtin/am.c:770
-#: builtin/am.c:862 builtin/merge.c:1044
+#: builtin/am.c:862 builtin/merge.c:1043
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "kunde inte öppna \"%s\" för läsning"
@@ -4507,155 +4870,155 @@ msgstr "kan inte komma åt \"%s\""
 msgid "unable to get current working directory"
 msgstr "kan inte hämta aktuell arbetskatalog"
 
-#: wt-status.c:151
+#: wt-status.c:154
 msgid "Unmerged paths:"
 msgstr "Ej sammanslagna sökvägar:"
 
-#: wt-status.c:178 wt-status.c:205
+#: wt-status.c:181 wt-status.c:208
 #, c-format
 msgid "  (use \"git reset %s <file>...\" to unstage)"
 msgstr "  (använd \"git reset %s <fil>...\" för att ta bort från kö)"
 
-#: wt-status.c:180 wt-status.c:207
+#: wt-status.c:183 wt-status.c:210
 msgid "  (use \"git rm --cached <file>...\" to unstage)"
 msgstr "  (använd \"git rm --cached <fil>...\" för att ta bort från kö)"
 
-#: wt-status.c:184
+#: wt-status.c:187
 msgid "  (use \"git add <file>...\" to mark resolution)"
 msgstr "  (använd \"git add <fil>...\" för att ange lösning)"
 
-#: wt-status.c:186 wt-status.c:190
+#: wt-status.c:189 wt-status.c:193
 msgid "  (use \"git add/rm <file>...\" as appropriate to mark resolution)"
 msgstr "  (använd \"git add/rm <fil>...\" som lämpligt för att ange lösning)"
 
-#: wt-status.c:188
+#: wt-status.c:191
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (använd \"git rm <fil>...\" för att ange lösning)"
 
-#: wt-status.c:199 wt-status.c:1007
+#: wt-status.c:202 wt-status.c:1015
 msgid "Changes to be committed:"
 msgstr "Ändringar att checka in:"
 
-#: wt-status.c:217 wt-status.c:1016
+#: wt-status.c:220 wt-status.c:1024
 msgid "Changes not staged for commit:"
 msgstr "Ändringar ej i incheckningskön:"
 
-#: wt-status.c:221
+#: wt-status.c:224
 msgid "  (use \"git add <file>...\" to update what will be committed)"
 msgstr ""
 "  (använd \"git add <fil>...\" för att uppdatera vad som skall checkas in)"
 
-#: wt-status.c:223
+#: wt-status.c:226
 msgid "  (use \"git add/rm <file>...\" to update what will be committed)"
 msgstr ""
 "  (använd \"git add/rm <fil>...\" för att uppdatera vad som skall checkas in)"
 
-#: wt-status.c:224
+#: wt-status.c:227
 msgid ""
 "  (use \"git checkout -- <file>...\" to discard changes in working directory)"
 msgstr ""
 "  (använd \"git checkout -- <fil>...\" för att förkasta ändringar i "
 "arbetskatalogen)"
 
-#: wt-status.c:226
+#: wt-status.c:229
 msgid "  (commit or discard the untracked or modified content in submodules)"
 msgstr ""
 "  (checka in eller förkasta ospårat eller ändrat innehåll i undermoduler)"
 
-#: wt-status.c:238
+#: wt-status.c:241
 #, c-format
 msgid "  (use \"git %s <file>...\" to include in what will be committed)"
 msgstr ""
 "  (använd \"git %s <fil>...\" för att ta med i det som skall checkas in)"
 
-#: wt-status.c:253
+#: wt-status.c:256
 msgid "both deleted:"
 msgstr "borttaget av bägge:"
 
-#: wt-status.c:255
+#: wt-status.c:258
 msgid "added by us:"
 msgstr "tillagt av oss:"
 
-#: wt-status.c:257
+#: wt-status.c:260
 msgid "deleted by them:"
 msgstr "borttaget av dem:"
 
-#: wt-status.c:259
+#: wt-status.c:262
 msgid "added by them:"
 msgstr "tillagt av dem:"
 
-#: wt-status.c:261
+#: wt-status.c:264
 msgid "deleted by us:"
 msgstr "borttaget av oss:"
 
-#: wt-status.c:263
+#: wt-status.c:266
 msgid "both added:"
 msgstr "tillagt av bägge:"
 
-#: wt-status.c:265
+#: wt-status.c:268
 msgid "both modified:"
 msgstr "ändrat av bägge:"
 
-#: wt-status.c:275
+#: wt-status.c:278
 msgid "new file:"
 msgstr "ny fil:"
 
-#: wt-status.c:277
+#: wt-status.c:280
 msgid "copied:"
 msgstr "kopierad:"
 
-#: wt-status.c:279
+#: wt-status.c:282
 msgid "deleted:"
 msgstr "borttagen:"
 
-#: wt-status.c:281
+#: wt-status.c:284
 msgid "modified:"
 msgstr "ändrad:"
 
-#: wt-status.c:283
+#: wt-status.c:286
 msgid "renamed:"
 msgstr "namnbytt:"
 
-#: wt-status.c:285
+#: wt-status.c:288
 msgid "typechange:"
 msgstr "typbyte:"
 
-#: wt-status.c:287
+#: wt-status.c:290
 msgid "unknown:"
 msgstr "okänd:"
 
-#: wt-status.c:289
+#: wt-status.c:292
 msgid "unmerged:"
 msgstr "osammanslagen:"
 
-#: wt-status.c:369
+#: wt-status.c:372
 msgid "new commits, "
 msgstr "nya incheckningar, "
 
-#: wt-status.c:371
+#: wt-status.c:374
 msgid "modified content, "
 msgstr "ändrat innehåll, "
 
-#: wt-status.c:373
+#: wt-status.c:376
 msgid "untracked content, "
 msgstr "ospårat innehåll, "
 
-#: wt-status.c:847
+#: wt-status.c:853
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] "Stashen innehåller just nu %d post"
 msgstr[1] "Stashen innehåller just nu %d poster"
 
-#: wt-status.c:879
+#: wt-status.c:885
 msgid "Submodules changed but not updated:"
 msgstr "Undermoduler ändrade men inte uppdaterade:"
 
-#: wt-status.c:881
+#: wt-status.c:887
 msgid "Submodule changes to be committed:"
 msgstr "Undermodulers ändringar att checka in:"
 
-#: wt-status.c:963
+#: wt-status.c:969
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -4663,107 +5026,107 @@ msgstr ""
 "Raden ovan får inte ändras eller tas bort.\n"
 "Allt under den kommer tas bort."
 
-#: wt-status.c:1076
+#: wt-status.c:1084
 msgid "You have unmerged paths."
 msgstr "Du har ej sammanslagna sökvägar."
 
-#: wt-status.c:1079
+#: wt-status.c:1087
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (rätta konflikter och kör \"git commit\")"
 
-#: wt-status.c:1081
+#: wt-status.c:1089
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (använd \"git merge --abort\" för att avbryta sammanslagningen)"
 
-#: wt-status.c:1086
+#: wt-status.c:1094
 msgid "All conflicts fixed but you are still merging."
 msgstr "Alla konflikter har rättats men du är fortfarande i en sammanslagning."
 
-#: wt-status.c:1089
+#: wt-status.c:1097
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (använd \"git commit\" för att slutföra sammanslagningen)"
 
-#: wt-status.c:1099
+#: wt-status.c:1107
 msgid "You are in the middle of an am session."
 msgstr "Du är i mitten av en körning av \"git am\"."
 
-#: wt-status.c:1102
+#: wt-status.c:1110
 msgid "The current patch is empty."
 msgstr "Aktuell patch är tom."
 
-#: wt-status.c:1106
+#: wt-status.c:1114
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (rätta konflikter och kör sedan \"git am --continue\")"
 
-#: wt-status.c:1108
+#: wt-status.c:1116
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (använd \"git am --skip\" för att hoppa över patchen)"
 
-#: wt-status.c:1110
+#: wt-status.c:1118
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr "  (använd \"git am --abort\" för att återställa ursprungsgrenen)"
 
-#: wt-status.c:1242
+#: wt-status.c:1250
 msgid "git-rebase-todo is missing."
 msgstr "git-rebase-todo saknas."
 
-#: wt-status.c:1244
+#: wt-status.c:1252
 msgid "No commands done."
 msgstr "Inga kommandon utförda."
 
-#: wt-status.c:1247
+#: wt-status.c:1255
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] "Sista kommandot utfört (%d kommando utfört):"
 msgstr[1] "Sista kommandot utfört (%d kommandon utfört):"
 
-#: wt-status.c:1258
+#: wt-status.c:1266
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (se fler i filen %s)"
 
-#: wt-status.c:1263
+#: wt-status.c:1271
 msgid "No commands remaining."
 msgstr "Inga kommandon återstår."
 
-#: wt-status.c:1266
+#: wt-status.c:1274
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
 msgstr[0] "Nästa kommando att utföra (%d kommando återstår):"
 msgstr[1] "Följande kommandon att utföra (%d kommandon återstår):"
 
-#: wt-status.c:1274
+#: wt-status.c:1282
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (använd \"git rebase --edit-todo\" för att visa och redigera)"
 
-#: wt-status.c:1287
+#: wt-status.c:1295
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "Du håller på att ombasera grenen \"%s\" ovanpå \"%s\"."
 
-#: wt-status.c:1292
+#: wt-status.c:1300
 msgid "You are currently rebasing."
 msgstr "Du håller på med en ombasering."
 
-#: wt-status.c:1306
+#: wt-status.c:1314
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (rätta konflikter och kör sedan \"git rebase --continue\")"
 
-#: wt-status.c:1308
+#: wt-status.c:1316
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (använd \"git rebase --skip\" för att hoppa över patchen)"
 
-#: wt-status.c:1310
+#: wt-status.c:1318
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr "  (använd \"git rebase --abort\" för att checka ut ursprungsgrenen)"
 
-#: wt-status.c:1316
+#: wt-status.c:1324
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (alla konflikter rättade: kör \"git rebase --continue\")"
 
-#: wt-status.c:1320
+#: wt-status.c:1328
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
@@ -4771,126 +5134,126 @@ msgstr ""
 "Du håller på att dela upp en incheckning medan du ombaserar grenen \"%s\" "
 "ovanpå \"%s\"."
 
-#: wt-status.c:1325
+#: wt-status.c:1333
 msgid "You are currently splitting a commit during a rebase."
 msgstr "Du håller på att dela upp en incheckning i en ombasering."
 
-#: wt-status.c:1328
+#: wt-status.c:1336
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr "  (Så fort din arbetskatalog är ren, kör \"git rebase --continue\")"
 
-#: wt-status.c:1332
+#: wt-status.c:1340
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 "Du håller på att redigera en incheckning medan du ombaserar grenen \"%s\" "
 "ovanpå \"%s\"."
 
-#: wt-status.c:1337
+#: wt-status.c:1345
 msgid "You are currently editing a commit during a rebase."
 msgstr "Du håller på att redigera en incheckning under en ombasering."
 
-#: wt-status.c:1340
+#: wt-status.c:1348
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr ""
 "  (använd \"git commit --amend\" för att lägga till på aktuell incheckning)"
 
-#: wt-status.c:1342
+#: wt-status.c:1350
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr "  (använd \"git rebase --continue\" när du är nöjd med dina ändringar)"
 
-#: wt-status.c:1352
+#: wt-status.c:1360
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "Du håller på med en \"cherry-pick\" av incheckningen %s."
 
-#: wt-status.c:1357
+#: wt-status.c:1365
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (rätta konflikter och kör sedan \"git cherry-pick --continue\")"
 
-#: wt-status.c:1360
+#: wt-status.c:1368
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr "  (alla konflikter rättade: kör \"git cherry-pick --continue\")"
 
-#: wt-status.c:1362
+#: wt-status.c:1370
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr ""
 "  (använd \"git cherry-pick --abort\" för att avbryta \"cherry-pick\"-"
 "operationen)"
 
-#: wt-status.c:1371
+#: wt-status.c:1379
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "Du håller på med att ångra incheckningen %s."
 
-#: wt-status.c:1376
+#: wt-status.c:1384
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (rätta konflikter och kör sedan \"git revert --continue\")"
 
-#: wt-status.c:1379
+#: wt-status.c:1387
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (alla konflikter rättade: kör \"git revert --continue\")"
 
-#: wt-status.c:1381
+#: wt-status.c:1389
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (använd \"git revert --abort\" för att avbryta ångrandet)"
 
-#: wt-status.c:1392
+#: wt-status.c:1400
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "Du håller på med en \"bisect\", startad från grenen \"%s\"."
 
-#: wt-status.c:1396
+#: wt-status.c:1404
 msgid "You are currently bisecting."
 msgstr "Du håller på med en \"bisect\"."
 
-#: wt-status.c:1399
+#: wt-status.c:1407
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr ""
 "  (använd \"git bisect reset\" för att komma tillbaka till ursprungsgrenen)"
 
-#: wt-status.c:1596
+#: wt-status.c:1604
 msgid "On branch "
 msgstr "På grenen "
 
-#: wt-status.c:1602
+#: wt-status.c:1610
 msgid "interactive rebase in progress; onto "
 msgstr "interaktiv ombasering pågår; ovanpå "
 
-#: wt-status.c:1604
+#: wt-status.c:1612
 msgid "rebase in progress; onto "
 msgstr "ombasering pågår; ovanpå "
 
-#: wt-status.c:1609
+#: wt-status.c:1617
 msgid "HEAD detached at "
 msgstr "HEAD frånkopplad vid "
 
-#: wt-status.c:1611
+#: wt-status.c:1619
 msgid "HEAD detached from "
 msgstr "HEAD frånkopplad från "
 
-#: wt-status.c:1614
+#: wt-status.c:1622
 msgid "Not currently on any branch."
 msgstr "Inte på någon gren för närvarande."
 
-#: wt-status.c:1634
+#: wt-status.c:1642
 msgid "Initial commit"
 msgstr "Första incheckning"
 
-#: wt-status.c:1635
+#: wt-status.c:1643
 msgid "No commits yet"
 msgstr "Inga incheckningar ännu"
 
-#: wt-status.c:1649
+#: wt-status.c:1657
 msgid "Untracked files"
 msgstr "Ospårade filer"
 
-#: wt-status.c:1651
+#: wt-status.c:1659
 msgid "Ignored files"
 msgstr "Ignorerade filer"
 
-#: wt-status.c:1655
+#: wt-status.c:1663
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -4902,32 +5265,32 @@ msgstr ""
 "lägga till nya filer själv (se \"git help status\")."
 
 # %s är nästa sträng eller tom.
-#: wt-status.c:1661
+#: wt-status.c:1669
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Ospårade filer visas ej%s"
 
-#: wt-status.c:1663
+#: wt-status.c:1671
 msgid " (use -u option to show untracked files)"
 msgstr " (använd flaggan -u för att visa ospårade filer)"
 
-#: wt-status.c:1669
+#: wt-status.c:1677
 msgid "No changes"
 msgstr "Inga ändringar"
 
-#: wt-status.c:1674
+#: wt-status.c:1682
 #, 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:1677
+#: wt-status.c:1685
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "inga ändringar att checka in\n"
 
-#: wt-status.c:1680
+#: wt-status.c:1688
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -4936,67 +5299,67 @@ msgstr ""
 "inget köat för incheckning, men ospårade filer finns (spåra med \"git add"
 "\")\n"
 
-#: wt-status.c:1683
+#: wt-status.c:1691
 #, 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:1686
+#: wt-status.c:1694
 #, 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:1689 wt-status.c:1694
+#: wt-status.c:1697 wt-status.c:1702
 #, c-format
 msgid "nothing to commit\n"
 msgstr "inget att checka in\n"
 
-#: wt-status.c:1692
+#: wt-status.c:1700
 #, 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:1696
+#: wt-status.c:1704
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "inget att checka in, arbetskatalogen ren\n"
 
-#: wt-status.c:1809
+#: wt-status.c:1817
 msgid "No commits yet on "
 msgstr "Inga incheckningar ännu på "
 
-#: wt-status.c:1813
+#: wt-status.c:1821
 msgid "HEAD (no branch)"
 msgstr "HEAD (ingen gren)"
 
-#: wt-status.c:1844
+#: wt-status.c:1852
 msgid "different"
 msgstr "olika"
 
-#: wt-status.c:1846 wt-status.c:1854
+#: wt-status.c:1854 wt-status.c:1862
 msgid "behind "
 msgstr "efter "
 
-#: wt-status.c:1849 wt-status.c:1852
+#: wt-status.c:1857 wt-status.c:1860
 msgid "ahead "
 msgstr "före "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2358
+#: wt-status.c:2366
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "kan inte %s: Du har oköade ändringar."
 
-#: wt-status.c:2364
+#: wt-status.c:2372
 msgid "additionally, your index contains uncommitted changes."
 msgstr "dessutom innehåller dit index ändringar som inte har checkats in."
 
-#: wt-status.c:2366
+#: wt-status.c:2374
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "kan inte %s: Ditt index innehåller ändringar som inte checkats in."
 
-#: compat/precompose_utf8.c:58 builtin/clone.c:440
+#: compat/precompose_utf8.c:58 builtin/clone.c:442
 #, c-format
 msgid "failed to unlink '%s'"
 msgstr "misslyckades ta bort länken \"%s\""
@@ -5010,7 +5373,7 @@ msgstr "git add [<flaggor>] [--] <sökväg>..."
 msgid "unexpected diff status %c"
 msgstr "diff-status %c förväntades inte"
 
-#: builtin/add.c:88 builtin/commit.c:257
+#: builtin/add.c:88 builtin/commit.c:266
 msgid "updating files failed"
 msgstr "misslyckades uppdatera filer"
 
@@ -5023,7 +5386,7 @@ msgstr "ta bort \"%s\"\n"
 msgid "Unstaged changes after refreshing the index:"
 msgstr "Oköade ändringar efter att ha uppdaterat indexet:"
 
-#: builtin/add.c:233 builtin/rev-parse.c:888
+#: builtin/add.c:233 builtin/rev-parse.c:892
 msgid "Could not read the index"
 msgstr "Kunde inte läsa indexet"
 
@@ -5054,77 +5417,77 @@ msgstr "Tom patch. Avbryter."
 msgid "Could not apply '%s'"
 msgstr "Kunde inte tillämpa \"%s\""
 
-#: builtin/add.c:271
+#: builtin/add.c:269
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr "Följande sökvägar ignoreras av en av dina .gitignore-filer:\n"
 
-#: builtin/add.c:291 builtin/clean.c:911 builtin/fetch.c:146 builtin/mv.c:124
-#: builtin/prune-packed.c:55 builtin/pull.c:207 builtin/push.c:541
-#: builtin/remote.c:1333 builtin/rm.c:242 builtin/send-pack.c:164
+#: builtin/add.c:289 builtin/clean.c:911 builtin/fetch.c:145 builtin/mv.c:123
+#: builtin/prune-packed.c:55 builtin/pull.c:212 builtin/push.c:557
+#: builtin/remote.c:1342 builtin/rm.c:240 builtin/send-pack.c:165
 msgid "dry run"
 msgstr "testkörning"
 
-#: builtin/add.c:294
+#: builtin/add.c:292
 msgid "interactive picking"
 msgstr "plocka interaktivt"
 
-#: builtin/add.c:295 builtin/checkout.c:1128 builtin/reset.c:302
+#: builtin/add.c:293 builtin/checkout.c:1135 builtin/reset.c:302
 msgid "select hunks interactively"
 msgstr "välj stycken interaktivt"
 
-#: builtin/add.c:296
+#: builtin/add.c:294
 msgid "edit current diff and apply"
 msgstr "redigera aktuell diff och applicera"
 
-#: builtin/add.c:297
+#: builtin/add.c:295
 msgid "allow adding otherwise ignored files"
 msgstr "tillåt lägga till annars ignorerade filer"
 
-#: builtin/add.c:298
+#: builtin/add.c:296
 msgid "update tracked files"
 msgstr "uppdatera spårade filer"
 
-#: builtin/add.c:299
+#: builtin/add.c:297
 msgid "renormalize EOL of tracked files (implies -u)"
 msgstr "åternormalisera radslut i spårade filer (implicerar -u)"
 
-#: builtin/add.c:300
+#: builtin/add.c:298
 msgid "record only the fact that the path will be added later"
 msgstr "registrera endast att sökvägen kommer läggas till senare"
 
-#: builtin/add.c:301
+#: builtin/add.c:299
 msgid "add changes from all tracked and untracked files"
 msgstr "lägg till ändringar från alla spårade och ospårade filer"
 
-#: builtin/add.c:304
+#: builtin/add.c:302
 msgid "ignore paths removed in the working tree (same as --no-all)"
 msgstr "ignorera sökvägar borttagna i arbetskatalogen (samma som --no-all)"
 
-#: builtin/add.c:306
+#: builtin/add.c:304
 msgid "don't add, only refresh the index"
 msgstr "lägg inte till, uppdatera endast indexet"
 
-#: builtin/add.c:307
+#: builtin/add.c:305
 msgid "just skip files which cannot be added because of errors"
 msgstr "hoppa bara över filer som inte kan läggas till på grund av fel"
 
-#: builtin/add.c:308
+#: builtin/add.c:306
 msgid "check if - even missing - files are ignored in dry run"
 msgstr "se om - även saknade - filer ignoreras i testkörning"
 
-#: builtin/add.c:309 builtin/update-index.c:964
+#: builtin/add.c:307 builtin/update-index.c:974
 msgid "(+/-)x"
 msgstr "(+/-)x"
 
-#: builtin/add.c:309 builtin/update-index.c:965
+#: builtin/add.c:307 builtin/update-index.c:975
 msgid "override the executable bit of the listed files"
 msgstr "överstyr exekveringsbiten för angivna filer"
 
-#: builtin/add.c:311
+#: builtin/add.c:309
 msgid "warn when adding an embedded repository"
 msgstr "varna när ett inbyggt arkiv läggs till"
 
-#: builtin/add.c:326
+#: builtin/add.c:324
 #, c-format
 msgid ""
 "You've added another git repository inside your current repository.\n"
@@ -5155,47 +5518,47 @@ msgstr ""
 "\n"
 "Se ”git help submodule” för ytterligare information."
 
-#: builtin/add.c:354
+#: builtin/add.c:352
 #, c-format
 msgid "adding embedded git repository: %s"
 msgstr "lägger till inbäddat git-arkiv: %s"
 
-#: builtin/add.c:372
+#: builtin/add.c:370
 #, c-format
 msgid "Use -f if you really want to add them.\n"
 msgstr "Använd -f om du verkligen vill lägga till dem.\n"
 
-#: builtin/add.c:380
+#: builtin/add.c:378
 msgid "adding files failed"
 msgstr "misslyckades lägga till filer"
 
-#: builtin/add.c:417
+#: builtin/add.c:416
 msgid "-A and -u are mutually incompatible"
 msgstr "-A och -u är ömsesidigt inkompatibla"
 
-#: builtin/add.c:424
+#: builtin/add.c:423
 msgid "Option --ignore-missing can only be used together with --dry-run"
 msgstr "Flaggan --ignore-missing kan endast användas tillsammans med --dry-run"
 
-#: builtin/add.c:428
+#: builtin/add.c:427
 #, c-format
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "--chmod-parametern \"%s\" måste antingen vara -x eller +x"
 
-#: builtin/add.c:443
+#: builtin/add.c:442
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr "Inget angivet, inget tillagt.\n"
 
-#: builtin/add.c:444
+#: builtin/add.c:443
 #, c-format
 msgid "Maybe you wanted to say 'git add .'?\n"
 msgstr "Kanske menade du att skriva \"git add .\"?\n"
 
-#: builtin/add.c:449 builtin/check-ignore.c:177 builtin/checkout.c:280
-#: builtin/checkout.c:483 builtin/clean.c:958 builtin/commit.c:316
+#: builtin/add.c:448 builtin/check-ignore.c:177 builtin/checkout.c:280
+#: builtin/checkout.c:483 builtin/clean.c:958 builtin/commit.c:325
 #: builtin/diff-tree.c:114 builtin/mv.c:144 builtin/reset.c:241
-#: builtin/rm.c:271 builtin/submodule--helper.c:326
+#: builtin/rm.c:270 builtin/submodule--helper.c:328
 msgid "index file corrupt"
 msgstr "indexfilen trasig"
 
@@ -5247,7 +5610,7 @@ msgstr "ogiltig tidszons-offset"
 msgid "Patch format detection failed."
 msgstr "Misslyckades detektera patchformat."
 
-#: builtin/am.c:1013 builtin/clone.c:405
+#: builtin/am.c:1013 builtin/clone.c:407
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr "misslyckades skapa katalogen \"%s\""
@@ -5256,7 +5619,7 @@ msgstr "misslyckades skapa katalogen \"%s\""
 msgid "Failed to split patches."
 msgstr "Misslyckades dela patchar."
 
-#: builtin/am.c:1148 builtin/commit.c:342
+#: builtin/am.c:1148 builtin/commit.c:351
 msgid "unable to write index file"
 msgstr "kan inte skriva indexfil"
 
@@ -5433,7 +5796,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:2222 builtin/init-db.c:484 builtin/prune-packed.c:57
-#: builtin/repack.c:182
+#: builtin/repack.c:192
 msgid "be quiet"
 msgstr "var tyst"
 
@@ -5475,16 +5838,17 @@ msgstr "ta bort allting före en saxlinje"
 msgid "pass it through git-apply"
 msgstr "sänd det genom git-apply"
 
-#: builtin/am.c:2260 builtin/fmt-merge-msg.c:665 builtin/fmt-merge-msg.c:668
-#: builtin/grep.c:853 builtin/merge.c:206 builtin/pull.c:145 builtin/pull.c:203
-#: builtin/repack.c:191 builtin/repack.c:195 builtin/repack.c:197
-#: builtin/show-branch.c:631 builtin/show-ref.c:169 builtin/tag.c:382
-#: parse-options.h:144 parse-options.h:146 parse-options.h:257
+#: builtin/am.c:2260 builtin/commit.c:1332 builtin/fmt-merge-msg.c:665
+#: builtin/fmt-merge-msg.c:668 builtin/grep.c:853 builtin/merge.c:208
+#: builtin/pull.c:150 builtin/pull.c:208 builtin/repack.c:201
+#: builtin/repack.c:205 builtin/repack.c:207 builtin/show-branch.c:631
+#: builtin/show-ref.c:169 builtin/tag.c:383 parse-options.h:144
+#: parse-options.h:146 parse-options.h:258
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2266 builtin/branch.c:629 builtin/for-each-ref.c:38
-#: builtin/replace.c:445 builtin/tag.c:418 builtin/verify-tag.c:39
+#: builtin/am.c:2266 builtin/branch.c:632 builtin/for-each-ref.c:38
+#: builtin/replace.c:543 builtin/tag.c:419 builtin/verify-tag.c:39
 msgid "format"
 msgstr "format"
 
@@ -5528,8 +5892,8 @@ msgstr "ljug om incheckningsdatum"
 msgid "use current timestamp for author date"
 msgstr "använd nuvarande tidsstämpel för författardatum"
 
-#: builtin/am.c:2298 builtin/commit.c:1431 builtin/merge.c:237
-#: builtin/pull.c:178 builtin/revert.c:112 builtin/tag.c:398
+#: builtin/am.c:2298 builtin/commit.c:1468 builtin/merge.c:239
+#: builtin/pull.c:183 builtin/revert.c:112 builtin/tag.c:399
 msgid "key-id"
 msgstr "nyckel-id"
 
@@ -5668,115 +6032,141 @@ msgstr "--write-terms kräver två argument"
 msgid "--bisect-clean-state requires no arguments"
 msgstr "--bisect-clean-state tar inga argument"
 
-#: builtin/blame.c:27
+#: builtin/blame.c:29
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
 msgstr "git blame [<flaggor>] [<rev-flaggor>] [<rev>] [--] <fil>"
 
-#: builtin/blame.c:32
+#: builtin/blame.c:34
 msgid "<rev-opts> are documented in git-rev-list(1)"
 msgstr "<rev-flaggor> dokumenteras i git-rev-list(1)"
 
-#: builtin/blame.c:677
+#: builtin/blame.c:404
+#, c-format
+msgid "expecting a color: %s"
+msgstr "förväntade en färg: %s"
+
+#: builtin/blame.c:411
+msgid "must end with a color"
+msgstr "måste sluta med en färg"
+
+#: builtin/blame.c:697
+#, c-format
+msgid "invalid color '%s' in color.blame.repeatedLines"
+msgstr "felaktig färg \"%s\" i color.blame.repeatedLines"
+
+#: builtin/blame.c:715
+msgid "invalid value for blame.coloring"
+msgstr "ogiltigt värde för blame.coloring"
+
+#: builtin/blame.c:786
 msgid "Show blame entries as we find them, incrementally"
 msgstr "Visa klandringsposter när vi hittar dem, interaktivt"
 
-#: builtin/blame.c:678
+#: builtin/blame.c:787
 msgid "Show blank SHA-1 for boundary commits (Default: off)"
 msgstr "Visa blank SHA-1 för gränsincheckningar (Standard: av)"
 
-#: builtin/blame.c:679
+#: builtin/blame.c:788
 msgid "Do not treat root commits as boundaries (Default: off)"
 msgstr "Behandla inte rotincheckningar som gränser (Standard: av)"
 
-#: builtin/blame.c:680
+#: builtin/blame.c:789
 msgid "Show work cost statistics"
 msgstr "Visa statistik över arbetskostnad"
 
-#: builtin/blame.c:681
+#: builtin/blame.c:790
 msgid "Force progress reporting"
 msgstr "Tvinga förloppsrapportering"
 
-#: builtin/blame.c:682
+#: builtin/blame.c:791
 msgid "Show output score for blame entries"
 msgstr "Visa utdatapoäng för klandringsposter"
 
-#: builtin/blame.c:683
+#: builtin/blame.c:792
 msgid "Show original filename (Default: auto)"
 msgstr "Visa originalfilnamn (Standard: auto)"
 
-#: builtin/blame.c:684
+#: builtin/blame.c:793
 msgid "Show original linenumber (Default: off)"
 msgstr "Visa ursprungligt radnummer (Standard: av)"
 
-#: builtin/blame.c:685
+#: builtin/blame.c:794
 msgid "Show in a format designed for machine consumption"
 msgstr "Visa i ett format avsett för maskinkonsumtion"
 
-#: builtin/blame.c:686
+#: builtin/blame.c:795
 msgid "Show porcelain format with per-line commit information"
 msgstr "Visa porslinsformat med per-rad-incheckningsinformation"
 
-#: builtin/blame.c:687
+#: builtin/blame.c:796
 msgid "Use the same output mode as git-annotate (Default: off)"
 msgstr "Använd samma utdataläge som git-annotate (Standard: av)"
 
-#: builtin/blame.c:688
+#: builtin/blame.c:797
 msgid "Show raw timestamp (Default: off)"
 msgstr "Visa rå tidsstämpel (Standard: av)"
 
-#: builtin/blame.c:689
+#: builtin/blame.c:798
 msgid "Show long commit SHA1 (Default: off)"
 msgstr "Visa lång inchecknings-SHA1 (Standard: av)"
 
-#: builtin/blame.c:690
+#: builtin/blame.c:799
 msgid "Suppress author name and timestamp (Default: off)"
 msgstr "Undertryck författarnamn och tidsstämpel (Standard: av)"
 
-#: builtin/blame.c:691
+#: builtin/blame.c:800
 msgid "Show author email instead of name (Default: off)"
 msgstr "Visa författarens e-post istället för namn (Standard: av)"
 
-#: builtin/blame.c:692
+#: builtin/blame.c:801
 msgid "Ignore whitespace differences"
 msgstr "Ignorera ändringar i blanksteg"
 
-#: builtin/blame.c:699
+#: builtin/blame.c:802
+msgid "color redundant metadata from previous line differently"
+msgstr "färglägg redundant metadata från tidigare rader annorlunda"
+
+#: builtin/blame.c:803
+msgid "color lines by age"
+msgstr "färglägg rader efter ålder"
+
+#: builtin/blame.c:810
 msgid "Use an experimental heuristic to improve diffs"
 msgstr "Använd en experimentell algoritm för att förbättra diffar"
 
-#: builtin/blame.c:701
+#: builtin/blame.c:812
 msgid "Spend extra cycles to find better match"
 msgstr "Slösa extra cykler med att hitta bättre träff"
 
-#: builtin/blame.c:702
+#: builtin/blame.c:813
 msgid "Use revisions from <file> instead of calling git-rev-list"
 msgstr "Använd revisioner från <fil> istället för att anropa git-rev-list"
 
-#: builtin/blame.c:703
+#: builtin/blame.c:814
 msgid "Use <file>'s contents as the final image"
 msgstr "Använd <fil>s innehåll som slutgiltig bild"
 
-#: builtin/blame.c:704 builtin/blame.c:705
+#: builtin/blame.c:815 builtin/blame.c:816
 msgid "score"
 msgstr "poäng"
 
-#: builtin/blame.c:704
+#: builtin/blame.c:815
 msgid "Find line copies within and across files"
 msgstr "Hitta kopierade rader inuti och mellan filer"
 
-#: builtin/blame.c:705
+#: builtin/blame.c:816
 msgid "Find line movements within and across files"
 msgstr "Hitta flyttade rader inuti och mellan filer"
 
-#: builtin/blame.c:706
+#: builtin/blame.c:817
 msgid "n,m"
 msgstr "n,m"
 
-#: builtin/blame.c:706
+#: builtin/blame.c:817
 msgid "Process only line range n,m, counting from 1"
 msgstr "Behandla endast radintervallet n,m, med början på 1"
 
-#: builtin/blame.c:753
+#: builtin/blame.c:866
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr "--progress kan inte användas med --incremental eller porslinsformat"
 
@@ -5788,18 +6178,18 @@ msgstr "--progress kan inte användas med --incremental eller porslinsformat"
 #. your language may need more or fewer display
 #. columns.
 #.
-#: builtin/blame.c:804
+#: builtin/blame.c:917
 msgid "4 years, 11 months ago"
 msgstr "4 år, 11 månader sedan"
 
-#: builtin/blame.c:890
+#: builtin/blame.c:1003
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
 msgstr[0] "filen %s har bara %lu rad"
 msgstr[1] "filen %s har bara %lu rader"
 
-#: builtin/blame.c:936
+#: builtin/blame.c:1049
 msgid "Blaming lines"
 msgstr "Klandra rader"
 
@@ -5910,66 +6300,66 @@ msgstr "Tog bort fjärrspårande grenen %s (var %s).\n"
 msgid "Deleted branch %s (was %s).\n"
 msgstr "Tog bort grenen %s (var %s).\n"
 
-#: builtin/branch.c:417 builtin/tag.c:58
+#: builtin/branch.c:416 builtin/tag.c:58
 msgid "unable to parse format string"
 msgstr "kan inte tolka formatsträng"
 
-#: builtin/branch.c:450
+#: builtin/branch.c:453
 #, c-format
 msgid "Branch %s is being rebased at %s"
 msgstr "Grenen %s ombaseras på %s"
 
-#: builtin/branch.c:454
+#: builtin/branch.c:457
 #, c-format
 msgid "Branch %s is being bisected at %s"
 msgstr "Grenen %s är i en \"bisect\" på %s"
 
-#: builtin/branch.c:471
+#: builtin/branch.c:474
 msgid "cannot copy the current branch while not on any."
 msgstr "kunde inte kopiera aktuell gren när du inte befinner dig på någon."
 
-#: builtin/branch.c:473
+#: builtin/branch.c:476
 msgid "cannot rename the current branch while not on any."
 msgstr ""
 "kunde inte byta namn på aktuell gren när du inte befinner dig på någon."
 
-#: builtin/branch.c:484
+#: builtin/branch.c:487
 #, c-format
 msgid "Invalid branch name: '%s'"
 msgstr "Felaktigt namn på gren: \"%s\""
 
-#: builtin/branch.c:511
+#: builtin/branch.c:514
 msgid "Branch rename failed"
 msgstr "Misslyckades byta namn på gren"
 
-#: builtin/branch.c:513
+#: builtin/branch.c:516
 msgid "Branch copy failed"
 msgstr "Misslyckades kopiera gren"
 
-#: builtin/branch.c:517
+#: builtin/branch.c:520
 #, c-format
 msgid "Created a copy of a misnamed branch '%s'"
 msgstr "Skapade kopia av felaktigt namngiven gren \"%s\""
 
-#: builtin/branch.c:520
+#: builtin/branch.c:523
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
 msgstr "Bytte bort namn på en felaktigt namngiven gren \"%s\""
 
-#: builtin/branch.c:526
+#: builtin/branch.c:529
 #, c-format
 msgid "Branch renamed to %s, but HEAD is not updated!"
 msgstr "Grenen namnbytt till %s, men HEAD har inte uppdaterats!"
 
-#: builtin/branch.c:535
+#: builtin/branch.c:538
 msgid "Branch is renamed, but update of config-file failed"
 msgstr "Grenen namnbytt, men misslyckades uppdatera konfigurationsfilen"
 
-#: builtin/branch.c:537
+#: builtin/branch.c:540
 msgid "Branch is copied, but update of config-file failed"
 msgstr "Grenen kopierades, men misslyckades uppdatera konfigurationsfilen"
 
-#: builtin/branch.c:553
+#: builtin/branch.c:556
 #, c-format
 msgid ""
 "Please edit the description for the branch\n"
@@ -5980,221 +6370,223 @@ msgstr ""
 "  %s\n"
 "Rader som inleds med \"%c\" ignoreras.\n"
 
-#: builtin/branch.c:586
+#: builtin/branch.c:589
 msgid "Generic options"
 msgstr "Allmänna flaggor"
 
-#: builtin/branch.c:588
+#: builtin/branch.c:591
 msgid "show hash and subject, give twice for upstream branch"
 msgstr "visa hash och ärenderad, ange två gånger för uppströmsgren"
 
-#: builtin/branch.c:589
+#: builtin/branch.c:592
 msgid "suppress informational messages"
 msgstr "undertryck informationsmeddelanden"
 
-#: builtin/branch.c:590
+#: builtin/branch.c:593
 msgid "set up tracking mode (see git-pull(1))"
 msgstr "ställ in spårningsläge (se git-pull(1))"
 
-#: builtin/branch.c:592
+#: builtin/branch.c:595
 msgid "do not use"
 msgstr "använd ej"
 
-#: builtin/branch.c:594
+#: builtin/branch.c:597
 msgid "upstream"
 msgstr "uppströms"
 
-#: builtin/branch.c:594
+#: builtin/branch.c:597
 msgid "change the upstream info"
 msgstr "ändra uppströmsinformationen"
 
-#: builtin/branch.c:595
+#: builtin/branch.c:598
 msgid "Unset the upstream info"
 msgstr "Ta bort uppströmsinformationen"
 
-#: builtin/branch.c:596
+#: builtin/branch.c:599
 msgid "use colored output"
 msgstr "använd färgad utdata"
 
-#: builtin/branch.c:597
+#: builtin/branch.c:600
 msgid "act on remote-tracking branches"
 msgstr "arbeta på fjärrspårande grenar"
 
-#: builtin/branch.c:599 builtin/branch.c:601
+#: builtin/branch.c:602 builtin/branch.c:604
 msgid "print only branches that contain the commit"
 msgstr "visa endast grenar som innehåller incheckningen"
 
-#: builtin/branch.c:600 builtin/branch.c:602
+#: builtin/branch.c:603 builtin/branch.c:605
 msgid "print only branches that don't contain the commit"
 msgstr "visa endast grenar som inte innehåller incheckningen"
 
-#: builtin/branch.c:605
+#: builtin/branch.c:608
 msgid "Specific git-branch actions:"
 msgstr "Specifika git-branch-åtgärder:"
 
-#: builtin/branch.c:606
+#: builtin/branch.c:609
 msgid "list both remote-tracking and local branches"
 msgstr "visa både fjärrspårande och lokala grenar"
 
-#: builtin/branch.c:608
+#: builtin/branch.c:611
 msgid "delete fully merged branch"
 msgstr "ta bort helt sammanslagen gren"
 
-#: builtin/branch.c:609
+#: builtin/branch.c:612
 msgid "delete branch (even if not merged)"
 msgstr "ta bort gren (även om inte helt sammanslagen)"
 
-#: builtin/branch.c:610
+#: builtin/branch.c:613
 msgid "move/rename a branch and its reflog"
 msgstr "flytta/ta bort en gren och dess reflogg"
 
-#: builtin/branch.c:611
+#: builtin/branch.c:614
 msgid "move/rename a branch, even if target exists"
 msgstr "flytta/ta bort en gren, även om målet finns"
 
-#: builtin/branch.c:612
+#: builtin/branch.c:615
 msgid "copy a branch and its reflog"
 msgstr "kopiera en gren och dess reflogg"
 
-#: builtin/branch.c:613
+#: builtin/branch.c:616
 msgid "copy a branch, even if target exists"
 msgstr "kopiera en gren, även om målet finns"
 
-#: builtin/branch.c:614
+#: builtin/branch.c:617
 msgid "list branch names"
 msgstr "lista namn på grenar"
 
-#: builtin/branch.c:615
+#: builtin/branch.c:618
 msgid "create the branch's reflog"
 msgstr "skapa grenens reflogg"
 
-#: builtin/branch.c:617
+#: builtin/branch.c:620
 msgid "edit the description for the branch"
 msgstr "redigera beskrivning för grenen"
 
-#: builtin/branch.c:618
+#: builtin/branch.c:621
 msgid "force creation, move/rename, deletion"
 msgstr "tvinga skapande, flytt/namnändring, borttagande"
 
-#: builtin/branch.c:619
+#: builtin/branch.c:622
 msgid "print only branches that are merged"
 msgstr "visa endast sammanslagna grenar"
 
-#: builtin/branch.c:620
+#: builtin/branch.c:623
 msgid "print only branches that are not merged"
 msgstr "visa endast ej sammanslagna grenar"
 
-#: builtin/branch.c:621
+#: builtin/branch.c:624
 msgid "list branches in columns"
 msgstr "visa grenar i spalter"
 
-#: builtin/branch.c:622 builtin/for-each-ref.c:40 builtin/tag.c:411
+#: builtin/branch.c:625 builtin/for-each-ref.c:40 builtin/ls-remote.c:70
+#: builtin/tag.c:412
 msgid "key"
 msgstr "nyckel"
 
-#: builtin/branch.c:623 builtin/for-each-ref.c:41 builtin/tag.c:412
+#: builtin/branch.c:626 builtin/for-each-ref.c:41 builtin/ls-remote.c:71
+#: builtin/tag.c:413
 msgid "field name to sort on"
 msgstr "fältnamn att sortera på"
 
-#: builtin/branch.c:625 builtin/for-each-ref.c:43 builtin/notes.c:408
+#: builtin/branch.c:628 builtin/for-each-ref.c:43 builtin/notes.c:408
 #: builtin/notes.c:411 builtin/notes.c:571 builtin/notes.c:574
-#: builtin/tag.c:414
+#: builtin/tag.c:415
 msgid "object"
 msgstr "objekt"
 
-#: builtin/branch.c:626
+#: builtin/branch.c:629
 msgid "print only branches of the object"
 msgstr "visa endast grenar för objektet"
 
-#: builtin/branch.c:628 builtin/for-each-ref.c:49 builtin/tag.c:421
+#: builtin/branch.c:631 builtin/for-each-ref.c:49 builtin/tag.c:422
 msgid "sorting and filtering are case insensitive"
 msgstr "sortering och filtrering skiljer gemener och VERSALER"
 
-#: builtin/branch.c:629 builtin/for-each-ref.c:38 builtin/tag.c:419
+#: builtin/branch.c:632 builtin/for-each-ref.c:38 builtin/tag.c:420
 #: builtin/verify-tag.c:39
 msgid "format to use for the output"
 msgstr "format att använda för utdata"
 
-#: builtin/branch.c:652 builtin/clone.c:735
+#: builtin/branch.c:655 builtin/clone.c:737
 msgid "HEAD not found below refs/heads!"
 msgstr "HEAD hittades inte under refs/heads!"
 
-#: builtin/branch.c:675
+#: builtin/branch.c:678
 msgid "--column and --verbose are incompatible"
 msgstr "--column och --verbose är inkompatibla"
 
-#: builtin/branch.c:690 builtin/branch.c:742 builtin/branch.c:751
+#: builtin/branch.c:693 builtin/branch.c:745 builtin/branch.c:754
 msgid "branch name required"
 msgstr "grennamn krävs"
 
-#: builtin/branch.c:718
+#: builtin/branch.c:721
 msgid "Cannot give description to detached HEAD"
 msgstr "Kan inte beskriva frånkopplad HEAD"
 
-#: builtin/branch.c:723
+#: builtin/branch.c:726
 msgid "cannot edit description of more than one branch"
 msgstr "kan inte redigera beskrivning för mer än en gren"
 
-#: builtin/branch.c:730
+#: builtin/branch.c:733
 #, c-format
 msgid "No commit on branch '%s' yet."
 msgstr "Inga incheckningar på grenen \"%s\" ännu."
 
-#: builtin/branch.c:733
+#: builtin/branch.c:736
 #, c-format
 msgid "No branch named '%s'."
 msgstr "Ingen gren vid namnet \"%s\"."
 
-#: builtin/branch.c:748
+#: builtin/branch.c:751
 msgid "too many branches for a copy operation"
 msgstr "för många grenar för kopiering"
 
-#: builtin/branch.c:757
+#: builtin/branch.c:760
 msgid "too many arguments for a rename operation"
 msgstr "för många flaggor för namnbyte"
 
-#: builtin/branch.c:762
+#: builtin/branch.c:765
 msgid "too many arguments to set new upstream"
 msgstr "för många flaggor för att byta uppström"
 
-#: builtin/branch.c:766
+#: builtin/branch.c:769
 #, c-format
 msgid ""
 "could not set upstream of HEAD to %s when it does not point to any branch."
 msgstr ""
 "kunde inte sätta uppström för HEAD till %s när det inte pekar mot någon gren."
 
-#: builtin/branch.c:769 builtin/branch.c:791 builtin/branch.c:807
+#: builtin/branch.c:772 builtin/branch.c:794 builtin/branch.c:810
 #, c-format
 msgid "no such branch '%s'"
 msgstr "okänd gren \"%s\""
 
-#: builtin/branch.c:773
+#: builtin/branch.c:776
 #, c-format
 msgid "branch '%s' does not exist"
 msgstr "grenen \"%s\" finns inte"
 
-#: builtin/branch.c:785
+#: builtin/branch.c:788
 msgid "too many arguments to unset upstream"
 msgstr "för många flaggor för att ta bort uppström"
 
-#: builtin/branch.c:789
+#: builtin/branch.c:792
 msgid "could not unset upstream of HEAD when it does not point to any branch."
 msgstr ""
 "kunde inte ta bort uppström för HEAD när det inte pekar mot någon gren."
 
-#: builtin/branch.c:795
+#: builtin/branch.c:798
 #, c-format
 msgid "Branch '%s' has no upstream information"
 msgstr "Grenen \"%s\" har ingen uppströmsinformation"
 
-#: builtin/branch.c:810
+#: builtin/branch.c:813
 msgid "-a and -r options to 'git branch' do not make sense with a branch name"
 msgstr ""
 "flaggorna -a och -r på \"git branch\" kan inte anges tillsammans med ett "
 "grennamn"
 
-#: builtin/branch.c:813
+#: builtin/branch.c:816
 msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
@@ -6215,7 +6607,7 @@ msgstr "Behöver ett arkiv för att skapa ett paket (bundle)."
 msgid "Need a repository to unbundle."
 msgstr "Behöver ett arkiv för att packa upp ett paket (bundle)."
 
-#: builtin/cat-file.c:523
+#: builtin/cat-file.c:525
 msgid ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <type> | --textconv | --filters) [--path=<path>] <object>"
@@ -6223,7 +6615,7 @@ msgstr ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <typ> | --textconv | --filters) [--path=<sökväg>] <objekt>"
 
-#: builtin/cat-file.c:524
+#: builtin/cat-file.c:526
 msgid ""
 "git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
 "filters]"
@@ -6231,64 +6623,64 @@ msgstr ""
 "git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
 "filters]"
 
-#: builtin/cat-file.c:561
+#: builtin/cat-file.c:563
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr "<typ> kan vara en av: blob, tree, commit, tag"
 
-#: builtin/cat-file.c:562
+#: builtin/cat-file.c:564
 msgid "show object type"
 msgstr "visa objekttyp"
 
-#: builtin/cat-file.c:563
+#: builtin/cat-file.c:565
 msgid "show object size"
 msgstr "visa objektstorlek"
 
-#: builtin/cat-file.c:565
+#: builtin/cat-file.c:567
 msgid "exit with zero when there's no error"
 msgstr "avsluta med noll när det inte uppstått något fel"
 
-#: builtin/cat-file.c:566
+#: builtin/cat-file.c:568
 msgid "pretty-print object's content"
 msgstr "visa objektets innehåll snyggt"
 
-#: builtin/cat-file.c:568
+#: builtin/cat-file.c:570
 msgid "for blob objects, run textconv on object's content"
 msgstr "för blob-objekt, kör filter på objektets innehåll"
 
-#: builtin/cat-file.c:570
+#: builtin/cat-file.c:572
 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:571 git-submodule.sh:878
+#: builtin/cat-file.c:573 git-submodule.sh:894
 msgid "blob"
 msgstr "blob"
 
-#: builtin/cat-file.c:572
+#: builtin/cat-file.c:574
 msgid "use a specific path for --textconv/--filters"
 msgstr "använd specifik sökväg för --textconv/--filters"
 
-#: builtin/cat-file.c:574
+#: builtin/cat-file.c:576
 msgid "allow -s and -t to work with broken/corrupt objects"
 msgstr "låter -s och -t att fungera med trasiga/sönderskrivna objekt"
 
-#: builtin/cat-file.c:575
+#: builtin/cat-file.c:577
 msgid "buffer --batch output"
 msgstr "buffra utdata från --batch"
 
-#: builtin/cat-file.c:577
+#: builtin/cat-file.c:579
 msgid "show info and content of objects fed from the standard input"
 msgstr "visa information och innehåll för objekt som listas på standard in"
 
-#: builtin/cat-file.c:580
+#: builtin/cat-file.c:582
 msgid "show info about objects fed from the standard input"
 msgstr "visa information för objekt som listas på standard in"
 
-#: builtin/cat-file.c:583
+#: builtin/cat-file.c:585
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
 msgstr ""
 "följ symboliska länkar i trädet (använd med --batch eller --batch-check)"
 
-#: builtin/cat-file.c:585
+#: builtin/cat-file.c:587
 msgid "show all objects with --batch or --batch-check"
 msgstr "visa alla objekt med --batch eller --batch-check"
 
@@ -6316,7 +6708,7 @@ msgstr "läs filnamn från standard in"
 msgid "terminate input and output records by a NUL character"
 msgstr "avsluta in- och utdataposter med NUL-tecken"
 
-#: builtin/check-ignore.c:20 builtin/checkout.c:1106 builtin/gc.c:358
+#: builtin/check-ignore.c:20 builtin/checkout.c:1113 builtin/gc.c:500
 msgid "suppress progress reporting"
 msgstr "undertryck förloppsrapportering"
 
@@ -6406,9 +6798,9 @@ msgid "write the content to temporary files"
 msgstr "skriv innehåll till temporära filer"
 
 #: builtin/checkout-index.c:173 builtin/column.c:31
-#: builtin/submodule--helper.c:1203 builtin/submodule--helper.c:1206
-#: builtin/submodule--helper.c:1212 builtin/submodule--helper.c:1574
-#: builtin/worktree.c:570
+#: builtin/submodule--helper.c:1216 builtin/submodule--helper.c:1219
+#: builtin/submodule--helper.c:1227 builtin/submodule--helper.c:1591
+#: builtin/worktree.c:610
 msgid "string"
 msgstr "sträng"
 
@@ -6479,54 +6871,54 @@ msgstr "Kan inte uppdatera sökvägar och växla till grenen \"%s\" samtidigt."
 msgid "path '%s' is unmerged"
 msgstr "sökvägen \"%s\" har inte slagits ihop"
 
-#: builtin/checkout.c:505
+#: builtin/checkout.c:506
 msgid "you need to resolve your current index first"
 msgstr "du måste lösa ditt befintliga index först"
 
-#: builtin/checkout.c:636
+#: builtin/checkout.c:643
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "Kan inte skapa referenslogg för \"%s\": %s\n"
 
-#: builtin/checkout.c:677
+#: builtin/checkout.c:684
 msgid "HEAD is now at"
 msgstr "HEAD är nu på"
 
-#: builtin/checkout.c:681 builtin/clone.c:689
+#: builtin/checkout.c:688 builtin/clone.c:691
 msgid "unable to update HEAD"
 msgstr "kan inte uppdatera HEAD"
 
-#: builtin/checkout.c:685
+#: builtin/checkout.c:692
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Återställ gren \"%s\"\n"
 
-#: builtin/checkout.c:688
+#: builtin/checkout.c:695
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Redan på \"%s\"\n"
 
-#: builtin/checkout.c:692
+#: builtin/checkout.c:699
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Växlade till och nollställde grenen \"%s\"\n"
 
-#: builtin/checkout.c:694 builtin/checkout.c:1039
+#: builtin/checkout.c:701 builtin/checkout.c:1046
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Växlade till en ny gren \"%s\"\n"
 
-#: builtin/checkout.c:696
+#: builtin/checkout.c:703
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Växlade till grenen \"%s\"\n"
 
-#: builtin/checkout.c:747
+#: builtin/checkout.c:754
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... och %d till.\n"
 
-#: builtin/checkout.c:753
+#: builtin/checkout.c:760
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -6549,7 +6941,7 @@ msgstr[1] ""
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:772
+#: builtin/checkout.c:779
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -6576,161 +6968,161 @@ msgstr[1] ""
 " git branch <nytt_grennamn> %s\n"
 "\n"
 
-#: builtin/checkout.c:804
+#: builtin/checkout.c:811
 msgid "internal error in revision walk"
 msgstr "internt fel vid genomgång av revisioner (revision walk)"
 
-#: builtin/checkout.c:808
+#: builtin/checkout.c:815
 msgid "Previous HEAD position was"
 msgstr "Tidigare position för HEAD var"
 
-#: builtin/checkout.c:836 builtin/checkout.c:1034
+#: builtin/checkout.c:843 builtin/checkout.c:1041
 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:940
+#: builtin/checkout.c:947
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "endast en referens förväntades, %d gavs."
 
-#: builtin/checkout.c:980 builtin/worktree.c:249
+#: builtin/checkout.c:987 builtin/worktree.c:240 builtin/worktree.c:389
 #, c-format
 msgid "invalid reference: %s"
 msgstr "felaktig referens: %s"
 
-#: builtin/checkout.c:1009
+#: builtin/checkout.c:1016
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "referensen är inte ett träd: %s"
 
-#: builtin/checkout.c:1048
+#: builtin/checkout.c:1055
 msgid "paths cannot be used with switching branches"
 msgstr "sökvägar kan inte användas vid byte av gren"
 
-#: builtin/checkout.c:1051 builtin/checkout.c:1055
+#: builtin/checkout.c:1058 builtin/checkout.c:1062
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "\"%s\" kan inte användas vid byte av gren"
 
-#: builtin/checkout.c:1059 builtin/checkout.c:1062 builtin/checkout.c:1067
-#: builtin/checkout.c:1070
+#: builtin/checkout.c:1066 builtin/checkout.c:1069 builtin/checkout.c:1074
+#: builtin/checkout.c:1077
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "\"%s\" kan inte användas med \"%s\""
 
-#: builtin/checkout.c:1075
+#: builtin/checkout.c:1082
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "Kan inte växla gren till icke-incheckningen \"%s\""
 
-#: builtin/checkout.c:1107 builtin/checkout.c:1109 builtin/clone.c:116
-#: builtin/remote.c:166 builtin/remote.c:168 builtin/worktree.c:387
-#: builtin/worktree.c:389
+#: builtin/checkout.c:1114 builtin/checkout.c:1116 builtin/clone.c:118
+#: builtin/remote.c:167 builtin/remote.c:169 builtin/worktree.c:433
+#: builtin/worktree.c:435
 msgid "branch"
 msgstr "gren"
 
-#: builtin/checkout.c:1108
+#: builtin/checkout.c:1115
 msgid "create and checkout a new branch"
 msgstr "skapa och checka ut en ny gren"
 
-#: builtin/checkout.c:1110
+#: builtin/checkout.c:1117
 msgid "create/reset and checkout a branch"
 msgstr "skapa/nollställ och checka ut en gren"
 
-#: builtin/checkout.c:1111
+#: builtin/checkout.c:1118
 msgid "create reflog for new branch"
 msgstr "skapa reflogg för ny gren"
 
-#: builtin/checkout.c:1112 builtin/worktree.c:391
+#: builtin/checkout.c:1119 builtin/worktree.c:437
 msgid "detach HEAD at named commit"
 msgstr "koppla från HEAD vid namngiven incheckning"
 
-#: builtin/checkout.c:1113
+#: builtin/checkout.c:1120
 msgid "set upstream info for new branch"
 msgstr "sätt uppströmsinformation för ny gren"
 
-#: builtin/checkout.c:1115
+#: builtin/checkout.c:1122
 msgid "new-branch"
 msgstr "ny-gren"
 
-#: builtin/checkout.c:1115
+#: builtin/checkout.c:1122
 msgid "new unparented branch"
 msgstr "ny gren utan förälder"
 
-#: builtin/checkout.c:1116
+#: builtin/checkout.c:1123
 msgid "checkout our version for unmerged files"
 msgstr "checka ut vår version för ej sammanslagna filer"
 
-#: builtin/checkout.c:1118
+#: builtin/checkout.c:1125
 msgid "checkout their version for unmerged files"
 msgstr "checka ut deras version för ej sammanslagna filer"
 
-#: builtin/checkout.c:1120
+#: builtin/checkout.c:1127
 msgid "force checkout (throw away local modifications)"
 msgstr "tvinga utcheckning (kasta bort lokala ändringar)"
 
-#: builtin/checkout.c:1122
+#: builtin/checkout.c:1129
 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:1124 builtin/merge.c:239
+#: builtin/checkout.c:1131 builtin/merge.c:241
 msgid "update ignored files (default)"
 msgstr "uppdatera ignorerade filer (standard)"
 
-#: builtin/checkout.c:1126 builtin/log.c:1499 parse-options.h:263
+#: builtin/checkout.c:1133 builtin/log.c:1499 parse-options.h:264
 msgid "style"
 msgstr "stil"
 
-#: builtin/checkout.c:1127
+#: builtin/checkout.c:1134
 msgid "conflict style (merge or diff3)"
 msgstr "konfliktstil (merge eller diff3)"
 
-#: builtin/checkout.c:1130
+#: builtin/checkout.c:1137
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "begränsa inte sökvägar till endast glesa poster"
 
-#: builtin/checkout.c:1132
+#: builtin/checkout.c:1139
 msgid "second guess 'git checkout <no-such-branch>'"
 msgstr "förutspå \"git checkout <gren-saknas>\""
 
-#: builtin/checkout.c:1134
+#: builtin/checkout.c:1141
 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:1138 builtin/clone.c:83 builtin/fetch.c:150
-#: builtin/merge.c:236 builtin/pull.c:123 builtin/push.c:556
-#: builtin/send-pack.c:173
+#: builtin/checkout.c:1145 builtin/clone.c:85 builtin/fetch.c:149
+#: builtin/merge.c:238 builtin/pull.c:128 builtin/push.c:572
+#: builtin/send-pack.c:174
 msgid "force progress reporting"
 msgstr "tvinga förloppsrapportering"
 
-#: builtin/checkout.c:1168
+#: builtin/checkout.c:1175
 msgid "-b, -B and --orphan are mutually exclusive"
 msgstr "-b, -B och --orphan är ömsesidigt uteslutande"
 
-#: builtin/checkout.c:1185
+#: builtin/checkout.c:1192
 msgid "--track needs a branch name"
 msgstr "--track behöver ett namn på en gren"
 
-#: builtin/checkout.c:1190
+#: builtin/checkout.c:1197
 msgid "Missing branch name; try -b"
 msgstr "Grennamn saknas; försök med -b"
 
-#: builtin/checkout.c:1226
+#: builtin/checkout.c:1233
 msgid "invalid path specification"
 msgstr "felaktig sökvägsangivelse"
 
-#: builtin/checkout.c:1233
+#: builtin/checkout.c:1240
 #, 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:1237
+#: builtin/checkout.c:1244
 #, 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:1241
+#: builtin/checkout.c:1248
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -6770,7 +7162,7 @@ msgstr "Skulle hoppa över arkivet %s\n"
 msgid "failed to remove %s"
 msgstr "misslyckades ta bort %s"
 
-#: builtin/clean.c:302 git-add--interactive.perl:572
+#: builtin/clean.c:302 git-add--interactive.perl:579
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -6783,7 +7175,7 @@ msgstr ""
 "foo        - markera post baserad på unikt prefix\n"
 "           - (tomt) markera ingenting\n"
 
-#: builtin/clean.c:306 git-add--interactive.perl:581
+#: builtin/clean.c:306 git-add--interactive.perl:588
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -6804,8 +7196,8 @@ msgstr ""
 "*          - välj alla poster\n"
 "           - (tomt) avsluta markering\n"
 
-#: builtin/clean.c:522 git-add--interactive.perl:547
-#: git-add--interactive.perl:552
+#: builtin/clean.c:522 git-add--interactive.perl:554
+#: git-add--interactive.perl:559
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "Vadå (%s)?\n"
@@ -6830,7 +7222,7 @@ msgstr "Välj poster att ta bort"
 msgid "Remove %s [y/N]? "
 msgstr "Ta bort %s [Y=ja / N=nej]? "
 
-#: builtin/clean.c:788 git-add--interactive.perl:1710
+#: builtin/clean.c:788 git-add--interactive.perl:1717
 #, c-format
 msgid "Bye.\n"
 msgstr "Hej då.\n"
@@ -6853,11 +7245,11 @@ msgstr ""
 "help                - denna skärm\n"
 "?                   - hjälp för kommandoval"
 
-#: builtin/clean.c:823 git-add--interactive.perl:1786
+#: builtin/clean.c:823 git-add--interactive.perl:1793
 msgid "*** Commands ***"
 msgstr "*** Kommandon ***"
 
-#: builtin/clean.c:824 git-add--interactive.perl:1783
+#: builtin/clean.c:824 git-add--interactive.perl:1790
 msgid "What now"
 msgstr "Vad nu"
 
@@ -6926,144 +7318,146 @@ msgstr ""
 "clean.requireForce har standardvärdet true och varken -i, -n eller -f "
 "angavs; vägrar städa"
 
-#: builtin/clone.c:40
+#: builtin/clone.c:42
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr "git clone [<flaggor>] [--] <arkiv> [<kat>]"
 
-#: builtin/clone.c:85
+#: builtin/clone.c:87
 msgid "don't create a checkout"
 msgstr "skapa inte någon utcheckning"
 
-#: builtin/clone.c:86 builtin/clone.c:88 builtin/init-db.c:479
+#: builtin/clone.c:88 builtin/clone.c:90 builtin/init-db.c:479
 msgid "create a bare repository"
 msgstr "skapa ett naket (\"bare\") arkiv"
 
-#: builtin/clone.c:90
+#: builtin/clone.c:92
 msgid "create a mirror repository (implies bare)"
 msgstr "skapa ett spegelarkiv (implicerar \"bare\")"
 
-#: builtin/clone.c:92
+#: builtin/clone.c:94
 msgid "to clone from a local repository"
 msgstr "för att klona från ett lokalt arkiv"
 
-#: builtin/clone.c:94
+#: builtin/clone.c:96
 msgid "don't use local hardlinks, always copy"
 msgstr "skapa inte lokala hårda länkar, kopiera alltid"
 
-#: builtin/clone.c:96
+#: builtin/clone.c:98
 msgid "setup as shared repository"
 msgstr "skapa som ett delat arkiv"
 
-#: builtin/clone.c:98 builtin/clone.c:102
+#: builtin/clone.c:100 builtin/clone.c:104
 msgid "pathspec"
 msgstr "sökvägsangivelse"
 
-#: builtin/clone.c:98 builtin/clone.c:102
+#: builtin/clone.c:100 builtin/clone.c:104
 msgid "initialize submodules in the clone"
 msgstr "initiera undermoduler i klonen"
 
-#: builtin/clone.c:105
+#: builtin/clone.c:107
 msgid "number of submodules cloned in parallel"
 msgstr "antal undermoduler som klonas parallellt"
 
-#: builtin/clone.c:106 builtin/init-db.c:476
+#: builtin/clone.c:108 builtin/init-db.c:476
 msgid "template-directory"
 msgstr "mallkatalog"
 
-#: builtin/clone.c:107 builtin/init-db.c:477
+#: builtin/clone.c:109 builtin/init-db.c:477
 msgid "directory from which templates will be used"
 msgstr "katalog att använda mallar från"
 
-#: builtin/clone.c:109 builtin/clone.c:111 builtin/submodule--helper.c:1210
-#: builtin/submodule--helper.c:1577
+#: builtin/clone.c:111 builtin/clone.c:113 builtin/submodule--helper.c:1223
+#: builtin/submodule--helper.c:1594
 msgid "reference repository"
 msgstr "referensarkiv"
 
-#: builtin/clone.c:113
+#: builtin/clone.c:115 builtin/submodule--helper.c:1225
+#: builtin/submodule--helper.c:1596
 msgid "use --reference only while cloning"
 msgstr "använd --reference endast under kloningen"
 
-#: builtin/clone.c:114 builtin/column.c:27 builtin/merge-file.c:44
+#: builtin/clone.c:116 builtin/column.c:27 builtin/merge-file.c:44
+#: builtin/pack-objects.c:3166 builtin/repack.c:213
 msgid "name"
 msgstr "namn"
 
-#: builtin/clone.c:115
+#: builtin/clone.c:117
 msgid "use <name> instead of 'origin' to track upstream"
 msgstr "använd <namn> istället för \"origin\" för att spåra uppströms"
 
-#: builtin/clone.c:117
+#: builtin/clone.c:119
 msgid "checkout <branch> instead of the remote's HEAD"
 msgstr "checka ut <gren> istället för fjärrens HEAD"
 
-#: builtin/clone.c:119
+#: builtin/clone.c:121
 msgid "path to git-upload-pack on the remote"
 msgstr "sökväg till git-upload-pack på fjärren"
 
-#: builtin/clone.c:120 builtin/fetch.c:151 builtin/grep.c:813
-#: builtin/pull.c:211
+#: builtin/clone.c:122 builtin/fetch.c:150 builtin/grep.c:813
+#: builtin/pull.c:216
 msgid "depth"
 msgstr "djup"
 
-#: builtin/clone.c:121
+#: builtin/clone.c:123
 msgid "create a shallow clone of that depth"
 msgstr "skapa en grund klon på detta djup"
 
-#: builtin/clone.c:122 builtin/fetch.c:153 builtin/pack-objects.c:3017
+#: builtin/clone.c:124 builtin/fetch.c:152 builtin/pack-objects.c:3157
 #: parse-options.h:154
 msgid "time"
 msgstr "tid"
 
-#: builtin/clone.c:123
+#: builtin/clone.c:125
 msgid "create a shallow clone since a specific time"
 msgstr "skapa en grund klon från en angiven tidpunkt"
 
-#: builtin/clone.c:124 builtin/fetch.c:155
+#: builtin/clone.c:126 builtin/fetch.c:154
 msgid "revision"
 msgstr "revision"
 
-#: builtin/clone.c:125 builtin/fetch.c:156
+#: builtin/clone.c:127 builtin/fetch.c:155
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "fördjupa historik för grund klon, exkludera revisionen"
 
-#: builtin/clone.c:127
+#: builtin/clone.c:129
 msgid "clone only one branch, HEAD or --branch"
 msgstr "klona endast en gren, HEAD eller --branch"
 
-#: builtin/clone.c:129
+#: builtin/clone.c:131
 msgid "don't clone any tags, and make later fetches not to follow them"
 msgstr "klona inga taggar och gör att senare hämtningar inte följer dem"
 
-#: builtin/clone.c:131
+#: builtin/clone.c:133
 msgid "any cloned submodules will be shallow"
 msgstr "klonade undermoduler kommer vara grunda"
 
-#: builtin/clone.c:132 builtin/init-db.c:485
+#: builtin/clone.c:134 builtin/init-db.c:485
 msgid "gitdir"
 msgstr "gitkat"
 
-#: builtin/clone.c:133 builtin/init-db.c:486
+#: builtin/clone.c:135 builtin/init-db.c:486
 msgid "separate git dir from working tree"
 msgstr "separera gitkatalogen från arbetskatalogen"
 
-#: builtin/clone.c:134
+#: builtin/clone.c:136
 msgid "key=value"
 msgstr "nyckel=värde"
 
-#: builtin/clone.c:135
+#: builtin/clone.c:137
 msgid "set config inside the new repository"
 msgstr "ställ in konfiguration i det nya arkivet"
 
-#: builtin/clone.c:136 builtin/fetch.c:173 builtin/pull.c:224
-#: builtin/push.c:567
+#: builtin/clone.c:138 builtin/fetch.c:173 builtin/pull.c:229
+#: builtin/push.c:583
 msgid "use IPv4 addresses only"
 msgstr "använd endast IPv4-adresser"
 
-#: builtin/clone.c:138 builtin/fetch.c:175 builtin/pull.c:227
-#: builtin/push.c:569
+#: builtin/clone.c:140 builtin/fetch.c:175 builtin/pull.c:232
+#: builtin/push.c:585
 msgid "use IPv6 addresses only"
 msgstr "använd endast IPv6-adresser"
 
-#: builtin/clone.c:276
+#: builtin/clone.c:278
 msgid ""
 "No directory name could be guessed.\n"
 "Please specify a directory on the command line"
@@ -7071,42 +7465,42 @@ msgstr ""
 "Kunde inte gissa katalognamn.\n"
 "Ange en katalog på kommandoraden"
 
-#: builtin/clone.c:329
+#: builtin/clone.c:331
 #, c-format
 msgid "info: Could not add alternate for '%s': %s\n"
 msgstr "info: Kan inte skapa alternativ för \"%s\": %s\n"
 
-#: builtin/clone.c:401
+#: builtin/clone.c:403
 #, c-format
 msgid "failed to open '%s'"
 msgstr "misslyckades öppna \"%s\""
 
-#: builtin/clone.c:409
+#: builtin/clone.c:411
 #, c-format
 msgid "%s exists and is not a directory"
 msgstr "%s finns och är ingen katalog"
 
-#: builtin/clone.c:423
+#: builtin/clone.c:425
 #, c-format
 msgid "failed to stat %s\n"
 msgstr "misslyckades ta status på %s\n"
 
-#: builtin/clone.c:445
+#: builtin/clone.c:447
 #, c-format
 msgid "failed to create link '%s'"
 msgstr "misslyckades skapa länken \"%s\""
 
-#: builtin/clone.c:449
+#: builtin/clone.c:451
 #, c-format
 msgid "failed to copy file to '%s'"
 msgstr "misslyckades kopiera filen till \"%s\""
 
-#: builtin/clone.c:475
+#: builtin/clone.c:477
 #, c-format
 msgid "done.\n"
 msgstr "klart.\n"
 
-#: builtin/clone.c:489
+#: builtin/clone.c:491
 msgid ""
 "Clone succeeded, but checkout failed.\n"
 "You can inspect what was checked out with 'git status'\n"
@@ -7116,100 +7510,100 @@ msgstr ""
 "Du kan inspektera det som checkades ut med \"git status\"\n"
 "och försöka checka ut igen med \"git checkout -f HEAD\"\n"
 
-#: builtin/clone.c:566
+#: builtin/clone.c:568
 #, c-format
 msgid "Could not find remote branch %s to clone."
 msgstr "Kunde inte hitta fjärrgrenen %s för att klona."
 
-#: builtin/clone.c:661
+#: builtin/clone.c:663
 msgid "remote did not send all necessary objects"
 msgstr "fjärren sände inte alla nödvändiga objekt"
 
-#: builtin/clone.c:677
+#: builtin/clone.c:679
 #, c-format
 msgid "unable to update %s"
 msgstr "kan inte uppdatera %s"
 
-#: builtin/clone.c:726
+#: builtin/clone.c:728
 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
 msgstr ""
 "HEAD hos fjärren pekar på en obefintlig referens, kan inte checka ut.\n"
 
-#: builtin/clone.c:756
+#: builtin/clone.c:758
 msgid "unable to checkout working tree"
 msgstr "kunde inte checka ut arbetskatalogen"
 
-#: builtin/clone.c:801
+#: builtin/clone.c:803
 msgid "unable to write parameters to config file"
 msgstr "kunde inte skriva parametrar till konfigurationsfilen"
 
-#: builtin/clone.c:864
+#: builtin/clone.c:866
 msgid "cannot repack to clean up"
 msgstr "kan inte packa om för att städa upp"
 
-#: builtin/clone.c:866
+#: builtin/clone.c:868
 msgid "cannot unlink temporary alternates file"
 msgstr "kunde inte ta bort temporär \"alternates\"-fil"
 
-#: builtin/clone.c:906 builtin/receive-pack.c:1946
+#: builtin/clone.c:907 builtin/receive-pack.c:1947
 msgid "Too many arguments."
 msgstr "För många argument."
 
-#: builtin/clone.c:910
+#: builtin/clone.c:911
 msgid "You must specify a repository to clone."
 msgstr "Du måste ange ett arkiv att klona."
 
-#: builtin/clone.c:923
+#: builtin/clone.c:924
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr "flaggorna --bare och --origin %s är inkompatibla."
 
-#: builtin/clone.c:926
+#: builtin/clone.c:927
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "flaggorna --bare och --separate-git-dir är inkompatibla."
 
-#: builtin/clone.c:939
+#: builtin/clone.c:940
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "arkivet \"%s\" finns inte"
 
-#: builtin/clone.c:945 builtin/fetch.c:1455
+#: builtin/clone.c:946 builtin/fetch.c:1460
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "djupet %s är inte ett positivt tal"
 
-#: builtin/clone.c:955
+#: builtin/clone.c:956
 #, 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:965
+#: builtin/clone.c:966
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "arbetsträdet \"%s\" finns redan."
 
-#: builtin/clone.c:980 builtin/clone.c:1001 builtin/difftool.c:270
-#: builtin/worktree.c:255 builtin/worktree.c:285
+#: builtin/clone.c:981 builtin/clone.c:1002 builtin/difftool.c:270
+#: builtin/worktree.c:246 builtin/worktree.c:276
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "kunde inte skapa inledande kataloger för \"%s\""
 
-#: builtin/clone.c:985
+#: builtin/clone.c:986
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "kunde inte skapa arbetskatalogen \"%s\""
 
-#: builtin/clone.c:1005
+#: builtin/clone.c:1006
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "Klonar till ett naket arkiv \"%s\"...\n"
 
-#: builtin/clone.c:1007
+#: builtin/clone.c:1008
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Klonar till \"%s\"...\n"
 
-#: builtin/clone.c:1031
+#: builtin/clone.c:1032
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
@@ -7278,7 +7672,7 @@ msgstr "Spaltfyllnad i högerkanten"
 msgid "Padding space between columns"
 msgstr "Spaltfyllnad mellan spalter"
 
-#: builtin/column.c:52
+#: builtin/column.c:51
 msgid "--command must be the first argument"
 msgstr "--command måste vara första argument"
 
@@ -7334,61 +7728,61 @@ msgstr ""
 "\"git cherry-pick --continue\" kommer därefter att återuppta\n"
 "cherry-pick för återstående incheckningar.\n"
 
-#: builtin/commit.c:284
+#: builtin/commit.c:293
 msgid "failed to unpack HEAD tree object"
 msgstr "misslyckades packa upp HEAD:s trädobjekt"
 
-#: builtin/commit.c:325
+#: builtin/commit.c:334
 msgid "unable to create temporary index"
 msgstr "kunde inte skapa temporär indexfil"
 
-#: builtin/commit.c:331
+#: builtin/commit.c:340
 msgid "interactive add failed"
 msgstr "interaktiv tilläggning misslyckades"
 
-#: builtin/commit.c:344
+#: builtin/commit.c:353
 msgid "unable to update temporary index"
 msgstr "kan inte uppdatera temporärt index"
 
-#: builtin/commit.c:346
+#: builtin/commit.c:355
 msgid "Failed to update main cache tree"
 msgstr "Misslyckades uppdatera huvud-cacheträdet"
 
-#: builtin/commit.c:371 builtin/commit.c:395 builtin/commit.c:444
+#: builtin/commit.c:380 builtin/commit.c:403 builtin/commit.c:449
 msgid "unable to write new_index file"
 msgstr "kunde inte skriva filen new_index"
 
-#: builtin/commit.c:427
+#: builtin/commit.c:432
 msgid "cannot do a partial commit during a merge."
 msgstr "kan inte utföra en delvis incheckning under en sammanslagning."
 
-#: builtin/commit.c:429
+#: builtin/commit.c:434
 msgid "cannot do a partial commit during a cherry-pick."
 msgstr "kan inte utföra en delvis incheckning under en cherry-pick."
 
-#: builtin/commit.c:437
+#: builtin/commit.c:442
 msgid "cannot read the index"
 msgstr "kan inte läsa indexet"
 
-#: builtin/commit.c:456
+#: builtin/commit.c:461
 msgid "unable to write temporary index file"
 msgstr "kunde inte skriva temporär indexfil"
 
-#: builtin/commit.c:553
+#: builtin/commit.c:558
 #, c-format
 msgid "commit '%s' lacks author header"
 msgstr "incheckningen \"%s\" saknar författarhuvud"
 
-#: builtin/commit.c:555
+#: builtin/commit.c:560
 #, c-format
 msgid "commit '%s' has malformed author line"
 msgstr "incheckningen \"%s\" har felformaterat författarhuvud"
 
-#: builtin/commit.c:574
+#: builtin/commit.c:579
 msgid "malformed --author parameter"
 msgstr "felformad \"--author\"-flagga"
 
-#: builtin/commit.c:626
+#: builtin/commit.c:631
 msgid ""
 "unable to select a comment character that is not used\n"
 "in the current commit message"
@@ -7396,38 +7790,38 @@ msgstr ""
 "kunde inte välja ett kommentarstecken som inte använts\n"
 "i det befintliga incheckningsmeddelandet"
 
-#: builtin/commit.c:663 builtin/commit.c:696 builtin/commit.c:1024
+#: builtin/commit.c:668 builtin/commit.c:701 builtin/commit.c:1029
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "kunde inte slå upp incheckningen %s"
 
-#: builtin/commit.c:675 builtin/shortlog.c:309
+#: builtin/commit.c:680 builtin/shortlog.c:316
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(läser loggmeddelande från standard in)\n"
 
-#: builtin/commit.c:677
+#: builtin/commit.c:682
 msgid "could not read log from standard input"
 msgstr "kunde inte läsa logg från standard in"
 
-#: builtin/commit.c:681
+#: builtin/commit.c:686
 #, c-format
 msgid "could not read log file '%s'"
 msgstr "kunde inte läsa loggfilen \"%s\""
 
-#: builtin/commit.c:710 builtin/commit.c:718
+#: builtin/commit.c:715 builtin/commit.c:723
 msgid "could not read SQUASH_MSG"
 msgstr "kunde inte läsa SQUASH_MSG"
 
-#: builtin/commit.c:715
+#: builtin/commit.c:720
 msgid "could not read MERGE_MSG"
 msgstr "kunde inte läsa MERGE_MSG"
 
-#: builtin/commit.c:769
+#: builtin/commit.c:774
 msgid "could not write commit template"
 msgstr "kunde inte skriva incheckningsmall"
 
-#: builtin/commit.c:787
+#: builtin/commit.c:792
 #, c-format
 msgid ""
 "\n"
@@ -7442,7 +7836,7 @@ msgstr ""
 "\t%s\n"
 "och försöker igen.\n"
 
-#: builtin/commit.c:792
+#: builtin/commit.c:797
 #, c-format
 msgid ""
 "\n"
@@ -7457,7 +7851,7 @@ msgstr ""
 "\t%s\n"
 "och försöker igen.\n"
 
-#: builtin/commit.c:805
+#: builtin/commit.c:810
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -7467,7 +7861,7 @@ msgstr ""
 "med \"%c\" kommer ignoreras, och ett tomt meddelande avbryter "
 "incheckningen.\n"
 
-#: builtin/commit.c:813
+#: builtin/commit.c:818
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -7478,147 +7872,147 @@ msgstr ""
 "med \"%c\" kommer behållas; du kan själv ta bort dem om du vill.\n"
 "Ett tomt meddelande avbryter incheckningen.\n"
 
-#: builtin/commit.c:830
+#: builtin/commit.c:835
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr "%sFörfattare: %.*s <%.*s>"
 
-#: builtin/commit.c:838
+#: builtin/commit.c:843
 #, c-format
 msgid "%sDate:      %s"
 msgstr "%sDatum:      %s"
 
-#: builtin/commit.c:845
+#: builtin/commit.c:850
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr "%sIncheckare: %.*s <%.*s>"
 
-#: builtin/commit.c:862
+#: builtin/commit.c:867
 msgid "Cannot read index"
 msgstr "Kan inte läsa indexet"
 
-#: builtin/commit.c:928
+#: builtin/commit.c:933
 msgid "Error building trees"
 msgstr "Fel vid byggande av träd"
 
-#: builtin/commit.c:942 builtin/tag.c:256
+#: builtin/commit.c:947 builtin/tag.c:257
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "Ange meddelandet en av flaggorna -m eller -F.\n"
 
-#: builtin/commit.c:986
+#: builtin/commit.c:991
 #, c-format
 msgid "--author '%s' is not 'Name <email>' and matches no existing author"
 msgstr ""
 "--author '%s' är inte 'Namn <epost>' och matchar ingen befintlig författare"
 
-#: builtin/commit.c:1000
+#: builtin/commit.c:1005
 #, c-format
 msgid "Invalid ignored mode '%s'"
 msgstr "Ogiltigt ignorerat läge \"%s\""
 
-#: builtin/commit.c:1014 builtin/commit.c:1264
+#: builtin/commit.c:1019 builtin/commit.c:1269
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "Ogiltigt läge för ospårade filer: \"%s\""
 
-#: builtin/commit.c:1052
+#: builtin/commit.c:1057
 msgid "--long and -z are incompatible"
 msgstr "--long och -z är inkompatibla"
 
-#: builtin/commit.c:1085
+#: builtin/commit.c:1090
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "Kan inte använda både --reset-author och --author"
 
-#: builtin/commit.c:1094
+#: builtin/commit.c:1099
 msgid "You have nothing to amend."
 msgstr "Du har inget att utöka."
 
-#: builtin/commit.c:1097
+#: builtin/commit.c:1102
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr "Du är i mitten av en sammanslagning -- kan inte utöka."
 
-#: builtin/commit.c:1099
+#: builtin/commit.c:1104
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr "Du är i mitten av en cherry-pick -- kan inte utöka."
 
-#: builtin/commit.c:1102
+#: builtin/commit.c:1107
 msgid "Options --squash and --fixup cannot be used together"
 msgstr "Flaggorna --squash och --fixup kan inte användas samtidigt"
 
-#: builtin/commit.c:1112
+#: builtin/commit.c:1117
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "Endast en av -c/-C/-F/--fixup kan användas."
 
-#: builtin/commit.c:1114
+#: builtin/commit.c:1119
 msgid "Option -m cannot be combined with -c/-C/-F."
 msgstr "Flaggan -m kan inte kombineras med -c/-C/-F."
 
-#: builtin/commit.c:1122
+#: builtin/commit.c:1127
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr "--reset-author kan endast användas med -C, -c eller --amend."
 
-#: builtin/commit.c:1139
+#: builtin/commit.c:1144
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr ""
 "Endast en av --include/--only/--all/--interactive/--patch kan användas."
 
-#: builtin/commit.c:1141
+#: builtin/commit.c:1146
 msgid "No paths with --include/--only does not make sense."
 msgstr "Du måste ange sökvägar tillsammans med --include/--only."
 
-#: builtin/commit.c:1155 builtin/tag.c:542
+#: builtin/commit.c:1160 builtin/tag.c:543
 #, c-format
 msgid "Invalid cleanup mode %s"
 msgstr "Felaktigt städningsläge %s"
 
-#: builtin/commit.c:1160
+#: builtin/commit.c:1165
 msgid "Paths with -a does not make sense."
 msgstr "Kan inte ange sökvägar med -a."
 
-#: builtin/commit.c:1278 builtin/commit.c:1443
+#: builtin/commit.c:1303 builtin/commit.c:1480
 msgid "show status concisely"
 msgstr "visa koncis status"
 
-#: builtin/commit.c:1280 builtin/commit.c:1445
+#: builtin/commit.c:1305 builtin/commit.c:1482
 msgid "show branch information"
 msgstr "visa information om gren"
 
-#: builtin/commit.c:1282
+#: builtin/commit.c:1307
 msgid "show stash information"
 msgstr "visa information om stash"
 
-#: builtin/commit.c:1284 builtin/commit.c:1447
+#: builtin/commit.c:1309 builtin/commit.c:1484
 msgid "compute full ahead/behind values"
 msgstr "beräkna fullständiga före-/efter-värden"
 
-#: builtin/commit.c:1286
+#: builtin/commit.c:1311
 msgid "version"
 msgstr "version"
 
-#: builtin/commit.c:1286 builtin/commit.c:1449 builtin/push.c:542
-#: builtin/worktree.c:541
+#: builtin/commit.c:1311 builtin/commit.c:1486 builtin/push.c:558
+#: builtin/worktree.c:581
 msgid "machine-readable output"
 msgstr "maskinläsbar utdata"
 
-#: builtin/commit.c:1289 builtin/commit.c:1451
+#: builtin/commit.c:1314 builtin/commit.c:1488
 msgid "show status in long format (default)"
 msgstr "visa status i långt format (standard)"
 
-#: builtin/commit.c:1292 builtin/commit.c:1454
+#: builtin/commit.c:1317 builtin/commit.c:1491
 msgid "terminate entries with NUL"
 msgstr "terminera poster med NUL"
 
-#: builtin/commit.c:1294 builtin/commit.c:1298 builtin/commit.c:1457
-#: builtin/fast-export.c:999 builtin/fast-export.c:1002 builtin/tag.c:396
+#: builtin/commit.c:1319 builtin/commit.c:1323 builtin/commit.c:1494
+#: builtin/fast-export.c:1001 builtin/fast-export.c:1004 builtin/tag.c:397
 msgid "mode"
 msgstr "läge"
 
-#: builtin/commit.c:1295 builtin/commit.c:1457
+#: builtin/commit.c:1320 builtin/commit.c:1494
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr "visa ospårade filer, valfria lägen: all, normal, no. (Standard: all)"
 
-#: builtin/commit.c:1299
+#: builtin/commit.c:1324
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
@@ -7626,11 +8020,11 @@ msgstr ""
 "visa ignorerade filer, valfria lägen: traditional, matching, no (Standard: "
 "traditional)"
 
-#: builtin/commit.c:1301 parse-options.h:167
+#: builtin/commit.c:1326 parse-options.h:167
 msgid "when"
 msgstr "när"
 
-#: builtin/commit.c:1302
+#: builtin/commit.c:1327
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
@@ -7638,186 +8032,194 @@ msgstr ""
 "ignorera ändringar i undermoduler, valfritt när: all, dirty, untracked. "
 "(Default: all)"
 
-#: builtin/commit.c:1304
+#: builtin/commit.c:1329
 msgid "list untracked files in columns"
 msgstr "visa ospårade filer i spalter"
 
-#: builtin/commit.c:1323
+#: builtin/commit.c:1330
+msgid "do not detect renames"
+msgstr "detektera inte namnändringar"
+
+#: builtin/commit.c:1332
+msgid "detect renames, optionally set similarity index"
+msgstr "detektera namnändringar, möjligen sätt likhetsindex"
+
+#: builtin/commit.c:1352
 msgid "Unsupported combination of ignored and untracked-files arguments"
 msgstr "Kombinationen av argument för ignorerade och ospårade filer stöds ej"
 
-#: builtin/commit.c:1413
+#: builtin/commit.c:1450
 msgid "suppress summary after successful commit"
 msgstr "undertryck sammanfattning efter framgångsrik incheckning"
 
-#: builtin/commit.c:1414
+#: builtin/commit.c:1451
 msgid "show diff in commit message template"
 msgstr "visa diff i mallen för incheckningsmeddelandet"
 
-#: builtin/commit.c:1416
+#: builtin/commit.c:1453
 msgid "Commit message options"
 msgstr "Alternativ för incheckningsmeddelande"
 
-#: builtin/commit.c:1417 builtin/tag.c:393
+#: builtin/commit.c:1454 builtin/tag.c:394
 msgid "read message from file"
 msgstr "läs meddelande från fil"
 
-#: builtin/commit.c:1418
+#: builtin/commit.c:1455
 msgid "author"
 msgstr "författare"
 
-#: builtin/commit.c:1418
+#: builtin/commit.c:1455
 msgid "override author for commit"
 msgstr "överstyr författare för incheckningen"
 
-#: builtin/commit.c:1419 builtin/gc.c:359
+#: builtin/commit.c:1456 builtin/gc.c:501
 msgid "date"
 msgstr "datum"
 
-#: builtin/commit.c:1419
+#: builtin/commit.c:1456
 msgid "override date for commit"
 msgstr "överstyr datum för incheckningen"
 
-#: builtin/commit.c:1420 builtin/merge.c:226 builtin/notes.c:402
-#: builtin/notes.c:565 builtin/tag.c:391
+#: builtin/commit.c:1457 builtin/merge.c:228 builtin/notes.c:402
+#: builtin/notes.c:565 builtin/tag.c:392
 msgid "message"
 msgstr "meddelande"
 
-#: builtin/commit.c:1420
+#: builtin/commit.c:1457
 msgid "commit message"
 msgstr "incheckningsmeddelande"
 
-#: builtin/commit.c:1421 builtin/commit.c:1422 builtin/commit.c:1423
-#: builtin/commit.c:1424 parse-options.h:269 ref-filter.h:92
+#: builtin/commit.c:1458 builtin/commit.c:1459 builtin/commit.c:1460
+#: builtin/commit.c:1461 parse-options.h:270 ref-filter.h:92
 msgid "commit"
 msgstr "incheckning"
 
-#: builtin/commit.c:1421
+#: builtin/commit.c:1458
 msgid "reuse and edit message from specified commit"
 msgstr "återanvänd och redigera meddelande från angiven incheckning"
 
-#: builtin/commit.c:1422
+#: builtin/commit.c:1459
 msgid "reuse message from specified commit"
 msgstr "återanvänd meddelande från angiven incheckning"
 
-#: builtin/commit.c:1423
+#: builtin/commit.c:1460
 msgid "use autosquash formatted message to fixup specified commit"
 msgstr ""
 "använd autosquash-formaterat meddelande för att fixa angiven incheckning"
 
-#: builtin/commit.c:1424
+#: builtin/commit.c:1461
 msgid "use autosquash formatted message to squash specified commit"
 msgstr ""
 "använd autosquash-formaterat meddelande för att slå ihop med angiven "
 "incheckning"
 
-#: builtin/commit.c:1425
+#: builtin/commit.c:1462
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr "jag är nu författare av incheckningen (används med -C/-c/--amend)"
 
-#: builtin/commit.c:1426 builtin/log.c:1446 builtin/merge.c:240
-#: builtin/pull.c:149 builtin/revert.c:105
+#: builtin/commit.c:1463 builtin/log.c:1446 builtin/merge.c:242
+#: builtin/pull.c:154 builtin/revert.c:105
 msgid "add Signed-off-by:"
 msgstr "lägg till Signed-off-by:"
 
-#: builtin/commit.c:1427
+#: builtin/commit.c:1464
 msgid "use specified template file"
 msgstr "använd angiven mallfil"
 
-#: builtin/commit.c:1428
+#: builtin/commit.c:1465
 msgid "force edit of commit"
 msgstr "tvinga redigering av incheckning"
 
-#: builtin/commit.c:1429
+#: builtin/commit.c:1466
 msgid "default"
 msgstr "standard"
 
-#: builtin/commit.c:1429 builtin/tag.c:397
+#: builtin/commit.c:1466 builtin/tag.c:398
 msgid "how to strip spaces and #comments from message"
 msgstr "hur blanksteg och #kommentarer skall tas bort från meddelande"
 
-#: builtin/commit.c:1430
+#: builtin/commit.c:1467
 msgid "include status in commit message template"
 msgstr "inkludera status i mallen för incheckningsmeddelandet"
 
-#: builtin/commit.c:1432 builtin/merge.c:238 builtin/pull.c:179
+#: builtin/commit.c:1469 builtin/merge.c:240 builtin/pull.c:184
 #: builtin/revert.c:113
 msgid "GPG sign commit"
 msgstr "GPG-signera incheckning"
 
-#: builtin/commit.c:1435
+#: builtin/commit.c:1472
 msgid "Commit contents options"
 msgstr "Alternativ för incheckningens innehåll"
 
-#: builtin/commit.c:1436
+#: builtin/commit.c:1473
 msgid "commit all changed files"
 msgstr "checka in alla ändrade filer"
 
-#: builtin/commit.c:1437
+#: builtin/commit.c:1474
 msgid "add specified files to index for commit"
 msgstr "lägg till angivna filer till indexet för incheckning"
 
-#: builtin/commit.c:1438
+#: builtin/commit.c:1475
 msgid "interactively add files"
 msgstr "lägg till filer interaktivt"
 
-#: builtin/commit.c:1439
+#: builtin/commit.c:1476
 msgid "interactively add changes"
 msgstr "lägg till ändringar interaktivt"
 
-#: builtin/commit.c:1440
+#: builtin/commit.c:1477
 msgid "commit only specified files"
 msgstr "checka endast in angivna filer"
 
-#: builtin/commit.c:1441
+#: builtin/commit.c:1478
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr "förbigå pre-commit- och commit-msg-krokar"
 
-#: builtin/commit.c:1442
+#: builtin/commit.c:1479
 msgid "show what would be committed"
 msgstr "visa vad som skulle checkas in"
 
-#: builtin/commit.c:1455
+#: builtin/commit.c:1492
 msgid "amend previous commit"
 msgstr "lägg till föregående incheckning"
 
-#: builtin/commit.c:1456
+#: builtin/commit.c:1493
 msgid "bypass post-rewrite hook"
 msgstr "förbigå post-rewrite-krok"
 
-#: builtin/commit.c:1461
+#: builtin/commit.c:1498
 msgid "ok to record an empty change"
 msgstr "ok att registrera en tom ändring"
 
-#: builtin/commit.c:1463
+#: builtin/commit.c:1500
 msgid "ok to record a change with an empty message"
 msgstr "ok att registrera en ändring med tomt meddelande"
 
-#: builtin/commit.c:1536
+#: builtin/commit.c:1573
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "Trasig MERGE_HEAD-fil (%s)"
 
-#: builtin/commit.c:1543
+#: builtin/commit.c:1580
 msgid "could not read MERGE_MODE"
 msgstr "kunde inte läsa MERGE_MODE"
 
-#: builtin/commit.c:1562
+#: builtin/commit.c:1599
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "kunde inte läsa incheckningsmeddelande: %s"
 
-#: builtin/commit.c:1573
+#: builtin/commit.c:1610
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr "Avbryter på grund av tomt incheckningsmeddelande.\n"
 
-#: builtin/commit.c:1578
+#: builtin/commit.c:1615
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr "Avbryter incheckning; meddelandet inte redigerat.\n"
 
-#: builtin/commit.c:1613
+#: builtin/commit.c:1650
 msgid ""
 "Repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full and quota is\n"
@@ -7828,147 +8230,211 @@ msgstr ""
 "att kvoten inte har överskridits, och kör sedan\n"
 "\"git reset HEAD\" för att återställa."
 
+#: builtin/commit-graph.c:9
+msgid "git commit-graph [--object-dir <objdir>]"
+msgstr "git commit-graph [--object-dir <objkat>]"
+
+#: builtin/commit-graph.c:10 builtin/commit-graph.c:16
+msgid "git commit-graph read [--object-dir <objdir>]"
+msgstr "git commit-graph read [--object-dir <objkat>]"
+
+#: builtin/commit-graph.c:11 builtin/commit-graph.c:21
+msgid ""
+"git commit-graph write [--object-dir <objdir>] [--append] [--stdin-packs|--"
+"stdin-commits]"
+msgstr ""
+"git commit-graph write [--object-dir <objkat>] [--append] [--stdin-packs|--"
+"stdin-commits]"
+
+#: builtin/commit-graph.c:39 builtin/commit-graph.c:92
+#: builtin/commit-graph.c:147 builtin/fetch.c:161 builtin/log.c:1466
+msgid "dir"
+msgstr "kat"
+
+#: builtin/commit-graph.c:40 builtin/commit-graph.c:93
+#: builtin/commit-graph.c:148
+msgid "The object directory to store the graph"
+msgstr "Objektkatalogen där grafen skall lagras"
+
+#: builtin/commit-graph.c:95
+msgid "scan pack-indexes listed by stdin for commits"
+msgstr "sök paketindex listade på standard in efter incheckningar"
+
+#: builtin/commit-graph.c:97
+msgid "start walk at commits listed by stdin"
+msgstr "börja gå genom incheckningar listade på standard in"
+
+#: builtin/commit-graph.c:99
+msgid "include all commits already in the commit-graph file"
+msgstr "ta med alla incheckningar redan i filen commit-graph"
+
+#: builtin/commit-graph.c:108
+msgid "cannot use both --stdin-commits and --stdin-packs"
+msgstr "kan inte använda både --stdin-commit och --stdin-packs"
+
 #: builtin/config.c:10
 msgid "git config [<options>]"
 msgstr "git config [<flaggor>]"
 
-#: builtin/config.c:58
+#: builtin/config.c:101
+#, c-format
+msgid "unrecognized --type argument, %s"
+msgstr "okänt argument för --type, %s"
+
+#: builtin/config.c:123
 msgid "Config file location"
 msgstr "Konfigurationsfilens plats"
 
-#: builtin/config.c:59
+#: builtin/config.c:124
 msgid "use global config file"
 msgstr "använd global konfigurationsfil"
 
-#: builtin/config.c:60
+#: builtin/config.c:125
 msgid "use system config file"
 msgstr "använd systemets konfigurationsfil"
 
-#: builtin/config.c:61
+#: builtin/config.c:126
 msgid "use repository config file"
 msgstr "använd arkivets konfigurationsfil"
 
-#: builtin/config.c:62
+#: builtin/config.c:127
 msgid "use given config file"
 msgstr "använd angiven konfigurationsfil"
 
-#: builtin/config.c:63
+#: builtin/config.c:128
 msgid "blob-id"
 msgstr "blob-id"
 
-#: builtin/config.c:63
+#: builtin/config.c:128
 msgid "read config from given blob object"
 msgstr "läs konfiguration från givet blob-objekt"
 
-#: builtin/config.c:64
+#: builtin/config.c:129
 msgid "Action"
 msgstr "Åtgärd"
 
-#: builtin/config.c:65
+#: builtin/config.c:130
 msgid "get value: name [value-regex]"
 msgstr "hämta värde: namn [värde-reguttr]"
 
-#: builtin/config.c:66
+#: builtin/config.c:131
 msgid "get all values: key [value-regex]"
 msgstr "hämta alla värden: nyckel [värde-reguttr]"
 
-#: builtin/config.c:67
+#: builtin/config.c:132
 msgid "get values for regexp: name-regex [value-regex]"
 msgstr "hämta värden för reguttr: namn-reguttr [värde-reguttr]"
 
-#: builtin/config.c:68
+#: builtin/config.c:133
 msgid "get value specific for the URL: section[.var] URL"
 msgstr "hämta värde specifikt URL:en: sektion[.var] URL"
 
-#: builtin/config.c:69
+#: builtin/config.c:134
 msgid "replace all matching variables: name value [value_regex]"
 msgstr "ersätt alla motsvarande variabler: namn värde [värde-reguttr]"
 
-#: builtin/config.c:70
+#: builtin/config.c:135
 msgid "add a new variable: name value"
 msgstr "lägg till en ny variabel: namn värde"
 
-#: builtin/config.c:71
+#: builtin/config.c:136
 msgid "remove a variable: name [value-regex]"
 msgstr "ta bort en variabel: namn [värde-reguttr]"
 
-#: builtin/config.c:72
+#: builtin/config.c:137
 msgid "remove all matches: name [value-regex]"
 msgstr "ta bort alla träffar: namn [värde-reguttr]"
 
-#: builtin/config.c:73
+#: builtin/config.c:138
 msgid "rename section: old-name new-name"
 msgstr "byt namn på sektion: gammalt-namn nytt-namn"
 
-#: builtin/config.c:74
+#: builtin/config.c:139
 msgid "remove a section: name"
 msgstr "ta bort en sektion: namn"
 
-#: builtin/config.c:75
+#: builtin/config.c:140
 msgid "list all"
 msgstr "visa alla"
 
-#: builtin/config.c:76
+#: builtin/config.c:141
 msgid "open an editor"
 msgstr "öppna textredigeringsprogram"
 
-#: builtin/config.c:77
+#: builtin/config.c:142
 msgid "find the color configured: slot [default]"
 msgstr "hitta den inställda färgen: slot [default]"
 
-#: builtin/config.c:78
+#: builtin/config.c:143
 msgid "find the color setting: slot [stdout-is-tty]"
 msgstr "hitta färginställningen: slot [stdout-is-tty]"
 
-#: builtin/config.c:79
+#: builtin/config.c:144
 msgid "Type"
 msgstr "Typ"
 
-#: builtin/config.c:80
+#: builtin/config.c:145
+msgid "value is given this type"
+msgstr "värdet har givits denna typ"
+
+#: builtin/config.c:146
 msgid "value is \"true\" or \"false\""
 msgstr "värdet är \"true\" eller \"false\""
 
-#: builtin/config.c:81
+#: builtin/config.c:147
 msgid "value is decimal number"
 msgstr "värdet är ett decimalt tal"
 
-#: builtin/config.c:82
+#: builtin/config.c:148
 msgid "value is --bool or --int"
 msgstr "värdet är --bool eller --int"
 
-#: builtin/config.c:83
+#: builtin/config.c:149
 msgid "value is a path (file or directory name)"
 msgstr "värdet är en sökväg (fil- eller katalognamn)"
 
-#: builtin/config.c:84
+#: builtin/config.c:150
 msgid "value is an expiry date"
 msgstr "värdet är ett utgångsdatum"
 
-#: builtin/config.c:85
+#: builtin/config.c:151
 msgid "Other"
 msgstr "Andra"
 
-#: builtin/config.c:86
+#: builtin/config.c:152
 msgid "terminate values with NUL byte"
 msgstr "terminera värden med NUL-byte"
 
-#: builtin/config.c:87
+#: builtin/config.c:153
 msgid "show variable names only"
 msgstr "visa endast variabelnamn"
 
-#: builtin/config.c:88
+#: builtin/config.c:154
 msgid "respect include directives on lookup"
 msgstr "respektera inkluderingsdirektiv vid uppslag"
 
-#: builtin/config.c:89
+#: builtin/config.c:155
 msgid "show origin of config (file, standard input, blob, command line)"
 msgstr "visa konfigurationskälla (fil, standard in, blob, kommandorad)"
 
-#: builtin/config.c:335
+#: builtin/config.c:156
+msgid "value"
+msgstr "värde"
+
+#: builtin/config.c:156
+msgid "with --get, use default value when missing entry"
+msgstr "med --get, använd standardvärde vid saknad post"
+
+#: builtin/config.c:332
+#, c-format
+msgid "failed to format default config value: %s"
+msgstr "misslyckades formatera standardkonfigurationsvärde: %s"
+
+#: builtin/config.c:431
 msgid "unable to parse default color value"
 msgstr "kan inte tolka standardfärgvärde"
 
-#: builtin/config.c:479
+#: builtin/config.c:575
 #, c-format
 msgid ""
 "# This is Git's per-user configuration file.\n"
@@ -7983,16 +8449,20 @@ msgstr ""
 "#\tname = %s\n"
 "#\temail = %s\n"
 
-#: builtin/config.c:507
+#: builtin/config.c:603
 msgid "--local can only be used inside a git repository"
 msgstr "--local kan bara användas inuti ett git-arkiv"
 
-#: builtin/config.c:632
+#: builtin/config.c:606
+msgid "--blob can only be used inside a git repository"
+msgstr "--blob kan bara användas inuti ett git-arkiv"
+
+#: builtin/config.c:735
 #, c-format
 msgid "cannot create configuration file %s"
 msgstr "kan inte skapa konfigurationsfilen \"%s\""
 
-#: builtin/config.c:645
+#: builtin/config.c:748
 #, c-format
 msgid ""
 "cannot overwrite multiple values with a single value\n"
@@ -8001,11 +8471,11 @@ msgstr ""
 "kan inte skriva över flera värden med ett ensamt värde\n"
 "       Använd en regexp, --add eller --replace-all för att ändra %s."
 
-#: builtin/count-objects.c:88
+#: builtin/count-objects.c:90
 msgid "git count-objects [-v] [-H | --human-readable]"
 msgstr "git count-objects [-v] [-H | --human-readable]"
 
-#: builtin/count-objects.c:98
+#: builtin/count-objects.c:100
 msgid "print sizes in human readable format"
 msgstr "skriv storlekar i människoläsbart format"
 
@@ -8271,23 +8741,23 @@ msgstr "utför diff för hela katalogen"
 msgid "do not prompt before launching a diff tool"
 msgstr "fråga inte vid start av diff-verktyg"
 
-#: builtin/difftool.c:705
+#: builtin/difftool.c:704
 msgid "use symlinks in dir-diff mode"
 msgstr "använd symboliska länkar i katalogdiffläge"
 
-#: builtin/difftool.c:706
+#: builtin/difftool.c:705
 msgid "<tool>"
 msgstr "<verktyg>"
 
-#: builtin/difftool.c:707
+#: builtin/difftool.c:706
 msgid "use the specified diff tool"
 msgstr "använd angivet diff-verktyg"
 
-#: builtin/difftool.c:709
+#: builtin/difftool.c:708
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr "visa en lista över diff-verktyg som kan användas med ”--tool”"
 
-#: builtin/difftool.c:712
+#: builtin/difftool.c:711
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
@@ -8295,168 +8765,164 @@ msgstr ""
 "låt \"git-difftool\" avbryta när ett anropat diff-verktyg ger returvärde "
 "skilt från noll"
 
-#: builtin/difftool.c:714
+#: builtin/difftool.c:713
 msgid "<command>"
 msgstr "<kommando>"
 
-#: builtin/difftool.c:715
+#: builtin/difftool.c:714
 msgid "specify a custom command for viewing diffs"
 msgstr "ange eget kommando för att visa diffar"
 
-#: builtin/difftool.c:739
+#: builtin/difftool.c:738
 msgid "no <tool> given for --tool=<tool>"
 msgstr "inget <verktyg> angavs för --tool=<verktyg>"
 
-#: builtin/difftool.c:746
+#: builtin/difftool.c:745
 msgid "no <cmd> given for --extcmd=<cmd>"
 msgstr "inget <kommando> angavs för --extcmd=<kommando>"
 
-#: builtin/fast-export.c:26
+#: builtin/fast-export.c:27
 msgid "git fast-export [rev-list-opts]"
 msgstr "git fast-export [rev-list-flaggor]"
 
-#: builtin/fast-export.c:998
+#: builtin/fast-export.c:1000
 msgid "show progress after <n> objects"
 msgstr "visa förlopp efter <n> objekt"
 
-#: builtin/fast-export.c:1000
+#: builtin/fast-export.c:1002
 msgid "select handling of signed tags"
 msgstr "välj hantering av signerade taggar"
 
-#: builtin/fast-export.c:1003
+#: builtin/fast-export.c:1005
 msgid "select handling of tags that tag filtered objects"
 msgstr "välj hantering av taggar som har taggfiltrerade objekt"
 
-#: builtin/fast-export.c:1006
+#: builtin/fast-export.c:1008
 msgid "Dump marks to this file"
 msgstr "Dump märken till filen"
 
-#: builtin/fast-export.c:1008
+#: builtin/fast-export.c:1010
 msgid "Import marks from this file"
 msgstr "Importera märken från filen"
 
-#: builtin/fast-export.c:1010
+#: builtin/fast-export.c:1012
 msgid "Fake a tagger when tags lack one"
 msgstr "Fejka taggare när taggen saknar en"
 
-#: builtin/fast-export.c:1012
+#: builtin/fast-export.c:1014
 msgid "Output full tree for each commit"
 msgstr "Skriv ut hela trädet för varje incheckning"
 
-#: builtin/fast-export.c:1014
+#: builtin/fast-export.c:1016
 msgid "Use the done feature to terminate the stream"
 msgstr "Använd done-funktionen för att avsluta strömmen"
 
-#: builtin/fast-export.c:1015
+#: builtin/fast-export.c:1017
 msgid "Skip output of blob data"
 msgstr "Hoppa över skrivning av blob-data"
 
-#: builtin/fast-export.c:1016
+#: builtin/fast-export.c:1018
 msgid "refspec"
 msgstr "referensspecifikation"
 
-#: builtin/fast-export.c:1017
+#: builtin/fast-export.c:1019
 msgid "Apply refspec to exported refs"
 msgstr "Applicera referensspecifikation på exporterade referenser"
 
-#: builtin/fast-export.c:1018
+#: builtin/fast-export.c:1020
 msgid "anonymize output"
 msgstr "anonymisera utdata"
 
-#: builtin/fetch.c:25
+#: builtin/fetch.c:26
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
 msgstr "git fetch [<flaggor>] [<arkiv> [<refspec>...]]"
 
-#: builtin/fetch.c:26
+#: builtin/fetch.c:27
 msgid "git fetch [<options>] <group>"
 msgstr "git fetch [<flaggor>] <grupp>"
 
-#: builtin/fetch.c:27
+#: builtin/fetch.c:28
 msgid "git fetch --multiple [<options>] [(<repository> | <group>)...]"
 msgstr "git fetch --multiple [<flaggor>] [(<arkiv> | <grupp>)...]"
 
-#: builtin/fetch.c:28
+#: builtin/fetch.c:29
 msgid "git fetch --all [<options>]"
 msgstr "git fetch --all [<flaggor>]"
 
-#: builtin/fetch.c:124 builtin/pull.c:188
+#: builtin/fetch.c:123 builtin/pull.c:193
 msgid "fetch from all remotes"
 msgstr "hämta från alla fjärrar"
 
-#: builtin/fetch.c:126 builtin/pull.c:191
+#: builtin/fetch.c:125 builtin/pull.c:196
 msgid "append to .git/FETCH_HEAD instead of overwriting"
 msgstr "lägg till i .git/FETCH_HEAD istället för att skriva över"
 
-#: builtin/fetch.c:128 builtin/pull.c:194
+#: builtin/fetch.c:127 builtin/pull.c:199
 msgid "path to upload pack on remote end"
 msgstr "sökväg till upload pack på fjärren"
 
-#: builtin/fetch.c:129 builtin/pull.c:196
+#: builtin/fetch.c:128 builtin/pull.c:201
 msgid "force overwrite of local branch"
 msgstr "tvinga överskrivning av lokal gren"
 
-#: builtin/fetch.c:131
+#: builtin/fetch.c:130
 msgid "fetch from multiple remotes"
 msgstr "hämta från flera fjärrar"
 
-#: builtin/fetch.c:133 builtin/pull.c:198
+#: builtin/fetch.c:132 builtin/pull.c:203
 msgid "fetch all tags and associated objects"
 msgstr "hämta alla taggar och associerade objekt"
 
-#: builtin/fetch.c:135
+#: builtin/fetch.c:134
 msgid "do not fetch all tags (--no-tags)"
 msgstr "hämta inte alla taggar (--no-tags)"
 
-#: builtin/fetch.c:137
+#: builtin/fetch.c:136
 msgid "number of submodules fetched in parallel"
 msgstr "antal undermoduler som hämtas parallellt"
 
-#: builtin/fetch.c:139 builtin/pull.c:201
+#: builtin/fetch.c:138 builtin/pull.c:206
 msgid "prune remote-tracking branches no longer on remote"
 msgstr "rensa fjärrspårande grenar ej längre på fjärren"
 
-#: builtin/fetch.c:141
+#: builtin/fetch.c:140
 msgid "prune local tags no longer on remote and clobber changed tags"
 msgstr ""
 "rensa lokala taggar inte längre på fjärren och skriv över ändrade taggar"
 
-#: builtin/fetch.c:142 builtin/fetch.c:165 builtin/pull.c:126
+#: builtin/fetch.c:141 builtin/fetch.c:164 builtin/pull.c:131
 msgid "on-demand"
 msgstr "on-demand"
 
-#: builtin/fetch.c:143
+#: builtin/fetch.c:142
 msgid "control recursive fetching of submodules"
 msgstr "styr rekursiv hämtning av undermoduler"
 
-#: builtin/fetch.c:147 builtin/pull.c:209
+#: builtin/fetch.c:146 builtin/pull.c:214
 msgid "keep downloaded pack"
 msgstr "behåll hämtade paket"
 
-#: builtin/fetch.c:149
+#: builtin/fetch.c:148
 msgid "allow updating of HEAD ref"
 msgstr "tillåt uppdatering av HEAD-referens"
 
-#: builtin/fetch.c:152 builtin/fetch.c:158 builtin/pull.c:212
+#: builtin/fetch.c:151 builtin/fetch.c:157 builtin/pull.c:217
 msgid "deepen history of shallow clone"
 msgstr "fördjupa historik för grund klon"
 
-#: builtin/fetch.c:154
+#: builtin/fetch.c:153
 msgid "deepen history of shallow repository based on time"
 msgstr "fördjupa historik för grund klon baserad på tid"
 
-#: builtin/fetch.c:160 builtin/pull.c:215
+#: builtin/fetch.c:159 builtin/pull.c:220
 msgid "convert to a complete repository"
 msgstr "konvertera till komplett arkiv"
 
-#: builtin/fetch.c:162 builtin/log.c:1466
-msgid "dir"
-msgstr "kat"
-
-#: builtin/fetch.c:163
+#: builtin/fetch.c:162
 msgid "prepend this to submodule path output"
 msgstr "lägg till i början av undermodulens sökvägsutdata"
 
-#: builtin/fetch.c:166
+#: builtin/fetch.c:165
 msgid ""
 "default for recursive fetching of submodules (lower priority than config "
 "files)"
@@ -8464,89 +8930,101 @@ msgstr ""
 "standard för rekursiv hämtning av undermoduler (lägre prioritet än "
 "konfigurationsfiler)"
 
-#: builtin/fetch.c:170 builtin/pull.c:218
+#: builtin/fetch.c:169 builtin/pull.c:223
 msgid "accept refs that update .git/shallow"
 msgstr "tar emot referenser som uppdaterar .git/shallow"
 
-#: builtin/fetch.c:171 builtin/pull.c:220
+#: builtin/fetch.c:170 builtin/pull.c:225
 msgid "refmap"
 msgstr "referenskarta"
 
-#: builtin/fetch.c:172 builtin/pull.c:221
+#: builtin/fetch.c:171 builtin/pull.c:226
 msgid "specify fetch refmap"
 msgstr "ange referenskarta för \"fetch\""
 
-#: builtin/fetch.c:431
+#: builtin/fetch.c:172 builtin/ls-remote.c:77 builtin/push.c:582
+#: builtin/send-pack.c:172
+msgid "server-specific"
+msgstr "serverspecifik"
+
+#: builtin/fetch.c:172 builtin/ls-remote.c:77 builtin/push.c:582
+#: builtin/send-pack.c:173
+msgid "option to transmit"
+msgstr ""
+"inget att checka in\n"
+"flagga att sända"
+
+#: builtin/fetch.c:442
 msgid "Couldn't find remote ref HEAD"
 msgstr "Kunde inte hitta fjärr-referensen HEAD"
 
-#: builtin/fetch.c:549
+#: builtin/fetch.c:560
 #, c-format
 msgid "configuration fetch.output contains invalid value %s"
 msgstr "konfigurationen för fetch.output innehåller ogiltigt värde %s"
 
-#: builtin/fetch.c:642
+#: builtin/fetch.c:653
 #, c-format
 msgid "object %s not found"
 msgstr "objektet %s hittades inte"
 
-#: builtin/fetch.c:646
+#: builtin/fetch.c:657
 msgid "[up to date]"
 msgstr "[àjour]"
 
-#: builtin/fetch.c:659 builtin/fetch.c:739
+#: builtin/fetch.c:670 builtin/fetch.c:750
 msgid "[rejected]"
 msgstr "[refuserad]"
 
-#: builtin/fetch.c:660
+#: builtin/fetch.c:671
 msgid "can't fetch in current branch"
 msgstr "kan inte hämta i aktuell gren"
 
-#: builtin/fetch.c:669
+#: builtin/fetch.c:680
 msgid "[tag update]"
 msgstr "[uppdaterad tagg]"
 
-#: builtin/fetch.c:670 builtin/fetch.c:703 builtin/fetch.c:719
-#: builtin/fetch.c:734
+#: builtin/fetch.c:681 builtin/fetch.c:714 builtin/fetch.c:730
+#: builtin/fetch.c:745
 msgid "unable to update local ref"
 msgstr "kunde inte uppdatera lokal ref"
 
-#: builtin/fetch.c:689
+#: builtin/fetch.c:700
 msgid "[new tag]"
 msgstr "[ny tagg]"
 
-#: builtin/fetch.c:692
+#: builtin/fetch.c:703
 msgid "[new branch]"
 msgstr "[ny gren]"
 
-#: builtin/fetch.c:695
+#: builtin/fetch.c:706
 msgid "[new ref]"
 msgstr "[ny ref]"
 
-#: builtin/fetch.c:734
+#: builtin/fetch.c:745
 msgid "forced update"
 msgstr "tvingad uppdatering"
 
-#: builtin/fetch.c:739
+#: builtin/fetch.c:750
 msgid "non-fast-forward"
 msgstr "ej snabbspolad"
 
-#: builtin/fetch.c:784
+#: builtin/fetch.c:795
 #, c-format
 msgid "%s did not send all necessary objects\n"
 msgstr "%s sände inte alla nödvändiga objekt\n"
 
-#: builtin/fetch.c:804
+#: builtin/fetch.c:815
 #, c-format
 msgid "reject %s because shallow roots are not allowed to be updated"
 msgstr "avvisa %s då grunda rötter inte kan uppdateras"
 
-#: builtin/fetch.c:892 builtin/fetch.c:988
+#: builtin/fetch.c:903 builtin/fetch.c:999
 #, c-format
 msgid "From %.*s\n"
 msgstr "Från %.*s\n"
 
-#: builtin/fetch.c:903
+#: builtin/fetch.c:914
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
@@ -8555,56 +9033,56 @@ msgstr ""
 "vissa lokala referenser kunde inte uppdateras; testa att köra\n"
 " \"git remote prune %s\" för att ta bort gamla grenar som står i konflikt"
 
-#: builtin/fetch.c:958
+#: builtin/fetch.c:969
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr "   (%s kommer bli dinglande)"
 
-#: builtin/fetch.c:959
+#: builtin/fetch.c:970
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr "   (%s har blivit dinglande)"
 
-#: builtin/fetch.c:991
+#: builtin/fetch.c:1002
 msgid "[deleted]"
 msgstr "[borttagen]"
 
-#: builtin/fetch.c:992 builtin/remote.c:1024
+#: builtin/fetch.c:1003 builtin/remote.c:1033
 msgid "(none)"
 msgstr "(ingen)"
 
-#: builtin/fetch.c:1015
+#: builtin/fetch.c:1026
 #, c-format
 msgid "Refusing to fetch into current branch %s of non-bare repository"
 msgstr "Vägrar hämta till aktuell gren %s i ett icke-naket arkiv"
 
-#: builtin/fetch.c:1034
+#: builtin/fetch.c:1045
 #, c-format
 msgid "Option \"%s\" value \"%s\" is not valid for %s"
 msgstr "Flaggan \"%s\" och värdet \"%s\" är inte giltigt för %s"
 
-#: builtin/fetch.c:1037
+#: builtin/fetch.c:1048
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr "Flaggan \"%s\" ignoreras för %s\n"
 
-#: builtin/fetch.c:1277
+#: builtin/fetch.c:1287
 #, c-format
 msgid "Fetching %s\n"
 msgstr "Hämtar %s\n"
 
-#: builtin/fetch.c:1279 builtin/remote.c:97
+#: builtin/fetch.c:1289 builtin/remote.c:98
 #, c-format
 msgid "Could not fetch %s"
 msgstr "Kunde inte hämta %s"
 
-#: builtin/fetch.c:1325 builtin/fetch.c:1498
+#: builtin/fetch.c:1335 builtin/fetch.c:1503
 msgid ""
 "--filter can only be used with the remote configured in core.partialClone"
 msgstr ""
 "--filter kan endast användas med fjärren konfigurerad i core.partialClone"
 
-#: builtin/fetch.c:1350
+#: builtin/fetch.c:1358
 msgid ""
 "No remote repository specified.  Please, specify either a URL or a\n"
 "remote name from which new revisions should be fetched."
@@ -8612,40 +9090,40 @@ msgstr ""
 "Inget fjärrarkiv angavs. Ange antingen en URL eller namnet på ett\n"
 "fjärrarkiv som nya incheckningar skall hämtas från."
 
-#: builtin/fetch.c:1394
+#: builtin/fetch.c:1395
 msgid "You need to specify a tag name."
 msgstr "Du måste ange namnet på en tagg."
 
-#: builtin/fetch.c:1439
+#: builtin/fetch.c:1444
 msgid "Negative depth in --deepen is not supported"
 msgstr "Negativa djup stöds inte i --deepen"
 
-#: builtin/fetch.c:1441
+#: builtin/fetch.c:1446
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen och --depth är ömsesidigt uteslutande"
 
-#: builtin/fetch.c:1446
+#: builtin/fetch.c:1451
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth och --unshallow kan inte användas samtidigt"
 
-#: builtin/fetch.c:1448
+#: builtin/fetch.c:1453
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "--unshallow kan inte användas på ett komplett arkiv"
 
-#: builtin/fetch.c:1464
+#: builtin/fetch.c:1469
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all tar inte namnet på ett arkiv som argument"
 
-#: builtin/fetch.c:1466
+#: builtin/fetch.c:1471
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all kan inte anges med referensspecifikationer"
 
-#: builtin/fetch.c:1475
+#: builtin/fetch.c:1480
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "Fjärren eller fjärrgruppen finns inte: %s"
 
-#: builtin/fetch.c:1482
+#: builtin/fetch.c:1487
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "Kan inte hämta från grupp och ange referensspecifikationer"
 
@@ -8712,7 +9190,7 @@ msgstr "citera platshållare passande för Tcl"
 msgid "show only <n> matched refs"
 msgstr "visa endast <n> träffade refs"
 
-#: builtin/for-each-ref.c:39 builtin/tag.c:420
+#: builtin/for-each-ref.c:39 builtin/tag.c:421
 msgid "respect format colors"
 msgstr "använd formatfärger"
 
@@ -8736,83 +9214,83 @@ msgstr "visa endast referenser som innehåller incheckningen"
 msgid "print only refs which don't contain the commit"
 msgstr "visa endast referenser som inte innehåller incheckningen"
 
-#: builtin/fsck.c:568
+#: builtin/fsck.c:569
 msgid "Checking object directories"
 msgstr "Kontrollerar objektkataloger"
 
-#: builtin/fsck.c:660
+#: builtin/fsck.c:661
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<flaggor>] [<objekt>...]"
 
-#: builtin/fsck.c:666
+#: builtin/fsck.c:667
 msgid "show unreachable objects"
 msgstr "visa onåbara objekt"
 
-#: builtin/fsck.c:667
+#: builtin/fsck.c:668
 msgid "show dangling objects"
 msgstr "visa dinglande objekt"
 
-#: builtin/fsck.c:668
+#: builtin/fsck.c:669
 msgid "report tags"
 msgstr "rapportera taggar"
 
-#: builtin/fsck.c:669
+#: builtin/fsck.c:670
 msgid "report root nodes"
 msgstr "rapportera rotnoder"
 
-#: builtin/fsck.c:670
+#: builtin/fsck.c:671
 msgid "make index objects head nodes"
 msgstr "gör indexojekt till huvudnoder"
 
-#: builtin/fsck.c:671
+#: builtin/fsck.c:672
 msgid "make reflogs head nodes (default)"
 msgstr "gör refloggar till huvudnoder (standard)"
 
-#: builtin/fsck.c:672
+#: builtin/fsck.c:673
 msgid "also consider packs and alternate objects"
 msgstr "ta även hänsyn till paket och alternativa objekt"
 
 # Vague original, not networking-related, but rather related to the actual
 # objects in the database.
-#: builtin/fsck.c:673
+#: builtin/fsck.c:674
 msgid "check only connectivity"
 msgstr "kontrollera endast konnektivitet"
 
-#: builtin/fsck.c:674
+#: builtin/fsck.c:675
 msgid "enable more strict checking"
 msgstr "aktivera striktare kontroll"
 
-#: builtin/fsck.c:676
+#: builtin/fsck.c:677
 msgid "write dangling objects in .git/lost-found"
 msgstr "skriv dinglande objekt i .git/lost-found"
 
-#: builtin/fsck.c:677 builtin/prune.c:108
+#: builtin/fsck.c:678 builtin/prune.c:109
 msgid "show progress"
 msgstr "visa förlopp"
 
-#: builtin/fsck.c:678
+#: builtin/fsck.c:679
 msgid "show verbose names for reachable objects"
 msgstr "visa ordrika namn för nåbara objekt"
 
-#: builtin/fsck.c:742
+#: builtin/fsck.c:745
 msgid "Checking objects"
 msgstr "Kontrollerar objekt"
 
-#: builtin/gc.c:27
+#: builtin/gc.c:33
 msgid "git gc [<options>]"
 msgstr "git gc [<flaggor>]"
 
-#: builtin/gc.c:80
+#: builtin/gc.c:88
 #, c-format
 msgid "Failed to fstat %s: %s"
 msgstr "Misslyckades ta status (fstat) på %s: %s"
 
-#: builtin/gc.c:312
+#: builtin/gc.c:452
 #, c-format
 msgid "Can't stat %s"
 msgstr "Kan inte ta status på %s"
 
-#: builtin/gc.c:321
+#: builtin/gc.c:461
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -8827,43 +9305,52 @@ msgstr ""
 "\n"
 "%s"
 
-#: builtin/gc.c:360
+#: builtin/gc.c:502
 msgid "prune unreferenced objects"
 msgstr "rensa ej refererade objekt"
 
-#: builtin/gc.c:362
+#: builtin/gc.c:504
 msgid "be more thorough (increased runtime)"
 msgstr "var mer grundlig (ökar körtiden)"
 
-#: builtin/gc.c:363
+#: builtin/gc.c:505
 msgid "enable auto-gc mode"
 msgstr "aktivera auto-gc-läge"
 
-#: builtin/gc.c:366
+#: builtin/gc.c:508
 msgid "force running gc even if there may be another gc running"
 msgstr "tvinga gc-körning även om en annan gc kanske körs"
 
-#: builtin/gc.c:384
+#: builtin/gc.c:511
+msgid "repack all other packs except the largest pack"
+msgstr "packa om alla paket förutom det största paketet"
+
+#: builtin/gc.c:528
+#, c-format
+msgid "failed to parse gc.logexpiry value %s"
+msgstr "kunde inte tolka värdet %s för gc.logexpiry"
+
+#: builtin/gc.c:539
 #, c-format
-msgid "Failed to parse gc.logexpiry value %s"
-msgstr "Kan inte tolka värdet %s för gc.logexpiry"
+msgid "failed to parse prune expiry value %s"
+msgstr "kunde inte tolka värdet %s för prune expiry"
 
-#: builtin/gc.c:412
+#: builtin/gc.c:559
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
 msgstr "Packar arkivet automatiskt i bakgrunden för optimal prestanda.\n"
 
-#: builtin/gc.c:414
+#: builtin/gc.c:561
 #, c-format
 msgid "Auto packing the repository for optimum performance.\n"
 msgstr "Packar arkivet automatiskt för optimal prestanda.\n"
 
-#: builtin/gc.c:415
+#: builtin/gc.c:562
 #, c-format
 msgid "See \"git help gc\" for manual housekeeping.\n"
 msgstr "Se \"git help gc\" för manuell hushållning.\n"
 
-#: builtin/gc.c:440
+#: builtin/gc.c:598
 #, c-format
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
@@ -8871,23 +9358,23 @@ msgstr ""
 "gc körs redan på maskinen \"%s\" pid %<PRIuMAX> (använd --force om så inte "
 "är fallet)"
 
-#: builtin/gc.c:487
+#: builtin/gc.c:645
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove them."
 msgstr ""
 "Det finns för många onåbara lösa objekt; kör \"git prune\" för att ta bort "
 "dem."
 
-#: builtin/grep.c:27
+#: builtin/grep.c:28
 msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
 msgstr "git grep [<flaggor>] [-e] <mönster> [<rev>...] [[--] <sökväg>...]"
 
-#: builtin/grep.c:225
+#: builtin/grep.c:226
 #, c-format
 msgid "grep: failed to create thread: %s"
 msgstr "grep: misslyckades skapa tråd. %s"
 
-#: builtin/grep.c:283
+#: builtin/grep.c:284
 #, c-format
 msgid "invalid number of threads specified (%d) for %s"
 msgstr "felaktigt antal trådar angivet (%d) för %s"
@@ -8896,17 +9383,17 @@ msgstr "felaktigt antal trådar angivet (%d) för %s"
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:292 builtin/index-pack.c:1523 builtin/index-pack.c:1712
+#: builtin/grep.c:293 builtin/index-pack.c:1531 builtin/index-pack.c:1723
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "trådstöd saknas, ignorerar %s"
 
-#: builtin/grep.c:460 builtin/grep.c:580 builtin/grep.c:622
+#: builtin/grep.c:461 builtin/grep.c:582 builtin/grep.c:623
 #, c-format
 msgid "unable to read tree (%s)"
 msgstr "kunde inte läsa träd (%s)"
 
-#: builtin/grep.c:637
+#: builtin/grep.c:638
 #, c-format
 msgid "unable to grep from object of type %s"
 msgstr "kunde inte \"grep\" från objekt av typen %s"
@@ -9105,7 +9592,7 @@ msgstr "--no-index och --untracked kan inte användas med revisioner"
 msgid "unable to resolve revision: %s"
 msgstr "kan inte slå upp revision: %s"
 
-#: builtin/grep.c:1036 builtin/index-pack.c:1519
+#: builtin/grep.c:1036 builtin/index-pack.c:1527
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "felaktigt antal trådar angivet (%d)"
@@ -9176,58 +9663,62 @@ msgstr ""
 msgid "process file as it were from this path"
 msgstr "hantera filen som om den kom från sökvägen"
 
-#: builtin/help.c:43
+#: builtin/help.c:45
 msgid "print all available commands"
 msgstr "visa alla tillgängliga kommandon"
 
-#: builtin/help.c:44
+#: builtin/help.c:46
 msgid "exclude guides"
 msgstr "uteslut vägledningar"
 
-#: builtin/help.c:45
+#: builtin/help.c:47
 msgid "print list of useful guides"
 msgstr "lista användbara vägledningar"
 
-#: builtin/help.c:46
+#: builtin/help.c:48
 msgid "show man page"
 msgstr "visa manualsida"
 
-#: builtin/help.c:47
+#: builtin/help.c:49
 msgid "show manual in web browser"
 msgstr "visa manual i webbläsare"
 
-#: builtin/help.c:49
+#: builtin/help.c:51
 msgid "show info page"
 msgstr "visa info-sida"
 
-#: builtin/help.c:55
+#: builtin/help.c:53
+msgid "print command description"
+msgstr "visa kommandobeskrivning"
+
+#: builtin/help.c:58
 msgid "git help [--all] [--guides] [--man | --web | --info] [<command>]"
 msgstr "git help [--all] [--guides] [--man | --web | --info] [<kommando>]"
 
-#: builtin/help.c:67
+#: builtin/help.c:70
 #, c-format
 msgid "unrecognized help format '%s'"
 msgstr "okänt hjälpformat: ”%s”"
 
-#: builtin/help.c:94
+#: builtin/help.c:97
 msgid "Failed to start emacsclient."
 msgstr "Misslyckades starta emacsclient."
 
-#: builtin/help.c:107
+#: builtin/help.c:110
 msgid "Failed to parse emacsclient version."
 msgstr "Kunde inte tolka emacsclient-version."
 
-#: builtin/help.c:115
+#: builtin/help.c:118
 #, c-format
 msgid "emacsclient version '%d' too old (< 22)."
 msgstr "emacsclient version \"%d\" för gammal (< 22)."
 
-#: builtin/help.c:133 builtin/help.c:155 builtin/help.c:165 builtin/help.c:173
+#: builtin/help.c:136 builtin/help.c:158 builtin/help.c:168 builtin/help.c:176
 #, c-format
 msgid "failed to exec '%s'"
 msgstr "exec misslyckades för \"%s\""
 
-#: builtin/help.c:211
+#: builtin/help.c:214
 #, c-format
 msgid ""
 "'%s': path for unsupported man viewer.\n"
@@ -9236,7 +9727,7 @@ msgstr ""
 "\"%s\": sökväg för man-visare som ej stöds.\n"
 "Använd \"man.<verktyg>.cmd\" istället."
 
-#: builtin/help.c:223
+#: builtin/help.c:226
 #, c-format
 msgid ""
 "'%s': cmd for supported man viewer.\n"
@@ -9245,358 +9736,326 @@ msgstr ""
 "\"%s\": kommando för man-visare som stöds.\n"
 "Använd \"man.<verktyg>.path\" istället."
 
-#: builtin/help.c:340
+#: builtin/help.c:343
 #, c-format
 msgid "'%s': unknown man viewer."
 msgstr "\"%s\": okänd man-visare."
 
-#: builtin/help.c:357
+#: builtin/help.c:360
 msgid "no man viewer handled the request"
 msgstr "ingen man-visare hanterade förfrågan"
 
-#: builtin/help.c:365
+#: builtin/help.c:368
 msgid "no info viewer handled the request"
 msgstr "ingen info-visare hanterade förfrågan"
 
-#: builtin/help.c:407
-msgid "Defining attributes per path"
-msgstr "Definierar attribut per sökväg"
-
-#: builtin/help.c:408
-msgid "Everyday Git With 20 Commands Or So"
-msgstr "Git för dagligt bruk i ungefär 20 kommandon"
+#: builtin/help.c:415
+#, c-format
+msgid "'%s' is aliased to '%s'"
+msgstr "\"%s\" är ett alias för \"%s\""
 
-#: builtin/help.c:409
-msgid "A Git glossary"
-msgstr "En Git-ordlista"
-
-#: builtin/help.c:410
-msgid "Specifies intentionally untracked files to ignore"
-msgstr "Ange avsiktligen ospårade filer att ignorera"
-
-#: builtin/help.c:411
-msgid "Defining submodule properties"
-msgstr "Ange egenskaper för undermoduler"
-
-#: builtin/help.c:412
-msgid "Specifying revisions and ranges for Git"
-msgstr "Ange versioner och intervall i Git"
-
-#: builtin/help.c:413
-msgid "A tutorial introduction to Git (for version 1.5.1 or newer)"
-msgstr "Introduktion till Git (för version 1.5.1 och senare)"
-
-#: builtin/help.c:414
-msgid "An overview of recommended workflows with Git"
-msgstr "Översikt över rekommenderade arbetsflöden med Git"
-
-#: builtin/help.c:426
-msgid "The common Git guides are:\n"
-msgstr "De vanliga Git-vägledningarna är:\n"
-
-#: builtin/help.c:444
-#, c-format
-msgid "'%s' is aliased to '%s'"
-msgstr "\"%s\" är ett alias för \"%s\""
-
-#: builtin/help.c:466 builtin/help.c:483
+#: builtin/help.c:442 builtin/help.c:459
 #, c-format
 msgid "usage: %s%s"
 msgstr "användning: %s%s"
 
-#: builtin/index-pack.c:157
+#: builtin/index-pack.c:158
 #, c-format
 msgid "unable to open %s"
 msgstr "kunde inte öppna %s"
 
-#: builtin/index-pack.c:207
+#: builtin/index-pack.c:208
 #, c-format
 msgid "object type mismatch at %s"
 msgstr "objekttyp stämmer inte överens vid %s"
 
-#: builtin/index-pack.c:227
+#: builtin/index-pack.c:228
 #, c-format
 msgid "did not receive expected object %s"
 msgstr "emottog inte det förväntade objektet %s"
 
-#: builtin/index-pack.c:230
+#: builtin/index-pack.c:231
 #, c-format
 msgid "object %s: expected type %s, found %s"
 msgstr "objektet %s: förväntad typ %s, såg %s"
 
-#: builtin/index-pack.c:272
+#: builtin/index-pack.c:273
 #, c-format
 msgid "cannot fill %d byte"
 msgid_plural "cannot fill %d bytes"
 msgstr[0] "kan inte fylla %d byte"
 msgstr[1] "kan inte fylla %d byte"
 
-#: builtin/index-pack.c:282
+#: builtin/index-pack.c:283
 msgid "early EOF"
 msgstr "tidigt filslut"
 
-#: builtin/index-pack.c:283
+#: builtin/index-pack.c:284
 msgid "read error on input"
 msgstr "indataläsfel"
 
-#: builtin/index-pack.c:295
+#: builtin/index-pack.c:296
 msgid "used more bytes than were available"
 msgstr "använde fler byte än tillgängligt"
 
-#: builtin/index-pack.c:302
+#: builtin/index-pack.c:303
 msgid "pack too large for current definition of off_t"
 msgstr "paket för stort för nuvarande definition av off_t"
 
-#: builtin/index-pack.c:305 builtin/unpack-objects.c:93
+#: builtin/index-pack.c:306 builtin/unpack-objects.c:93
 msgid "pack exceeds maximum allowed size"
 msgstr "paket är större än tillåten maximal storlek"
 
-#: builtin/index-pack.c:320
+#: builtin/index-pack.c:321
 #, c-format
 msgid "unable to create '%s'"
 msgstr "kunde inte skapa \"%s\""
 
-#: builtin/index-pack.c:326
+#: builtin/index-pack.c:327
 #, c-format
 msgid "cannot open packfile '%s'"
 msgstr "kan inte öppna paketfilen \"%s\""
 
-#: builtin/index-pack.c:340
+#: builtin/index-pack.c:341
 msgid "pack signature mismatch"
 msgstr "paketsignatur stämmer inte överens"
 
-#: builtin/index-pack.c:342
+#: builtin/index-pack.c:343
 #, c-format
 msgid "pack version %<PRIu32> unsupported"
 msgstr "paketversion %<PRIu32> stöds ej"
 
-#: builtin/index-pack.c:360
+#: builtin/index-pack.c:361
 #, c-format
 msgid "pack has bad object at offset %<PRIuMAX>: %s"
 msgstr "paketet har felaktigt objekt vid index %<PRIuMAX>: %s"
 
-#: builtin/index-pack.c:481
+#: builtin/index-pack.c:482
 #, c-format
 msgid "inflate returned %d"
 msgstr "inflate returnerade %d"
 
-#: builtin/index-pack.c:530
+#: builtin/index-pack.c:531
 msgid "offset value overflow for delta base object"
 msgstr "indexvärdespill för deltabasobjekt"
 
-#: builtin/index-pack.c:538
+#: builtin/index-pack.c:539
 msgid "delta base offset is out of bound"
 msgstr "deltabasindex utanför gränsen"
 
-#: builtin/index-pack.c:546
+#: builtin/index-pack.c:547
 #, c-format
 msgid "unknown object type %d"
 msgstr "okänd objekttyp %d"
 
-#: builtin/index-pack.c:577
+#: builtin/index-pack.c:578
 msgid "cannot pread pack file"
 msgstr "kan inte utföra \"pread\" på paketfil"
 
-#: builtin/index-pack.c:579
+#: builtin/index-pack.c:580
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
 msgstr[0] "för tidigt slut på paketfilen, %<PRIuMAX> byte saknas"
 msgstr[1] "för tidigt slut på paketfilen, %<PRIuMAX> byte saknas"
 
-#: builtin/index-pack.c:605
+#: builtin/index-pack.c:606
 msgid "serious inflate inconsistency"
 msgstr "allvarlig inflate-inkonsekvens"
 
-#: builtin/index-pack.c:750 builtin/index-pack.c:756 builtin/index-pack.c:779
-#: builtin/index-pack.c:818 builtin/index-pack.c:827
+#: builtin/index-pack.c:751 builtin/index-pack.c:757 builtin/index-pack.c:780
+#: builtin/index-pack.c:819 builtin/index-pack.c:828
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "SHA1-KOLLISION UPPTÄCKT VID %s !"
 
-#: builtin/index-pack.c:753 builtin/pack-objects.c:182
-#: builtin/pack-objects.c:276
+#: builtin/index-pack.c:754 builtin/pack-objects.c:198
+#: builtin/pack-objects.c:292
 #, c-format
 msgid "unable to read %s"
 msgstr "kunde inte läsa %s"
 
-#: builtin/index-pack.c:816
+#: builtin/index-pack.c:817
 #, c-format
 msgid "cannot read existing object info %s"
 msgstr "kan inte läsa information om befintligt objekt %s"
 
-#: builtin/index-pack.c:824
+#: builtin/index-pack.c:825
 #, c-format
 msgid "cannot read existing object %s"
 msgstr "kan inte läsa befintligt objekt %s"
 
-#: builtin/index-pack.c:838
+#: builtin/index-pack.c:839
 #, c-format
 msgid "invalid blob object %s"
 msgstr "ogiltigt blob-objekt %s"
 
-#: builtin/index-pack.c:853
+#: builtin/index-pack.c:842 builtin/index-pack.c:860
+msgid "fsck error in packed object"
+msgstr "fsck-fel i packat objekt"
+
+#: builtin/index-pack.c:857
 #, c-format
 msgid "invalid %s"
 msgstr "ogiltigt %s"
 
-#: builtin/index-pack.c:856
-msgid "Error in object"
-msgstr "Fel i objekt"
-
-#: builtin/index-pack.c:858
+#: builtin/index-pack.c:862
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr "Inte alla barnobjekt för %s kan nås"
 
-#: builtin/index-pack.c:930 builtin/index-pack.c:961
+#: builtin/index-pack.c:934 builtin/index-pack.c:965
 msgid "failed to apply delta"
 msgstr "misslyckades tillämpa delta"
 
-#: builtin/index-pack.c:1131
+#: builtin/index-pack.c:1135
 msgid "Receiving objects"
 msgstr "Tar emot objekt"
 
-#: builtin/index-pack.c:1131
+#: builtin/index-pack.c:1135
 msgid "Indexing objects"
 msgstr "Skapar index för objekt"
 
-#: builtin/index-pack.c:1165
+#: builtin/index-pack.c:1169
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr "paketet är trasigt (SHA1 stämmer inte)"
 
-#: builtin/index-pack.c:1170
+#: builtin/index-pack.c:1174
 msgid "cannot fstat packfile"
 msgstr "kan inte utföra \"fstat\" på paketfil"
 
-#: builtin/index-pack.c:1173
+#: builtin/index-pack.c:1177
 msgid "pack has junk at the end"
 msgstr "paket har skräp i slutet"
 
-#: builtin/index-pack.c:1185
+#: builtin/index-pack.c:1189
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr "förvirrad bortom vanvett i parse_pack_objects()"
 
-#: builtin/index-pack.c:1208
+#: builtin/index-pack.c:1212
 msgid "Resolving deltas"
 msgstr "Analyserar delta"
 
-#: builtin/index-pack.c:1219
+#: builtin/index-pack.c:1223
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "kunde inte skapa tråd: %s"
 
-#: builtin/index-pack.c:1261
+#: builtin/index-pack.c:1265
 msgid "confusion beyond insanity"
 msgstr "förvirrad bortom vanvett"
 
-#: builtin/index-pack.c:1267
+#: builtin/index-pack.c:1271
 #, c-format
 msgid "completed with %d local object"
 msgid_plural "completed with %d local objects"
 msgstr[0] "slutfördes med %d lokalt objekt"
 msgstr[1] "slutfördes med %d lokala objekt"
 
-#: builtin/index-pack.c:1279
+#: builtin/index-pack.c:1283
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr "Oväntad svanschecksumma för %s (trasig disk?)"
 
-#: builtin/index-pack.c:1283
+#: builtin/index-pack.c:1287
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
 msgstr[0] "paketet har %d oanalyserat delta"
 msgstr[1] "paketet har %d oanalyserade delta"
 
-#: builtin/index-pack.c:1307
+#: builtin/index-pack.c:1311
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr "kunde inte utföra \"deflate\" på tillagt objekt (%d)"
 
-#: builtin/index-pack.c:1383
+#: builtin/index-pack.c:1388
 #, c-format
 msgid "local object %s is corrupt"
 msgstr "lokalt objekt %s är trasigt"
 
-#: builtin/index-pack.c:1397
+#: builtin/index-pack.c:1402
 #, c-format
 msgid "packfile name '%s' does not end with '.pack'"
 msgstr "paketfilnamnet \"%s\" slutar inte med \".pack\""
 
-#: builtin/index-pack.c:1422
+#: builtin/index-pack.c:1427
 #, c-format
 msgid "cannot write %s file '%s'"
 msgstr "kan inte ta skriva %s-fil \"%s\""
 
-#: builtin/index-pack.c:1430
+#: builtin/index-pack.c:1435
 #, c-format
 msgid "cannot close written %s file '%s'"
 msgstr "kan inte stänga skriven %s-fil \"%s\""
 
-#: builtin/index-pack.c:1454
+#: builtin/index-pack.c:1459
 msgid "error while closing pack file"
 msgstr "fel vid stängning av paketfil"
 
-#: builtin/index-pack.c:1468
+#: builtin/index-pack.c:1473
 msgid "cannot store pack file"
 msgstr "kan inte spara paketfil"
 
-#: builtin/index-pack.c:1476
+#: builtin/index-pack.c:1481
 msgid "cannot store index file"
 msgstr "kan inte spara indexfil"
 
-#: builtin/index-pack.c:1513
+#: builtin/index-pack.c:1521
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "felaktig pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1581
+#: builtin/index-pack.c:1590
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Kan inte öppna befintlig paketfil \"%s\""
 
-#: builtin/index-pack.c:1583
+#: builtin/index-pack.c:1592
 #, 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:1631
+#: builtin/index-pack.c:1640
 #, 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:1638
+#: builtin/index-pack.c:1647
 #, 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:1675
+#: builtin/index-pack.c:1684
 msgid "Cannot come back to cwd"
 msgstr "Kan inte gå tillbaka till arbetskatalogen (cwd)"
 
-#: builtin/index-pack.c:1724 builtin/index-pack.c:1727
-#: builtin/index-pack.c:1743 builtin/index-pack.c:1747
+#: builtin/index-pack.c:1735 builtin/index-pack.c:1738
+#: builtin/index-pack.c:1754 builtin/index-pack.c:1758
 #, c-format
 msgid "bad %s"
 msgstr "felaktig %s"
 
-#: builtin/index-pack.c:1763
+#: builtin/index-pack.c:1774
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin kan inte användas med --stdin"
 
-#: builtin/index-pack.c:1765
+#: builtin/index-pack.c:1776
 msgid "--stdin requires a git repository"
 msgstr "--stdin kräver ett git-arkiv"
 
-#: builtin/index-pack.c:1771
+#: builtin/index-pack.c:1782
 msgid "--verify with no packfile name given"
 msgstr "--verify angavs utan paketfilnamn"
 
+#: builtin/index-pack.c:1832 builtin/unpack-objects.c:578
+msgid "fsck error in pack objects"
+msgstr "fsck-fel i packat objekt"
+
 #: builtin/init-db.c:55
 #, c-format
 msgid "cannot stat '%s'"
@@ -9634,8 +10093,8 @@ msgstr "ignorerar mallen %s"
 
 #: builtin/init-db.c:120
 #, c-format
-msgid "templates not found %s"
-msgstr "mallarna hittades inte %s"
+msgid "templates not found in %s"
+msgstr "mallarna hittades inte %s"
 
 #: builtin/init-db.c:135
 #, c-format
@@ -9693,11 +10152,6 @@ msgstr "behörigheter"
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr "ange att git-arkivet skall delas bland flera användare"
 
-#: builtin/init-db.c:516 builtin/init-db.c:521
-#, c-format
-msgid "cannot mkdir %s"
-msgstr "kan inte skapa katalogen (mkdir) %s"
-
 #: builtin/init-db.c:525
 #, c-format
 msgid "cannot chdir to %s"
@@ -9881,7 +10335,7 @@ msgstr "Två utdatakataloger?"
 msgid "Unknown commit %s"
 msgstr "Okänd incheckning %s"
 
-#: builtin/log.c:1289 builtin/notes.c:887 builtin/tag.c:522
+#: builtin/log.c:1289 builtin/notes.c:887 builtin/tag.c:523
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr "Kunde inte slå upp \"%s\" som en giltig referens."
@@ -10230,7 +10684,7 @@ msgstr "låtsas att sökvägar borttagna sedan <träd-igt> fortfarande finns"
 msgid "show debugging data"
 msgstr "visa felsökningsutdata"
 
-#: builtin/ls-remote.c:7
+#: builtin/ls-remote.c:9
 msgid ""
 "git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
@@ -10240,39 +10694,39 @@ msgstr ""
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
 "                     [--symref] [<arkiv> [<referenser>...]]"
 
-#: builtin/ls-remote.c:52
+#: builtin/ls-remote.c:59
 msgid "do not print remote URL"
 msgstr "visa inte fjärr-URL"
 
-#: builtin/ls-remote.c:53 builtin/ls-remote.c:55
+#: builtin/ls-remote.c:60 builtin/ls-remote.c:62
 msgid "exec"
 msgstr "exec"
 
-#: builtin/ls-remote.c:54 builtin/ls-remote.c:56
+#: builtin/ls-remote.c:61 builtin/ls-remote.c:63
 msgid "path of git-upload-pack on the remote host"
 msgstr "sökväg till git-upload-pack på fjärren"
 
-#: builtin/ls-remote.c:58
+#: builtin/ls-remote.c:65
 msgid "limit to tags"
 msgstr "begränsa till taggar"
 
-#: builtin/ls-remote.c:59
+#: builtin/ls-remote.c:66
 msgid "limit to heads"
 msgstr "begränsa till huvuden"
 
-#: builtin/ls-remote.c:60
+#: builtin/ls-remote.c:67
 msgid "do not show peeled tags"
 msgstr "visa inte avskalade taggar"
 
-#: builtin/ls-remote.c:62
+#: builtin/ls-remote.c:69
 msgid "take url.<base>.insteadOf into account"
 msgstr "ta hänsyn till url.<bas>.insteadOf"
 
-#: builtin/ls-remote.c:64
+#: builtin/ls-remote.c:73
 msgid "exit with exit code 2 if no matching refs are found"
 msgstr "avsluta med felkod 2 om motsvarande referenser inte hittas"
 
-#: builtin/ls-remote.c:67
+#: builtin/ls-remote.c:76
 msgid "show underlying ref in addition to the object pointed by it"
 msgstr "visa underliggande referens och objektet det pekar på"
 
@@ -10317,166 +10771,166 @@ msgstr "visa hela trädet; inte bara aktuell katalog (implicerar --full-name)"
 msgid "empty mbox: '%s'"
 msgstr "tom mbox: ”%s”"
 
-#: builtin/merge.c:49
+#: builtin/merge.c:51
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<flaggor>] [<incheckning>...]"
 
-#: builtin/merge.c:50
+#: builtin/merge.c:52
 msgid "git merge --abort"
 msgstr "git merge --abort"
 
-#: builtin/merge.c:51
+#: builtin/merge.c:53
 msgid "git merge --continue"
 msgstr "git merge --continue"
 
-#: builtin/merge.c:108
+#: builtin/merge.c:110
 msgid "switch `m' requires a value"
 msgstr "flaggan \"m\" behöver ett värde"
 
-#: builtin/merge.c:145
+#: builtin/merge.c:147
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
 msgstr "Kunde inte hitta sammanslagningsstrategin \"%s\".\n"
 
-#: builtin/merge.c:146
+#: builtin/merge.c:148
 #, c-format
 msgid "Available strategies are:"
 msgstr "Tillgängliga strategier är:"
 
-#: builtin/merge.c:151
+#: builtin/merge.c:153
 #, c-format
 msgid "Available custom strategies are:"
 msgstr "Tillgängliga skräddarsydda strategier är:"
 
-#: builtin/merge.c:201 builtin/pull.c:137
+#: builtin/merge.c:203 builtin/pull.c:142
 msgid "do not show a diffstat at the end of the merge"
 msgstr "visa inte en diffstat när sammanslagningen är färdig"
 
-#: builtin/merge.c:204 builtin/pull.c:140
+#: builtin/merge.c:206 builtin/pull.c:145
 msgid "show a diffstat at the end of the merge"
 msgstr "visa en diffstat när sammanslagningen är färdig"
 
-#: builtin/merge.c:205 builtin/pull.c:143
+#: builtin/merge.c:207 builtin/pull.c:148
 msgid "(synonym to --stat)"
 msgstr "(synonym till --stat)"
 
-#: builtin/merge.c:207 builtin/pull.c:146
+#: builtin/merge.c:209 builtin/pull.c:151
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr ""
 "lägg till (som mest <n>) poster från shortlog till incheckningsmeddelandet"
 
-#: builtin/merge.c:210 builtin/pull.c:152
+#: builtin/merge.c:212 builtin/pull.c:157
 msgid "create a single commit instead of doing a merge"
 msgstr "skapa en ensam incheckning istället för en sammanslagning"
 
-#: builtin/merge.c:212 builtin/pull.c:155
+#: builtin/merge.c:214 builtin/pull.c:160
 msgid "perform a commit if the merge succeeds (default)"
 msgstr "utför en incheckning om sammanslagningen lyckades (standard)"
 
-#: builtin/merge.c:214 builtin/pull.c:158
+#: builtin/merge.c:216 builtin/pull.c:163
 msgid "edit message before committing"
 msgstr "redigera meddelande innan incheckning"
 
-#: builtin/merge.c:215
+#: builtin/merge.c:217
 msgid "allow fast-forward (default)"
 msgstr "tillåt snabbspolning (standard)"
 
-#: builtin/merge.c:217 builtin/pull.c:164
+#: builtin/merge.c:219 builtin/pull.c:169
 msgid "abort if fast-forward is not possible"
 msgstr "avbryt om snabbspolning inte är möjlig"
 
-#: builtin/merge.c:221 builtin/pull.c:167
+#: builtin/merge.c:223 builtin/pull.c:172
 msgid "verify that the named commit has a valid GPG signature"
 msgstr "bekräfta att den namngivna incheckningen har en giltig GPG-signatur"
 
-#: builtin/merge.c:222 builtin/notes.c:777 builtin/pull.c:171
+#: builtin/merge.c:224 builtin/notes.c:777 builtin/pull.c:176
 #: builtin/revert.c:109
 msgid "strategy"
 msgstr "strategi"
 
-#: builtin/merge.c:223 builtin/pull.c:172
+#: builtin/merge.c:225 builtin/pull.c:177
 msgid "merge strategy to use"
 msgstr "sammanslagningsstrategi att använda"
 
-#: builtin/merge.c:224 builtin/pull.c:175
+#: builtin/merge.c:226 builtin/pull.c:180
 msgid "option=value"
 msgstr "alternativ=värde"
 
-#: builtin/merge.c:225 builtin/pull.c:176
+#: builtin/merge.c:227 builtin/pull.c:181
 msgid "option for selected merge strategy"
 msgstr "alternativ för vald sammanslagningsstrategi"
 
-#: builtin/merge.c:227
+#: builtin/merge.c:229
 msgid "merge commit message (for a non-fast-forward merge)"
 msgstr "incheckningsmeddelande för (icke snabbspolande) sammanslagning"
 
-#: builtin/merge.c:231
+#: builtin/merge.c:233
 msgid "abort the current in-progress merge"
 msgstr "avbryt den pågående sammanslagningen"
 
-#: builtin/merge.c:233
+#: builtin/merge.c:235
 msgid "continue the current in-progress merge"
 msgstr "fortsätt den pågående sammanslagningen"
 
-#: builtin/merge.c:235 builtin/pull.c:183
+#: builtin/merge.c:237 builtin/pull.c:188
 msgid "allow merging unrelated histories"
 msgstr "tillåt sammanslagning av orelaterade historier"
 
-#: builtin/merge.c:241
+#: builtin/merge.c:243
 msgid "verify commit-msg hook"
 msgstr "bekräfta commit-msg-krok"
 
-#: builtin/merge.c:266
+#: builtin/merge.c:268
 msgid "could not run stash."
 msgstr "kunde köra stash."
 
-#: builtin/merge.c:271
+#: builtin/merge.c:273
 msgid "stash failed"
 msgstr "stash misslyckades"
 
-#: builtin/merge.c:276
+#: builtin/merge.c:278
 #, c-format
 msgid "not a valid object: %s"
 msgstr "inte ett giltigt objekt: %s"
 
-#: builtin/merge.c:298 builtin/merge.c:315
+#: builtin/merge.c:300 builtin/merge.c:317
 msgid "read-tree failed"
 msgstr "read-tree misslyckades"
 
-#: builtin/merge.c:345
+#: builtin/merge.c:347
 msgid " (nothing to squash)"
 msgstr " (inget att platta till)"
 
-#: builtin/merge.c:356
+#: builtin/merge.c:358
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
 msgstr "Tillplattningsincheckning -- uppdaterar inte HEAD\n"
 
-#: builtin/merge.c:406
+#: builtin/merge.c:408
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
 msgstr "Inget sammanslagningsmeddelande -- uppdaterar inte HEAD\n"
 
-#: builtin/merge.c:456
+#: builtin/merge.c:458
 #, c-format
 msgid "'%s' does not point to a commit"
 msgstr "\"%s\" verkar inte peka på en incheckning"
 
-#: builtin/merge.c:546
+#: builtin/merge.c:548
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Felaktig branch.%s.mergeoptions-sträng: %s"
 
-#: builtin/merge.c:668
+#: builtin/merge.c:669
 msgid "Not handling anything other than two heads merge."
 msgstr "Hanterar inte något annat än en sammanslagning av två huvuden."
 
-#: builtin/merge.c:682
+#: builtin/merge.c:683
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Felaktig flagga för merge-recursive: -X%s"
 
-#: builtin/merge.c:697
+#: builtin/merge.c:698
 #, c-format
 msgid "unable to write %s"
 msgstr "kunde inte skriva %s"
@@ -10513,65 +10967,65 @@ msgstr ""
 msgid "Empty commit message."
 msgstr "Tomt incheckningsmeddelande."
 
-#: builtin/merge.c:820
+#: builtin/merge.c:819
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Underbart.\n"
 
-#: builtin/merge.c:873
+#: builtin/merge.c:872
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr ""
 "Kunde inte slå ihop automatiskt; fixa konflikter och checka in resultatet.\n"
 
-#: builtin/merge.c:912
+#: builtin/merge.c:911
 msgid "No current branch."
 msgstr "Inte på någon gren."
 
-#: builtin/merge.c:914
+#: builtin/merge.c:913
 msgid "No remote for the current branch."
 msgstr "Ingen fjärr för aktuell gren."
 
-#: builtin/merge.c:916
+#: builtin/merge.c:915
 msgid "No default upstream defined for the current branch."
 msgstr "Ingen standarduppström angiven för aktuell gren."
 
-#: builtin/merge.c:921
+#: builtin/merge.c:920
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "Ingen fjärrspårande gren för %s från %s"
 
-#: builtin/merge.c:974
+#: builtin/merge.c:973
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Felaktigt värde \"%s\" i miljövariabeln \"%s\""
 
-#: builtin/merge.c:1076
+#: builtin/merge.c:1075
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "inte något vi kan slå ihop med %s: %s"
 
-#: builtin/merge.c:1110
+#: builtin/merge.c:1109
 msgid "not something we can merge"
 msgstr "inte något vi kan slå ihop"
 
-#: builtin/merge.c:1212
+#: builtin/merge.c:1211
 msgid "--abort expects no arguments"
 msgstr "--abort tar inga argument"
 
-#: builtin/merge.c:1216
+#: builtin/merge.c:1215
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "Ingen sammanslagning att avbryta (MERGE_HEAD saknas)."
 
-#: builtin/merge.c:1228
+#: builtin/merge.c:1227
 msgid "--continue expects no arguments"
 msgstr "--continue tar inga argument"
 
-#: builtin/merge.c:1232
+#: builtin/merge.c:1231
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "Ingen sammanslagning pågår (MERGE_HEAD saknas)."
 
-#: builtin/merge.c:1248
+#: builtin/merge.c:1247
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -10579,7 +11033,7 @@ msgstr ""
 "Du har inte avslutat sammanslagningen (MERGE_HEAD finns).\n"
 "Checka in dina ändringar innan du slår ihop."
 
-#: builtin/merge.c:1255
+#: builtin/merge.c:1254
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -10587,114 +11041,114 @@ msgstr ""
 "Du har inte avslutat din \"cherry-pick\" (CHERRY_PICK_HEAD finns).\n"
 "Checka in dina ändringar innan du slår ihop."
 
-#: builtin/merge.c:1258
+#: builtin/merge.c:1257
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr "Du har inte avslutat din \"cherry-pick\" (CHERRY_PICK_HEAD finns)."
 
-#: builtin/merge.c:1267
+#: builtin/merge.c:1266
 msgid "You cannot combine --squash with --no-ff."
 msgstr "Du kan inte kombinera --squash med --no-ff."
 
-#: builtin/merge.c:1275
+#: builtin/merge.c:1274
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr "Ingen incheckning angiven och merge.defaultToUpstream är ej satt."
 
-#: builtin/merge.c:1292
+#: builtin/merge.c:1291
 msgid "Squash commit into empty head not supported yet"
 msgstr "Stöder inte en tillplattningsincheckning på ett tomt huvud ännu"
 
-#: builtin/merge.c:1294
+#: builtin/merge.c:1293
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr "Icke-snabbspolad incheckning kan inte användas med ett tomt huvud"
 
-#: builtin/merge.c:1299
+#: builtin/merge.c:1298
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - inte något vi kan slå ihop"
 
-#: builtin/merge.c:1301
+#: builtin/merge.c:1300
 msgid "Can merge only exactly one commit into empty head"
 msgstr "Kan endast slå ihop en enda incheckning i ett tomt huvud"
 
-#: builtin/merge.c:1335
+#: builtin/merge.c:1334
 #, 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."
 
-#: builtin/merge.c:1338
+#: builtin/merge.c:1337
 #, 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."
 
-#: builtin/merge.c:1341
+#: builtin/merge.c:1340
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "Incheckning %s har inte någon GPG-signatur."
 
-#: builtin/merge.c:1344
+#: builtin/merge.c:1343
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "Incheckningen %s har en korrekt GPG-signatur av %s\n"
 
-#: builtin/merge.c:1403
+#: builtin/merge.c:1402
 msgid "refusing to merge unrelated histories"
 msgstr "vägrar slå samman orelaterad historik"
 
-#: builtin/merge.c:1412
+#: builtin/merge.c:1411
 msgid "Already up to date."
 msgstr "Redan à jour."
 
-#: builtin/merge.c:1422
+#: builtin/merge.c:1421
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Uppdaterar %s..%s\n"
 
-#: builtin/merge.c:1463
+#: builtin/merge.c:1462
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "Försöker riktigt enkel sammanslagning i indexet...\n"
 
-#: builtin/merge.c:1470
+#: builtin/merge.c:1469
 #, c-format
 msgid "Nope.\n"
 msgstr "Nej.\n"
 
-#: builtin/merge.c:1495
+#: builtin/merge.c:1494
 msgid "Already up to date. Yeeah!"
 msgstr "Redan à jour. Toppen!"
 
-#: builtin/merge.c:1501
+#: builtin/merge.c:1500
 msgid "Not possible to fast-forward, aborting."
 msgstr "Kan inte snabbspola, avbryter."
 
-#: builtin/merge.c:1524 builtin/merge.c:1603
+#: builtin/merge.c:1523 builtin/merge.c:1602
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "Återspolar trädet till orört...\n"
 
-#: builtin/merge.c:1528
+#: builtin/merge.c:1527
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "Försöker sammanslagningsstrategin %s...\n"
 
-#: builtin/merge.c:1594
+#: builtin/merge.c:1593
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "Ingen sammanslagningsstrategi hanterade sammanslagningen.\n"
 
-#: builtin/merge.c:1596
+#: builtin/merge.c:1595
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "Sammanslagning med strategin %s misslyckades.\n"
 
-#: builtin/merge.c:1605
+#: builtin/merge.c:1604
 #, c-format
 msgid "Using the %s to prepare resolving by hand.\n"
 msgstr "Använder %s för att förbereda lösning för hand.\n"
 
-#: builtin/merge.c:1617
+#: builtin/merge.c:1616
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
@@ -10831,26 +11285,26 @@ msgstr "tillåt skapa mer än ett träd"
 msgid "git mv [<options>] <source>... <destination>"
 msgstr "git mv [<flaggor>] <källa>... <mål>"
 
-#: builtin/mv.c:83
+#: builtin/mv.c:82
 #, c-format
 msgid "Directory %s is in index and no submodule?"
 msgstr "Katalogen %s är i indexet och inte en undermodul?"
 
-#: builtin/mv.c:85 builtin/rm.c:289
+#: builtin/mv.c:84 builtin/rm.c:288
 msgid "Please stage your changes to .gitmodules or stash them to proceed"
 msgstr ""
 "Köa dina ändringar i .gitmodules eller använd \"stash\" för att fortsätta"
 
-#: builtin/mv.c:103
+#: builtin/mv.c:102
 #, c-format
 msgid "%.*s is in index"
 msgstr "%.*s är i indexet"
 
-#: builtin/mv.c:125
+#: builtin/mv.c:124
 msgid "force move/rename even if target exists"
 msgstr "tvinga flytta/ändra namn även om målet finns"
 
-#: builtin/mv.c:127
+#: builtin/mv.c:126
 msgid "skip move/rename errors"
 msgstr "hoppa över fel vid flytt/namnändring"
 
@@ -10915,7 +11369,7 @@ msgstr "%s, källa=%s, mål=%s"
 msgid "Renaming %s to %s\n"
 msgstr "Byter namn på %s till %s\n"
 
-#: builtin/mv.c:276 builtin/remote.c:712 builtin/repack.c:394
+#: builtin/mv.c:276 builtin/remote.c:715 builtin/repack.c:409
 #, c-format
 msgid "renaming '%s' failed"
 msgstr "misslyckades byta namn på \"%s\""
@@ -11107,12 +11561,12 @@ msgstr "kunde inte skriva anteckningsobjekt"
 msgid "the note contents have been left in %s"
 msgstr "anteckningens innehåll har lämnats kvar i %s"
 
-#: builtin/notes.c:234 builtin/tag.c:506
+#: builtin/notes.c:234 builtin/tag.c:507
 #, c-format
 msgid "cannot read '%s'"
 msgstr "kunde inte läsa \"%s\""
 
-#: builtin/notes.c:236 builtin/tag.c:509
+#: builtin/notes.c:236 builtin/tag.c:510
 #, c-format
 msgid "could not open or read '%s'"
 msgstr "kunde inte öppna eller läsa \"%s\""
@@ -11359,7 +11813,7 @@ msgstr "försök att ta bort icke-existerande anteckningar är inte ett fel"
 msgid "read object names from the standard input"
 msgstr "läs objektnamn från standard in"
 
-#: builtin/notes.c:943 builtin/prune.c:106 builtin/worktree.c:160
+#: builtin/notes.c:943 builtin/prune.c:107 builtin/worktree.c:151
 msgid "do not remove, show only"
 msgstr "ta inte bort, bara visa"
 
@@ -11380,211 +11834,239 @@ msgstr "använd anteckningar från <anteckningsref>"
 msgid "unknown subcommand: %s"
 msgstr "okänt underkommando: %s"
 
-#: builtin/pack-objects.c:33
+#: builtin/pack-objects.c:48
 msgid ""
 "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects --stdout [<flaggor>...] [< <reflista> | < <objektlista>]"
 
-#: builtin/pack-objects.c:34
+#: builtin/pack-objects.c:49
 msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects [<flaggor>...] <basnamn> [< <reflista> | < <objektlista>]"
 
-#: builtin/pack-objects.c:195 builtin/pack-objects.c:198
+#: builtin/pack-objects.c:211 builtin/pack-objects.c:214
 #, c-format
 msgid "deflate error (%d)"
 msgstr "fel i deflate (%d)"
 
-#: builtin/pack-objects.c:791
+#: builtin/pack-objects.c:810
 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:804
+#: builtin/pack-objects.c:823
 msgid "Writing objects"
 msgstr "Skriver objekt"
 
-#: builtin/pack-objects.c:1084
+#: builtin/pack-objects.c:1106
 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:2454
+#: builtin/pack-objects.c:1765
+msgid "Counting objects"
+msgstr "Räknar objekt"
+
+#: builtin/pack-objects.c:1895
+#, c-format
+msgid "unable to get size of %s"
+msgstr "kan inte hämta storlek på %s"
+
+#: builtin/pack-objects.c:1910
+#, c-format
+msgid "unable to parse object header of %s"
+msgstr "kunde inte tolka objekthuvud för %s"
+
+#: builtin/pack-objects.c:2564
 msgid "Compressing objects"
 msgstr "Komprimerar objekt"
 
-#: builtin/pack-objects.c:2625
+#: builtin/pack-objects.c:2735
 msgid "invalid value for --missing"
 msgstr "ogiltigt värde för --missing"
 
-#: builtin/pack-objects.c:2928
+#: builtin/pack-objects.c:3067
 #, c-format
 msgid "unsupported index version %s"
 msgstr "indexversionen %s stöds ej"
 
-#: builtin/pack-objects.c:2932
+#: builtin/pack-objects.c:3071
 #, c-format
 msgid "bad index version '%s'"
 msgstr "felaktig indexversion \"%s\""
 
-#: builtin/pack-objects.c:2962
+#: builtin/pack-objects.c:3102
 msgid "do not show progress meter"
 msgstr "visa inte förloppsindikator"
 
-#: builtin/pack-objects.c:2964
+#: builtin/pack-objects.c:3104
 msgid "show progress meter"
 msgstr "visa förloppsindikator"
 
-#: builtin/pack-objects.c:2966
+#: builtin/pack-objects.c:3106
 msgid "show progress meter during object writing phase"
 msgstr "visa förloppsindikator under objektskrivningsfasen"
 
-#: builtin/pack-objects.c:2969
+#: builtin/pack-objects.c:3109
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "som --all-progress när förloppsindikatorn visas"
 
-#: builtin/pack-objects.c:2970
+#: builtin/pack-objects.c:3110
 msgid "version[,offset]"
 msgstr "version[,offset]"
 
-#: builtin/pack-objects.c:2971
+#: builtin/pack-objects.c:3111
 msgid "write the pack index file in the specified idx format version"
 msgstr "skriv paketindexfilen i angiven indexformatversion"
 
-#: builtin/pack-objects.c:2974
+#: builtin/pack-objects.c:3114
 msgid "maximum size of each output pack file"
 msgstr "maximal storlek på varje utdatapaketfil"
 
-#: builtin/pack-objects.c:2976
+#: builtin/pack-objects.c:3116
 msgid "ignore borrowed objects from alternate object store"
 msgstr "ignorera lånade objekt från alternativa objektlager"
 
-#: builtin/pack-objects.c:2978
+#: builtin/pack-objects.c:3118
 msgid "ignore packed objects"
 msgstr "ignorera packade objekt"
 
-#: builtin/pack-objects.c:2980
+#: builtin/pack-objects.c:3120
 msgid "limit pack window by objects"
 msgstr "begränsa paketfönster efter objekt"
 
-#: builtin/pack-objects.c:2982
+#: builtin/pack-objects.c:3122
 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:2984
+#: builtin/pack-objects.c:3124
 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:2986
+#: builtin/pack-objects.c:3126
 msgid "reuse existing deltas"
 msgstr "återanvänd befintliga delta"
 
-#: builtin/pack-objects.c:2988
+#: builtin/pack-objects.c:3128
 msgid "reuse existing objects"
 msgstr "återanvänd befintliga objekt"
 
-#: builtin/pack-objects.c:2990
+#: builtin/pack-objects.c:3130
 msgid "use OFS_DELTA objects"
 msgstr "använd OFS_DELTA-objekt"
 
-#: builtin/pack-objects.c:2992
+#: builtin/pack-objects.c:3132
 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:2994
+#: builtin/pack-objects.c:3134
 msgid "do not create an empty pack output"
 msgstr "försök inte skapa tom paketutdata"
 
-#: builtin/pack-objects.c:2996
+#: builtin/pack-objects.c:3136
 msgid "read revision arguments from standard input"
 msgstr "läs revisionsargument från standard in"
 
-#: builtin/pack-objects.c:2998
+#: builtin/pack-objects.c:3138
 msgid "limit the objects to those that are not yet packed"
 msgstr "begränsa objekt till de som ännu inte packats"
 
-#: builtin/pack-objects.c:3001
+#: builtin/pack-objects.c:3141
 msgid "include objects reachable from any reference"
 msgstr "inkludera objekt som kan nås från någon referens"
 
-#: builtin/pack-objects.c:3004
+#: builtin/pack-objects.c:3144
 msgid "include objects referred by reflog entries"
 msgstr "inkludera objekt som refereras från referensloggposter"
 
-#: builtin/pack-objects.c:3007
+#: builtin/pack-objects.c:3147
 msgid "include objects referred to by the index"
 msgstr "inkludera objekt som refereras från indexet"
 
-#: builtin/pack-objects.c:3010
+#: builtin/pack-objects.c:3150
 msgid "output pack to stdout"
 msgstr "skriv paket på standard ut"
 
-#: builtin/pack-objects.c:3012
+#: builtin/pack-objects.c:3152
 msgid "include tag objects that refer to objects to be packed"
 msgstr "inkludera taggobjekt som refererar objekt som skall packas"
 
-#: builtin/pack-objects.c:3014
+#: builtin/pack-objects.c:3154
 msgid "keep unreachable objects"
 msgstr "behåll onåbara objekt"
 
-#: builtin/pack-objects.c:3016
+#: builtin/pack-objects.c:3156
 msgid "pack loose unreachable objects"
 msgstr "packa lösa onåbara objekt"
 
-#: builtin/pack-objects.c:3018
+#: builtin/pack-objects.c:3158
 msgid "unpack unreachable objects newer than <time>"
 msgstr "packa upp onåbara objekt nyare än <tid>"
 
-#: builtin/pack-objects.c:3021
+#: builtin/pack-objects.c:3161
 msgid "create thin packs"
 msgstr "skapa tunna paket"
 
-#: builtin/pack-objects.c:3023
+#: builtin/pack-objects.c:3163
 msgid "create packs suitable for shallow fetches"
 msgstr "skapa packfiler lämpade för grunda hämtningar"
 
-#: builtin/pack-objects.c:3025
+#: builtin/pack-objects.c:3165
 msgid "ignore packs that have companion .keep file"
 msgstr "ignorera paket som har tillhörande .keep-fil"
 
-#: builtin/pack-objects.c:3027
+#: builtin/pack-objects.c:3167
+msgid "ignore this pack"
+msgstr "ignorera detta paket"
+
+#: builtin/pack-objects.c:3169
 msgid "pack compression level"
 msgstr "komprimeringsgrad för paket"
 
-#: builtin/pack-objects.c:3029
+#: builtin/pack-objects.c:3171
 msgid "do not hide commits by grafts"
 msgstr "göm inte incheckningar med ympningar (\"grafts\")"
 
-#: builtin/pack-objects.c:3031
+#: builtin/pack-objects.c:3173
 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:3033
+#: builtin/pack-objects.c:3175
 msgid "write a bitmap index together with the pack index"
 msgstr "använd bitkartindex tillsammans med packindexet"
 
-#: builtin/pack-objects.c:3036
+#: builtin/pack-objects.c:3178
 msgid "handling for missing objects"
 msgstr "hantering av saknade objekt"
 
-#: builtin/pack-objects.c:3039
+#: builtin/pack-objects.c:3181
 msgid "do not pack objects in promisor packfiles"
 msgstr "packa inte objekt i kontraktspackfiler"
 
-#: builtin/pack-objects.c:3178
-msgid "Counting objects"
-msgstr "Räknar objekt"
+#: builtin/pack-objects.c:3205
+#, 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:3210
+#, 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:3338
+msgid "Enumerating objects"
+msgstr "Räknar upp objekt"
 
-#: builtin/pack-refs.c:6
+#: builtin/pack-refs.c:7
 msgid "git pack-refs [<options>]"
 msgstr "git pack-refs [<flaggor>]"
 
-#: builtin/pack-refs.c:14
+#: builtin/pack-refs.c:15
 msgid "pack everything"
 msgstr "packa allt"
 
-#: builtin/pack-refs.c:15
+#: builtin/pack-refs.c:16
 msgid "prune loose refs (default)"
 msgstr "ta bort lösa referenser (standard)"
 
@@ -11600,65 +12082,65 @@ msgstr "Tar bort duplicerade objekt"
 msgid "git prune [-n] [-v] [--progress] [--expire <time>] [--] [<head>...]"
 msgstr "git prune [-n] [-v] [--progress] [--expire <tid>] [--] [<huvud>...]"
 
-#: builtin/prune.c:107
+#: builtin/prune.c:108
 msgid "report pruned objects"
 msgstr "rapportera borttagna objekt"
 
-#: builtin/prune.c:110
+#: builtin/prune.c:111
 msgid "expire objects older than <time>"
 msgstr "låt tid gå ut för objekt äldre än <tid>"
 
-#: builtin/prune.c:112
+#: builtin/prune.c:113
 msgid "limit traversal to objects outside promisor packfiles"
 msgstr "begränsa vandring av objekt utanför kontraktspackfiler."
 
-#: builtin/prune.c:126
+#: builtin/prune.c:127
 msgid "cannot prune in a precious-objects repo"
 msgstr "kan inte rensa i ett \"precious-objekt\"-arkiv"
 
-#: builtin/pull.c:54 builtin/pull.c:56
+#: builtin/pull.c:59 builtin/pull.c:61
 #, c-format
 msgid "Invalid value for %s: %s"
 msgstr "Felaktigt värde för %s: %s"
 
-#: builtin/pull.c:76
+#: builtin/pull.c:81
 msgid "git pull [<options>] [<repository> [<refspec>...]]"
 msgstr "git pull [<flaggor>] [<arkiv> [<refspec>...]]"
 
-#: builtin/pull.c:127
+#: builtin/pull.c:132
 msgid "control for recursive fetching of submodules"
 msgstr "styrning för rekursiv hämtning av undermoduler"
 
-#: builtin/pull.c:131
+#: builtin/pull.c:136
 msgid "Options related to merging"
 msgstr "Alternativ gällande sammanslagning"
 
-#: builtin/pull.c:134
+#: builtin/pull.c:139
 msgid "incorporate changes by rebasing rather than merging"
 msgstr "inlemma ändringar genom ombasering i stället för sammanslagning"
 
-#: builtin/pull.c:161 builtin/rebase--helper.c:23 builtin/revert.c:121
+#: builtin/pull.c:166 builtin/rebase--helper.c:23 builtin/revert.c:121
 msgid "allow fast-forward"
 msgstr "tillåt snabbspolning"
 
-#: builtin/pull.c:170
+#: builtin/pull.c:175
 msgid "automatically stash/stash pop before and after rebase"
 msgstr "utför automatiskt stash/stash pop före och efter ombasering"
 
-#: builtin/pull.c:186
+#: builtin/pull.c:191
 msgid "Options related to fetching"
 msgstr "Alternativ gällande hämtningar"
 
-#: builtin/pull.c:204
+#: builtin/pull.c:209
 msgid "number of submodules pulled in parallel"
 msgstr "antal undermoduler som hämtas parallellt"
 
-#: builtin/pull.c:299
+#: builtin/pull.c:304
 #, c-format
 msgid "Invalid value for pull.ff: %s"
 msgstr "Felaktigt värde för pull.ff: %s"
 
-#: builtin/pull.c:415
+#: builtin/pull.c:420
 msgid ""
 "There is no candidate for rebasing against among the refs that you just "
 "fetched."
@@ -11666,14 +12148,14 @@ msgstr ""
 "Det finns ingen kandidat för ombasering bland referenserna du precis har "
 "hämtat."
 
-#: builtin/pull.c:417
+#: builtin/pull.c:422
 msgid ""
 "There are no candidates for merging among the refs that you just fetched."
 msgstr ""
 "Det finns ingen kandidat för sammanslagning bland referenserna du precis har "
 "hämtat."
 
-#: builtin/pull.c:418
+#: builtin/pull.c:423
 msgid ""
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
@@ -11681,7 +12163,7 @@ msgstr ""
 "Det betyder vanligtvis att du använt en jokertecken-refspec som inte\n"
 "motsvarade något i fjärränden."
 
-#: builtin/pull.c:421
+#: builtin/pull.c:426
 #, c-format
 msgid ""
 "You asked to pull from the remote '%s', but did not specify\n"
@@ -11692,42 +12174,42 @@ msgstr ""
 "gren. Eftersom det inte är den fjärr som är konfigurerad som\n"
 "standard för aktuell gren måste du ange en gren på kommandoraden."
 
-#: builtin/pull.c:426 git-parse-remote.sh:73
+#: builtin/pull.c:431 git-parse-remote.sh:73
 msgid "You are not currently on a branch."
 msgstr "Du är inte på någon gren för närvarande."
 
-#: builtin/pull.c:428 builtin/pull.c:443 git-parse-remote.sh:79
+#: builtin/pull.c:433 builtin/pull.c:448 git-parse-remote.sh:79
 msgid "Please specify which branch you want to rebase against."
 msgstr "Ange vilken gren du vill ombasera mot."
 
-#: builtin/pull.c:430 builtin/pull.c:445 git-parse-remote.sh:82
+#: builtin/pull.c:435 builtin/pull.c:450 git-parse-remote.sh:82
 msgid "Please specify which branch you want to merge with."
 msgstr "Ange vilken gren du vill slå samman med."
 
-#: builtin/pull.c:431 builtin/pull.c:446
+#: builtin/pull.c:436 builtin/pull.c:451
 msgid "See git-pull(1) for details."
 msgstr "Se git-pull(1) för detaljer."
 
-#: builtin/pull.c:433 builtin/pull.c:439 builtin/pull.c:448
+#: builtin/pull.c:438 builtin/pull.c:444 builtin/pull.c:453
 #: git-parse-remote.sh:64
 msgid "<remote>"
 msgstr "<fjärr>"
 
-#: builtin/pull.c:433 builtin/pull.c:448 builtin/pull.c:453 git-rebase.sh:477
+#: builtin/pull.c:438 builtin/pull.c:453 builtin/pull.c:458 git-rebase.sh:523
 #: git-parse-remote.sh:65
 msgid "<branch>"
 msgstr "<gren>"
 
-#: builtin/pull.c:441 git-parse-remote.sh:75
+#: builtin/pull.c:446 git-parse-remote.sh:75
 msgid "There is no tracking information for the current branch."
 msgstr "Det finns ingen spårningsinformation för aktuell gren."
 
-#: builtin/pull.c:450 git-parse-remote.sh:95
+#: builtin/pull.c:455 git-parse-remote.sh:95
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:"
 msgstr "Om du vill ange spårningsinformation för grenen kan du göra det med:"
 
-#: builtin/pull.c:455
+#: builtin/pull.c:460
 #, c-format
 msgid ""
 "Your configuration specifies to merge with the ref '%s'\n"
@@ -11736,27 +12218,27 @@ msgstr ""
 "Dina inställningar anger sammanslagning med referensen \"%s\"\n"
 "från fjärren, men någon sådan referens togs inte emot."
 
-#: builtin/pull.c:819
+#: builtin/pull.c:826
 msgid "ignoring --verify-signatures for rebase"
 msgstr "ignorera --verify-signatures för ombasering"
 
-#: builtin/pull.c:867
+#: builtin/pull.c:874
 msgid "--[no-]autostash option is only valid with --rebase."
 msgstr "--[no-]autostash är endast giltig med --rebase."
 
-#: builtin/pull.c:875
+#: builtin/pull.c:882
 msgid "Updating an unborn branch with changes added to the index."
 msgstr "Uppdaterar en ofödd gren med ändringar som lagts till i indexet."
 
-#: builtin/pull.c:878
+#: builtin/pull.c:885
 msgid "pull with rebase"
 msgstr "pull med ombasering"
 
-#: builtin/pull.c:879
+#: builtin/pull.c:886
 msgid "please commit or stash them."
 msgstr "checka in eller använd \"stash\" på dem."
 
-#: builtin/pull.c:904
+#: builtin/pull.c:911
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -11767,7 +12249,7 @@ msgstr ""
 "snabbspolar din arbetskatalog från\n"
 "incheckningen %s."
 
-#: builtin/pull.c:909
+#: builtin/pull.c:916
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -11784,31 +12266,31 @@ msgstr ""
 "$ git reset --hard\n"
 "för att återgå."
 
-#: builtin/pull.c:924
+#: builtin/pull.c:931
 msgid "Cannot merge multiple branches into empty head."
 msgstr "Kan inte slå ihop flera grenar i ett tomt huvud."
 
-#: builtin/pull.c:928
+#: builtin/pull.c:935
 msgid "Cannot rebase onto multiple branches."
 msgstr "Kan inte ombasera ovanpå flera grenar."
 
-#: builtin/pull.c:935
+#: builtin/pull.c:942
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr "kan inte ombasera med lokalt lagrade ändringar i undermoful"
 
-#: builtin/push.c:17
+#: builtin/push.c:19
 msgid "git push [<options>] [<repository> [<refspec>...]]"
 msgstr "git push [<flaggor>] [<arkiv> [<refspec>...]]"
 
-#: builtin/push.c:92
+#: builtin/push.c:111
 msgid "tag shorthand without <tag>"
 msgstr "taggförkortning utan <tagg>"
 
-#: builtin/push.c:102
+#: builtin/push.c:121
 msgid "--delete only accepts plain target ref names"
 msgstr "--delete godtar endast enkla målreferensnamn"
 
-#: builtin/push.c:146
+#: builtin/push.c:165
 msgid ""
 "\n"
 "To choose either option permanently, see push.default in 'git help config'."
@@ -11817,7 +12299,7 @@ msgstr ""
 "För att välja ett av alternativen permanent, se push.default i \"git help "
 "config\"."
 
-#: builtin/push.c:149
+#: builtin/push.c:168
 #, c-format
 msgid ""
 "The upstream branch of your current branch does not match\n"
@@ -11842,7 +12324,7 @@ msgstr ""
 "    git push %s %s\n"
 "%s"
 
-#: builtin/push.c:164
+#: builtin/push.c:183
 #, c-format
 msgid ""
 "You are not currently on a branch.\n"
@@ -11857,7 +12339,7 @@ msgstr ""
 "\n"
 "    git push %s HEAD:<namn-på-fjärrgren>\n"
 
-#: builtin/push.c:178
+#: builtin/push.c:197
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -11870,12 +12352,12 @@ msgstr ""
 "\n"
 "    git push --set-upstream %s %s\n"
 
-#: builtin/push.c:186
+#: builtin/push.c:205
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
 msgstr "Den aktuella grenen %s har flera uppströmsgrenar, vägrar sända."
 
-#: builtin/push.c:189
+#: builtin/push.c:208
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -11886,14 +12368,14 @@ msgstr ""
 "aktuella grenen \"%s\", utan att tala om för mig vad som\n"
 "skall sändas för att uppdatera fjärrgrenen."
 
-#: builtin/push.c:248
+#: builtin/push.c:267
 msgid ""
 "You didn't specify any refspecs to push, and push.default is \"nothing\"."
 msgstr ""
 "Du angav inga referensspecifikationer att sända, och push.default är "
 "\"nothing\"."
 
-#: builtin/push.c:255
+#: builtin/push.c:274
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
@@ -11905,7 +12387,7 @@ msgstr ""
 "\"git pull ....\") innan du sänder igen.\n"
 "Se avsnittet \"Note about fast-forward\" i \"git push --help\" för detaljer."
 
-#: builtin/push.c:261
+#: builtin/push.c:280
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. Check out this branch and integrate the remote changes\n"
@@ -11917,7 +12399,7 @@ msgstr ""
 "\"git pull ...\") innan du sänder igen.\n"
 "Se avsnittet \"Note about fast-forward\" i \"git push --help\" för detaljer."
 
-#: builtin/push.c:267
+#: builtin/push.c:286
 msgid ""
 "Updates were rejected because the remote contains work that you do\n"
 "not have locally. This is usually caused by another repository pushing\n"
@@ -11931,11 +12413,11 @@ msgstr ""
 "(t.ex. \"git pull ...\") innan du sänder igen.\n"
 "Se avsnittet \"Note about fast-forwards\" i \"git push --help\" för detaljer."
 
-#: builtin/push.c:274
+#: builtin/push.c:293
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr "Uppdateringarna avvisades eftersom taggen redan finns på fjärren."
 
-#: builtin/push.c:277
+#: builtin/push.c:296
 msgid ""
 "You cannot update a remote ref that points at a non-commit object,\n"
 "or update a remote ref to make it point at a non-commit object,\n"
@@ -11946,22 +12428,22 @@ msgstr ""
 "pekar på något som inte är en incheckning, utan att använda flaggan\n"
 "\"--force\".\n"
 
-#: builtin/push.c:337
+#: builtin/push.c:357
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "Sänder till %s\n"
 
-#: builtin/push.c:341
+#: builtin/push.c:361
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "misslyckades sända vissa referenser till \"%s\""
 
-#: builtin/push.c:372
+#: builtin/push.c:395
 #, c-format
 msgid "bad repository '%s'"
 msgstr "felaktigt arkiv \"%s\""
 
-#: builtin/push.c:373
+#: builtin/push.c:396
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -11982,114 +12464,104 @@ msgstr ""
 "\n"
 "    git push <namn>\n"
 
-#: builtin/push.c:391
-msgid "--all and --tags are incompatible"
-msgstr "--all och --tags är inkompatibla"
-
-#: builtin/push.c:392
-msgid "--all can't be combined with refspecs"
-msgstr "--all kan inte kombineras med referensspecifikationer"
-
-#: builtin/push.c:397
-msgid "--mirror and --tags are incompatible"
-msgstr "--mirror och --tags är inkompatibla"
-
-#: builtin/push.c:398
-msgid "--mirror can't be combined with refspecs"
-msgstr "--mirror kan inte kombineras med referensspecifikationer"
-
-#: builtin/push.c:403
-msgid "--all and --mirror are incompatible"
-msgstr "--all och --mirror är inkompatibla"
-
-#: builtin/push.c:535
+#: builtin/push.c:551
 msgid "repository"
 msgstr "arkiv"
 
-#: builtin/push.c:536 builtin/send-pack.c:163
+#: builtin/push.c:552 builtin/send-pack.c:164
 msgid "push all refs"
 msgstr "sänd alla referenser"
 
-#: builtin/push.c:537 builtin/send-pack.c:165
+#: builtin/push.c:553 builtin/send-pack.c:166
 msgid "mirror all refs"
 msgstr "spegla alla referenser"
 
-#: builtin/push.c:539
+#: builtin/push.c:555
 msgid "delete refs"
 msgstr "ta bort referenser"
 
-#: builtin/push.c:540
+#: builtin/push.c:556
 msgid "push tags (can't be used with --all or --mirror)"
 msgstr "sänd taggar (kan inte användas med --all eller --mirror)"
 
-#: builtin/push.c:543 builtin/send-pack.c:166
+#: builtin/push.c:559 builtin/send-pack.c:167
 msgid "force updates"
 msgstr "tvinga uppdateringar"
 
-#: builtin/push.c:545 builtin/send-pack.c:180
+#: builtin/push.c:561 builtin/send-pack.c:181
 msgid "refname>:<expect"
 msgstr "refnamn>:<förvänta"
 
-#: builtin/push.c:546 builtin/send-pack.c:181
+#: builtin/push.c:562 builtin/send-pack.c:182
 msgid "require old value of ref to be at this value"
 msgstr "kräv att ref:s tidigare värde är detta"
 
-#: builtin/push.c:549
+#: builtin/push.c:565
 msgid "control recursive pushing of submodules"
 msgstr "styr rekursiv insändning av undermoduler"
 
-#: builtin/push.c:551 builtin/send-pack.c:174
+#: builtin/push.c:567 builtin/send-pack.c:175
 msgid "use thin pack"
 msgstr "använd tunna paket"
 
-#: builtin/push.c:552 builtin/push.c:553 builtin/send-pack.c:160
-#: builtin/send-pack.c:161
+#: builtin/push.c:568 builtin/push.c:569 builtin/send-pack.c:161
+#: builtin/send-pack.c:162
 msgid "receive pack program"
 msgstr "program för att ta emot paket"
 
-#: builtin/push.c:554
+#: builtin/push.c:570
 msgid "set upstream for git pull/status"
 msgstr "ställ in uppström för git pull/status"
 
-#: builtin/push.c:557
+#: builtin/push.c:573
 msgid "prune locally removed refs"
 msgstr "ta bort lokalt borttagna referenser"
 
-#: builtin/push.c:559
+#: builtin/push.c:575
 msgid "bypass pre-push hook"
 msgstr "förbigå pre-push-krok"
 
-#: builtin/push.c:560
+#: builtin/push.c:576
 msgid "push missing but relevant tags"
 msgstr "sänd in saknade men relevanta taggar"
 
-#: builtin/push.c:563 builtin/send-pack.c:168
+#: builtin/push.c:579 builtin/send-pack.c:169
 msgid "GPG sign the push"
 msgstr "GPG-signera insändningen"
 
-#: builtin/push.c:565 builtin/send-pack.c:175
+#: builtin/push.c:581 builtin/send-pack.c:176
 msgid "request atomic transaction on remote side"
 msgstr "begär atomiska transaktioner på fjärrsidan"
 
-#: builtin/push.c:566 builtin/send-pack.c:171
-msgid "server-specific"
-msgstr "serverspecifik"
-
-#: builtin/push.c:566 builtin/send-pack.c:172
-msgid "option to transmit"
-msgstr ""
-"inget att checka in\n"
-"flagga att sända"
-
-#: builtin/push.c:583
+#: builtin/push.c:599
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr "--delete är inkompatibel med --all, --mirror och --tags"
 
-#: builtin/push.c:585
+#: builtin/push.c:601
 msgid "--delete doesn't make sense without any refs"
 msgstr "--delete kan inte användas utan referenser"
 
 #: builtin/push.c:604
+msgid "--all and --tags are incompatible"
+msgstr "--all och --tags är inkompatibla"
+
+#: builtin/push.c:606
+msgid "--all can't be combined with refspecs"
+msgstr "--all kan inte kombineras med referensspecifikationer"
+
+#: builtin/push.c:610
+msgid "--mirror and --tags are incompatible"
+msgstr "--mirror och --tags är inkompatibla"
+
+#: builtin/push.c:612
+msgid "--mirror can't be combined with refspecs"
+msgstr "--mirror kan inte kombineras med referensspecifikationer"
+
+#: builtin/push.c:615
+msgid "--all and --mirror are incompatible"
+msgstr "--all och --mirror är inkompatibla"
+
+#: builtin/push.c:634
 msgid "push options must not have new line characters"
 msgstr "push-flaggor kan inte innehålla radbrytning"
 
@@ -12103,67 +12575,67 @@ msgstr ""
 "[-u [--exclude-per-directory=<gitignore>] | -i]] [--no-sparse-checkout] [--"
 "index-output=<fil>] (--empty | <träd-igt1> [<träd-igt2> [<träd-igt3>]])"
 
-#: builtin/read-tree.c:121
+#: builtin/read-tree.c:120
 msgid "write resulting index to <file>"
 msgstr "skriv resulterande index till <fil>"
 
-#: builtin/read-tree.c:124
+#: builtin/read-tree.c:123
 msgid "only empty the index"
 msgstr "töm bara indexet"
 
-#: builtin/read-tree.c:126
+#: builtin/read-tree.c:125
 msgid "Merging"
 msgstr "Sammanslagning"
 
-#: builtin/read-tree.c:128
+#: builtin/read-tree.c:127
 msgid "perform a merge in addition to a read"
 msgstr "utför en sammanslagning i tillägg till en läsning"
 
-#: builtin/read-tree.c:130
+#: builtin/read-tree.c:129
 msgid "3-way merge if no file level merging required"
 msgstr "3-vägssammanslagning om sammanslagning på filnivå ej krävs"
 
-#: builtin/read-tree.c:132
+#: builtin/read-tree.c:131
 msgid "3-way merge in presence of adds and removes"
 msgstr "3-vägssammanslagning när det finns tillägg och borttagningar"
 
-#: builtin/read-tree.c:134
+#: builtin/read-tree.c:133
 msgid "same as -m, but discard unmerged entries"
 msgstr "som -m, men kasta bort ej sammanslagna poster"
 
-#: builtin/read-tree.c:135
+#: builtin/read-tree.c:134
 msgid "<subdirectory>/"
 msgstr "<underkatalog>/"
 
-#: builtin/read-tree.c:136
+#: builtin/read-tree.c:135
 msgid "read the tree into the index under <subdirectory>/"
 msgstr "läs in trädet i indexet under <underkatalog>/"
 
-#: builtin/read-tree.c:139
+#: builtin/read-tree.c:138
 msgid "update working tree with merge result"
 msgstr "uppdatera arbetskatalogen med resultatet från sammanslagningen"
 
-#: builtin/read-tree.c:141
+#: builtin/read-tree.c:140
 msgid "gitignore"
 msgstr "gitignore"
 
-#: builtin/read-tree.c:142
+#: builtin/read-tree.c:141
 msgid "allow explicitly ignored files to be overwritten"
 msgstr "tillåt explicit ignorerade filer att skrivas över"
 
-#: builtin/read-tree.c:145
+#: builtin/read-tree.c:144
 msgid "don't check the working tree after merging"
 msgstr "kontrollera inte arbetskatalogen efter sammanslagning"
 
-#: builtin/read-tree.c:146
+#: builtin/read-tree.c:145
 msgid "don't update the index or the work tree"
 msgstr "uppdatera inte indexet eller arbetskatalogen"
 
-#: builtin/read-tree.c:148
+#: builtin/read-tree.c:147
 msgid "skip applying sparse checkout filter"
 msgstr "hoppa över att applicera filter för gles utcheckning"
 
-#: builtin/read-tree.c:150
+#: builtin/read-tree.c:149
 msgid "debug unpack-trees"
 msgstr "felsök unpack-trees"
 
@@ -12180,46 +12652,58 @@ msgid "allow commits with empty messages"
 msgstr "tillåt incheckningar med tomt meddelande"
 
 #: builtin/rebase--helper.c:27
+msgid "rebase merge commits"
+msgstr "ombasera sammanslagningar"
+
+#: builtin/rebase--helper.c:29
+msgid "keep original branch points of cousins"
+msgstr "behåll ursprungliga förgreningspunkter för kusiner"
+
+#: builtin/rebase--helper.c:30
 msgid "continue rebase"
 msgstr "fortsätt ombasering"
 
-#: builtin/rebase--helper.c:29
+#: builtin/rebase--helper.c:32
 msgid "abort rebase"
 msgstr "avbryt ombasering"
 
-#: builtin/rebase--helper.c:32
+#: builtin/rebase--helper.c:35
 msgid "make rebase script"
 msgstr "skapa ombaseringsskript"
 
-#: builtin/rebase--helper.c:34
+#: builtin/rebase--helper.c:37
 msgid "shorten commit ids in the todo list"
 msgstr "förkorta inchecknings-id i todo-listan"
 
-#: builtin/rebase--helper.c:36
+#: builtin/rebase--helper.c:39
 msgid "expand commit ids in the todo list"
 msgstr "utöka inchecknings-id i todo-listan"
 
-#: builtin/rebase--helper.c:38
+#: builtin/rebase--helper.c:41
 msgid "check the todo list"
 msgstr "kontrollera todo-listan"
 
-#: builtin/rebase--helper.c:40
+#: builtin/rebase--helper.c:43
 msgid "skip unnecessary picks"
 msgstr "hoppa över onödiga \"pick\"-kommandon"
 
-#: builtin/rebase--helper.c:42
+#: builtin/rebase--helper.c:45
 msgid "rearrange fixup/squash lines"
 msgstr "ordna om fixup-/squash-rader"
 
-#: builtin/rebase--helper.c:44
+#: builtin/rebase--helper.c:47
 msgid "insert exec commands in todo list"
 msgstr "lägg in exec-kommandon i todo-listan"
 
-#: builtin/receive-pack.c:30
+#: builtin/rebase--helper.c:68
+msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
+msgstr "--[no-]rebase-cousins har ingen effekt utan --rebase-merges"
+
+#: builtin/receive-pack.c:31
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <git-katalog>"
 
-#: builtin/receive-pack.c:841
+#: builtin/receive-pack.c:842
 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"
@@ -12249,7 +12733,7 @@ msgstr ""
 "För att undvika detta meddelande och fortfarande behålla det\n"
 "normala beteendet, sätt \"receive.denyCurrentBranch\" till \"refuse\"."
 
-#: builtin/receive-pack.c:861
+#: builtin/receive-pack.c:862
 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"
@@ -12270,11 +12754,11 @@ msgstr ""
 "\n"
 "För att undvika detta meddelande kan du sätta det till \"refuse\"."
 
-#: builtin/receive-pack.c:1934
+#: builtin/receive-pack.c:1935
 msgid "quiet"
 msgstr "tyst"
 
-#: builtin/receive-pack.c:1948
+#: builtin/receive-pack.c:1949
 msgid "You must specify a directory."
 msgstr "Du måste ange en katalog."
 
@@ -12283,11 +12767,11 @@ msgstr "Du måste ange en katalog."
 msgid "'%s' is not a valid timestamp"
 msgstr "\"%s\" är inte en giltig tidsstämpel"
 
-#: builtin/remote.c:13
+#: builtin/remote.c:14
 msgid "git remote [-v | --verbose]"
 msgstr "git remote [-v | --verbose]"
 
-#: builtin/remote.c:14
+#: builtin/remote.c:15
 msgid ""
 "git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
 "mirror=<fetch|push>] <name> <url>"
@@ -12295,82 +12779,82 @@ msgstr ""
 "git remote add [-t <gren>] [-m <master>] [-f] [--tags | --no-tags] [--"
 "mirror=<fetch|push>] <namn> <url>"
 
-#: builtin/remote.c:15 builtin/remote.c:35
+#: builtin/remote.c:16 builtin/remote.c:36
 msgid "git remote rename <old> <new>"
 msgstr "git remote rename <gammal> <ny>"
 
-#: builtin/remote.c:16 builtin/remote.c:40
+#: builtin/remote.c:17 builtin/remote.c:41
 msgid "git remote remove <name>"
 msgstr "git remote remove <namn>"
 
-#: builtin/remote.c:17 builtin/remote.c:45
+#: builtin/remote.c:18 builtin/remote.c:46
 msgid "git remote set-head <name> (-a | --auto | -d | --delete | <branch>)"
 msgstr "git remote set-head <namn> (-a | --auto | -d | --delete | <gren>)"
 
-#: builtin/remote.c:18
+#: builtin/remote.c:19
 msgid "git remote [-v | --verbose] show [-n] <name>"
 msgstr "git remote [-v | --verbose] show [-n] <namn>"
 
-#: builtin/remote.c:19
+#: builtin/remote.c:20
 msgid "git remote prune [-n | --dry-run] <name>"
 msgstr "git remote prune [-n | --dry-run] <namn>"
 
-#: builtin/remote.c:20
+#: builtin/remote.c:21
 msgid ""
 "git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]"
 msgstr ""
 "git remote [-v | --verbose] update [-p | --prune] [(<grupp> | <fjärr>)...]"
 
-#: builtin/remote.c:21
+#: builtin/remote.c:22
 msgid "git remote set-branches [--add] <name> <branch>..."
 msgstr "git remote set-branches [--add] <namn> <gren>..."
 
-#: builtin/remote.c:22 builtin/remote.c:71
+#: builtin/remote.c:23 builtin/remote.c:72
 msgid "git remote get-url [--push] [--all] <name>"
 msgstr "git remote get-url [--push] [--all] <namn>"
 
-#: builtin/remote.c:23 builtin/remote.c:76
+#: builtin/remote.c:24 builtin/remote.c:77
 msgid "git remote set-url [--push] <name> <newurl> [<oldurl>]"
 msgstr "git remote set-url [--push] <namn> <nyurl> [<gammalurl>]"
 
-#: builtin/remote.c:24 builtin/remote.c:77
+#: builtin/remote.c:25 builtin/remote.c:78
 msgid "git remote set-url --add <name> <newurl>"
 msgstr "git remote set-url --add <namn> <nyurl>"
 
-#: builtin/remote.c:25 builtin/remote.c:78
+#: builtin/remote.c:26 builtin/remote.c:79
 msgid "git remote set-url --delete <name> <url>"
 msgstr "git remote set-url --delete <namn> <url>"
 
-#: builtin/remote.c:30
+#: builtin/remote.c:31
 msgid "git remote add [<options>] <name> <url>"
 msgstr "git remote add [<flaggor>] <namn> <url>"
 
-#: builtin/remote.c:50
+#: builtin/remote.c:51
 msgid "git remote set-branches <name> <branch>..."
 msgstr "git remote set-branches <namn> <gren>..."
 
-#: builtin/remote.c:51
+#: builtin/remote.c:52
 msgid "git remote set-branches --add <name> <branch>..."
 msgstr "git remote set-branches --add <namn> <gren>..."
 
-#: builtin/remote.c:56
+#: builtin/remote.c:57
 msgid "git remote show [<options>] <name>"
 msgstr "git remote show [<flaggor>] <namn>"
 
-#: builtin/remote.c:61
+#: builtin/remote.c:62
 msgid "git remote prune [<options>] <name>"
 msgstr "git remote prune [<flaggor>] <namn>"
 
-#: builtin/remote.c:66
+#: builtin/remote.c:67
 msgid "git remote update [<options>] [<group> | <remote>]..."
 msgstr "git remote update [<flaggor>] [<grupp> | <fjärr>]..."
 
-#: builtin/remote.c:95
+#: builtin/remote.c:96
 #, c-format
 msgid "Updating %s"
 msgstr "Uppdaterar %s"
 
-#: builtin/remote.c:127
+#: builtin/remote.c:128
 msgid ""
 "--mirror is dangerous and deprecated; please\n"
 "\t use --mirror=fetch or --mirror=push instead"
@@ -12378,86 +12862,86 @@ msgstr ""
 "--mirror är farlig och föråldrad; använd\n"
 "\t --mirror=fetch eller --mirror=push istället"
 
-#: builtin/remote.c:144
+#: builtin/remote.c:145
 #, c-format
 msgid "unknown mirror argument: %s"
 msgstr "okänt argument till mirror: %s"
 
-#: builtin/remote.c:160
+#: builtin/remote.c:161
 msgid "fetch the remote branches"
 msgstr "hämta fjärrgrenarna"
 
-#: builtin/remote.c:162
+#: builtin/remote.c:163
 msgid "import all tags and associated objects when fetching"
 msgstr "importera alla taggar och associerade objekt vid hämtning"
 
-#: builtin/remote.c:165
+#: builtin/remote.c:166
 msgid "or do not fetch any tag at all (--no-tags)"
 msgstr "eller hämta inte några taggar alls (--no-tags)"
 
-#: builtin/remote.c:167
+#: builtin/remote.c:168
 msgid "branch(es) to track"
 msgstr "gren(ar) att spåra"
 
-#: builtin/remote.c:168
+#: builtin/remote.c:169
 msgid "master branch"
 msgstr "huvudgren"
 
-#: builtin/remote.c:169
+#: builtin/remote.c:170
 msgid "push|fetch"
 msgstr "push|fetch"
 
-#: builtin/remote.c:170
+#: builtin/remote.c:171
 msgid "set up remote as a mirror to push to or fetch from"
 msgstr "ställ in arkiv som spegel att sända eller ta emot från"
 
-#: builtin/remote.c:182
+#: builtin/remote.c:183
 msgid "specifying a master branch makes no sense with --mirror"
 msgstr "att ange en master-gren ger ingen mening med --mirror"
 
-#: builtin/remote.c:184
+#: builtin/remote.c:185
 msgid "specifying branches to track makes sense only with fetch mirrors"
 msgstr "att ange grenar att spåra ger mening bara med hämtningsspeglar"
 
-#: builtin/remote.c:191 builtin/remote.c:631
+#: builtin/remote.c:192 builtin/remote.c:634
 #, c-format
 msgid "remote %s already exists."
 msgstr "fjärrarkivet %s finns redan."
 
-#: builtin/remote.c:195 builtin/remote.c:635
+#: builtin/remote.c:196 builtin/remote.c:638
 #, c-format
 msgid "'%s' is not a valid remote name"
 msgstr "\"%s\" är inte ett giltigt namn på fjärrarkiv"
 
-#: builtin/remote.c:235
+#: builtin/remote.c:236
 #, c-format
 msgid "Could not setup master '%s'"
 msgstr "Kunde inte skapa master \"%s\""
 
-#: builtin/remote.c:337
+#: builtin/remote.c:342
 #, c-format
 msgid "Could not get fetch map for refspec %s"
 msgstr "Kunde inte hämta mappning för referensspecifikation %s"
 
-#: builtin/remote.c:438 builtin/remote.c:446
+#: builtin/remote.c:441 builtin/remote.c:449
 msgid "(matching)"
 msgstr "(matchande)"
 
-#: builtin/remote.c:450
+#: builtin/remote.c:453
 msgid "(delete)"
 msgstr "(ta bort)"
 
-#: builtin/remote.c:624 builtin/remote.c:759 builtin/remote.c:858
+#: builtin/remote.c:627 builtin/remote.c:762 builtin/remote.c:861
 #, c-format
 msgid "No such remote: %s"
 msgstr "Inget sådant fjärrarkiv: %s"
 
-#: builtin/remote.c:641
+#: builtin/remote.c:644
 #, c-format
 msgid "Could not rename config section '%s' to '%s'"
 msgstr "Kunde inte byta namn på konfigurationssektionen \"%s\" till \"%s\""
 
-#: builtin/remote.c:661
+#: builtin/remote.c:664
 #, c-format
 msgid ""
 "Not updating non-default fetch refspec\n"
@@ -12468,17 +12952,17 @@ msgstr ""
 "\t%s\n"
 "\tUppdatera konfigurationen manuellt om nödvändigt."
 
-#: builtin/remote.c:697
+#: builtin/remote.c:700
 #, c-format
 msgid "deleting '%s' failed"
 msgstr "misslyckades ta bort \"%s\""
 
-#: builtin/remote.c:731
+#: builtin/remote.c:734
 #, c-format
 msgid "creating '%s' failed"
 msgstr "misslyckades skapa \"%s\""
 
-#: builtin/remote.c:796
+#: builtin/remote.c:799
 msgid ""
 "Note: A branch outside the refs/remotes/ hierarchy was not removed;\n"
 "to delete it, use:"
@@ -12492,113 +12976,118 @@ msgstr[1] ""
 "Observera: Några grenar utanför hierarkin refs/remotes/ togs inte bort;\n"
 "för att ta bort dem, använd:"
 
-#: builtin/remote.c:810
+#: builtin/remote.c:813
 #, c-format
 msgid "Could not remove config section '%s'"
 msgstr "Kunde inte ta bort konfigurationssektionen \"%s\""
 
-#: builtin/remote.c:911
+#: builtin/remote.c:914
 #, c-format
 msgid " new (next fetch will store in remotes/%s)"
 msgstr " ny (nästa hämtning sparar i remotes/%s)"
 
-#: builtin/remote.c:914
+#: builtin/remote.c:917
 msgid " tracked"
 msgstr " spårad"
 
-#: builtin/remote.c:916
+#: builtin/remote.c:919
 msgid " stale (use 'git remote prune' to remove)"
 msgstr " förlegad (använd \"git remote prune\" för att ta bort)"
 
-#: builtin/remote.c:918
+#: builtin/remote.c:921
 msgid " ???"
 msgstr " ???"
 
-#: builtin/remote.c:959
+#: builtin/remote.c:962
 #, c-format
 msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch"
 msgstr "ogiltig branch.%s.merge; kan inte ombasera över > 1 gren"
 
-#: builtin/remote.c:967
+#: builtin/remote.c:971
 #, c-format
 msgid "rebases interactively onto remote %s"
 msgstr "ombaseras interaktivt på fjärren %s"
 
-#: builtin/remote.c:968
+#: builtin/remote.c:973
+#, c-format
+msgid "rebases interactively (with merges) onto remote %s"
+msgstr "ombaseras interaktivt (med sammanslagningar) på fjärren %s"
+
+#: builtin/remote.c:976
 #, c-format
 msgid "rebases onto remote %s"
 msgstr "ombaseras på fjärren %s"
 
-#: builtin/remote.c:971
+#: builtin/remote.c:980
 #, c-format
 msgid " merges with remote %s"
 msgstr " sammanslås med fjärren %s"
 
-#: builtin/remote.c:974
+#: builtin/remote.c:983
 #, c-format
 msgid "merges with remote %s"
 msgstr "sammanslås med fjärren %s"
 
-#: builtin/remote.c:977
+#: builtin/remote.c:986
 #, c-format
 msgid "%-*s    and with remote %s\n"
 msgstr "%-*s    och med fjärren %s\n"
 
-#: builtin/remote.c:1020
+#: builtin/remote.c:1029
 msgid "create"
 msgstr "skapa"
 
-#: builtin/remote.c:1023
+#: builtin/remote.c:1032
 msgid "delete"
 msgstr "ta bort"
 
-#: builtin/remote.c:1027
+#: builtin/remote.c:1036
 msgid "up to date"
 msgstr "àjour"
 
-#: builtin/remote.c:1030
+#: builtin/remote.c:1039
 msgid "fast-forwardable"
 msgstr "kan snabbspolas"
 
-#: builtin/remote.c:1033
+#: builtin/remote.c:1042
 msgid "local out of date"
 msgstr "lokal föråldrad"
 
-#: builtin/remote.c:1040
+#: builtin/remote.c:1049
 #, c-format
 msgid "    %-*s forces to %-*s (%s)"
 msgstr "    %-*s tvingar till %-*s (%s)"
 
-#: builtin/remote.c:1043
+#: builtin/remote.c:1052
 #, c-format
 msgid "    %-*s pushes to %-*s (%s)"
 msgstr "    %-*s sänder till %-*s (%s)"
 
-#: builtin/remote.c:1047
+#: builtin/remote.c:1056
 #, c-format
 msgid "    %-*s forces to %s"
 msgstr "    %-*s tvingar till %s"
 
-#: builtin/remote.c:1050
+#: builtin/remote.c:1059
 #, c-format
 msgid "    %-*s pushes to %s"
 msgstr "    %-*s sänder till %s"
 
-#: builtin/remote.c:1118
+#: builtin/remote.c:1127
 msgid "do not query remotes"
 msgstr "fråga inte fjärrar"
 
-#: builtin/remote.c:1145
+#: builtin/remote.c:1154
 #, c-format
 msgid "* remote %s"
 msgstr "* fjärr %s"
 
-#: builtin/remote.c:1146
+#: builtin/remote.c:1155
 #, c-format
 msgid "  Fetch URL: %s"
 msgstr "  Hämt-URL: %s"
 
-#: builtin/remote.c:1147 builtin/remote.c:1163 builtin/remote.c:1302
+#: builtin/remote.c:1156 builtin/remote.c:1172 builtin/remote.c:1311
 msgid "(no URL)"
 msgstr "(ingen URL)"
 
@@ -12606,184 +13095,184 @@ msgstr "(ingen URL)"
 #. with the one in " Fetch URL: %s"
 #. translation.
 #.
-#: builtin/remote.c:1161 builtin/remote.c:1163
+#: builtin/remote.c:1170 builtin/remote.c:1172
 #, c-format
 msgid "  Push  URL: %s"
 msgstr "  Sänd-URL: %s"
 
-#: builtin/remote.c:1165 builtin/remote.c:1167 builtin/remote.c:1169
+#: builtin/remote.c:1174 builtin/remote.c:1176 builtin/remote.c:1178
 #, c-format
 msgid "  HEAD branch: %s"
 msgstr "  HEAD-gren: %s"
 
-#: builtin/remote.c:1165
+#: builtin/remote.c:1174
 msgid "(not queried)"
 msgstr "(inte förfrågad)"
 
-#: builtin/remote.c:1167
+#: builtin/remote.c:1176
 msgid "(unknown)"
 msgstr "(okänd)"
 
-#: builtin/remote.c:1171
+#: builtin/remote.c:1180
 #, c-format
 msgid ""
 "  HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
 msgstr "  HEAD-gren (HEAD på fjärr är tvetydig, kan vara en av följande):\n"
 
-#: builtin/remote.c:1183
+#: builtin/remote.c:1192
 #, c-format
 msgid "  Remote branch:%s"
 msgid_plural "  Remote branches:%s"
 msgstr[0] "  Fjärrgren:%s"
 msgstr[1] "  Fjärrgrenar:%s"
 
-#: builtin/remote.c:1186 builtin/remote.c:1212
+#: builtin/remote.c:1195 builtin/remote.c:1221
 msgid " (status not queried)"
 msgstr " (status inte förfrågad)"
 
-#: builtin/remote.c:1195
+#: builtin/remote.c:1204
 msgid "  Local branch configured for 'git pull':"
 msgid_plural "  Local branches configured for 'git pull':"
 msgstr[0] "  Lokal gren konfigurerad för \"git pull\":"
 msgstr[1] "  Lokala grenar konfigurerade för \"git pull\":"
 
-#: builtin/remote.c:1203
+#: builtin/remote.c:1212
 msgid "  Local refs will be mirrored by 'git push'"
 msgstr "  Lokala referenser speglas av \"git push\""
 
-#: builtin/remote.c:1209
+#: builtin/remote.c:1218
 #, c-format
 msgid "  Local ref configured for 'git push'%s:"
 msgid_plural "  Local refs configured for 'git push'%s:"
 msgstr[0] "  Lokal referens konfigurerad för \"git push\"%s:"
 msgstr[1] "  Lokala referenser konfigurerade för \"git push\"%s:"
 
-#: builtin/remote.c:1230
+#: builtin/remote.c:1239
 msgid "set refs/remotes/<name>/HEAD according to remote"
 msgstr "sätt refs/remotes/<namn>/HEAD enligt fjärren"
 
-#: builtin/remote.c:1232
+#: builtin/remote.c:1241
 msgid "delete refs/remotes/<name>/HEAD"
 msgstr "ta bort refs/remotes/<namn>/HEAD"
 
-#: builtin/remote.c:1247
+#: builtin/remote.c:1256
 msgid "Cannot determine remote HEAD"
 msgstr "Kan inte bestämma HEAD på fjärren"
 
-#: builtin/remote.c:1249
+#: builtin/remote.c:1258
 msgid "Multiple remote HEAD branches. Please choose one explicitly with:"
 msgstr "Flera HEAD-grenar på fjärren. Välj en explicit med:"
 
-#: builtin/remote.c:1259
+#: builtin/remote.c:1268
 #, c-format
 msgid "Could not delete %s"
 msgstr "Kunde inte ta bort %s"
 
-#: builtin/remote.c:1267
+#: builtin/remote.c:1276
 #, c-format
 msgid "Not a valid ref: %s"
 msgstr "Inte en giltig referens: %s"
 
-#: builtin/remote.c:1269
+#: builtin/remote.c:1278
 #, c-format
 msgid "Could not setup %s"
 msgstr "Kunde inte ställa in %s"
 
-#: builtin/remote.c:1287
+#: builtin/remote.c:1296
 #, c-format
 msgid " %s will become dangling!"
 msgstr " %s kommer bli dinglande!"
 
-#: builtin/remote.c:1288
+#: builtin/remote.c:1297
 #, c-format
 msgid " %s has become dangling!"
 msgstr " %s har blivit dinglande!"
 
-#: builtin/remote.c:1298
+#: builtin/remote.c:1307
 #, c-format
 msgid "Pruning %s"
 msgstr "Rensar %s"
 
-#: builtin/remote.c:1299
+#: builtin/remote.c:1308
 #, c-format
 msgid "URL: %s"
 msgstr "URL: %s"
 
-#: builtin/remote.c:1315
+#: builtin/remote.c:1324
 #, c-format
 msgid " * [would prune] %s"
 msgstr " * [skulle rensa] %s"
 
-#: builtin/remote.c:1318
+#: builtin/remote.c:1327
 #, c-format
 msgid " * [pruned] %s"
 msgstr " * [rensad] %s"
 
-#: builtin/remote.c:1363
+#: builtin/remote.c:1372
 msgid "prune remotes after fetching"
 msgstr "rensa fjärrar efter hämtning"
 
-#: builtin/remote.c:1426 builtin/remote.c:1480 builtin/remote.c:1548
+#: builtin/remote.c:1435 builtin/remote.c:1489 builtin/remote.c:1557
 #, c-format
 msgid "No such remote '%s'"
 msgstr "Ingen sådan fjärr \"%s\""
 
-#: builtin/remote.c:1442
+#: builtin/remote.c:1451
 msgid "add branch"
 msgstr "lägg till gren"
 
-#: builtin/remote.c:1449
+#: builtin/remote.c:1458
 msgid "no remote specified"
 msgstr "ingen fjärr angavs"
 
-#: builtin/remote.c:1466
+#: builtin/remote.c:1475
 msgid "query push URLs rather than fetch URLs"
 msgstr "fråga sänd-URL:er istället för hämta-URL:er"
 
-#: builtin/remote.c:1468
+#: builtin/remote.c:1477
 msgid "return all URLs"
 msgstr "returnera alla URL:er"
 
-#: builtin/remote.c:1496
+#: builtin/remote.c:1505
 #, c-format
 msgid "no URLs configured for remote '%s'"
 msgstr "ingen URL:er angivna för fjärren \"%s\""
 
-#: builtin/remote.c:1522
+#: builtin/remote.c:1531
 msgid "manipulate push URLs"
 msgstr "manipulera URL:ar för sändning"
 
-#: builtin/remote.c:1524
+#: builtin/remote.c:1533
 msgid "add URL"
 msgstr "lägg till URL"
 
-#: builtin/remote.c:1526
+#: builtin/remote.c:1535
 msgid "delete URLs"
 msgstr "ta bort URL:ar"
 
-#: builtin/remote.c:1533
+#: builtin/remote.c:1542
 msgid "--add --delete doesn't make sense"
 msgstr "--add --delete ger ingen mening"
 
-#: builtin/remote.c:1572
+#: builtin/remote.c:1581
 #, c-format
 msgid "Invalid old URL pattern: %s"
 msgstr "Felaktig gammalt URL-mönster: %s"
 
-#: builtin/remote.c:1580
+#: builtin/remote.c:1589
 #, c-format
 msgid "No such URL found: %s"
 msgstr "Ingen sådan URL hittades: %s"
 
-#: builtin/remote.c:1582
+#: builtin/remote.c:1591
 msgid "Will not delete all non-push URLs"
 msgstr "Kommer inte ta bort alla icke-sänd-URL:er"
 
-#: builtin/remote.c:1598
+#: builtin/remote.c:1607
 msgid "be verbose; must be placed before a subcommand"
 msgstr "var pratsam; måste skrivas före ett underkommando"
 
-#: builtin/remote.c:1629
+#: builtin/remote.c:1638
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr "Okänt underkommando: %s"
@@ -12801,127 +13290,135 @@ msgstr ""
 "Använd --no-write-bitmap-index eller inaktivera inställningen\n"
 "pack.writebitmaps"
 
-#: builtin/repack.c:170
+#: builtin/repack.c:180
 msgid "pack everything in a single pack"
 msgstr "packa allt i ett enda paket"
 
-#: builtin/repack.c:172
+#: builtin/repack.c:182
 msgid "same as -a, and turn unreachable objects loose"
 msgstr "samma som -a, och gör onåbara objekt lösa"
 
-#: builtin/repack.c:175
+#: builtin/repack.c:185
 msgid "remove redundant packs, and run git-prune-packed"
 msgstr "ta bort överflödiga paket, och kör git-prune-packed"
 
-#: builtin/repack.c:177
+#: builtin/repack.c:187
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr "sänd --no-reuse-delta till git-pack-objects"
 
-#: builtin/repack.c:179
+#: builtin/repack.c:189
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr "sänd --no-reuse-object till git-pack-objects"
 
-#: builtin/repack.c:181
+#: builtin/repack.c:191
 msgid "do not run git-update-server-info"
 msgstr "kör inte git-update-server-info"
 
-#: builtin/repack.c:184
+#: builtin/repack.c:194
 msgid "pass --local to git-pack-objects"
 msgstr "sänd --local till git-pack-objects"
 
-#: builtin/repack.c:186
+#: builtin/repack.c:196
 msgid "write bitmap index"
 msgstr "skriv bitkartindex"
 
-#: builtin/repack.c:187
+#: builtin/repack.c:197
 msgid "approxidate"
 msgstr "cirkadatum"
 
-#: builtin/repack.c:188
+#: builtin/repack.c:198
 msgid "with -A, do not loosen objects older than this"
 msgstr "med -A, lös inte upp objekt äldre än detta"
 
-#: builtin/repack.c:190
+#: builtin/repack.c:200
 msgid "with -a, repack unreachable objects"
 msgstr "med -a, packa om onåbara objekt"
 
-#: builtin/repack.c:192
+#: builtin/repack.c:202
 msgid "size of the window used for delta compression"
 msgstr "storlek på fönster använt för deltakomprimering"
 
-#: builtin/repack.c:193 builtin/repack.c:199
+#: builtin/repack.c:203 builtin/repack.c:209
 msgid "bytes"
 msgstr "byte"
 
-#: builtin/repack.c:194
+#: builtin/repack.c:204
 msgid "same as the above, but limit memory size instead of entries count"
 msgstr "samma som ovan, men begränsa minnesstorleken istället för postantal"
 
-#: builtin/repack.c:196
+#: builtin/repack.c:206
 msgid "limits the maximum delta depth"
 msgstr "begränsa maximalt deltadjup"
 
-#: builtin/repack.c:198
+#: builtin/repack.c:208
 msgid "limits the maximum number of threads"
 msgstr "begränsar maximalt antal trådar"
 
-#: builtin/repack.c:200
+#: builtin/repack.c:210
 msgid "maximum size of each packfile"
 msgstr "maximal storlek på varje paketfil"
 
-#: builtin/repack.c:202
+#: builtin/repack.c:212
 msgid "repack objects in packs marked with .keep"
 msgstr "packa om objekt i paket märkta med .keep"
 
-#: builtin/repack.c:212
+#: builtin/repack.c:214
+msgid "do not repack this pack"
+msgstr "packa inte om detta paket"
+
+#: builtin/repack.c:224
 msgid "cannot delete packs in a precious-objects repo"
 msgstr "kan inte ta bort paket i ett \"precious-objects\"-arkiv"
 
-#: builtin/repack.c:216
+#: builtin/repack.c:228
 msgid "--keep-unreachable and -A are incompatible"
 msgstr "--keep-unreachable och -A kan inte användas samtidigt"
 
-#: builtin/repack.c:410 builtin/worktree.c:148
+#: builtin/repack.c:425 builtin/worktree.c:139
 #, c-format
 msgid "failed to remove '%s'"
 msgstr "misslyckades ta bort \"%s\""
 
-#: builtin/replace.c:20
+#: builtin/replace.c:22
 msgid "git replace [-f] <object> <replacement>"
 msgstr "git replace [-f] <objekt> <ersättning>"
 
-#: builtin/replace.c:21
+#: builtin/replace.c:23
 msgid "git replace [-f] --edit <object>"
 msgstr "git replace [-f] --edit <objekt>"
 
-#: builtin/replace.c:22
+#: builtin/replace.c:24
 msgid "git replace [-f] --graft <commit> [<parent>...]"
 msgstr "git replace [-f] --graft <incheckning> [<förälder>...]"
 
-#: builtin/replace.c:23
+#: builtin/replace.c:25
+msgid "git replace [-f] --convert-graft-file"
+msgstr "git replace [-f] --convert-graft-file"
+
+#: builtin/replace.c:26
 msgid "git replace -d <object>..."
 msgstr "git replace -d <objekt>..."
 
-#: builtin/replace.c:24
+#: builtin/replace.c:27
 msgid "git replace [--format=<format>] [-l [<pattern>]]"
 msgstr "git replace [--format=<format>] [-l [<mönster>]]"
 
-#: builtin/replace.c:331 builtin/replace.c:369 builtin/replace.c:397
+#: builtin/replace.c:371 builtin/replace.c:415 builtin/replace.c:445
 #, c-format
 msgid "Not a valid object name: '%s'"
 msgstr "Objektnamnet är inte giltigt: \"%s\""
 
-#: builtin/replace.c:361
+#: builtin/replace.c:407
 #, c-format
 msgid "bad mergetag in commit '%s'"
 msgstr "felaktig sammanslagningstagg i incheckningen \"%s\""
 
-#: builtin/replace.c:363
+#: builtin/replace.c:409
 #, c-format
 msgid "malformed mergetag in commit '%s'"
 msgstr "felformad sammanslagningstagg i incheckningen \"%s\""
 
-#: builtin/replace.c:374
+#: builtin/replace.c:421
 #, c-format
 msgid ""
 "original commit '%s' contains mergetag '%s' that is discarded; use --edit "
@@ -12930,45 +13427,58 @@ msgstr ""
 "den ursprungliga incheckningen \"%s\" innehåller sammanslagningstaggen \"%s"
 "\" som har förkastats; använd --edit istället för --graft"
 
-#: builtin/replace.c:407
+#: builtin/replace.c:460
 #, c-format
 msgid "the original commit '%s' has a gpg signature."
 msgstr "den ursprungliga incheckningen \"%s\" har en gpg-signatur."
 
-#: builtin/replace.c:408
+#: builtin/replace.c:461
 msgid "the signature will be removed in the replacement commit!"
 msgstr "signaturen kommer att tas bort i ersättningsincheckningen!"
 
-#: builtin/replace.c:414
+#: builtin/replace.c:471
 #, c-format
 msgid "could not write replacement commit for: '%s'"
 msgstr "kunde inte skriva ersättningsincheckning för: \"%s\""
 
-#: builtin/replace.c:438
+#: builtin/replace.c:514
+#, c-format
+msgid ""
+"could not convert the following graft(s):\n"
+"%s"
+msgstr ""
+"kunde inte konvertera följande ympning(ar):\n"
+"%s"
+
+#: builtin/replace.c:535
 msgid "list replace refs"
 msgstr "visa ersättningsreferenser"
 
-#: builtin/replace.c:439
+#: builtin/replace.c:536
 msgid "delete replace refs"
 msgstr "ta bort ersättningsreferenser"
 
-#: builtin/replace.c:440
+#: builtin/replace.c:537
 msgid "edit existing object"
 msgstr "redigera befintligt objekt"
 
-#: builtin/replace.c:441
+#: builtin/replace.c:538
 msgid "change a commit's parents"
 msgstr "ändra en inchecknings föräldrar"
 
-#: builtin/replace.c:442
+#: builtin/replace.c:539
+msgid "convert existing graft file"
+msgstr "konvertera befintlig ympningsfil"
+
+#: builtin/replace.c:540
 msgid "replace the ref if it exists"
 msgstr "ersätt referensen om den finns"
 
-#: builtin/replace.c:444
+#: builtin/replace.c:542
 msgid "do not pretty-print contents for --edit"
 msgstr "använd inte snygg visning av innehåll för --edit"
 
-#: builtin/replace.c:445
+#: builtin/replace.c:543
 msgid "use this format"
 msgstr "använd detta format"
 
@@ -13020,12 +13530,12 @@ msgstr "Du har inte en giltig HEAD."
 
 #: builtin/reset.c:80
 msgid "Failed to find tree of HEAD."
-msgstr "Kunde inte hitta träder för HEAD."
+msgstr "Kunde inte hitta trädet för HEAD."
 
 #: builtin/reset.c:86
 #, c-format
 msgid "Failed to find tree of %s."
-msgstr "Kunde inte hitta träder för %s."
+msgstr "Kunde inte hitta trädet för %s."
 
 #: builtin/reset.c:111
 #, c-format
@@ -13128,23 +13638,23 @@ msgstr "rev-list stöder inte visning av anteckningar"
 msgid "cannot combine --use-bitmap-index with object filtering"
 msgstr "kan inte kombinera --use-bitmap-index med objektfiltrering"
 
-#: builtin/rev-parse.c:402
+#: builtin/rev-parse.c:406
 msgid "git rev-parse --parseopt [<options>] -- [<args>...]"
 msgstr "git rev-parse --parseopt [<options>] -- [<argument>...]"
 
-#: builtin/rev-parse.c:407
+#: builtin/rev-parse.c:411
 msgid "keep the `--` passed as an arg"
 msgstr "behåll \"--\" sänt som argument"
 
-#: builtin/rev-parse.c:409
+#: builtin/rev-parse.c:413
 msgid "stop parsing after the first non-option argument"
 msgstr "sluta tolka efter första argument som inte är flagga"
 
-#: builtin/rev-parse.c:412
+#: builtin/rev-parse.c:416
 msgid "output in stuck long form"
 msgstr "utdata fast i lång form"
 
-#: builtin/rev-parse.c:545
+#: builtin/rev-parse.c:549
 msgid ""
 "git rev-parse --parseopt [<options>] -- [<args>...]\n"
 "   or: git rev-parse --sq-quote [<arg>...]\n"
@@ -13284,42 +13794,42 @@ msgid_plural "the following files have local modifications:"
 msgstr[0] "följande fil har lokala ändringar:"
 msgstr[1] "följande filer har lokala ändringar:"
 
-#: builtin/rm.c:243
+#: builtin/rm.c:241
 msgid "do not list removed files"
 msgstr "lista inte borttagna filer"
 
-#: builtin/rm.c:244
+#: builtin/rm.c:242
 msgid "only remove from the index"
 msgstr "ta bara bort från indexet"
 
-#: builtin/rm.c:245
+#: builtin/rm.c:243
 msgid "override the up-to-date check"
 msgstr "överstyr àjour-testet"
 
-#: builtin/rm.c:246
+#: builtin/rm.c:244
 msgid "allow recursive removal"
 msgstr "tillåt rekursiv borttagning"
 
-#: builtin/rm.c:248
+#: builtin/rm.c:246
 msgid "exit with a zero status even if nothing matched"
 msgstr "avsluta med nollstatus även om inget träffades"
 
-#: builtin/rm.c:307
+#: builtin/rm.c:306
 #, c-format
 msgid "not removing '%s' recursively without -r"
 msgstr "tar inte bort \"%s\" rekursivt utan -r"
 
-#: builtin/rm.c:346
+#: builtin/rm.c:345
 #, c-format
 msgid "git rm: unable to remove %s"
 msgstr "git rm: kan inte ta bort %s"
 
-#: builtin/rm.c:369
+#: builtin/rm.c:368
 #, c-format
 msgid "could not remove '%s'"
 msgstr "kunde inte ta bort \"%s\""
 
-#: builtin/send-pack.c:19
+#: builtin/send-pack.c:20
 msgid ""
 "git send-pack [--all | --mirror] [--dry-run] [--force] [--receive-pack=<git-"
 "receive-pack>] [--verbose] [--thin] [--atomic] [<host>:]<directory> "
@@ -13331,50 +13841,70 @@ msgstr ""
 "[<ref>...]\n"
 "  --all och explicit angiven <ref> är ömsesidigt uteslutande."
 
-#: builtin/send-pack.c:162
+#: builtin/send-pack.c:163
 msgid "remote name"
 msgstr "fjärrnamn"
 
-#: builtin/send-pack.c:176
+#: builtin/send-pack.c:177
 msgid "use stateless RPC protocol"
 msgstr "använd tillståndslöst RPC-protokoll"
 
-#: builtin/send-pack.c:177
+#: builtin/send-pack.c:178
 msgid "read refs from stdin"
 msgstr "läs referenser från standard in"
 
-#: builtin/send-pack.c:178
+#: builtin/send-pack.c:179
 msgid "print status from remote helper"
 msgstr "visa status från fjärrhjälpare"
 
+#: builtin/serve.c:7
+msgid "git serve [<options>]"
+msgstr "git serve [<flaggor>]"
+
+#: builtin/serve.c:17 builtin/upload-pack.c:23
+msgid "quit after a single request/response exchange"
+msgstr "avsluta omedelbart efter första anrop/svar-utväxling"
+
+#: builtin/serve.c:19
+msgid "exit immediately after advertising capabilities"
+msgstr "avsluta omedelbart efter kungörelse av kapabiliteter"
+
 #: builtin/shortlog.c:14
-msgid "git shortlog [<options>] [<revision-range>] [[--] [<path>...]]"
+msgid "git shortlog [<options>] [<revision-range>] [[--] <path>...]"
 msgstr "git shortlog [<flaggor>] [<versionsintervall>] [[--] <sökväg>...]"
 
-#: builtin/shortlog.c:263
+#: builtin/shortlog.c:15
+msgid "git log --pretty=short | git shortlog [<options>]"
+msgstr "git log --pretty=short | git shortlog [<flaggor>]"
+
+#: builtin/shortlog.c:264
 msgid "Group by committer rather than author"
 msgstr "Gruppera efter incheckare istället för författare"
 
-#: builtin/shortlog.c:265
+#: builtin/shortlog.c:266
 msgid "sort output according to the number of commits per author"
 msgstr "sortera utdata enligt antal incheckningar per författare"
 
-#: builtin/shortlog.c:267
+#: builtin/shortlog.c:268
 msgid "Suppress commit descriptions, only provides commit count"
 msgstr "Undertryck beskrivningar, visa bara antal incheckningar"
 
-#: builtin/shortlog.c:269
+#: builtin/shortlog.c:270
 msgid "Show the email address of each author"
 msgstr "Visa e-postadress för varje författare"
 
-#: builtin/shortlog.c:270
+#: builtin/shortlog.c:271
 msgid "w[,i1[,i2]]"
 msgstr "w[,i1[,i2]]"
 
-#: builtin/shortlog.c:271
+#: builtin/shortlog.c:272
 msgid "Linewrap output"
 msgstr "Radbryt utdata"
 
+#: builtin/shortlog.c:298
+msgid "too many arguments given outside repository"
+msgstr "för många flaggor givna utanför arkivet"
+
 #: builtin/show-branch.c:12
 msgid ""
 "git show-branch [-a | --all] [-r | --remotes] [--topo-order | --date-order]\n"
@@ -13571,39 +14101,39 @@ msgstr "hoppa över och ta bort alla rader som inleds med kommentarstecken"
 msgid "prepend comment character and space to each line"
 msgstr "lägg in kommentarstecken och blanksteg först på varje rad"
 
-#: builtin/submodule--helper.c:35 builtin/submodule--helper.c:1669
+#: builtin/submodule--helper.c:37 builtin/submodule--helper.c:1688
 #, c-format
 msgid "No such ref: %s"
 msgstr "Ingen sådan referens: %s"
 
-#: builtin/submodule--helper.c:42 builtin/submodule--helper.c:1678
+#: builtin/submodule--helper.c:44 builtin/submodule--helper.c:1697
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr "Förväntade fullt referensnamn, fick %s"
 
-#: builtin/submodule--helper.c:59
+#: builtin/submodule--helper.c:61
 msgid "submodule--helper print-default-remote takes no arguments"
 msgstr "submodule--helper print-default-remote tar inga argument"
 
-#: builtin/submodule--helper.c:96
+#: builtin/submodule--helper.c:98
 #, c-format
 msgid "cannot strip one component off url '%s'"
 msgstr "kan inte ta bort en komponent från url:en \"%s\""
 
-#: builtin/submodule--helper.c:404 builtin/submodule--helper.c:1198
+#: builtin/submodule--helper.c:406 builtin/submodule--helper.c:1211
 msgid "alternative anchor for relative paths"
 msgstr "alternativa ankare för relativa sökvägar"
 
-#: builtin/submodule--helper.c:409
+#: builtin/submodule--helper.c:411
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper list [--prefix=<sökväg>] [<sökväg>...]"
 
-#: builtin/submodule--helper.c:460 builtin/submodule--helper.c:483
+#: builtin/submodule--helper.c:462 builtin/submodule--helper.c:485
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr "Hittade ingen url för undermodulsökvägen \"%s\" i .gitmodules"
 
-#: builtin/submodule--helper.c:498
+#: builtin/submodule--helper.c:500
 #, c-format
 msgid ""
 "could not lookup configuration '%s'. Assuming this repository is its own "
@@ -13612,54 +14142,54 @@ msgstr ""
 "kunde inte slå upp konfigurationen \"%s\". Antar att arkivet är sn eget "
 "officiella uppström."
 
-#: builtin/submodule--helper.c:509
+#: builtin/submodule--helper.c:511
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr "Misslyckades registrera url för undermodulsökväg \"%s\""
 
-#: builtin/submodule--helper.c:513
+#: builtin/submodule--helper.c:515
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr "Undermodulen \"%s\" (%s) registrerad för sökvägen \"%s\"\n"
 
-#: builtin/submodule--helper.c:523
+#: builtin/submodule--helper.c:525
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
 msgstr "varning: kommandouppdateringsläge föreslogs för undermodulen \"%s\"\n"
 
-#: builtin/submodule--helper.c:530
+#: builtin/submodule--helper.c:532
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
 msgstr "Misslyckades registrera uppdateringsläge för undermodulsökväg \"%s\""
 
-#: builtin/submodule--helper.c:552
+#: builtin/submodule--helper.c:554
 msgid "Suppress output for initializing a submodule"
 msgstr "Dölj utdata från initiering av undermodul"
 
-#: builtin/submodule--helper.c:557
+#: builtin/submodule--helper.c:559
 msgid "git submodule--helper init [<path>]"
 msgstr "git submodule--helper init [<sökväg>]"
 
-#: builtin/submodule--helper.c:625 builtin/submodule--helper.c:747
+#: builtin/submodule--helper.c:631 builtin/submodule--helper.c:757
 #, c-format
 msgid "no submodule mapping found in .gitmodules for path '%s'"
 msgstr "hittade ingen undermodulmappning i .gitmodules för sökvägen \"%s\""
 
-#: builtin/submodule--helper.c:660
+#: builtin/submodule--helper.c:670
 #, c-format
 msgid "could not resolve HEAD ref inside the submodule '%s'"
 msgstr "kunde inte bestämma HEAD:s incheckning i undermodulen \"%s\""
 
-#: builtin/submodule--helper.c:687 builtin/submodule--helper.c:856
+#: builtin/submodule--helper.c:697 builtin/submodule--helper.c:866
 #, c-format
 msgid "failed to recurse into submodule '%s'"
 msgstr "misslyckades rekursera in i undermodulen \"%s\""
 
-#: builtin/submodule--helper.c:711 builtin/submodule--helper.c:1021
+#: builtin/submodule--helper.c:721 builtin/submodule--helper.c:1031
 msgid "Suppress submodule status output"
 msgstr "Hindra statusutskrift för undermodul"
 
-#: builtin/submodule--helper.c:712
+#: builtin/submodule--helper.c:722
 msgid ""
 "Use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
@@ -13667,51 +14197,51 @@ msgstr ""
 "Visa incheckning från indexet istället för den som lagrats i undermodulens "
 "HEAD"
 
-#: builtin/submodule--helper.c:713
+#: builtin/submodule--helper.c:723
 msgid "recurse into nested submodules"
 msgstr "rekursera in i nästlade undermoduler"
 
-#: builtin/submodule--helper.c:718
+#: builtin/submodule--helper.c:728
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quitet] [--cached] [--recursive] [<sökväg>...]"
 
-#: builtin/submodule--helper.c:742
+#: builtin/submodule--helper.c:752
 msgid "git submodule--helper name <path>"
 msgstr "git submodule--helper name <sökväg>"
 
-#: builtin/submodule--helper.c:806
+#: builtin/submodule--helper.c:816
 #, c-format
 msgid "Synchronizing submodule url for '%s'\n"
 msgstr "Synkroniserar undermodul-url för \"%s\"\n"
 
-#: builtin/submodule--helper.c:812
+#: builtin/submodule--helper.c:822
 #, c-format
 msgid "failed to register url for submodule path '%s'"
 msgstr "misslyckades registrera url för undermodulsökväg \"%s\""
 
-#: builtin/submodule--helper.c:826
+#: builtin/submodule--helper.c:836
 #, c-format
 msgid "failed to get the default remote for submodule '%s'"
 msgstr "misslyckades hämta standardfjärr för undermodulsökväg \"%s\""
 
-#: builtin/submodule--helper.c:837
+#: builtin/submodule--helper.c:847
 #, c-format
 msgid "failed to update remote for submodule '%s'"
 msgstr "misslyckades uppdatera fjärr för undermodulsökväg \"%s\""
 
-#: builtin/submodule--helper.c:885
+#: builtin/submodule--helper.c:895
 msgid "Suppress output of synchronizing submodule url"
 msgstr "Dölj utdata från synkroniering av undermodul-url"
 
-#: builtin/submodule--helper.c:887
+#: builtin/submodule--helper.c:897
 msgid "Recurse into nested submodules"
 msgstr "Rekursera in i nästlade undermoduler"
 
-#: builtin/submodule--helper.c:892
+#: builtin/submodule--helper.c:902
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
 msgstr "git submodule--helper sync [--quiet] [--recursive] [<sökväg>]"
 
-#: builtin/submodule--helper.c:946
+#: builtin/submodule--helper.c:956
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
@@ -13720,7 +14250,7 @@ msgstr ""
 "Undermodulsarbetskatalogen \"%s\" innehåller en .git-katalog (använd \"rm -rf"
 "\" om du verkligen vill ta bort den och all dess historik)"
 
-#: builtin/submodule--helper.c:958
+#: builtin/submodule--helper.c:968
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains local modifications; use '-f' to discard "
@@ -13729,81 +14259,81 @@ msgstr ""
 "Undermodulens arbetskatalog \"%s\" har lokala ändringar; \"-f\" kastar bort "
 "dem"
 
-#: builtin/submodule--helper.c:966
+#: builtin/submodule--helper.c:976
 #, c-format
 msgid "Cleared directory '%s'\n"
 msgstr "Rensade katalogen \"%s\"\n"
 
-#: builtin/submodule--helper.c:968
+#: builtin/submodule--helper.c:978
 #, c-format
 msgid "Could not remove submodule work tree '%s'\n"
 msgstr "Kunde inte ta bort undermodulens arbetskatalog \"%s\"\n"
 
-#: builtin/submodule--helper.c:977
+#: builtin/submodule--helper.c:987
 #, c-format
 msgid "could not create empty submodule directory %s"
 msgstr "kunde inte skapa tom undermodulskatalog %s"
 
-#: builtin/submodule--helper.c:993
+#: builtin/submodule--helper.c:1003
 #, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "Undermodulen \"%s\" (%s) registrerad för sökvägen \"%s\"\n"
 
-#: builtin/submodule--helper.c:1022
+#: builtin/submodule--helper.c:1032
 msgid "Remove submodule working trees even if they contain local changes"
 msgstr ""
 "Ta bort undermodulers arbetskataloger även om de innehåller lokala ändringar"
 
-#: builtin/submodule--helper.c:1023
+#: builtin/submodule--helper.c:1033
 msgid "Unregister all submodules"
 msgstr "Avregistrera alla undermoduler"
 
-#: builtin/submodule--helper.c:1028
+#: builtin/submodule--helper.c:1038
 msgid ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
 msgstr ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<sökväg>...]]"
 
-#: builtin/submodule--helper.c:1042
+#: builtin/submodule--helper.c:1052
 msgid "Use '--all' if you really want to deinitialize all submodules"
 msgstr "Använd \"--all\" om du verkligen vill avinitiera alla undermoduler"
 
-#: builtin/submodule--helper.c:1133 builtin/submodule--helper.c:1136
+#: builtin/submodule--helper.c:1145 builtin/submodule--helper.c:1148
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
 msgstr "undermodulen \"%s\" kan inte lägga till alternativ: %s"
 
-#: builtin/submodule--helper.c:1172
+#: builtin/submodule--helper.c:1184
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
 msgstr "Värdet \"%s\" i submodule.alternateErrorStrategy förstås inte"
 
-#: builtin/submodule--helper.c:1179
+#: builtin/submodule--helper.c:1191
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
 msgstr "Värdet \"%s\" i submodule.alternateLocation förstås inte"
 
-#: builtin/submodule--helper.c:1201
+#: builtin/submodule--helper.c:1214
 msgid "where the new submodule will be cloned to"
 msgstr "var den nya undermodulen skall klonas till"
 
-#: builtin/submodule--helper.c:1204
+#: builtin/submodule--helper.c:1217
 msgid "name of the new submodule"
 msgstr "namn på den nya undermodulen"
 
-#: builtin/submodule--helper.c:1207
+#: builtin/submodule--helper.c:1220
 msgid "url where to clone the submodule from"
 msgstr "URL att klona undermodulen från"
 
-#: builtin/submodule--helper.c:1213
+#: builtin/submodule--helper.c:1228
 msgid "depth for shallow clones"
 msgstr "djup för grunda kloner"
 
-#: builtin/submodule--helper.c:1216 builtin/submodule--helper.c:1587
+#: builtin/submodule--helper.c:1231 builtin/submodule--helper.c:1606
 msgid "force cloning progress"
 msgstr "tvinga kloningsförlopp"
 
-#: builtin/submodule--helper.c:1221
+#: builtin/submodule--helper.c:1236
 msgid ""
 "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
 "<repository>] [--name <name>] [--depth <depth>] --url <url> --path <path>"
@@ -13811,82 +14341,82 @@ msgstr ""
 "git submodule--helper clone [--prefix=<sökväg>] [--quiet] [--reference "
 "<arkvi>] [--name <namn>] [--depth <djup>] --url <url> --path <sökväg>"
 
-#: builtin/submodule--helper.c:1252
+#: builtin/submodule--helper.c:1267
 #, c-format
 msgid "clone of '%s' into submodule path '%s' failed"
 msgstr "misslyckades klona \"%s\" till undermodulsökvägen ”%s”"
 
-#: builtin/submodule--helper.c:1267
+#: builtin/submodule--helper.c:1281
 #, c-format
 msgid "could not get submodule directory for '%s'"
 msgstr "kunde inte få tag i undermodulkatalog för \"%s\""
 
-#: builtin/submodule--helper.c:1332
+#: builtin/submodule--helper.c:1347
 #, c-format
 msgid "Submodule path '%s' not initialized"
 msgstr "Undermodulsökvägen \"%s\" har inte initierats"
 
-#: builtin/submodule--helper.c:1336
+#: builtin/submodule--helper.c:1351
 msgid "Maybe you want to use 'update --init'?"
 msgstr "Kanske menade du att använda \"update --init\"?"
 
-#: builtin/submodule--helper.c:1365
+#: builtin/submodule--helper.c:1380
 #, c-format
 msgid "Skipping unmerged submodule %s"
 msgstr "Hoppar över ej sammanslagen undermodul %s"
 
-#: builtin/submodule--helper.c:1394
+#: builtin/submodule--helper.c:1409
 #, c-format
 msgid "Skipping submodule '%s'"
 msgstr "Hoppar över undermodulen \"%s\""
 
-#: builtin/submodule--helper.c:1527
+#: builtin/submodule--helper.c:1544
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
 msgstr "Misslyckades klona \"%s\". Nytt försök planlagt"
 
-#: builtin/submodule--helper.c:1538
+#: builtin/submodule--helper.c:1555
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
 msgstr "Misslyckades klona \"%s\" för andra gången, avbryter"
 
-#: builtin/submodule--helper.c:1568 builtin/submodule--helper.c:1788
+#: builtin/submodule--helper.c:1585 builtin/submodule--helper.c:1808
 msgid "path into the working tree"
 msgstr "sökväg inuti arbetskatalogen"
 
-#: builtin/submodule--helper.c:1571
+#: builtin/submodule--helper.c:1588
 msgid "path into the working tree, across nested submodule boundaries"
 msgstr "sökväg inuti arbetskatalogen, genom nästlade undermodulgränser"
 
-#: builtin/submodule--helper.c:1575
+#: builtin/submodule--helper.c:1592
 msgid "rebase, merge, checkout or none"
 msgstr "rebase, merge, checkout eller none"
 
-#: builtin/submodule--helper.c:1579
+#: builtin/submodule--helper.c:1598
 msgid "Create a shallow clone truncated to the specified number of revisions"
 msgstr "Skapa en grund klon trunkerad till angivet antal revisioner"
 
-#: builtin/submodule--helper.c:1582
+#: builtin/submodule--helper.c:1601
 msgid "parallel jobs"
 msgstr "parallella jobb"
 
-#: builtin/submodule--helper.c:1584
+#: builtin/submodule--helper.c:1603
 msgid "whether the initial clone should follow the shallow recommendation"
 msgstr "om den första klonen skall följa rekommendation för grund kloning"
 
-#: builtin/submodule--helper.c:1585
+#: builtin/submodule--helper.c:1604
 msgid "don't print cloning progress"
 msgstr "skriv inte klonförlopp"
 
-#: builtin/submodule--helper.c:1592
+#: builtin/submodule--helper.c:1611
 msgid "git submodule--helper update_clone [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper update_clone [--prefix=<sökväg>] [<sökväg>...]"
 
-#: builtin/submodule--helper.c:1605
+#: builtin/submodule--helper.c:1624
 msgid "bad value for update parameter"
 msgstr "felaktigt värde för parametern update"
 
-#: builtin/submodule--helper.c:1673
+#: builtin/submodule--helper.c:1692
 #, c-format
 msgid ""
 "Submodule (%s) branch configured to inherit branch from superproject, but "
@@ -13895,20 +14425,20 @@ msgstr ""
 "Undermodulens (%s) gren inställd på att ärva gren från huvudprojektet, men "
 "huvudprojektet är inte på någon gren"
 
-#: builtin/submodule--helper.c:1789
+#: builtin/submodule--helper.c:1809
 msgid "recurse into submodules"
 msgstr "rekursera ner i undermoduler"
 
-#: builtin/submodule--helper.c:1795
+#: builtin/submodule--helper.c:1815
 msgid "git submodule--helper embed-git-dir [<path>...]"
 msgstr "git submodule--helper embed-git-dir [<sökväg>...]"
 
-#: builtin/submodule--helper.c:1857
+#: builtin/submodule--helper.c:1901
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s stöder inte --super-prefix"
 
-#: builtin/submodule--helper.c:1863
+#: builtin/submodule--helper.c:1907
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "\"%s\" är inte ett giltigt underkommando till submodule--helper"
@@ -13978,7 +14508,7 @@ msgstr "taggen \"%s\" hittades inte."
 msgid "Deleted tag '%s' (was %s)\n"
 msgstr "Tog bort tagg \"%s\" (var %s)\n"
 
-#: builtin/tag.c:131
+#: builtin/tag.c:132
 #, c-format
 msgid ""
 "\n"
@@ -13991,7 +14521,7 @@ msgstr ""
 "  %s\n"
 "Rader som inleds med \"%c\" ignoreras.\n"
 
-#: builtin/tag.c:135
+#: builtin/tag.c:136
 #, c-format
 msgid ""
 "\n"
@@ -14006,146 +14536,146 @@ msgstr ""
 "Rader som inleds med \"%c\" kommer behållas; du kan själv ta bort dem om\n"
 "du vill.\n"
 
-#: builtin/tag.c:189
+#: builtin/tag.c:190
 msgid "unable to sign the tag"
 msgstr "kunde inte signera taggen"
 
-#: builtin/tag.c:191
+#: builtin/tag.c:192
 msgid "unable to write tag file"
 msgstr "kunde inte skriva tagg-filen"
 
-#: builtin/tag.c:216
+#: builtin/tag.c:217
 msgid "bad object type."
 msgstr "felaktig objekttyp."
 
-#: builtin/tag.c:265
+#: builtin/tag.c:266
 msgid "no tag message?"
 msgstr "inget taggmeddelande?"
 
-#: builtin/tag.c:272
+#: builtin/tag.c:273
 #, c-format
 msgid "The tag message has been left in %s\n"
 msgstr "Taggmeddelandet har lämnats i %s\n"
 
-#: builtin/tag.c:381
+#: builtin/tag.c:382
 msgid "list tag names"
 msgstr "lista taggnamn"
 
-#: builtin/tag.c:383
+#: builtin/tag.c:384
 msgid "print <n> lines of each tag message"
 msgstr "visa <n> rader från varje taggmeddelande"
 
-#: builtin/tag.c:385
+#: builtin/tag.c:386
 msgid "delete tags"
 msgstr "ta bort taggar"
 
-#: builtin/tag.c:386
+#: builtin/tag.c:387
 msgid "verify tags"
 msgstr "verifiera taggar"
 
-#: builtin/tag.c:388
+#: builtin/tag.c:389
 msgid "Tag creation options"
 msgstr "Alternativ för att skapa taggar"
 
-#: builtin/tag.c:390
+#: builtin/tag.c:391
 msgid "annotated tag, needs a message"
 msgstr "annoterad tagg, behöver meddelande"
 
-#: builtin/tag.c:392
+#: builtin/tag.c:393
 msgid "tag message"
 msgstr "taggmeddelande"
 
-#: builtin/tag.c:394
+#: builtin/tag.c:395
 msgid "force edit of tag message"
 msgstr "tvinga redigering av incheckningsmeddelande"
 
-#: builtin/tag.c:395
+#: builtin/tag.c:396
 msgid "annotated and GPG-signed tag"
 msgstr "annoterad och GPG-signerad tagg"
 
-#: builtin/tag.c:399
+#: builtin/tag.c:400
 msgid "use another key to sign the tag"
 msgstr "använd annan nyckel för att signera taggen"
 
-#: builtin/tag.c:400
+#: builtin/tag.c:401
 msgid "replace the tag if exists"
 msgstr "ersätt taggen om den finns"
 
-#: builtin/tag.c:401 builtin/update-ref.c:368
+#: builtin/tag.c:402 builtin/update-ref.c:368
 msgid "create a reflog"
 msgstr "skapa en reflog"
 
-#: builtin/tag.c:403
+#: builtin/tag.c:404
 msgid "Tag listing options"
 msgstr "Alternativ för listning av taggar"
 
-#: builtin/tag.c:404
+#: builtin/tag.c:405
 msgid "show tag list in columns"
 msgstr "lista taggar i spalter"
 
-#: builtin/tag.c:405 builtin/tag.c:407
+#: builtin/tag.c:406 builtin/tag.c:408
 msgid "print only tags that contain the commit"
 msgstr "visa endast taggar som innehåller incheckningen"
 
-#: builtin/tag.c:406 builtin/tag.c:408
+#: builtin/tag.c:407 builtin/tag.c:409
 msgid "print only tags that don't contain the commit"
 msgstr "visa endast taggar som inte innehåller incheckningen"
 
-#: builtin/tag.c:409
+#: builtin/tag.c:410
 msgid "print only tags that are merged"
 msgstr "visa endast taggar som slagits samman"
 
-#: builtin/tag.c:410
+#: builtin/tag.c:411
 msgid "print only tags that are not merged"
 msgstr "visa endast taggar som ej slagits samman"
 
-#: builtin/tag.c:415
+#: builtin/tag.c:416
 msgid "print only tags of the object"
 msgstr "visa endast taggar för objektet"
 
-#: builtin/tag.c:459
+#: builtin/tag.c:460
 msgid "--column and -n are incompatible"
 msgstr "--column och -n är inkompatibla"
 
-#: builtin/tag.c:481
+#: builtin/tag.c:482
 msgid "-n option is only allowed in list mode"
 msgstr "Flaggan -n är endast tillåten i listläge"
 
-#: builtin/tag.c:483
+#: builtin/tag.c:484
 msgid "--contains option is only allowed in list mode"
 msgstr "Flaggan --contains är endast tillåten i listläge"
 
-#: builtin/tag.c:485
+#: builtin/tag.c:486
 msgid "--no-contains option is only allowed in list mode"
 msgstr "Flaggan --no-contains är endast tillåten i listläge"
 
-#: builtin/tag.c:487
+#: builtin/tag.c:488
 msgid "--points-at option is only allowed in list mode"
 msgstr "Flaggan --points-at är endast tillåten i listläge"
 
-#: builtin/tag.c:489
+#: builtin/tag.c:490
 msgid "--merged and --no-merged options are only allowed in list mode"
 msgstr "Flaggorna --merged och --no-merged är endast tillåtna i listläge"
 
-#: builtin/tag.c:500
+#: builtin/tag.c:501
 msgid "only one -F or -m option is allowed."
 msgstr "endast en av flaggorna -F eller -m tillåts."
 
-#: builtin/tag.c:519
+#: builtin/tag.c:520
 msgid "too many params"
 msgstr "för många parametrar"
 
-#: builtin/tag.c:525
+#: builtin/tag.c:526
 #, c-format
 msgid "'%s' is not a valid tag name."
 msgstr "\"%s\" är inte ett giltigt taggnamn."
 
-#: builtin/tag.c:530
+#: builtin/tag.c:531
 #, c-format
 msgid "tag '%s' already exists"
 msgstr "taggen \"%s\" finns redan"
 
-#: builtin/tag.c:561
+#: builtin/tag.c:562
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
 msgstr "Uppdaterad tagg \"%s\" (var %s)\n"
@@ -14215,143 +14745,143 @@ msgstr "stat-informationen för en katalog ändras inte när en katalog tas bort
 msgid " OK"
 msgstr " OK"
 
-#: builtin/update-index.c:579
+#: builtin/update-index.c:589
 msgid "git update-index [<options>] [--] [<file>...]"
 msgstr "git update-index [<flaggor>] [--] [<fil>...]"
 
-#: builtin/update-index.c:936
+#: builtin/update-index.c:946
 msgid "continue refresh even when index needs update"
 msgstr "fortsätt uppdatera även när index inte är àjour"
 
-#: builtin/update-index.c:939
+#: builtin/update-index.c:949
 msgid "refresh: ignore submodules"
 msgstr "refresh: ignorera undermoduler"
 
-#: builtin/update-index.c:942
+#: builtin/update-index.c:952
 msgid "do not ignore new files"
 msgstr "ignorera inte nya filer"
 
-#: builtin/update-index.c:944
+#: builtin/update-index.c:954
 msgid "let files replace directories and vice-versa"
 msgstr "låt filer ersätta kataloger och omvänt"
 
-#: builtin/update-index.c:946
+#: builtin/update-index.c:956
 msgid "notice files missing from worktree"
 msgstr "lägg märke till filer som saknas i arbetskatalogen"
 
-#: builtin/update-index.c:948
+#: builtin/update-index.c:958
 msgid "refresh even if index contains unmerged entries"
 msgstr "uppdatera även om indexet innehåller ej sammanslagna poster"
 
-#: builtin/update-index.c:951
+#: builtin/update-index.c:961
 msgid "refresh stat information"
 msgstr "uppdatera statusinformation"
 
-#: builtin/update-index.c:955
+#: builtin/update-index.c:965
 msgid "like --refresh, but ignore assume-unchanged setting"
 msgstr "som --refresh, men ignorera assume-unchanged-inställning"
 
-#: builtin/update-index.c:959
+#: builtin/update-index.c:969
 msgid "<mode>,<object>,<path>"
 msgstr "<läge>,<objekt>,<sökväg>"
 
-#: builtin/update-index.c:960
+#: builtin/update-index.c:970
 msgid "add the specified entry to the index"
 msgstr "lägg till angiven post i indexet"
 
-#: builtin/update-index.c:969
+#: builtin/update-index.c:979
 msgid "mark files as \"not changing\""
 msgstr "markera filer som \"ändras inte\""
 
-#: builtin/update-index.c:972
+#: builtin/update-index.c:982
 msgid "clear assumed-unchanged bit"
 msgstr "rensa \"assume-unchanged\"-biten"
 
-#: builtin/update-index.c:975
+#: builtin/update-index.c:985
 msgid "mark files as \"index-only\""
 msgstr "markera filer som \"endast index\""
 
-#: builtin/update-index.c:978
+#: builtin/update-index.c:988
 msgid "clear skip-worktree bit"
 msgstr "töm \"skip-worktree\"-biten"
 
-#: builtin/update-index.c:981
+#: builtin/update-index.c:991
 msgid "add to index only; do not add content to object database"
 msgstr "lägg endast till indexet; lägg inte till innehållet i objektdatabasen"
 
-#: builtin/update-index.c:983
+#: builtin/update-index.c:993
 msgid "remove named paths even if present in worktree"
 msgstr "ta bort namngivna sökvägar även om de finns i arbetskatalogen"
 
-#: builtin/update-index.c:985
+#: builtin/update-index.c:995
 msgid "with --stdin: input lines are terminated by null bytes"
 msgstr "med --stdin: indatarader termineras med null-byte"
 
-#: builtin/update-index.c:987
+#: builtin/update-index.c:997
 msgid "read list of paths to be updated from standard input"
 msgstr "läs lista över sökvägar att uppdatera från standard in"
 
-#: builtin/update-index.c:991
+#: builtin/update-index.c:1001
 msgid "add entries from standard input to the index"
 msgstr "lägg poster från standard in till indexet"
 
-#: builtin/update-index.c:995
+#: builtin/update-index.c:1005
 msgid "repopulate stages #2 and #3 for the listed paths"
 msgstr "återfyll etapp 2 och 3 från angivna sökvägar"
 
-#: builtin/update-index.c:999
+#: builtin/update-index.c:1009
 msgid "only update entries that differ from HEAD"
 msgstr "uppdatera endast poster som skiljer sig från HEAD"
 
-#: builtin/update-index.c:1003
+#: builtin/update-index.c:1013
 msgid "ignore files missing from worktree"
 msgstr "ignorera filer som saknas i arbetskatalogen"
 
-#: builtin/update-index.c:1006
+#: builtin/update-index.c:1016
 msgid "report actions to standard output"
 msgstr "rapportera åtgärder på standard ut"
 
-#: builtin/update-index.c:1008
+#: builtin/update-index.c:1018
 msgid "(for porcelains) forget saved unresolved conflicts"
 msgstr "(för porslin) glöm sparade olösta konflikter"
 
-#: builtin/update-index.c:1012
+#: builtin/update-index.c:1022
 msgid "write index in this format"
 msgstr "skriv index i detta format"
 
-#: builtin/update-index.c:1014
+#: builtin/update-index.c:1024
 msgid "enable or disable split index"
 msgstr "aktivera eller inaktivera delat index"
 
-#: builtin/update-index.c:1016
+#: builtin/update-index.c:1026
 msgid "enable/disable untracked cache"
 msgstr "aktivera/inaktivera ospårad cache"
 
-#: builtin/update-index.c:1018
+#: builtin/update-index.c:1028
 msgid "test if the filesystem supports untracked cache"
 msgstr "testa om filsystemet stöder ospårad cache"
 
-#: builtin/update-index.c:1020
+#: builtin/update-index.c:1030
 msgid "enable untracked cache without testing the filesystem"
 msgstr "aktivera ospårad cache utan att testa filsystemet"
 
-#: builtin/update-index.c:1022
+#: builtin/update-index.c:1032
 msgid "write out the index even if is not flagged as changed"
 msgstr "skriv ut indexet även om det inte angivits som ändrat"
 
-#: builtin/update-index.c:1024
+#: builtin/update-index.c:1034
 msgid "enable or disable file system monitor"
 msgstr "aktivera eller inaktivera filsystemsövervakning"
 
-#: builtin/update-index.c:1026
+#: builtin/update-index.c:1036
 msgid "mark files as fsmonitor valid"
 msgstr "markera filer som \"fsmonitor valid\""
 
-#: builtin/update-index.c:1029
+#: builtin/update-index.c:1039
 msgid "clear fsmonitor valid bit"
 msgstr "töm \"fsmonitor valid\"-bit"
 
-#: builtin/update-index.c:1127
+#: builtin/update-index.c:1138
 msgid ""
 "core.splitIndex is set to false; remove or change it, if you really want to "
 "enable split index"
@@ -14359,7 +14889,7 @@ msgstr ""
 "core.splitIndex är satt till false; ta bort eller ändra det om du verkligen "
 "vill aktivera delat index"
 
-#: builtin/update-index.c:1136
+#: builtin/update-index.c:1147
 msgid ""
 "core.splitIndex is set to true; remove or change it, if you really want to "
 "disable split index"
@@ -14367,7 +14897,7 @@ msgstr ""
 "core.splitIndex är satt till true; ta bort eller ändra det om du verkligen "
 "vill inaktivera delat index"
 
-#: builtin/update-index.c:1147
+#: builtin/update-index.c:1158
 msgid ""
 "core.untrackedCache is set to true; remove or change it, if you really want "
 "to disable the untracked cache"
@@ -14375,11 +14905,11 @@ msgstr ""
 "core.untrackedCache är satt till true; ta bort eller ändra det om du "
 "verkligen vill inaktivera den ospårade cachen"
 
-#: builtin/update-index.c:1151
+#: builtin/update-index.c:1162
 msgid "Untracked cache disabled"
 msgstr "Ospårad cache är inaktiverad"
 
-#: builtin/update-index.c:1159
+#: builtin/update-index.c:1170
 msgid ""
 "core.untrackedCache is set to false; remove or change it, if you really want "
 "to enable the untracked cache"
@@ -14387,26 +14917,26 @@ msgstr ""
 "core.untrackedCache är satt till false; ta bort eller ändra det om du "
 "verkligen vill aktivera den ospårade cachen"
 
-#: builtin/update-index.c:1163
+#: builtin/update-index.c:1174
 #, c-format
 msgid "Untracked cache enabled for '%s'"
 msgstr "Ospårad cache är aktiverad för \"%s\""
 
-#: builtin/update-index.c:1171
+#: builtin/update-index.c:1182
 msgid "core.fsmonitor is unset; set it if you really want to enable fsmonitor"
 msgstr "core.fsmonitor inte satt; sätt om du verkligen vill aktivera fsmonitor"
 
-#: builtin/update-index.c:1175
+#: builtin/update-index.c:1186
 msgid "fsmonitor enabled"
 msgstr "fsmonitor aktiverat"
 
-#: builtin/update-index.c:1178
+#: builtin/update-index.c:1189
 msgid ""
 "core.fsmonitor is set; remove it if you really want to disable fsmonitor"
 msgstr ""
 "core.fsmonitor är satt; ta bort om du verkligen vill inaktivera fsmonitor"
 
-#: builtin/update-index.c:1182
+#: builtin/update-index.c:1193
 msgid "fsmonitor disabled"
 msgstr "fsmonitor inaktiverat"
 
@@ -14446,13 +14976,29 @@ msgstr "git update-server-info [--force]"
 msgid "update the info files from scratch"
 msgstr "uppdatera informationsfilerna från grunden"
 
-#: builtin/verify-commit.c:18
-msgid "git verify-commit [-v | --verbose] <commit>..."
-msgstr "git verify-commit [-v | --verbose] <incheckning>..."
+#: builtin/upload-pack.c:11
+msgid "git upload-pack [<options>] <dir>"
+msgstr "git upload-pack [<flaggor>] <katalog>"
 
-#: builtin/verify-commit.c:73
-msgid "print commit contents"
-msgstr "visa innehåll för incheckning"
+#: builtin/upload-pack.c:25
+msgid "exit immediately after initial ref advertisement"
+msgstr "avsluta omedelbart efter inledande kungörelse av referenser"
+
+#: builtin/upload-pack.c:27
+msgid "do not try <directory>/.git/ if <directory> is no Git directory"
+msgstr "testa inte <katalog>/.git/ om <katalog> inte är en Git-katalog"
+
+#: builtin/upload-pack.c:29
+msgid "interrupt transfer after <n> seconds of inactivity"
+msgstr "avbryt överföringen efter <n> sekunders inaktivitet"
+
+#: builtin/verify-commit.c:18
+msgid "git verify-commit [-v | --verbose] <commit>..."
+msgstr "git verify-commit [-v | --verbose] <incheckning>..."
+
+#: builtin/verify-commit.c:73
+msgid "print commit contents"
+msgstr "visa innehåll för incheckning"
 
 #: builtin/verify-commit.c:74 builtin/verify-tag.c:38
 msgid "print raw gpg status output"
@@ -14506,22 +15052,22 @@ msgstr "git worktree remove [<flaggor>] <arbetskatalog>"
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <sökväg>"
 
-#: builtin/worktree.c:60
+#: builtin/worktree.c:58
 #, c-format
 msgid "Removing worktrees/%s: not a valid directory"
 msgstr "Tar bort worktrees/%s: inte en giltig katalog"
 
-#: builtin/worktree.c:66
+#: builtin/worktree.c:64
 #, c-format
 msgid "Removing worktrees/%s: gitdir file does not exist"
 msgstr "Tar bort worktrees/%s: gitdir-filen existerar inte"
 
-#: builtin/worktree.c:71 builtin/worktree.c:80
+#: builtin/worktree.c:69 builtin/worktree.c:78
 #, 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:90
+#: builtin/worktree.c:88
 #, c-format
 msgid ""
 "Removing worktrees/%s: short read (expected %<PRIuMAX> bytes, read "
@@ -14530,177 +15076,192 @@ msgstr ""
 "Tar bort worktrees/%s: kort läsning (förväntade %<PRIuMAX> byte, läste "
 "%<PRIuMAX>)"
 
-#: builtin/worktree.c:98
+#: builtin/worktree.c:96
 #, c-format
 msgid "Removing worktrees/%s: invalid gitdir file"
 msgstr "Tar bort worktrees/%s: felaktig gitdir-fil"
 
-#: builtin/worktree.c:114
+#: builtin/worktree.c:105
 #, 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"
 
-#: builtin/worktree.c:161
+#: builtin/worktree.c:152
 msgid "report pruned working trees"
 msgstr "rapportera borttagna arbetskataloger"
 
-#: builtin/worktree.c:163
+#: builtin/worktree.c:154
 msgid "expire working trees older than <time>"
 msgstr "låt tid gå ut för arbetskataloger äldre än <tid>"
 
-#: builtin/worktree.c:238
+#: builtin/worktree.c:229
 #, c-format
 msgid "'%s' already exists"
 msgstr "\"%s\" finns redan"
 
-#: builtin/worktree.c:269
+#: builtin/worktree.c:260
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "kunde inte skapa katalogen \"%s\""
 
-#: builtin/worktree.c:308
+#: builtin/worktree.c:373 builtin/worktree.c:379
+#, c-format
+msgid "Preparing worktree (new branch '%s')"
+msgstr "Förbereder arbetskatalog (ny gren \"%s\")"
+
+#: builtin/worktree.c:375
+#, 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:384
 #, c-format
-msgid "Preparing %s (identifier %s)"
-msgstr "Förbereder %s (identifieraren %s)"
+msgid "Preparing worktree (checking out '%s')"
+msgstr "Förbereder arbetskatalog (checkar ut \"%s\")"
 
-#: builtin/worktree.c:385
+#: builtin/worktree.c:390
+#, c-format
+msgid "Preparing worktree (detached HEAD %s)"
+msgstr "Förbereder arbetskatalog (frånkopplat HEAD %s)"
+
+#: builtin/worktree.c:431
 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:388
+#: builtin/worktree.c:434
 msgid "create a new branch"
 msgstr "skapa en ny gren"
 
-#: builtin/worktree.c:390
+#: builtin/worktree.c:436
 msgid "create or reset a branch"
 msgstr "skapa eller återställ en gren"
 
-#: builtin/worktree.c:392
+#: builtin/worktree.c:438
 msgid "populate the new working tree"
 msgstr "befolka den nya arbetskatalogen"
 
-#: builtin/worktree.c:393
+#: builtin/worktree.c:439
 msgid "keep the new working tree locked"
 msgstr "låt arbetskatalogen förbli låst"
 
-#: builtin/worktree.c:395
+#: builtin/worktree.c:441
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "ställ in spårningsläge (se git-branch(1))"
 
-#: builtin/worktree.c:398
+#: builtin/worktree.c:444
 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:406
+#: builtin/worktree.c:452
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b, -B och --detach är ömsesidigt uteslutande"
 
-#: builtin/worktree.c:471
+#: builtin/worktree.c:511
 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:571
+#: builtin/worktree.c:611
 msgid "reason for locking"
 msgstr "orsak till lås"
 
-#: builtin/worktree.c:583 builtin/worktree.c:616 builtin/worktree.c:670
-#: builtin/worktree.c:809
+#: builtin/worktree.c:623 builtin/worktree.c:656 builtin/worktree.c:710
+#: builtin/worktree.c:850
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "\"%s\" är inte en arbetskatalog"
 
-#: builtin/worktree.c:585 builtin/worktree.c:618
+#: builtin/worktree.c:625 builtin/worktree.c:658
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "Huvudarbetskatalogen kan inte låsas eller låsas upp"
 
-#: builtin/worktree.c:590
+#: builtin/worktree.c:630
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "\"%s\" är redan låst, orsak: %s"
 
-#: builtin/worktree.c:592
+#: builtin/worktree.c:632
 #, c-format
 msgid "'%s' is already locked"
 msgstr "\"%s\" är redan låst"
 
-#: builtin/worktree.c:620
+#: builtin/worktree.c:660
 #, c-format
 msgid "'%s' is not locked"
 msgstr "\"%s\" är inte låst"
 
-#: builtin/worktree.c:645
+#: builtin/worktree.c:685
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr "arbetskataloger med undermoduler kan inte flyttas eller tas bort"
 
-#: builtin/worktree.c:672 builtin/worktree.c:811
+#: builtin/worktree.c:712 builtin/worktree.c:852
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "\"%s\" är inte en huvudarbetskatalog"
 
-#: builtin/worktree.c:677
+#: builtin/worktree.c:717
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "kunde inte lista ut målnamn från \"%s\""
 
-#: builtin/worktree.c:683
+#: builtin/worktree.c:723
 #, c-format
 msgid "target '%s' already exists"
 msgstr "målet \"%s\" finns redan"
 
-#: builtin/worktree.c:690
+#: builtin/worktree.c:730
 #, c-format
 msgid "cannot move a locked working tree, lock reason: %s"
 msgstr "kan inte flytta en låst arbetskatalog, orsak till lås: %s"
 
-#: builtin/worktree.c:692
+#: builtin/worktree.c:732
 msgid "cannot move a locked working tree"
 msgstr "kan inte flytta en låst arbetskatalog"
 
-#: builtin/worktree.c:695
+#: builtin/worktree.c:735
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "kontroll misslyckades, kan inte flytta arbetskatalog: %s"
 
-#: builtin/worktree.c:700
+#: builtin/worktree.c:740
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "misslyckades flytta \"%s\" till \"%s\""
 
-#: builtin/worktree.c:748
+#: builtin/worktree.c:788
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "misslyckades köra \"git status\" på \"%s\""
 
-#: builtin/worktree.c:752
+#: builtin/worktree.c:792
 #, c-format
 msgid "'%s' is dirty, use --force to delete it"
 msgstr "\"%s\" är smutsigt, använd --force för att ta bort det"
 
-#: builtin/worktree.c:757
+#: builtin/worktree.c:797
 #, 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:768 builtin/worktree.c:782
+#: builtin/worktree.c:808 builtin/worktree.c:822
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "misslyckades ta bort \"%s\""
 
-#: builtin/worktree.c:794
+#: builtin/worktree.c:834
 msgid "force removing even if the worktree is dirty"
 msgstr "tvinga ta bort även om arbetskatalogen är smutsig"
 
-#: builtin/worktree.c:815
+#: builtin/worktree.c:856
 #, c-format
 msgid "cannot remove a locked working tree, lock reason: %s"
 msgstr "kan inte ta bort en låst arbetskatalog, orsak till låset: %s"
 
-#: builtin/worktree.c:817
+#: builtin/worktree.c:858
 msgid "cannot remove a locked working tree"
 msgstr "kan inte ta bort en låst arbetskatalog"
 
-#: builtin/worktree.c:820
+#: builtin/worktree.c:861
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "kontroll misslyckades, kan inte ta bort arbetskatalog: %s"
@@ -14721,26 +15282,6 @@ msgstr "visa trädobjekt för underkatalogen <prefix>"
 msgid "only useful for debugging"
 msgstr "endast användbart vid felsökning"
 
-#: upload-pack.c:27
-msgid "git upload-pack [<options>] <dir>"
-msgstr "git upload-pack [<flaggor>] <katalog>"
-
-#: upload-pack.c:1070
-msgid "quit after a single request/response exchange"
-msgstr "avsluta omedelbart efter första anrop/svar-utväxling"
-
-#: upload-pack.c:1072
-msgid "exit immediately after initial ref advertisement"
-msgstr "avsluta omedelbart efter inledande kungörelse av referenser"
-
-#: upload-pack.c:1074
-msgid "do not try <directory>/.git/ if <directory> is no Git directory"
-msgstr "testa inte <katalog>/.git/ om <katalog> inte är en Git-katalog"
-
-#: upload-pack.c:1076
-msgid "interrupt transfer after <n> seconds of inactivity"
-msgstr "avbryt överföringen efter <n> sekunders inaktivitet"
-
 #: credential-cache--daemon.c:222
 #, c-format
 msgid ""
@@ -14758,22 +15299,24 @@ msgstr ""
 msgid "print debugging messages to stderr"
 msgstr "skriv felsökningsmeddelanden på standard fel"
 
-#: git.c:8
+#: git.c:27
 msgid ""
 "git [--version] [--help] [-C <path>] [-c <name>=<value>]\n"
 "           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
-"           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]\n"
+"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
+"bare]\n"
 "           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
 "           <command> [<args>]"
 msgstr ""
 "git [--version] [--help] [-C <sökväg>] [-c <namn>=<värde>]\n"
 "           [--exec-path[=<sökväg>]] [--html-path] [--man-path] [--info-"
 "path]\n"
-"           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]\n"
+"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
+"bare]\n"
 "           [--git-dir=<sökväg>] [--work-tree=<sökväg>] [--namespace=<namn>]\n"
 "           <kommando> [<flaggor>]"
 
-#: git.c:15
+#: git.c:34
 msgid ""
 "'git help -a' and 'git help -g' list available subcommands and some\n"
 "concept guides. See 'git help <command>' or 'git help <concept>'\n"
@@ -14783,66 +15326,66 @@ msgstr ""
 "några konceptvägledningar. Se \"git help <kommando>\" eller \"git help\n"
 "<koncept>\" för att läsa mer om specifika underkommandon och koncept."
 
-#: git.c:95
+#: git.c:173
 #, c-format
 msgid "no directory given for --git-dir\n"
 msgstr "ingen katalog angavs för --git-dir\n"
 
-#: git.c:109
+#: git.c:187
 #, c-format
 msgid "no namespace given for --namespace\n"
 msgstr "ingen namnrymd angavs för --namespace\n"
 
-#: git.c:123
+#: git.c:201
 #, c-format
 msgid "no directory given for --work-tree\n"
 msgstr "ingen katalog angavs för --work-tree\n"
 
-#: git.c:137
+#: git.c:215
 #, c-format
 msgid "no prefix given for --super-prefix\n"
 msgstr "inget prefix angavs för --super-prefix\n"
 
-#: git.c:159
+#: git.c:237
 #, c-format
 msgid "-c expects a configuration string\n"
 msgstr "-c förväntar en konfigurationssträng\n"
 
-#: git.c:197
+#: git.c:275
 #, c-format
 msgid "no directory given for -C\n"
 msgstr "ingen katalog angavs för -C\n"
 
-#: git.c:212
+#: git.c:300
 #, c-format
 msgid "unknown option: %s\n"
 msgstr "okänd flagga: %s\n"
 
-#: git.c:687
+#: git.c:765
 #, c-format
 msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
 msgstr ""
 "expandering av alias \"%s\" misslyckades; \"%s\" är inte ett git-kommando\n"
 
-#: git.c:699
+#: git.c:777
 #, c-format
 msgid "failed to run command '%s': %s\n"
 msgstr "misslyckades köra kommandot \"%s\": %s\n"
 
-#: http.c:342
+#: http.c:348
 #, c-format
 msgid "negative value for http.postbuffer; defaulting to %d"
 msgstr "http.postbuffer har negativt värde; använder förvalet %d"
 
-#: http.c:363
+#: http.c:369
 msgid "Delegation control is not supported with cURL < 7.22.0"
 msgstr "Delegerad styrning stöds inte av cURL < 7.22.0"
 
-#: http.c:372
+#: http.c:378
 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:1857
+#: http.c:1854
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -14853,7 +15396,7 @@ msgstr ""
 "        bad om: %s\n"
 "  omdirigering: %s"
 
-#: remote-curl.c:345
+#: remote-curl.c:401
 #, c-format
 msgid "redirecting to %s"
 msgstr "omdirigerar till %s"
@@ -14866,129 +15409,656 @@ msgstr "argument"
 msgid "object filtering"
 msgstr "objektfiltrering"
 
-#: common-cmds.h:9
-msgid "start a working area (see also: git help tutorial)"
-msgstr "starta arbetskatalog (se också: git help tutorial)"
+#: parse-options.h:157
+msgid "expiry-date"
+msgstr "giltig-till"
 
-#: common-cmds.h:10
-msgid "work on the current change (see also: git help everyday)"
-msgstr "jobba med aktuell förändring (se också: git help everyday)"
+#: parse-options.h:172
+msgid "no-op (backward compatibility)"
+msgstr "ingen funktion (bakåtkompatibilitet)"
 
-#: common-cmds.h:11
-msgid "examine the history and state (see also: git help revisions)"
-msgstr "utforska historiken och tillståndet (se också: git help revisions)"
+#: parse-options.h:251
+msgid "be more verbose"
+msgstr "var mer pratsam"
 
-#: common-cmds.h:12
-msgid "grow, mark and tweak your common history"
-msgstr "utöka, markera och justera din gemensamma historik"
+#: parse-options.h:253
+msgid "be more quiet"
+msgstr "var mer tyst"
 
-#: common-cmds.h:13
-msgid "collaborate (see also: git help workflows)"
-msgstr "samarbeta (se också: git help workflows)"
+#: parse-options.h:259
+msgid "use <n> digits to display SHA-1s"
+msgstr "använd <n> siffror för att visa SHA-1:or"
 
-#: common-cmds.h:17
+#: command-list.h:50
 msgid "Add file contents to the index"
 msgstr "Lägg filinnehåll till indexet"
 
-#: common-cmds.h:18
+#: command-list.h:51
+msgid "Apply a series of patches from a mailbox"
+msgstr "Tillämpa en serie patchar från en brevlåda"
+
+#: command-list.h:52
+msgid "Annotate file lines with commit information"
+msgstr "Kommentera filrader med incheckningsinformation"
+
+#: command-list.h:53
+msgid "Apply a patch to files and/or to the index"
+msgstr "Tillämpa en patch på filer och/eller indexet"
+
+#: command-list.h:54
+msgid "Import an Arch repository into Git"
+msgstr "Importera ett Arch-arkiv till Git"
+
+#: command-list.h:55
+msgid "Create an archive of files from a named tree"
+msgstr "Skapa ett arkiv över filer från ett namngivet träd"
+
+#: command-list.h:56
 msgid "Use binary search to find the commit that introduced a bug"
 msgstr "Använd binärsökning för att hitta ändringen som introducerade ett fel"
 
-#: common-cmds.h:19
+#: command-list.h:57
+msgid "Show what revision and author last modified each line of a file"
+msgstr "Visa version och författare som sist modifierade varje rad i en fil"
+
+#: command-list.h:58
 msgid "List, create, or delete branches"
 msgstr "Visa, skapa eller ta bort grenar"
 
-#: common-cmds.h:20
+#: command-list.h:59
+msgid "Move objects and refs by archive"
+msgstr "Flytta objekt och referenser efter arkiv"
+
+#: command-list.h:60
+msgid "Provide content or type and size information for repository objects"
+msgstr ""
+"Visa innehåller eller typ- och storleksinformation för objekt i arkivet."
+
+#: command-list.h:61
+msgid "Display gitattributes information"
+msgstr "Visa information från gitattributes"
+
+#: command-list.h:62
+msgid "Debug gitignore / exclude files"
+msgstr "Felsök gitignore / exkluderings-filer"
+
+#: command-list.h:63
+msgid "Show canonical names and email addresses of contacts"
+msgstr "Visa kanoniska namn och e-postadresser för kontakter"
+
+#: command-list.h:64
 msgid "Switch branches or restore working tree files"
 msgstr "Byt till en ny gren eller återställ filer i arbetskatalogen"
 
-#: common-cmds.h:21
+#: command-list.h:65
+msgid "Copy files from the index to the working tree"
+msgstr "Kopiera filer från indexet till arbetskatalogen"
+
+#: command-list.h:66
+msgid "Ensures that a reference name is well formed"
+msgstr "Se till att referensen är välformad"
+
+#: command-list.h:67
+msgid "Find commits yet to be applied to upstream"
+msgstr "Hitta incheckningar som ännu inte applicerats uppströms"
+
+#: command-list.h:68
+msgid "Apply the changes introduced by some existing commits"
+msgstr "Applicera ändringarna introducerade av befintliga incheckningar"
+
+#: command-list.h:69
+msgid "Graphical alternative to git-commit"
+msgstr "Grafiskt alternativ till git-commit"
+
+#: command-list.h:70
+msgid "Remove untracked files from the working tree"
+msgstr "Ta bort ospårade filer från arbetskatalogen"
+
+#: command-list.h:71
 msgid "Clone a repository into a new directory"
 msgstr "Klona ett arkiv till en ny katalog"
 
-#: common-cmds.h:22
+#: command-list.h:72
+msgid "Display data in columns"
+msgstr "Visa data i kolumner"
+
+#: command-list.h:73
 msgid "Record changes to the repository"
 msgstr "Protokollför ändringar i arkivet"
 
-#: common-cmds.h:23
+#: command-list.h:74
+msgid "Write and verify Git commit graph files"
+msgstr "Skriv och verifiera Git-incheckningsgraffiler"
+
+#: command-list.h:75
+msgid "Create a new commit object"
+msgstr "Skapa ett nytt incheckningsobjekt"
+
+#: command-list.h:76
+msgid "Get and set repository or global options"
+msgstr "Läs och skriv alternativ för arkiv eller globalt"
+
+#: command-list.h:77
+msgid "Count unpacked number of objects and their disk consumption"
+msgstr "Räkna antal opackade objekt och mängd diskutrymme"
+
+#: command-list.h:78
+msgid "Retrieve and store user credentials"
+msgstr "Hämta och spara användarreferenser"
+
+#: command-list.h:79
+msgid "Helper to temporarily store passwords in memory"
+msgstr "Hjälpprogram för att tillfälligt lagra lösenord i minnet"
+
+#: command-list.h:80
+msgid "Helper to store credentials on disk"
+msgstr "Hjälpprogram för att lagra användarreferenser på disk"
+
+#: command-list.h:81
+msgid "Export a single commit to a CVS checkout"
+msgstr "Exportera en enkel incheckning i en CVS-utcheckning"
+
+#: command-list.h:82
+msgid "Salvage your data out of another SCM people love to hate"
+msgstr "Rädda dina data ut ur andra SCM folk älskar att hata"
+
+#: command-list.h:83
+msgid "A CVS server emulator for Git"
+msgstr "En CVS-serveremulator för Git"
+
+#: command-list.h:84
+msgid "A really simple server for Git repositories"
+msgstr "En riktigt enkel server för Git-arkiv"
+
+#: command-list.h:85
+msgid "Give an object a human readable name based on an available ref"
+msgstr "Ge ett objekt användarläsbara namn baserade på en tillgänglig referens"
+
+#: command-list.h:86
 msgid "Show changes between commits, commit and working tree, etc"
 msgstr "Visa ändringar mellan incheckningar, med arbetskatalogen, osv"
 
-#: common-cmds.h:24
+#: command-list.h:87
+msgid "Compares files in the working tree and the index"
+msgstr "Jämför filer i arbetskatalogen och indexet"
+
+#: command-list.h:88
+msgid "Compare a tree to the working tree or index"
+msgstr "Jämför en träd med arbetskatalogen eller indexet"
+
+#: command-list.h:89
+msgid "Compares the content and mode of blobs found via two tree objects"
+msgstr "Visar innehåll och läge för blob:ar som hittats via två trädobjekt"
+
+#: command-list.h:90
+msgid "Show changes using common diff tools"
+msgstr "Visa ändringar med vanliga diff-verktyg"
+
+#: command-list.h:91
+msgid "Git data exporter"
+msgstr "Exporterare för Git-data"
+
+#: command-list.h:92
+msgid "Backend for fast Git data importers"
+msgstr "Bakända för snabba Git-dataimporterare"
+
+#: command-list.h:93
 msgid "Download objects and refs from another repository"
 msgstr "Hämta objekt och referenser från annat arkiv"
 
-#: common-cmds.h:25
+#: command-list.h:94
+msgid "Receive missing objects from another repository"
+msgstr "Ta emot saknade objekt från annat arkiv"
+
+#: command-list.h:95
+msgid "Rewrite branches"
+msgstr "Skriv om grenar"
+
+#: command-list.h:96
+msgid "Produce a merge commit message"
+msgstr "Skapa incheckningsmeddelande för en sammanslagning"
+
+#: command-list.h:97
+msgid "Output information on each ref"
+msgstr "Visa information för varje referens"
+
+#: command-list.h:98
+msgid "Prepare patches for e-mail submission"
+msgstr "Förbered patchar för insändning via e-post"
+
+#: command-list.h:99
+msgid "Verifies the connectivity and validity of the objects in the database"
+msgstr "Bekräftar konnektivitet och validitet för objektet i databasen"
+
+#: command-list.h:100
+msgid "Cleanup unnecessary files and optimize the local repository"
+msgstr "Städa onödiga filer och optimera det lokala arkivet"
+
+#: command-list.h:101
+msgid "Extract commit ID from an archive created using git-archive"
+msgstr "Hämta inchecknings-ID från ett arkiv skapat med git-archive"
+
+#: command-list.h:102
 msgid "Print lines matching a pattern"
 msgstr "Visa rader som motsvarar mönster"
 
-#: common-cmds.h:26
+#: command-list.h:103
+msgid "A portable graphical interface to Git"
+msgstr "Ett portabelt grafiskt gränssnitt för Git"
+
+#: command-list.h:104
+msgid "Compute object ID and optionally creates a blob from a file"
+msgstr "Beräkna objekt-ID och möjligen skapa en blob från en fil"
+
+#: command-list.h:105
+msgid "Display help information about Git"
+msgstr "Visa hjälpinformation om Git"
+
+#: command-list.h:106
+msgid "Server side implementation of Git over HTTP"
+msgstr "Serversideimplementation av Git över HTTP"
+
+#: command-list.h:107
+msgid "Download from a remote Git repository via HTTP"
+msgstr "Hämta objekt och referenser från annat Git-arkiv över HTTP"
+
+#: command-list.h:108
+msgid "Push objects over HTTP/DAV to another repository"
+msgstr "Sänd objekt över HTTP/DAV till ett annat arkiv"
+
+#: command-list.h:109
+msgid "Send a collection of patches from stdin to an IMAP folder"
+msgstr "Sänd en samling patchar från stdin till en IMAP-mapp"
+
+#: command-list.h:110
+msgid "Build pack index file for an existing packed archive"
+msgstr "SKapa pack-indexfiler för ett befintligt packat arkiv"
+
+#: command-list.h:111
 msgid "Create an empty Git repository or reinitialize an existing one"
 msgstr "Skapa tomt Git-arkiv eller ominitiera ett befintligt"
 
-#: common-cmds.h:27
+#: command-list.h:112
+msgid "Instantly browse your working repository in gitweb"
+msgstr "Omedelbart bläddra i din arbetskatalog med gitweb"
+
+#: command-list.h:113
+msgid "add or parse structured information in commit messages"
+msgstr ""
+"lägg till eller tolka strukturerad information i incheckningsmeddelanden"
+
+#: command-list.h:114
+msgid "The Git repository browser"
+msgstr "Bläddraren för Git-arkiv"
+
+#: command-list.h:115
 msgid "Show commit logs"
 msgstr "Visa incheckningsloggar"
 
-#: common-cmds.h:28
+#: command-list.h:116
+msgid "Show information about files in the index and the working tree"
+msgstr "Visa information om filer i indexet och arbetskatalogen"
+
+#: command-list.h:117
+msgid "List references in a remote repository"
+msgstr "Lista referenser i ett fjärrarkiv"
+
+#: command-list.h:118
+msgid "List the contents of a tree object"
+msgstr "Visa innehållet i ett trädobjekt"
+
+#: command-list.h:119
+msgid "Extracts patch and authorship from a single e-mail message"
+msgstr "Hämta patch och ägarskap från ett enkelt e-postmeddelande"
+
+#: command-list.h:120
+msgid "Simple UNIX mbox splitter program"
+msgstr "Enkelt program för att dela en UNIX mbox"
+
+#: command-list.h:121
 msgid "Join two or more development histories together"
 msgstr "Slå ihop två eller flera utvecklingshistorier"
 
-#: common-cmds.h:29
+#: command-list.h:122
+msgid "Find as good common ancestors as possible for a merge"
+msgstr "Hitta en så bra anfader som möjligt för sammanslagning"
+
+#: command-list.h:123
+msgid "Run a three-way file merge"
+msgstr "Kör en trevägs-filsammanslagning"
+
+#: command-list.h:124
+msgid "Run a merge for files needing merging"
+msgstr "Kör en sammanslagning för filer som behöver det"
+
+#: command-list.h:125
+msgid "The standard helper program to use with git-merge-index"
+msgstr "Förvalt hjälpprogram att använda tillsammans med git-merge-index"
+
+#: command-list.h:126
+msgid "Run merge conflict resolution tools to resolve merge conflicts"
+msgstr "Kör verktyg för lösning av sammanslagningskonflikter"
+
+#: command-list.h:127
+msgid "Show three-way merge without touching index"
+msgstr "Visa trevägssammanslagning utan att röra indexet"
+
+#: command-list.h:128
+msgid "Creates a tag object"
+msgstr "Skapar ett taggobjekt"
+
+#: command-list.h:129
+msgid "Build a tree-object from ls-tree formatted text"
+msgstr "Bygg ett trädobjekt från ls-tree-formaterad text"
+
+#: command-list.h:130
 msgid "Move or rename a file, a directory, or a symlink"
 msgstr "Flytta eller byt namn på en fil, katalog eller symbolisk länk"
 
-#: common-cmds.h:30
+#: command-list.h:131
+msgid "Find symbolic names for given revs"
+msgstr "Hitta symboliska namn för givna referenser"
+
+#: command-list.h:132
+msgid "Add or inspect object notes"
+msgstr "Lägg till eller inspektera objektanteckningar"
+
+#: command-list.h:133
+msgid "Import from and submit to Perforce repositories"
+msgstr "Importera från eller sänd till Perforce-arkiv"
+
+#: command-list.h:134
+msgid "Create a packed archive of objects"
+msgstr "Skapa ett packat arkiv med objekt"
+
+#: command-list.h:135
+msgid "Find redundant pack files"
+msgstr "Hitta redundanta pack-filer"
+
+#: command-list.h:136
+msgid "Pack heads and tags for efficient repository access"
+msgstr "Packa huvuden och taggar för effektiv arkivåtkomst"
+
+#: command-list.h:137
+msgid "Routines to help parsing remote repository access parameters"
+msgstr ""
+"Rutiner för att göra det lättare att tolka åtkomstparametrar för fjärrarkiv"
+
+#: command-list.h:138
+msgid "Compute unique ID for a patch"
+msgstr "Beräkna unik ID för en patch"
+
+#: command-list.h:139
+msgid "Prune all unreachable objects from the object database"
+msgstr "Ta bort alla onåbara objekt från objektdatabasen"
+
+#: command-list.h:140
+msgid "Remove extra objects that are already in pack files"
+msgstr "Ta bort extraobjekt som redan finns i pack-filerna"
+
+#: command-list.h:141
 msgid "Fetch from and integrate with another repository or a local branch"
 msgstr "Hämta från och integrera med annat arkiv eller en lokal gren"
 
-#: common-cmds.h:31
+#: command-list.h:142
 msgid "Update remote refs along with associated objects"
 msgstr "Uppdatera fjärr-referenser och tillhörande objekt"
 
-#: common-cmds.h:32
+#: command-list.h:143
+msgid "Applies a quilt patchset onto the current branch"
+msgstr "Tillämpar en quilt-patchuppsättning på aktiv gren"
+
+#: command-list.h:144
+msgid "Reads tree information into the index"
+msgstr "Läser trädinformation in i indexet"
+
+#: command-list.h:145
 msgid "Reapply commits on top of another base tip"
 msgstr "Applicera incheckningar på nytt ovanpå en annan bastopp"
 
-#: common-cmds.h:33
+#: command-list.h:146
+msgid "Receive what is pushed into the repository"
+msgstr "Ta emot det som sänds till arkivet"
+
+#: command-list.h:147
+msgid "Manage reflog information"
+msgstr "Hantera referenslogg-information"
+
+#: command-list.h:148
+msgid "Manage set of tracked repositories"
+msgstr "Hantera uppsättningen spårade arkiv"
+
+#: command-list.h:149
+msgid "Pack unpacked objects in a repository"
+msgstr "Packa opackade objekt i ett arkiv"
+
+#: command-list.h:150
+msgid "Create, list, delete refs to replace objects"
+msgstr "Skapa, visa, ta bort referenser för att ersätta objekt"
+
+#: command-list.h:151
+msgid "Generates a summary of pending changes"
+msgstr "Skapar en sammanfattning av väntande ändringar"
+
+#: command-list.h:152
+msgid "Reuse recorded resolution of conflicted merges"
+msgstr "Återanvänd sparad lösning av sammanslagningskonflikter"
+
+#: command-list.h:153
 msgid "Reset current HEAD to the specified state"
 msgstr "Återställ aktuell HEAD till angivet tillstånd"
 
-#: common-cmds.h:34
+#: command-list.h:154
+msgid "Revert some existing commits"
+msgstr "Återställ några befintliga incheckningar"
+
+#: command-list.h:155
+msgid "Lists commit objects in reverse chronological order"
+msgstr "Visa incheckningsobjekt i omvänd kronologisk ordning"
+
+#: command-list.h:156
+msgid "Pick out and massage parameters"
+msgstr "Plocka ut och massera parametrar"
+
+#: command-list.h:157
 msgid "Remove files from the working tree and from the index"
 msgstr "Ta bort filer från arbetskatalogen och från indexet"
 
-#: common-cmds.h:35
+#: command-list.h:158
+msgid "Send a collection of patches as emails"
+msgstr "Sänd en uppsättning patchar som e-post"
+
+#: command-list.h:159
+msgid "Push objects over Git protocol to another repository"
+msgstr "Sänd objekt över Git-protokollet till annat arkiv"
+
+#: command-list.h:160
+msgid "Restricted login shell for Git-only SSH access"
+msgstr "Begränsat inloggningsskal för SSH-åtkomst till bara Git"
+
+#: command-list.h:161
+msgid "Summarize 'git log' output"
+msgstr "Summera \"git log\"-utdata"
+
+#: command-list.h:162
 msgid "Show various types of objects"
 msgstr "Visa olika sorters objekt"
 
-#: common-cmds.h:36
+#: command-list.h:163
+msgid "Show branches and their commits"
+msgstr "Visa grenar och deras incheckningar"
+
+#: command-list.h:164
+msgid "Show packed archive index"
+msgstr "Skapa packat arkivindex"
+
+#: command-list.h:165
+msgid "List references in a local repository"
+msgstr "Visa referenser i ett lokalt arkiv"
+
+#: command-list.h:166
+msgid "Git's i18n setup code for shell scripts"
+msgstr "Git:s i18n-startkod för skalskript"
+
+#: command-list.h:167
+msgid "Common Git shell script setup code"
+msgstr "Gemensam skriptstartkod för Git"
+
+#: command-list.h:168
+msgid "Stash the changes in a dirty working directory away"
+msgstr "Spara undan ändringar i en lortig arbetskatalog"
+
+#: command-list.h:169
+msgid "Add file contents to the staging area"
+msgstr "Lägg filinnehållet till indexet"
+
+#: command-list.h:170
 msgid "Show the working tree status"
 msgstr "Visa status för arbetskatalogen"
 
-#: common-cmds.h:37
+#: command-list.h:171
+msgid "Remove unnecessary whitespace"
+msgstr "Ta bort onödiga blanksteg"
+
+#: command-list.h:172
+msgid "Initialize, update or inspect submodules"
+msgstr "Initiera, uppdatera eller inspektera undermoduler"
+
+#: command-list.h:173
+msgid "Bidirectional operation between a Subversion repository and Git"
+msgstr "Dubbelriktad verkan mellan ett Subversion-arkiv och Git"
+
+#: command-list.h:174
+msgid "Read, modify and delete symbolic refs"
+msgstr "Läs, modifiera eller ta bort symbolisk referens"
+
+#: command-list.h:175
 msgid "Create, list, delete or verify a tag object signed with GPG"
 msgstr "Skapa, visa, ta bort eller verifiera GPG-signerat taggobjekt"
 
-#: parse-options.h:157
-msgid "expiry-date"
-msgstr "giltig-till"
+#: command-list.h:176
+msgid "Creates a temporary file with a blob's contents"
+msgstr "Skapar temporära filer med innehållet från en blob"
 
-#: parse-options.h:172
-msgid "no-op (backward compatibility)"
-msgstr "ingen funktion (bakåtkompatibilitet)"
+#: command-list.h:177
+msgid "Unpack objects from a packed archive"
+msgstr "Packa upp objekt från ett pakat arkiv"
 
-#: parse-options.h:250
-msgid "be more verbose"
-msgstr "var mer pratsam"
+#: command-list.h:178
+msgid "Register file contents in the working tree to the index"
+msgstr "Registrera filinnehållet från arbetskatalogen i indexet"
 
-#: parse-options.h:252
-msgid "be more quiet"
-msgstr "var mer tyst"
+#: command-list.h:179
+msgid "Update the object name stored in a ref safely"
+msgstr "Uppdatera objektnamnet i en referens på ett säkert sätt"
 
-#: parse-options.h:258
-msgid "use <n> digits to display SHA-1s"
-msgstr "använd <n> siffror för att visa SHA-1:or"
+#: command-list.h:180
+msgid "Update auxiliary info file to help dumb servers"
+msgstr "Uppdatera tilläggsinfofil för att hjälpa dumma servrar"
+
+#: command-list.h:181
+msgid "Send archive back to git-archive"
+msgstr "Sänd arkivet tillbaka till git-archive"
+
+#: command-list.h:182
+msgid "Send objects packed back to git-fetch-pack"
+msgstr "Sänd packade objekt tillbaka till git-fetch-pack"
+
+#: command-list.h:183
+msgid "Show a Git logical variable"
+msgstr "Visa en logisk Git-variabel"
+
+#: command-list.h:184
+msgid "Check the GPG signature of commits"
+msgstr "Kontrollera GPG-signaturer för incheckningar"
+
+#: command-list.h:185
+msgid "Validate packed Git archive files"
+msgstr "Bekräfta packade Git-arkivfiler"
+
+#: command-list.h:186
+msgid "Check the GPG signature of tags"
+msgstr "Kontrollera GPG-signaturer i taggar"
+
+#: command-list.h:187
+msgid "Git web interface (web frontend to Git repositories)"
+msgstr "Git-webbgränssnitt (webbframända för Git-arkiv)"
+
+#: command-list.h:188
+msgid "Show logs with difference each commit introduces"
+msgstr "Visa loggar med differenser varje incheckning introducerar"
+
+#: command-list.h:189
+msgid "Manage multiple working trees"
+msgstr "Hantera ytterligare arbetskataloger"
+
+#: command-list.h:190
+msgid "Create a tree object from the current index"
+msgstr "Skapa ett trädobjekt från aktuellt index"
+
+#: command-list.h:191
+msgid "Defining attributes per path"
+msgstr "Definierar attribut per sökväg"
+
+#: command-list.h:192
+msgid "Git command-line interface and conventions"
+msgstr "Gits kommandoradsgränssnitt och -konventioner"
+
+#: command-list.h:193
+msgid "A Git core tutorial for developers"
+msgstr "Grundläggande Git-handledning för utvecklare"
+
+#: command-list.h:194
+msgid "Git for CVS users"
+msgstr "Git för CVS-användare"
+
+#: command-list.h:195
+msgid "Tweaking diff output"
+msgstr "Justrea diff-utdata"
+
+#: command-list.h:196
+msgid "A useful minimum set of commands for Everyday Git"
+msgstr "Ett användbart minsta uppsättning kommandon för vardags-Git"
+
+#: command-list.h:197
+msgid "A Git Glossary"
+msgstr "En Git-ordlista"
+
+#: command-list.h:198
+msgid "Hooks used by Git"
+msgstr "Krokar som används av Git"
+
+#: command-list.h:199
+msgid "Specifies intentionally untracked files to ignore"
+msgstr "Ange avsiktligen ospårade filer att ignorera"
+
+#: command-list.h:200
+msgid "Defining submodule properties"
+msgstr "Ange egenskaper för undermoduler"
+
+#: command-list.h:201
+msgid "Git namespaces"
+msgstr "Git-namnrymder"
+
+#: command-list.h:202
+msgid "Git Repository Layout"
+msgstr "Gits arkivlayout"
+
+#: command-list.h:203
+msgid "Specifying revisions and ranges for Git"
+msgstr "Ange versioner och intervall i Git"
+
+#: command-list.h:204
+msgid "A tutorial introduction to Git: part two"
+msgstr "Introduktion till Git: del två"
+
+#: command-list.h:205
+msgid "A tutorial introduction to Git"
+msgstr "Introduktion till Git"
+
+#: command-list.h:206
+msgid "An overview of recommended workflows with Git"
+msgstr "Översikt över rekommenderade arbetsflöden med Git"
 
 #: rerere.h:40
 msgid "update the index with reused conflict resolution if possible"
@@ -15223,7 +16293,7 @@ msgstr "Försök enkel sammanslagning med $pretty_name"
 msgid "Simple merge did not work, trying automatic merge."
 msgstr "Enkel sammanslagning misslyckades, försöker automatisk sammanslagning."
 
-#: git-rebase.sh:60
+#: git-rebase.sh:61
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
@@ -15237,41 +16307,41 @@ msgstr ""
 "För att avbryta och återgå till där du var före ombaseringen, kör \"git "
 "rebase --abort\"."
 
-#: git-rebase.sh:163 git-rebase.sh:409
+#: git-rebase.sh:173 git-rebase.sh:442
 #, sh-format
 msgid "Could not move back to $head_name"
 msgstr "Kunde inte flytta tillbaka till $head_name"
 
-#: git-rebase.sh:174
+#: git-rebase.sh:184
 msgid "Applied autostash."
 msgstr "Tillämpade autostash."
 
-#: git-rebase.sh:177
+#: git-rebase.sh:187
 #, sh-format
 msgid "Cannot store $stash_sha1"
 msgstr "Kan inte spara $stash_sha1"
 
-#: git-rebase.sh:218
+#: git-rebase.sh:229
 msgid "The pre-rebase hook refused to rebase."
 msgstr "Kroken pre-rebase vägrade ombaseringen."
 
-#: git-rebase.sh:223
+#: git-rebase.sh:234
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr "Det verkar som en \"git am\" körs. Kan inte ombasera."
 
-#: git-rebase.sh:370
+#: git-rebase.sh:403
 msgid "No rebase in progress?"
 msgstr "Ingen ombasering pågår?"
 
-#: git-rebase.sh:381
+#: git-rebase.sh:414
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr "Åtgärden --edit-todo kan endast användas under interaktiv ombasering."
 
-#: git-rebase.sh:388
+#: git-rebase.sh:421
 msgid "Cannot read HEAD"
 msgstr "Kan inte läsa HEAD"
 
-#: git-rebase.sh:391
+#: git-rebase.sh:424
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
@@ -15279,7 +16349,7 @@ msgstr ""
 "Du måste redigera alla sammanslagningskonflikter och\n"
 "därefter markera dem som lösta med git add"
 
-#: git-rebase.sh:435
+#: git-rebase.sh:468
 #, sh-format
 msgid ""
 "It seems that there is already a $state_dir_base directory, and\n"
@@ -15300,75 +16370,79 @@ msgstr ""
 "och kör programmet igen. Jag avslutar ifall du fortfarande har\n"
 "något av värde där."
 
-#: git-rebase.sh:491
+#: git-rebase.sh:509
+msgid "error: cannot combine '--signoff' with '--preserve-merges'"
+msgstr "fel: kan inte kombinera \"--signoff\" med \"--preserve-merges\""
+
+#: git-rebase.sh:537
 #, sh-format
 msgid "invalid upstream '$upstream_name'"
 msgstr "ogiltig uppström \"$upstream_name\""
 
-#: git-rebase.sh:515
+#: git-rebase.sh:561
 #, sh-format
 msgid "$onto_name: there are more than one merge bases"
 msgstr "$onto_name: mer än en sammanslagningsbas finns"
 
-#: git-rebase.sh:518 git-rebase.sh:522
+#: git-rebase.sh:564 git-rebase.sh:568
 #, sh-format
 msgid "$onto_name: there is no merge base"
 msgstr "$onto_name: ingen sammanslagningsbas finns"
 
-#: git-rebase.sh:527
+#: git-rebase.sh:573
 #, sh-format
 msgid "Does not point to a valid commit: $onto_name"
 msgstr "Peka på en giltig incheckning: $onto_name"
 
-#: git-rebase.sh:553
+#: git-rebase.sh:599
 #, sh-format
 msgid "fatal: no such branch/commit '$branch_name'"
 msgstr "ödesdigert: ingen sådan gren/incheckning: $branch_name"
 
-#: git-rebase.sh:586
+#: git-rebase.sh:632
 msgid "Cannot autostash"
 msgstr "Kan inte utföra \"autostash\""
 
-#: git-rebase.sh:591
+#: git-rebase.sh:637
 #, sh-format
 msgid "Created autostash: $stash_abbrev"
 msgstr "Skapade autostash: $stash_abbrev"
 
-#: git-rebase.sh:595
+#: git-rebase.sh:641
 msgid "Please commit or stash them."
 msgstr "Checka in eller använd \"stash\" på dem."
 
-#: git-rebase.sh:618
+#: git-rebase.sh:664
 #, sh-format
 msgid "HEAD is up to date."
 msgstr "HEAD är à jour."
 
-#: git-rebase.sh:620
+#: git-rebase.sh:666
 #, sh-format
 msgid "Current branch $branch_name is up to date."
 msgstr "Aktuell gren $branch_name är à jour."
 
-#: git-rebase.sh:628
+#: git-rebase.sh:674
 #, sh-format
 msgid "HEAD is up to date, rebase forced."
 msgstr "HEAD är à jour, ombasering framtvingad."
 
-#: git-rebase.sh:630
+#: git-rebase.sh:676
 #, sh-format
 msgid "Current branch $branch_name is up to date, rebase forced."
 msgstr "Aktuell gren $branch_name är à jour, ombasering framtvingad."
 
-#: git-rebase.sh:642
+#: git-rebase.sh:688
 #, sh-format
 msgid "Changes from $mb to $onto:"
 msgstr "Ändringar från $mb till $onto:"
 
-#: git-rebase.sh:651
+#: git-rebase.sh:697
 msgid "First, rewinding head to replay your work on top of it..."
 msgstr ""
 "Först, spolar tillbaka huvudet för att spela av ditt arbete ovanpå det..."
 
-#: git-rebase.sh:661
+#: git-rebase.sh:707
 #, sh-format
 msgid "Fast-forwarded $branch_name to $onto_name."
 msgstr "Snabbspolade $branch_name till $onto_name."
@@ -15436,109 +16510,109 @@ msgstr "Kan inte spara aktuell status"
 msgid "Saved working directory and index state $stash_msg"
 msgstr "Sparade arbetskatalogen och indexstatus $stash_msg"
 
-#: git-stash.sh:340
+#: git-stash.sh:342
 msgid "Cannot remove worktree changes"
 msgstr "Kan inte ta bort ändringar i arbetskatalogen"
 
-#: git-stash.sh:488
+#: git-stash.sh:490
 #, sh-format
 msgid "unknown option: $opt"
 msgstr "okänd flagga: $opt"
 
-#: git-stash.sh:501
+#: git-stash.sh:503
 msgid "No stash entries found."
 msgstr "Inga \"stash”-poster hittades."
 
-#: git-stash.sh:508
+#: git-stash.sh:510
 #, sh-format
 msgid "Too many revisions specified: $REV"
 msgstr "För många revisioner angivna: $REV"
 
-#: git-stash.sh:523
+#: git-stash.sh:525
 #, sh-format
 msgid "$reference is not a valid reference"
 msgstr "$reference är inte en giltig referens"
 
-#: git-stash.sh:551
+#: git-stash.sh:553
 #, sh-format
 msgid "'$args' is not a stash-like commit"
 msgstr "\"$args\" är inte en \"stash\"-liknande incheckning"
 
-#: git-stash.sh:562
+#: git-stash.sh:564
 #, sh-format
 msgid "'$args' is not a stash reference"
 msgstr "\"$args\" är inte en \"stash\"-referens"
 
-#: git-stash.sh:570
+#: git-stash.sh:572
 msgid "unable to refresh index"
 msgstr "kan inte uppdatera indexet"
 
-#: git-stash.sh:574
+#: git-stash.sh:576
 msgid "Cannot apply a stash in the middle of a merge"
 msgstr "Kan inte tillämpa en \"stash\" mitt i en sammanslagning"
 
-#: git-stash.sh:582
+#: git-stash.sh:584
 msgid "Conflicts in index. Try without --index."
 msgstr "Konflikter i indexet. Testa utan --index."
 
-#: git-stash.sh:584
+#: git-stash.sh:586
 msgid "Could not save index tree"
 msgstr "Kunde inte spara indexträd"
 
-#: git-stash.sh:593
+#: git-stash.sh:595
 msgid "Could not restore untracked files from stash entry"
 msgstr "Kunde inte återställa ospårade filer från stash-post"
 
-#: git-stash.sh:618
+#: git-stash.sh:620
 msgid "Cannot unstage modified files"
 msgstr "Kan inte ta bort ändrade filer ur kön"
 
-#: git-stash.sh:633
+#: git-stash.sh:635
 msgid "Index was not unstashed."
 msgstr "Indexet har inte tagits ur kön."
 
-#: git-stash.sh:647
+#: git-stash.sh:649
 msgid "The stash entry is kept in case you need it again."
 msgstr "Stash-posten behålls ifall du behöver den igen."
 
-#: git-stash.sh:656
+#: git-stash.sh:658
 #, sh-format
 msgid "Dropped ${REV} ($s)"
 msgstr "Kastade ${REV} ($s)"
 
-#: git-stash.sh:657
+#: git-stash.sh:659
 #, sh-format
 msgid "${REV}: Could not drop stash entry"
 msgstr "${REV}: Kunde inte kasta \"stash\"-post"
 
-#: git-stash.sh:665
+#: git-stash.sh:667
 msgid "No branch name specified"
 msgstr "Inget grennamn angavs"
 
-#: git-stash.sh:744
+#: git-stash.sh:746
 msgid "(To restore them type \"git stash apply\")"
 msgstr "(För att återställa dem, skriv \"git stash apply\")"
 
-#: git-submodule.sh:181
+#: git-submodule.sh:188
 msgid "Relative path can only be used from the toplevel of the working tree"
 msgstr "Relativ sökväg kan endast användas från arbetskatalogens toppnivå"
 
-#: git-submodule.sh:191
+#: git-submodule.sh:198
 #, sh-format
 msgid "repo URL: '$repo' must be absolute or begin with ./|../"
 msgstr "arkiv-URL: \"$repo\" måste vara absolut eller börja med ./|../"
 
-#: git-submodule.sh:210
+#: git-submodule.sh:217
 #, sh-format
 msgid "'$sm_path' already exists in the index"
 msgstr "\"$sm_path\" finns redan i indexet"
 
-#: git-submodule.sh:213
+#: git-submodule.sh:220
 #, sh-format
 msgid "'$sm_path' already exists in the index and is not a submodule"
 msgstr "\"$sm_path\" finns redan i indexet och är inte en undermodul"
 
-#: git-submodule.sh:219
+#: git-submodule.sh:226
 #, sh-format
 msgid ""
 "The following path is ignored by one of your .gitignore files:\n"
@@ -15549,22 +16623,22 @@ msgstr ""
 "$sm_path\n"
 "Använd -f om du verkligen vill lägga till den."
 
-#: git-submodule.sh:237
+#: git-submodule.sh:249
 #, sh-format
 msgid "Adding existing repo at '$sm_path' to the index"
 msgstr "Lägger till befintligt arkiv i \"$sm_path\" i indexet"
 
-#: git-submodule.sh:239
+#: git-submodule.sh:251
 #, sh-format
 msgid "'$sm_path' already exists and is not a valid git repo"
 msgstr "\"$sm_path\" finns redan och är inte ett giltigt git-arkiv"
 
-#: git-submodule.sh:247
+#: git-submodule.sh:259
 #, sh-format
 msgid "A git directory for '$sm_name' is found locally with remote(s):"
 msgstr "En git-katalog för \"$sm_name\" hittades lokalt med fjärr(ar):"
 
-#: git-submodule.sh:249
+#: git-submodule.sh:261
 #, sh-format
 msgid ""
 "If you want to reuse this local git directory instead of cloning again from\n"
@@ -15582,48 +16656,48 @@ msgstr ""
 "arkiv eller om du är osäker på vad det här betyder, välj ett annat namn med\n"
 "flaggan \"--name\"."
 
-#: git-submodule.sh:255
+#: git-submodule.sh:267
 #, sh-format
 msgid "Reactivating local git directory for submodule '$sm_name'."
 msgstr "Aktiverar lokal git-katalog för undermodulen \"$sm_name\" på nytt."
 
-#: git-submodule.sh:267
+#: git-submodule.sh:279
 #, sh-format
 msgid "Unable to checkout submodule '$sm_path'"
 msgstr "Kan inte checka ut undermodulen \"$sm_path\""
 
-#: git-submodule.sh:272
+#: git-submodule.sh:284
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr "Misslyckades lägga till undermodulen \"$sm_path\""
 
-#: git-submodule.sh:281
+#: git-submodule.sh:293
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
 msgstr "Misslyckades registrera undermodulen \"$sm_path\""
 
-#: git-submodule.sh:342
+#: git-submodule.sh:354
 #, sh-format
 msgid "Entering '$displaypath'"
 msgstr "Går in i \"$displaypath\""
 
-#: git-submodule.sh:362
+#: git-submodule.sh:374
 #, sh-format
 msgid "Stopping at '$displaypath'; script returned non-zero status."
 msgstr ""
 "Stoppar på \"$displaypath\"; skriptet returnerade en status skild från noll."
 
-#: git-submodule.sh:584
+#: git-submodule.sh:600
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
 msgstr "Kan inte hitta aktuell revision i undermodulsökvägen \"$displaypath\""
 
-#: git-submodule.sh:594
+#: git-submodule.sh:610
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr "Kan inte hämta i undermodulsökväg \"$sm_path\""
 
-#: git-submodule.sh:599
+#: git-submodule.sh:615
 #, sh-format
 msgid ""
 "Unable to find current ${remote_name}/${branch} revision in submodule path "
@@ -15632,12 +16706,12 @@ msgstr ""
 "Kan inte hitta aktuell revision för ${remote_name}/${branch} i "
 "undermodulsökvägen \"$sm_path\""
 
-#: git-submodule.sh:617
+#: git-submodule.sh:633
 #, sh-format
 msgid "Unable to fetch in submodule path '$displaypath'"
 msgstr "Kan inte hämta i undermodulsökväg \"$displaypath\""
 
-#: git-submodule.sh:623
+#: git-submodule.sh:639
 #, sh-format
 msgid ""
 "Fetched in submodule path '$displaypath', but it did not contain $sha1. "
@@ -15646,72 +16720,72 @@ msgstr ""
 "Hämtade i undermodulssökvägen \"$displaypath\", men den innehöll inte $sha1. "
 "Direkt hämtning av incheckningen misslyckades."
 
-#: git-submodule.sh:630
+#: git-submodule.sh:646
 #, sh-format
 msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
 msgstr "Kan inte checka ut \"$sha1\" i undermodulsökvägen \"$displaypath\""
 
-#: git-submodule.sh:631
+#: git-submodule.sh:647
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
 msgstr "Undermodulsökvägen \"$displaypath\": checkade ut \"$sha1\""
 
-#: git-submodule.sh:635
+#: git-submodule.sh:651
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
 msgstr "Kan inte ombasera \"$sha1\" i undermodulsökvägen \"$displaypath\""
 
-#: git-submodule.sh:636
+#: git-submodule.sh:652
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
 msgstr "Undermodulsökvägen \"$displaypath\": ombaserade in i \"$sha1\""
 
-#: git-submodule.sh:641
+#: git-submodule.sh:657
 #, sh-format
 msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
 msgstr "Kan inte slå ihop \"$sha1\" i undermodulsökvägen \"$displaypath\""
 
-#: git-submodule.sh:642
+#: git-submodule.sh:658
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
 msgstr "Undermodulsökvägen \"$displaypath\": sammanslagen i \"$sha1\""
 
-#: git-submodule.sh:647
+#: git-submodule.sh:663
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
 msgstr ""
 "Misslyckades köra \"$command $sha1\" i undermodulsökvägen \"$displaypath\""
 
-#: git-submodule.sh:648
+#: git-submodule.sh:664
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr "Undermodulsökvägen \"$displaypath\": \"$command $sha1\""
 
-#: git-submodule.sh:679
+#: git-submodule.sh:695
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "Misslyckades rekursera in i undermodulsökvägen \"$displaypath\""
 
-#: git-submodule.sh:775
+#: git-submodule.sh:791
 msgid "The --cached option cannot be used with the --files option"
 msgstr "Flaggan --cached kan inte användas med flaggan --files"
 
-#: git-submodule.sh:827
+#: git-submodule.sh:843
 #, sh-format
 msgid "unexpected mode $mod_dst"
 msgstr "oväntat läge $mod_dst"
 
-#: git-submodule.sh:847
+#: git-submodule.sh:863
 #, 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:850
+#: git-submodule.sh:866
 #, 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:853
+#: git-submodule.sh:869
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
 msgstr ""
@@ -15723,38 +16797,53 @@ msgstr ""
 msgid "See git-${cmd}(1) for details."
 msgstr "Se git-${cmd}(1) för detaljer."
 
-#: git-rebase--interactive.sh:140
+#: git-rebase--interactive.sh:142
 #, sh-format
 msgid "Rebasing ($new_count/$total)"
 msgstr "Ombaserar ($new_count/$total)"
 
-#: git-rebase--interactive.sh:156
+#: git-rebase--interactive.sh:158
 msgid ""
 "\n"
 "Commands:\n"
-"p, pick = use commit\n"
-"r, reword = use commit, but edit the commit message\n"
-"e, edit = use commit, but stop for amending\n"
-"s, squash = use commit, but meld into previous commit\n"
-"f, fixup = like \"squash\", but discard this commit's log message\n"
-"x, exec = run command (the rest of the line) using shell\n"
-"d, drop = remove commit\n"
+"p, pick <commit> = use commit\n"
+"r, reword <commit> = use commit, but edit the commit message\n"
+"e, edit <commit> = use commit, but stop for amending\n"
+"s, squash <commit> = use commit, but meld into previous commit\n"
+"f, fixup <commit> = like \"squash\", but discard this commit's log message\n"
+"x, exec <command> = run command (the rest of the line) using shell\n"
+"d, drop <commit> = remove commit\n"
+"l, label <label> = label current HEAD with a name\n"
+"t, reset <label> = reset HEAD to a label\n"
+"m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]\n"
+".       create a merge commit using the original merge commit's\n"
+".       message (or the oneline, if no original merge commit was\n"
+".       specified). Use -c <commit> to reword the commit message.\n"
 "\n"
 "These lines can be re-ordered; they are executed from top to bottom.\n"
 msgstr ""
 "\n"
 "Kommandon:\n"
-"p, pick = använd incheckning\n"
-"r, reword = använd incheckning, men redigera incheckningsmeddelandet\n"
-"e, edit = använd incheckning, men stanna för tillägg\n"
-"s, squash = använd incheckning, men infoga i föregående incheckning\n"
-"f, fixup = som \"squash\", men förkasta incheckningsmeddelandet\n"
-"x, exec = kör kommando (resten av raden) i skalet\n"
-"d, drop = ta bort incheckning\n"
+"p, pick <incheckning> = använd incheckning\n"
+"r, reword <incheckning> = använd incheckning, men redigera "
+"incheckningsmeddelandet\n"
+"e, edit <incheckning> = använd incheckning, men stanna för tillägg\n"
+"s, squash <incheckning> = använd incheckning, men infoga i föregående "
+"incheckning\n"
+"f, fixup <incheckning> = som \"squash\", men förkasta "
+"incheckningsmeddelandet\n"
+"x, exec <kommando> = kör kommando (resten av raden) i skalet\n"
+"d, drop <incheckning> = ta bort incheckning\n"
+"l, label <etikett> = ge aktuellt HEAD ett namn\n"
+"t, reset <etikett> = återställ HEAD till en etikett\n"
+"m, merge [-C <incheckning> | -c <incheckning>] <etikett> [# <enrads>]\n"
+".       skapa en sammanslagning med ursprungligt meddelande (eller\n"
+".       enrads, om inget incheckningsmeddelande angavs). Använd\n"
+".       -v <incheckning> för att skriva om meddelandet.\n"
 "\n"
 "Du kan byta ordning på raderna; de utförs uppifrån och ned.\n"
 
-#: git-rebase--interactive.sh:171
+#: git-rebase--interactive.sh:179
 msgid ""
 "\n"
 "Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
@@ -15763,7 +16852,7 @@ msgstr ""
 "Ta inte bort rader. Använd \"drop\" för att specifikt förkasta en "
 "incheckning.\n"
 
-#: git-rebase--interactive.sh:175
+#: git-rebase--interactive.sh:183
 msgid ""
 "\n"
 "If you remove a line here THAT COMMIT WILL BE LOST.\n"
@@ -15771,7 +16860,7 @@ msgstr ""
 "\n"
 "Om du tar bort en rad KOMMER DEN INCHECKNINGEN ATT FÖRLORAS.\n"
 
-#: git-rebase--interactive.sh:213
+#: git-rebase--interactive.sh:221
 #, sh-format
 msgid ""
 "You can amend the commit now, with\n"
@@ -15790,83 +16879,83 @@ msgstr ""
 "\n"
 "\tgit rebase --continue"
 
-#: git-rebase--interactive.sh:238
+#: git-rebase--interactive.sh:246
 #, sh-format
 msgid "$sha1: not a commit that can be picked"
 msgstr "$sha1: inte en incheckning som kan väljas"
 
-#: git-rebase--interactive.sh:277
+#: git-rebase--interactive.sh:285
 #, sh-format
 msgid "Invalid commit name: $sha1"
 msgstr "Felaktigt incheckningsnamn: $sha1"
 
-#: git-rebase--interactive.sh:319
+#: git-rebase--interactive.sh:325
 msgid "Cannot write current commit's replacement sha1"
 msgstr "Kan inte skriva ersättnings-sha1 för aktuell incheckning"
 
-#: git-rebase--interactive.sh:371
+#: git-rebase--interactive.sh:376
 #, sh-format
 msgid "Fast-forward to $sha1"
 msgstr "Snabbspolade till $sha1"
 
-#: git-rebase--interactive.sh:373
+#: git-rebase--interactive.sh:378
 #, sh-format
 msgid "Cannot fast-forward to $sha1"
 msgstr "Kan inte snabbspola till $sha1"
 
-#: git-rebase--interactive.sh:382
+#: git-rebase--interactive.sh:387
 #, sh-format
 msgid "Cannot move HEAD to $first_parent"
 msgstr "Kan inte flytta HEAD till $first_parent"
 
-#: git-rebase--interactive.sh:387
+#: git-rebase--interactive.sh:392
 #, sh-format
 msgid "Refusing to squash a merge: $sha1"
 msgstr "Vägrar utföra \"squash\" på en sammanslagning: $sha1"
 
-#: git-rebase--interactive.sh:405
+#: git-rebase--interactive.sh:410
 #, sh-format
 msgid "Error redoing merge $sha1"
 msgstr "Fel när sammanslagningen $sha1 skulle göras om"
 
-#: git-rebase--interactive.sh:414
+#: git-rebase--interactive.sh:419
 #, sh-format
 msgid "Could not pick $sha1"
 msgstr "Kunde inte välja $sha1"
 
-#: git-rebase--interactive.sh:423
+#: git-rebase--interactive.sh:428
 #, sh-format
 msgid "This is the commit message #${n}:"
 msgstr "Det här är incheckningsmeddelande ${n}:"
 
-#: git-rebase--interactive.sh:428
+#: git-rebase--interactive.sh:433
 #, sh-format
 msgid "The commit message #${n} will be skipped:"
 msgstr "Incheckningsmeddelande ${n} kommer hoppas över:"
 
-#: git-rebase--interactive.sh:439
+#: git-rebase--interactive.sh:444
 #, sh-format
 msgid "This is a combination of $count commit."
 msgid_plural "This is a combination of $count commits."
 msgstr[0] "Det här är en kombination av $count incheckning."
 msgstr[1] "Det här är en kombination av $count incheckningar."
 
-#: git-rebase--interactive.sh:448
+#: git-rebase--interactive.sh:453
 #, sh-format
 msgid "Cannot write $fixup_msg"
 msgstr "Kan inte skriva $fixup_msg"
 
-#: git-rebase--interactive.sh:451
+#: git-rebase--interactive.sh:456
 msgid "This is a combination of 2 commits."
 msgstr "Det här är en kombination av 2 incheckningar."
 
-#: git-rebase--interactive.sh:492 git-rebase--interactive.sh:535
-#: git-rebase--interactive.sh:538
+#: git-rebase--interactive.sh:497 git-rebase--interactive.sh:540
+#: git-rebase--interactive.sh:543
 #, sh-format
 msgid "Could not apply $sha1... $rest"
 msgstr "Kunde inte tillämpa $sha1... $rest"
 
-#: git-rebase--interactive.sh:567
+#: git-rebase--interactive.sh:572
 #, sh-format
 msgid ""
 "Could not amend commit after successfully picking $sha1... $rest\n"
@@ -15880,31 +16969,31 @@ msgstr ""
 "pre-commit-kroken misslyckades. Om pre-commit-kroken misslyckades kanske\n"
 "du måste lösa problemet innan du kan skriva om incheckningsmeddelandet."
 
-#: git-rebase--interactive.sh:582
+#: git-rebase--interactive.sh:587
 #, sh-format
 msgid "Stopped at $sha1_abbrev... $rest"
 msgstr "Stoppade på $sha1_abbrev... $rest"
 
-#: git-rebase--interactive.sh:597
+#: git-rebase--interactive.sh:602
 #, sh-format
 msgid "Cannot '$squash_style' without a previous commit"
 msgstr "Kan inte utföra \"$squash_style\" utan en föregående incheckning"
 
-#: git-rebase--interactive.sh:639
+#: git-rebase--interactive.sh:644
 #, sh-format
 msgid "Executing: $rest"
 msgstr "Kör: $rest"
 
-#: git-rebase--interactive.sh:647
+#: git-rebase--interactive.sh:652
 #, sh-format
 msgid "Execution failed: $rest"
 msgstr "Körning misslyckades: $rest"
 
-#: git-rebase--interactive.sh:649
+#: git-rebase--interactive.sh:654
 msgid "and made changes to the index and/or the working tree"
 msgstr "och gjorde ändringar till indexet och/eller arbetskatalogen"
 
-#: git-rebase--interactive.sh:651
+#: git-rebase--interactive.sh:656
 msgid ""
 "You can fix the problem, and then run\n"
 "\n"
@@ -15915,7 +17004,7 @@ msgstr ""
 "\tgit rebase --continue"
 
 #. TRANSLATORS: after these lines is a command to be issued by the user
-#: git-rebase--interactive.sh:664
+#: git-rebase--interactive.sh:669
 #, sh-format
 msgid ""
 "Execution succeeded: $rest\n"
@@ -15930,29 +17019,29 @@ msgstr ""
 "\n"
 "\tgit rebase --continue"
 
-#: git-rebase--interactive.sh:675
+#: git-rebase--interactive.sh:680
 #, sh-format
 msgid "Unknown command: $command $sha1 $rest"
 msgstr "Okänt kommando: $command $sha1 $rest"
 
-#: git-rebase--interactive.sh:676
+#: git-rebase--interactive.sh:681
 msgid "Please fix this using 'git rebase --edit-todo'."
 msgstr "Rätta det med \"git rebase --edit-todo\"."
 
-#: git-rebase--interactive.sh:711
+#: git-rebase--interactive.sh:716
 #, sh-format
 msgid "Successfully rebased and updated $head_name."
 msgstr "Lyckades ombasera och uppdatera $head_name."
 
-#: git-rebase--interactive.sh:735
+#: git-rebase--interactive.sh:740
 msgid "could not detach HEAD"
 msgstr "kunde inte koppla från HEAD"
 
-#: git-rebase--interactive.sh:771
+#: git-rebase--interactive.sh:778
 msgid "Could not remove CHERRY_PICK_HEAD"
 msgstr "Kunde inte ta bort CHERRY_PICK_HEAD"
 
-#: git-rebase--interactive.sh:776
+#: git-rebase--interactive.sh:783
 #, sh-format
 msgid ""
 "You have staged changes in your working tree.\n"
@@ -15983,11 +17072,11 @@ msgstr ""
 "\n"
 "  git rebase --continue\n"
 
-#: git-rebase--interactive.sh:793
+#: git-rebase--interactive.sh:800
 msgid "Error trying to find the author identity to amend commit"
 msgstr "Fel vid försök att hitta författaridentitet för att utöka incheckning"
 
-#: git-rebase--interactive.sh:798
+#: git-rebase--interactive.sh:805
 msgid ""
 "You have uncommitted changes in your working tree. Please commit them\n"
 "first and then run 'git rebase --continue' again."
@@ -15995,11 +17084,11 @@ msgstr ""
 "Du har ändringar i arbetskatalogen som inte checkats in. Checka in dem\n"
 "först och kör sedan \"git rebase --continute\" igen."
 
-#: git-rebase--interactive.sh:803 git-rebase--interactive.sh:807
+#: git-rebase--interactive.sh:810 git-rebase--interactive.sh:814
 msgid "Could not commit staged changes."
 msgstr "Kunde inte checka in köade ändringar."
 
-#: git-rebase--interactive.sh:836
+#: git-rebase--interactive.sh:843
 msgid ""
 "\n"
 "You are editing the todo file of an ongoing interactive rebase.\n"
@@ -16013,57 +17102,59 @@ msgstr ""
 "    git rebase --continue\n"
 "\n"
 
-#: git-rebase--interactive.sh:844 git-rebase--interactive.sh:1008
+#: git-rebase--interactive.sh:851 git-rebase--interactive.sh:937
 msgid "Could not execute editor"
 msgstr "Kunde inte starta textredigerare"
 
-#: git-rebase--interactive.sh:860
+#: git-rebase--interactive.sh:872
 #, sh-format
 msgid "Could not checkout $switch_to"
 msgstr "Kunde inte checka ut $switch_to"
 
-#: git-rebase--interactive.sh:865
+#: git-rebase--interactive.sh:879
 msgid "No HEAD?"
 msgstr "Inget HEAD?"
 
-#: git-rebase--interactive.sh:866
+#: git-rebase--interactive.sh:880
 #, sh-format
 msgid "Could not create temporary $state_dir"
 msgstr "Kunde inte skapa temporär $state_dir"
 
-#: git-rebase--interactive.sh:869
+#: git-rebase--interactive.sh:883
 msgid "Could not mark as interactive"
 msgstr "Kunde inte markera som interaktiv"
 
-#: git-rebase--interactive.sh:879 git-rebase--interactive.sh:884
-msgid "Could not init rewritten commits"
-msgstr "Kunde inte initiera omskrivna incheckningar"
-
-#: git-rebase--interactive.sh:910
-msgid "Could not generate todo list"
-msgstr "Kunde inte skapa todo-lista"
-
-#: git-rebase--interactive.sh:986
+#: git-rebase--interactive.sh:915
 #, sh-format
 msgid "Rebase $shortrevisions onto $shortonto ($todocount command)"
 msgid_plural "Rebase $shortrevisions onto $shortonto ($todocount commands)"
 msgstr[0] "Ombasera $shortrevisions på $shortonto ($todocount incheckning)"
 msgstr[1] "Ombasera $shortrevisions på $shortonto ($todocount incheckningar)"
 
-#: git-rebase--interactive.sh:991
+#: git-rebase--interactive.sh:920
 msgid ""
 "\n"
-"However, if you remove everything, the rebase will be aborted.\n"
+"\tHowever, if you remove everything, the rebase will be aborted.\n"
 "\n"
+"\t"
 msgstr ""
 "\n"
-"Ombaseringen kommer dock att avbrytas om du tar bort allting.\n"
+"\tOmbaseringen kommer dock att avbrytas om du tar bort allting.\n"
 "\n"
+"\t"
 
-#: git-rebase--interactive.sh:998
+#: git-rebase--interactive.sh:927
 msgid "Note that empty commits are commented out"
 msgstr "Observera att tomma incheckningar är utkommenterade"
 
+#: git-rebase--interactive.sh:980
+msgid "Could not generate todo list"
+msgstr "Kunde inte skapa todo-lista"
+
+#: git-rebase--interactive.sh:1001 git-rebase--interactive.sh:1006
+msgid "Could not init rewritten commits"
+msgstr "Kunde inte initiera omskrivna incheckningar"
+
 #: git-sh-setup.sh:89 git-sh-setup.sh:94
 #, sh-format
 msgid "usage: $dashless $USAGE"
@@ -16138,68 +17229,68 @@ msgstr "köad"
 msgid "unstaged"
 msgstr "ej köad"
 
-#: git-add--interactive.perl:246 git-add--interactive.perl:271
+#: git-add--interactive.perl:253 git-add--interactive.perl:278
 msgid "binary"
 msgstr "binär"
 
-#: git-add--interactive.perl:255 git-add--interactive.perl:309
+#: git-add--interactive.perl:262 git-add--interactive.perl:316
 msgid "nothing"
 msgstr "ingenting"
 
-#: git-add--interactive.perl:291 git-add--interactive.perl:306
+#: git-add--interactive.perl:298 git-add--interactive.perl:313
 msgid "unchanged"
 msgstr "oändrad"
 
-#: git-add--interactive.perl:602
+#: git-add--interactive.perl:609
 #, perl-format
 msgid "added %d path\n"
 msgid_plural "added %d paths\n"
 msgstr[0] "lade till %d sökväg\n"
 msgstr[1] "lade till %d sökvägar\n"
 
-#: git-add--interactive.perl:605
+#: git-add--interactive.perl:612
 #, perl-format
 msgid "updated %d path\n"
 msgid_plural "updated %d paths\n"
 msgstr[0] "uppdaterade %d sökväg\n"
 msgstr[1] "uppdaterade %d sökvägar\n"
 
-#: git-add--interactive.perl:608
+#: git-add--interactive.perl:615
 #, perl-format
 msgid "reverted %d path\n"
 msgid_plural "reverted %d paths\n"
 msgstr[0] "återställde %d sökväg\n"
 msgstr[1] "återställde %d sökvägar\n"
 
-#: git-add--interactive.perl:611
+#: git-add--interactive.perl:618
 #, perl-format
 msgid "touched %d path\n"
 msgid_plural "touched %d paths\n"
 msgstr[0] "rörde %d sökväg\n"
 msgstr[1] "rörde %d sökvägar\n"
 
-#: git-add--interactive.perl:620
+#: git-add--interactive.perl:627
 msgid "Update"
 msgstr "Uppdatera"
 
-#: git-add--interactive.perl:632
+#: git-add--interactive.perl:639
 msgid "Revert"
 msgstr "Återställ"
 
-#: git-add--interactive.perl:655
+#: git-add--interactive.perl:662
 #, perl-format
 msgid "note: %s is untracked now.\n"
 msgstr "observera: %s spåras inte längre.\n"
 
-#: git-add--interactive.perl:666
+#: git-add--interactive.perl:673
 msgid "Add untracked"
 msgstr "Lägg till ospårad"
 
-#: git-add--interactive.perl:672
+#: git-add--interactive.perl:679
 msgid "No untracked files.\n"
 msgstr "Inga ospårade filer.\n"
 
-#: git-add--interactive.perl:1026
+#: git-add--interactive.perl:1033
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
@@ -16207,7 +17298,7 @@ msgstr ""
 "Om patchen kan appliceras rent kommer det redigerade stycket att\n"
 "köas omedelbart."
 
-#: git-add--interactive.perl:1029
+#: git-add--interactive.perl:1036
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
@@ -16215,7 +17306,7 @@ msgstr ""
 "Om patchen kan appliceras rent kommer det redigerade stycket att\n"
 "läggas till i \"stash\" omedelbart."
 
-#: git-add--interactive.perl:1032
+#: git-add--interactive.perl:1039
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
@@ -16223,7 +17314,7 @@ msgstr ""
 "Om patchen kan appliceras rent kommer det redigerade stycket att\n"
 "tas bort från kön omedelbart."
 
-#: git-add--interactive.perl:1035 git-add--interactive.perl:1044
+#: git-add--interactive.perl:1042 git-add--interactive.perl:1051
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
@@ -16231,7 +17322,7 @@ msgstr ""
 "Om patchen kan appliceras rent kommer det redigerade stycket att\n"
 "markeras för applicering omedelbart."
 
-#: git-add--interactive.perl:1038 git-add--interactive.perl:1041
+#: git-add--interactive.perl:1045 git-add--interactive.perl:1048
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
@@ -16239,16 +17330,16 @@ msgstr ""
 "Om patchen kan appliceras rent kommer det redigerade stycket att\n"
 "markeras för kasta omedelbart."
 
-#: git-add--interactive.perl:1078
+#: git-add--interactive.perl:1085
 #, perl-format
 msgid "failed to open hunk edit file for writing: %s"
 msgstr "misslyckades öppna styckeredigeringsfil för skrivning: %s"
 
-#: git-add--interactive.perl:1079
+#: git-add--interactive.perl:1086
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr "Manuellt styckeredigeringsläge -- se nederst för snabbguide.\n"
 
-#: git-add--interactive.perl:1085
+#: git-add--interactive.perl:1092
 #, perl-format
 msgid ""
 "---\n"
@@ -16262,7 +17353,7 @@ msgstr ""
 "Rader som börjar med %s kommer att tas bort.\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: git-add--interactive.perl:1093
+#: git-add--interactive.perl:1100
 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"
@@ -16272,7 +17363,7 @@ msgstr ""
 "redigera den igen. Om alla rader i ett stycke tas bort avbryts\n"
 "redigeringen och stycket lämnas oförändrat.\n"
 
-#: git-add--interactive.perl:1107
+#: git-add--interactive.perl:1114
 #, perl-format
 msgid "failed to open hunk edit file for reading: %s"
 msgstr "misslyckades öppna styckesredigeringsfil för läsning: %s"
@@ -16283,14 +17374,14 @@ msgstr "misslyckades öppna styckesredigeringsfil för läsning: %s"
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: git-add--interactive.perl:1206
+#: git-add--interactive.perl:1213
 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]? "
 
-#: git-add--interactive.perl:1215
+#: git-add--interactive.perl:1222
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -16304,7 +17395,7 @@ msgstr ""
 "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:1221
+#: git-add--interactive.perl:1228
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -16318,7 +17409,7 @@ msgstr ""
 "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:1227
+#: git-add--interactive.perl:1234
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -16332,7 +17423,7 @@ msgstr ""
 "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:1233
+#: git-add--interactive.perl:1240
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -16346,7 +17437,7 @@ msgstr ""
 "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:1239
+#: git-add--interactive.perl:1246
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -16360,7 +17451,7 @@ msgstr ""
 "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:1245
+#: git-add--interactive.perl:1252
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -16374,7 +17465,7 @@ msgstr ""
 "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:1251
+#: git-add--interactive.perl:1258
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -16388,7 +17479,7 @@ msgstr ""
 "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:1266
+#: git-add--interactive.perl:1273
 msgid ""
 "g - select a hunk to go to\n"
 "/ - search for a hunk matching the given regex\n"
@@ -16410,211 +17501,211 @@ msgstr ""
 "e - redigera aktuellt stycke manuellt\n"
 "? - visa hjälp\n"
 
-#: git-add--interactive.perl:1297
+#: git-add--interactive.perl:1304
 msgid "The selected hunks do not apply to the index!\n"
 msgstr "Markerade stycken kan inte appliceras på indexet!\n"
 
-#: git-add--interactive.perl:1298
+#: git-add--interactive.perl:1305
 msgid "Apply them to the worktree anyway? "
 msgstr "Applicera dem på arbetskatalogen trots det? "
 
-#: git-add--interactive.perl:1301
+#: git-add--interactive.perl:1308
 msgid "Nothing was applied.\n"
 msgstr "Ingenting applicerades.\n"
 
-#: git-add--interactive.perl:1312
+#: git-add--interactive.perl:1319
 #, perl-format
 msgid "ignoring unmerged: %s\n"
 msgstr "ignorerar ej sammanslagen: %s\n"
 
-#: git-add--interactive.perl:1321
+#: git-add--interactive.perl:1328
 msgid "Only binary files changed.\n"
 msgstr "Endast binära filer ändrade.\n"
 
-#: git-add--interactive.perl:1323
+#: git-add--interactive.perl:1330
 msgid "No changes.\n"
 msgstr "Inga ändringar.\n"
 
-#: git-add--interactive.perl:1331
+#: git-add--interactive.perl:1338
 msgid "Patch update"
 msgstr "Uppdatera patch"
 
-#: git-add--interactive.perl:1383
+#: git-add--interactive.perl:1390
 #, perl-format
 msgid "Stage mode change [y,n,q,a,d%s,?]? "
 msgstr "Köa ändrat läge [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1384
+#: git-add--interactive.perl:1391
 #, perl-format
 msgid "Stage deletion [y,n,q,a,d%s,?]? "
 msgstr "Köa borttagning [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1385
+#: git-add--interactive.perl:1392
 #, perl-format
 msgid "Stage this hunk [y,n,q,a,d%s,?]? "
 msgstr "Köa stycket [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1388
+#: git-add--interactive.perl:1395
 #, perl-format
 msgid "Stash mode change [y,n,q,a,d%s,?]? "
 msgstr "Stash:a ändrat läge [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1389
+#: git-add--interactive.perl:1396
 #, perl-format
 msgid "Stash deletion [y,n,q,a,d%s,?]? "
 msgstr "Stash:a borttagning [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1390
+#: git-add--interactive.perl:1397
 #, perl-format
 msgid "Stash this hunk [y,n,q,a,d%s,?]? "
 msgstr "Stash:a stycket [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1393
+#: git-add--interactive.perl:1400
 #, 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,?]? "
 
-#: git-add--interactive.perl:1394
+#: git-add--interactive.perl:1401
 #, 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,?]? "
 
-#: git-add--interactive.perl:1395
+#: git-add--interactive.perl:1402
 #, 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,?]? "
 
-#: git-add--interactive.perl:1398
+#: git-add--interactive.perl:1405
 #, 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,?]? "
 
-#: git-add--interactive.perl:1399
+#: git-add--interactive.perl:1406
 #, perl-format
 msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
 msgstr "Applicera borttagning på indexet [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1400
+#: git-add--interactive.perl:1407
 #, 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,?]? "
 
-#: git-add--interactive.perl:1403
+#: git-add--interactive.perl:1410
 #, 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,?]? "
 
-#: git-add--interactive.perl:1404
+#: git-add--interactive.perl:1411
 #, 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,?]? "
 
-#: git-add--interactive.perl:1405
+#: git-add--interactive.perl:1412
 #, 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,?]? "
 
-#: git-add--interactive.perl:1408
+#: git-add--interactive.perl:1415
 #, 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,?]? "
 
-#: git-add--interactive.perl:1409
+#: git-add--interactive.perl:1416
 #, 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,?]? "
 
-#: git-add--interactive.perl:1410
+#: git-add--interactive.perl:1417
 #, 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,?]? "
 
-#: git-add--interactive.perl:1413
+#: git-add--interactive.perl:1420
 #, 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,?]? "
 
-#: git-add--interactive.perl:1414
+#: git-add--interactive.perl:1421
 #, 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,?]? "
 
-#: git-add--interactive.perl:1415
+#: git-add--interactive.perl:1422
 #, 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,?]? "
 
-#: git-add--interactive.perl:1515
+#: git-add--interactive.perl:1522
 msgid "No other hunks to goto\n"
 msgstr "Inga andra stycken att gå till\n"
 
-#: git-add--interactive.perl:1522
+#: git-add--interactive.perl:1529
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "gå till vilket stycke (<ret> för att se fler)? "
 
-#: git-add--interactive.perl:1524
+#: git-add--interactive.perl:1531
 msgid "go to which hunk? "
 msgstr "gå till vilket stycke? "
 
-#: git-add--interactive.perl:1533
+#: git-add--interactive.perl:1540
 #, perl-format
 msgid "Invalid number: '%s'\n"
 msgstr "Ogiltigt siffervärde: \"%s\"\n"
 
-#: git-add--interactive.perl:1538
+#: git-add--interactive.perl:1545
 #, 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:1564
+#: git-add--interactive.perl:1571
 msgid "No other hunks to search\n"
 msgstr "Inga andra stycken att söka efter\n"
 
-#: git-add--interactive.perl:1568
+#: git-add--interactive.perl:1575
 msgid "search for regex? "
 msgstr "sök efter reguljärt uttryck? "
 
-#: git-add--interactive.perl:1581
+#: git-add--interactive.perl:1588
 #, perl-format
 msgid "Malformed search regexp %s: %s\n"
 msgstr "Felaktigt format på reguljärt sökuttryck %s: %s\n"
 
-#: git-add--interactive.perl:1591
+#: git-add--interactive.perl:1598
 msgid "No hunk matches the given pattern\n"
 msgstr "Inga stycken motsvarar givet mönster\n"
 
-#: git-add--interactive.perl:1603 git-add--interactive.perl:1625
+#: git-add--interactive.perl:1610 git-add--interactive.perl:1632
 msgid "No previous hunk\n"
 msgstr "Inget föregående stycke\n"
 
-#: git-add--interactive.perl:1612 git-add--interactive.perl:1631
+#: git-add--interactive.perl:1619 git-add--interactive.perl:1638
 msgid "No next hunk\n"
 msgstr "Inget följande stycke\n"
 
-#: git-add--interactive.perl:1637
+#: git-add--interactive.perl:1644
 msgid "Sorry, cannot split this hunk\n"
 msgstr "Beklagar, kan inte dela stycket\n"
 
-#: git-add--interactive.perl:1643
+#: git-add--interactive.perl:1650
 #, 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:1653
+#: git-add--interactive.perl:1660
 msgid "Sorry, cannot edit this hunk\n"
 msgstr "Beklagar, kan inte redigera stycket\n"
 
-#: git-add--interactive.perl:1699
+#: git-add--interactive.perl:1706
 msgid "Review diff"
 msgstr "Granska diff"
 
 #. TRANSLATORS: please do not translate the command names
 #. 'status', 'update', 'revert', etc.
-#: git-add--interactive.perl:1718
+#: git-add--interactive.perl:1725
 msgid ""
 "status        - show paths with changes\n"
 "update        - add working tree state to the staged set of changes\n"
@@ -16631,18 +17722,18 @@ msgstr ""
 "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:1735 git-add--interactive.perl:1740
-#: git-add--interactive.perl:1743 git-add--interactive.perl:1750
-#: git-add--interactive.perl:1754 git-add--interactive.perl:1760
+#: git-add--interactive.perl:1742 git-add--interactive.perl:1747
+#: git-add--interactive.perl:1750 git-add--interactive.perl:1757
+#: git-add--interactive.perl:1761 git-add--interactive.perl:1767
 msgid "missing --"
 msgstr "saknad --"
 
-#: git-add--interactive.perl:1756
+#: git-add--interactive.perl:1763
 #, perl-format
 msgid "unknown --patch mode: %s"
 msgstr "okänt läge för --patch: %s"
 
-#: git-add--interactive.perl:1762 git-add--interactive.perl:1768
+#: git-add--interactive.perl:1769 git-add--interactive.perl:1775
 #, perl-format
 msgid "invalid argument %s, expecting --"
 msgstr "felaktigt argument %s, förväntar --"
@@ -16855,7 +17946,7 @@ msgstr "Vad vill du göra med adressen? (q=avsluta, d=kasta, e=redigera): "
 msgid "CA path \"%s\" does not exist"
 msgstr "CA-sökvägen \"%s\" finns inte"
 
-#: git-send-email.perl:1395
+#: git-send-email.perl:1400
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -16879,127 +17970,127 @@ msgstr ""
 "    meddelande, kör \"git config --global sendemail.confirm auto\".\n"
 "\n"
 
-#. TRANSLATORS: Make sure to include [y] [n] [q] [a] in your
+#. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1410
-msgid "Send this email? ([y]es|[n]o|[q]uit|[a]ll): "
-msgstr "Sända brevet? (y=ja, n=nej, q=avsluta, a=alla): "
+#: git-send-email.perl:1415
+msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
+msgstr "Sända brevet? (y=ja, n=nej, e=redigera, q=avsluta, a=alla): "
 
-#: git-send-email.perl:1413
+#: git-send-email.perl:1418
 msgid "Send this email reply required"
 msgstr "Svar krävs på frågan \"Sända brevet?\""
 
-#: git-send-email.perl:1439
+#: git-send-email.perl:1446
 msgid "The required SMTP server is not properly defined."
 msgstr "Nödvändig SMTP-server har inte angivits korrekt."
 
-#: git-send-email.perl:1486
+#: git-send-email.perl:1493
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
 msgstr "Servern stöder inte SMARTTLS! %s"
 
-#: git-send-email.perl:1491 git-send-email.perl:1495
+#: git-send-email.perl:1498 git-send-email.perl:1502
 #, perl-format
 msgid "STARTTLS failed! %s"
 msgstr "STARTTLS misslyckades! %s"
 
-#: git-send-email.perl:1505
+#: git-send-email.perl:1512
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
 msgstr ""
 "Kan inte initiera SMTP korrekt. Kontrollera inställningarna och använd --"
 "smtp-debug."
 
-#: git-send-email.perl:1523
+#: git-send-email.perl:1530
 #, perl-format
 msgid "Failed to send %s\n"
 msgstr "Misslyckades sända %s\n"
 
-#: git-send-email.perl:1526
+#: git-send-email.perl:1533
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr "Test-Sände %s\n"
 
-#: git-send-email.perl:1526
+#: git-send-email.perl:1533
 #, perl-format
 msgid "Sent %s\n"
 msgstr "Sände %s\n"
 
-#: git-send-email.perl:1528
+#: git-send-email.perl:1535
 msgid "Dry-OK. Log says:\n"
 msgstr "Test-OK. Loggen säger:\n"
 
-#: git-send-email.perl:1528
+#: git-send-email.perl:1535
 msgid "OK. Log says:\n"
 msgstr "OK. Loggen säger:\n"
 
-#: git-send-email.perl:1540
+#: git-send-email.perl:1547
 msgid "Result: "
 msgstr "Resultat: "
 
-#: git-send-email.perl:1543
+#: git-send-email.perl:1550
 msgid "Result: OK\n"
 msgstr "Resultat: OK\n"
 
-#: git-send-email.perl:1556
+#: git-send-email.perl:1568
 #, perl-format
 msgid "can't open file %s"
 msgstr "kan inte öppna filen %s"
 
-#: git-send-email.perl:1603 git-send-email.perl:1623
+#: git-send-email.perl:1615 git-send-email.perl:1635
 #, perl-format
 msgid "(mbox) Adding cc: %s from line '%s'\n"
 msgstr "(mbox) Lägger till cc: %s från raden \"%s\"\n"
 
-#: git-send-email.perl:1609
+#: git-send-email.perl:1621
 #, perl-format
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) Lägger till to: %s från raden \"%s\"\n"
 
-#: git-send-email.perl:1657
+#: git-send-email.perl:1674
 #, 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:1682
+#: git-send-email.perl:1699
 #, 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:1788
+#: git-send-email.perl:1817
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) Kunde inte köra \"%s\""
 
-#: git-send-email.perl:1795
+#: git-send-email.perl:1824
 #, 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:1799
+#: git-send-email.perl:1828
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) misslyckades stänga röret till \"%s\""
 
-#: git-send-email.perl:1826
+#: git-send-email.perl:1855
 msgid "cannot send message as 7bit"
 msgstr "kan inte sända brev som sjubitars"
 
-#: git-send-email.perl:1834
+#: git-send-email.perl:1863
 msgid "invalid transfer encoding"
 msgstr "ogiltig överföringskondning"
 
-#: git-send-email.perl:1872 git-send-email.perl:1923 git-send-email.perl:1933
+#: git-send-email.perl:1901 git-send-email.perl:1952 git-send-email.perl:1962
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "kunde inte öppna %s: %s\n"
 
-#: git-send-email.perl:1875
+#: git-send-email.perl:1904
 #, 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:1891
+#: git-send-email.perl:1920
 #, perl-format
 msgid "Skipping %s with backup suffix '%s'.\n"
 msgstr ""
@@ -17007,11 +18098,41 @@ msgstr ""
 "säkerhetskopior.\n"
 
 #. TRANSLATORS: please keep "[y|N]" as is.
-#: git-send-email.perl:1895
+#: git-send-email.perl:1924
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "Vill du verkligen sända %s? [y=ja, n=nej]: "
 
+#~ msgid "Everyday Git With 20 Commands Or So"
+#~ msgstr "Git för dagligt bruk i ungefär 20 kommandon"
+
+#~ msgid "Could not open '%s' for writing"
+#~ msgstr "Kunde inte öppna \"%s\" för skrivning"
+
+#~ msgid ""
+#~ "unexpected 1st line of squash message:\n"
+#~ "\n"
+#~ "\t%.*s"
+#~ msgstr ""
+#~ "oväntad första rad i squash-meddelande:\n"
+#~ "\n"
+#~ "\t%.*s"
+
+#~ msgid ""
+#~ "invalid 1st line of squash message:\n"
+#~ "\n"
+#~ "\t%.*s"
+#~ msgstr ""
+#~ "ogiltig första rad i squash-meddelande:\n"
+#~ "\n"
+#~ "\t%.*s"
+
+#~ msgid "BUG: returned path string doesn't match cwd?"
+#~ msgstr "BUG: returnerad sökvägssträng matchar inte cwd?"
+
+#~ msgid "Error in object"
+#~ msgstr "Fel i objekt"
+
 #~ msgid "git fetch-pack: expected ACK/NAK, got EOF"
 #~ msgstr "git fetch-patch: förväntade ACK/NAK, fick EOF"
 
@@ -17199,9 +18320,6 @@ msgstr "Vill du verkligen sända %s? [y=ja, n=nej]: "
 #~ msgid "blob object"
 #~ msgstr "blob-objekt"
 
-#~ msgid "other tag object"
-#~ msgstr "annat taggobjekt"
-
 #~ msgid ""
 #~ "There is nothing to exclude from by :(exclude) patterns.\n"
 #~ "Perhaps you forgot to add either ':/' or '.' ?"
@@ -17571,9 +18689,6 @@ msgstr "Vill du verkligen sända %s? [y=ja, n=nej]: "
 #~ msgstr ""
 #~ "Köa dina ändringar i .gitmodules eller använd \"stash\" för att fortsätta"
 
-#~ msgid "could not verify the tag '%s'"
-#~ msgstr "kunde inte bekräfta taggen \"%s\""
-
 #~ msgid "failed to remove: %s"
 #~ msgstr "misslyckades ta bort: %s"
 
@@ -17775,9 +18890,6 @@ msgstr "Vill du verkligen sända %s? [y=ja, n=nej]: "
 #~ msgid "no branch specified"
 #~ msgstr "inget grennamn angavs"
 
-#~ msgid "check a branch out in a separate working directory"
-#~ msgstr "checka ut en gren i separat arbetskatalog"
-
 #~ msgid "prune .git/worktrees"
 #~ msgstr "rensa .git/worktrees"
 
@@ -17979,9 +19091,6 @@ msgstr "Vill du verkligen sända %s? [y=ja, n=nej]: "
 #~ msgid "more than %d trees given: '%s'"
 #~ msgstr "mer än %d träd angavs: \"%s\""
 
-#~ msgid "You cannot combine --no-ff with --ff-only."
-#~ msgstr "Du kan inte kombinera --no-ff med --ff-only."
-
 #~ msgid ""
 #~ "'%s' has changes staged in the index\n"
 #~ "(use --cached to keep the file, or -f to force removal)"
index 1ad2005ef0f4ff81e47739ac5b6c4178381f6c6c..dbc028bca75a36f1aff0f050df5783c9ee010143 100644 (file)
--- a/po/vi.po
+++ b/po/vi.po
@@ -6,10 +6,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: git v2.17.0\n"
+"Project-Id-Version: git v2.18.0.round3\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2018-03-16 07:29+0800\n"
-"PO-Revision-Date: 2018-03-17 07:50+0700\n"
+"POT-Creation-Date: 2018-06-16 22:06+0800\n"
+"PO-Revision-Date: 2018-06-17 07:06+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"
@@ -22,69 +22,69 @@ msgstr ""
 "X-Poedit-Basepath: ../\n"
 "X-Generator: Gtranslator 2.91.7\n"
 
-#: advice.c:62
+#: advice.c:92
 #, c-format
-msgid "hint: %.*s\n"
-msgstr "gợi ý: %.*s\n"
+msgid "%shint: %.*s%s\n"
+msgstr "%sgợi ý: %.*s%s\n"
 
-#: advice.c:90
+#: advice.c:137
 msgid "Cherry-picking is not possible because you have unmerged files."
 msgstr ""
-"Cherry là không thể thực hiện bởi vì bạn có những tập tin chưa được hòa trộn."
+"Cherry-picking là không thể thực hiện bởi vì bạn có những tập tin chưa được "
+"hòa trộn."
 
-#: advice.c:92
+#: advice.c:139
 msgid "Committing is not possible because you have unmerged files."
 msgstr ""
 "Commit là không thể thực hiện bởi vì bạn có những tập tin chưa được hòa trộn."
 
-#: advice.c:94
+#: advice.c:141
 msgid "Merging is not possible because you have unmerged files."
 msgstr ""
 "Merge là không thể thực hiện bởi vì bạn có những tập tin chưa được hòa trộn."
 
-#: advice.c:96
+#: advice.c:143
 msgid "Pulling is not possible because you have unmerged files."
 msgstr ""
 "Pull là không thể thực hiện bởi vì bạn có những tập tin chưa được hòa trộn."
 
-#: advice.c:98
+#: advice.c:145
 msgid "Reverting is not possible because you have unmerged files."
 msgstr ""
 "Revert là không thể thực hiện bởi vì bạn có những tập tin chưa được hòa trộn."
 
-#: advice.c:100
+#: advice.c:147
 #, c-format
 msgid "It is not possible to %s because you have unmerged files."
 msgstr ""
 "Nó là không thể thực hiện với %s bởi vì bạn có những tập tin chưa được hòa "
 "trộn."
 
-#: advice.c:108
+#: advice.c:155
 msgid ""
 "Fix them up in the work tree, and then use 'git add/rm <file>'\n"
 "as appropriate to mark resolution and make a commit."
 msgstr ""
-"Sửa chúng trong cây làm việc,\n"
-"và sau đó dùng lệnh “git add/rm <tập-tin>”\n"
+"Sửa chúng trong cây làm việc, và sau đó dùng lệnh “git add/rm <tập-tin>”\n"
 "dành riêng cho việc đánh dấu cần giải quyết và tạo lần chuyển giao."
 
-#: advice.c:116
+#: advice.c:163
 msgid "Exiting because of an unresolved conflict."
 msgstr "Thoát ra bởi vì xung đột không thể giải quyết."
 
-#: advice.c:121 builtin/merge.c:1251
+#: advice.c:168 builtin/merge.c:1250
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "Bạn chưa kết thúc việc hòa trộn (MERGE_HEAD vẫn tồn tại)."
 
-#: advice.c:123
+#: advice.c:170
 msgid "Please, commit your changes before merging."
 msgstr "Vui lòng chuyển giao các thay đổi trước khi hòa trộn."
 
-#: advice.c:124
+#: advice.c:171
 msgid "Exiting because of unfinished merge."
 msgstr "Thoát ra bởi vì việc hòa trộn không hoàn tất."
 
-#: advice.c:130
+#: advice.c:177
 #, c-format
 msgid ""
 "Note: checking out '%s'.\n"
@@ -354,7 +354,7 @@ msgstr "gặp lỗi khi vá: %s:%ld"
 msgid "cannot checkout %s"
 msgstr "không thể lấy ra %s"
 
-#: apply.c:3396 apply.c:3407 apply.c:3453 setup.c:277
+#: apply.c:3396 apply.c:3407 apply.c:3453 setup.c:278
 #, c-format
 msgid "failed to read %s"
 msgstr "gặp lỗi khi đọc %s"
@@ -552,7 +552,7 @@ msgstr[0] "Đang áp dụng miếng vá %%s với %d lần từ chối…"
 msgid "truncating .rej filename to %.*s.rej"
 msgstr "đang cắt ngắn tên tập tin .rej thành %.*s.rej"
 
-#: apply.c:4545 builtin/fetch.c:775 builtin/fetch.c:1025
+#: apply.c:4545 builtin/fetch.c:786 builtin/fetch.c:1036
 #, c-format
 msgid "cannot open %s"
 msgstr "không mở được “%s”"
@@ -603,15 +603,15 @@ msgid "%d line applied after fixing whitespace errors."
 msgid_plural "%d lines applied after fixing whitespace errors."
 msgstr[0] "%d dòng được áp dụng sau khi sửa các lỗi khoảng trắng."
 
-#: apply.c:4894 builtin/add.c:539 builtin/mv.c:298 builtin/rm.c:390
+#: apply.c:4894 builtin/add.c:538 builtin/mv.c:300 builtin/rm.c:389
 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"
 
 #: apply.c:4921 apply.c:4924 builtin/am.c:2254 builtin/am.c:2257
-#: builtin/clone.c:118 builtin/fetch.c:127 builtin/pull.c:193
-#: builtin/submodule--helper.c:403 builtin/submodule--helper.c:1197
-#: builtin/submodule--helper.c:1200 builtin/submodule--helper.c:1567
-#: builtin/submodule--helper.c:1570 builtin/submodule--helper.c:1787
+#: builtin/clone.c:120 builtin/fetch.c:126 builtin/pull.c:198
+#: builtin/submodule--helper.c:405 builtin/submodule--helper.c:1210
+#: builtin/submodule--helper.c:1213 builtin/submodule--helper.c:1584
+#: builtin/submodule--helper.c:1587 builtin/submodule--helper.c:1807
 #: git-add--interactive.perl:197
 msgid "path"
 msgstr "đường-dẫn"
@@ -690,7 +690,7 @@ msgstr "đảm bảo rằng có ít nhất <n> dòng nội dung khớp"
 
 #: apply.c:4960 builtin/am.c:2242 builtin/interpret-trailers.c:95
 #: builtin/interpret-trailers.c:97 builtin/interpret-trailers.c:99
-#: builtin/pack-objects.c:3035
+#: builtin/pack-objects.c:3177
 msgid "action"
 msgstr "hành động"
 
@@ -718,9 +718,9 @@ msgstr "để lại khối dữ liệu bị từ chối trong các tập tin *.r
 msgid "allow overlapping hunks"
 msgstr "cho phép chồng khối nhớ"
 
-#: apply.c:4977 builtin/add.c:292 builtin/check-ignore.c:21
-#: builtin/commit.c:1276 builtin/count-objects.c:96 builtin/fsck.c:665
-#: builtin/log.c:1901 builtin/mv.c:123 builtin/read-tree.c:125
+#: apply.c:4977 builtin/add.c:290 builtin/check-ignore.c:21
+#: builtin/commit.c:1301 builtin/count-objects.c:98 builtin/fsck.c:666
+#: builtin/log.c:1901 builtin/mv.c:122 builtin/read-tree.c:124
 msgid "be verbose"
 msgstr "chi tiết"
 
@@ -760,98 +760,98 @@ msgstr ""
 msgid "git archive --remote <repo> [--exec <cmd>] --list"
 msgstr "git archive --remote <kho> [--exec <lệnh>] --list"
 
-#: archive.c:351 builtin/add.c:176 builtin/add.c:515 builtin/rm.c:299
+#: archive.c:351 builtin/add.c:176 builtin/add.c:514 builtin/rm.c:298
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "đặc tả đường dẫn “%s” không khớp với bất kỳ tập tin nào"
 
-#: archive.c:436
+#: archive.c:434
 msgid "fmt"
 msgstr "định_dạng"
 
-#: archive.c:436
+#: archive.c:434
 msgid "archive format"
 msgstr "định dạng lưu trữ"
 
-#: archive.c:437 builtin/log.c:1462
+#: archive.c:435 builtin/log.c:1462
 msgid "prefix"
 msgstr "tiền_tố"
 
-#: archive.c:438
+#: archive.c:436
 msgid "prepend prefix to each pathname in the archive"
 msgstr "nối thêm tiền tố vào từng đường dẫn tập tin trong kho lưu"
 
-#: archive.c:439 builtin/blame.c:702 builtin/blame.c:703 builtin/config.c:62
-#: builtin/fast-export.c:1005 builtin/fast-export.c:1007 builtin/grep.c:869
+#: archive.c:437 builtin/blame.c:813 builtin/blame.c:814 builtin/config.c:127
+#: builtin/fast-export.c:1007 builtin/fast-export.c:1009 builtin/grep.c:869
 #: builtin/hash-object.c:103 builtin/ls-files.c:551 builtin/ls-files.c:554
-#: builtin/notes.c:405 builtin/notes.c:568 builtin/read-tree.c:120
+#: builtin/notes.c:405 builtin/notes.c:568 builtin/read-tree.c:119
 #: parse-options.h:165
 msgid "file"
 msgstr "tập_tin"
 
-#: archive.c:440 builtin/archive.c:89
+#: archive.c:438 builtin/archive.c:89
 msgid "write the archive to this file"
 msgstr "ghi kho lưu vào tập tin này"
 
-#: archive.c:442
+#: archive.c:440
 msgid "read .gitattributes in working directory"
 msgstr "đọc .gitattributes trong thư mục làm việc"
 
-#: archive.c:443
+#: archive.c:441
 msgid "report archived files on stderr"
 msgstr "liệt kê các tập tin được lưu trữ vào stderr (đầu ra lỗi tiêu chuẩn)"
 
-#: archive.c:444
+#: archive.c:442
 msgid "store only"
 msgstr "chỉ lưu (không nén)"
 
-#: archive.c:445
+#: archive.c:443
 msgid "compress faster"
 msgstr "nén nhanh hơn"
 
-#: archive.c:453
+#: archive.c:451
 msgid "compress better"
 msgstr "nén nhỏ hơn"
 
-#: archive.c:456
+#: archive.c:454
 msgid "list supported archive formats"
 msgstr "liệt kê các kiểu nén được hỗ trợ"
 
-#: archive.c:458 builtin/archive.c:90 builtin/clone.c:108 builtin/clone.c:111
-#: builtin/submodule--helper.c:1209 builtin/submodule--helper.c:1576
+#: archive.c:456 builtin/archive.c:90 builtin/clone.c:110 builtin/clone.c:113
+#: builtin/submodule--helper.c:1222 builtin/submodule--helper.c:1593
 msgid "repo"
 msgstr "kho"
 
-#: archive.c:459 builtin/archive.c:91
+#: archive.c:457 builtin/archive.c:91
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "nhận kho nén từ kho chứa <kho> trên máy chủ"
 
-#: archive.c:460 builtin/archive.c:92 builtin/notes.c:489
+#: archive.c:458 builtin/archive.c:92 builtin/notes.c:489
 msgid "command"
 msgstr "lệnh"
 
-#: archive.c:461 builtin/archive.c:93
+#: archive.c:459 builtin/archive.c:93
 msgid "path to the remote git-upload-archive command"
 msgstr "đường dẫn đến lệnh git-upload-pack trên máy chủ"
 
-#: archive.c:468
+#: archive.c:466
 msgid "Unexpected option --remote"
 msgstr "Gặp tùy chọn --remote không cần"
 
-#: archive.c:470
+#: archive.c:468
 msgid "Option --exec can only be used together with --remote"
 msgstr "Tùy chọn --exec chỉ có thể được dùng cùng với --remote"
 
-#: archive.c:472
+#: archive.c:470
 msgid "Unexpected option --output"
 msgstr "Gặp tùy chọn không cần --output"
 
-#: archive.c:494
+#: archive.c:492
 #, c-format
 msgid "Unknown archive format '%s'"
 msgstr "Không hiểu định dạng “%s”"
 
-#: archive.c:501
+#: archive.c:499
 #, c-format
 msgid "Argument not supported for format '%s': -%d"
 msgstr "Tham số không được hỗ trợ cho định dạng “%s”: -%d"
@@ -869,22 +869,22 @@ msgstr ""
 "Các mẫu dạng phủ định bị cấm dùng cho các thuộc tính của git\n"
 "Dùng “\\!” cho các chuỗi văn bản có dấu chấm than dẫn đầu."
 
-#: bisect.c:460
+#: bisect.c:461
 #, c-format
 msgid "Badly quoted content in file '%s': %s"
 msgstr "nội dung được trích dẫn sai tập tin “%s”: %s"
 
-#: bisect.c:668
+#: bisect.c:669
 #, c-format
 msgid "We cannot bisect more!\n"
 msgstr "Chúng tôi không bisect thêm nữa!\n"
 
-#: bisect.c:722
+#: bisect.c:723
 #, c-format
 msgid "Not a valid commit name %s"
 msgstr "Không phải tên đối tượng commit %s hợp lệ"
 
-#: bisect.c:746
+#: bisect.c:747
 #, c-format
 msgid ""
 "The merge base %s is bad.\n"
@@ -893,7 +893,7 @@ msgstr ""
 "Hòa trộn trên %s là sai.\n"
 "Điều đó có nghĩa là lỗi đã được sửa chữa giữa %s và [%s].\n"
 
-#: bisect.c:751
+#: bisect.c:752
 #, c-format
 msgid ""
 "The merge base %s is new.\n"
@@ -902,7 +902,7 @@ msgstr ""
 "Hòa trộn trên %s là mới.\n"
 "Gần như chắc chắn là có thay đổi giữa %s và [%s].\n"
 
-#: bisect.c:756
+#: bisect.c:757
 #, c-format
 msgid ""
 "The merge base %s is %s.\n"
@@ -911,7 +911,7 @@ msgstr ""
 "Hòa trộn trên %s là %s.\n"
 "Điều đó có nghĩa là lần chuyển giao “%s” đầu tiên là giữa %s và [%s].\n"
 
-#: bisect.c:764
+#: bisect.c:765
 #, c-format
 msgid ""
 "Some %s revs are not ancestors of the %s rev.\n"
@@ -922,7 +922,7 @@ msgstr ""
 "git bisect không thể làm việc đúng đắn trong trường hợp này.\n"
 "Liệu có phải bạn nhầm lẫn các điểm %s và %s không?\n"
 
-#: bisect.c:777
+#: bisect.c:778
 #, c-format
 msgid ""
 "the merge base between %s and [%s] must be skipped.\n"
@@ -934,36 +934,36 @@ msgstr ""
 "%s.\n"
 "Chúng tôi vẫn cứ tiếp tục."
 
-#: bisect.c:810
+#: bisect.c:811
 #, c-format
 msgid "Bisecting: a merge base must be tested\n"
 msgstr "Bisecting: nền hòa trộn cần phải được kiểm tra\n"
 
-#: bisect.c:850
+#: bisect.c:851
 #, c-format
 msgid "a %s revision is needed"
 msgstr "cần một điểm xét duyệt %s"
 
-#: bisect.c:869 builtin/notes.c:175 builtin/tag.c:235
+#: bisect.c:870 builtin/notes.c:175 builtin/tag.c:236
 #, c-format
 msgid "could not create file '%s'"
 msgstr "không thể tạo tập tin “%s”"
 
-#: bisect.c:920
+#: bisect.c:921
 #, c-format
 msgid "could not read file '%s'"
 msgstr "không thể đọc tập tin “%s”"
 
-#: bisect.c:950
+#: bisect.c:951
 msgid "reading bisect refs failed"
 msgstr "việc đọc tham chiếu bisect gặp lỗi"
 
-#: bisect.c:969
+#: bisect.c:970
 #, c-format
 msgid "%s was both %s and %s\n"
 msgstr "%s là cả %s và %s\n"
 
-#: bisect.c:977
+#: bisect.c:978
 #, c-format
 msgid ""
 "No testable commit found.\n"
@@ -972,7 +972,7 @@ msgstr ""
 "không tìm thấy lần chuyển giao kiểm tra được nào.\n"
 "Có lẽ bạn bắt đầu với các tham số đường dẫn sai?\n"
 
-#: bisect.c:996
+#: bisect.c:997
 #, c-format
 msgid "(roughly %d step)"
 msgid_plural "(roughly %d steps)"
@@ -981,50 +981,50 @@ msgstr[0] "(ước chừng %d bước)"
 #. TRANSLATORS: the last %s will be replaced with "(roughly %d
 #. steps)" translation.
 #.
-#: bisect.c:1002
+#: bisect.c:1003
 #, c-format
 msgid "Bisecting: %d revision left to test after this %s\n"
 msgid_plural "Bisecting: %d revisions left to test after this %s\n"
 msgstr[0] "Bisecting: còn %d điểm xét duyệt để kiểm sau %s này\n"
 
-#: blame.c:1758
+#: blame.c:1756
 msgid "--contents and --reverse do not blend well."
 msgstr "tùy chọn--contents và --reverse không được trộn vào nhau."
 
-#: blame.c:1769
+#: blame.c:1767
 msgid "cannot use --contents with final commit object name"
 msgstr "không thể dùng --contents với tên đối tượng chuyển giao cuối cùng"
 
-#: blame.c:1789
+#: blame.c:1787
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr ""
 "--reverse và --first-parent cùng nhau cần chỉ định lần chuyển giao cuối"
 
-#: blame.c:1798 bundle.c:160 ref-filter.c:1978 sequencer.c:1699
-#: sequencer.c:2901 builtin/commit.c:976 builtin/log.c:366 builtin/log.c:920
-#: builtin/log.c:1371 builtin/log.c:1702 builtin/log.c:1950 builtin/merge.c:370
-#: builtin/shortlog.c:191
+#: blame.c:1796 bundle.c:160 ref-filter.c:2075 sequencer.c:1861
+#: sequencer.c:3632 builtin/commit.c:981 builtin/log.c:366 builtin/log.c:920
+#: builtin/log.c:1371 builtin/log.c:1702 builtin/log.c:1950 builtin/merge.c:372
+#: 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"
 
-#: blame.c:1816
+#: blame.c:1814
 msgid ""
 "--reverse --first-parent together require range along first-parent chain"
 msgstr ""
 "--reverse --first-parent cùng nhau yêu cầu vùng cùng với chuỗi cha-mẹ-đầu-"
 "tiên"
 
-#: blame.c:1827
+#: blame.c:1825
 #, c-format
 msgid "no such path %s in %s"
 msgstr "không có đường dẫn %s trong “%s”"
 
-#: blame.c:1838
+#: blame.c:1836
 #, c-format
 msgid "cannot read blob %s for path %s"
 msgstr "không thể đọc blob %s cho đường dẫn “%s”"
 
-#: branch.c:53
+#: branch.c:54
 #, c-format
 msgid ""
 "\n"
@@ -1037,90 +1037,90 @@ msgstr ""
 "thông tin theo dõi máy chủ bằng cách gọi lệnh\n"
 "\"git branch --set-upstream-to=%s%s%s\"."
 
-#: branch.c:67
+#: branch.c:68
 #, c-format
 msgid "Not setting branch %s as its own upstream."
 msgstr "Chưa cài đặt nhánh %s như là thượng nguồn của nó."
 
-#: branch.c:93
+#: branch.c:94
 #, c-format
 msgid "Branch '%s' set up to track remote branch '%s' from '%s' by rebasing."
 msgstr ""
 "Nhánh “%s” cài đặt để theo dõi nhánh máy chủ “%s” từ “%s” bằng cách rebase."
 
-#: branch.c:94
+#: branch.c:95
 #, c-format
 msgid "Branch '%s' set up to track remote branch '%s' from '%s'."
 msgstr "Nhánh “%s” cài đặt để theo dõi nhánh máy chủ “%s” từ “%s”."
 
-#: branch.c:98
+#: branch.c:99
 #, c-format
 msgid "Branch '%s' set up to track local branch '%s' by rebasing."
 msgstr "Nhánh “%s” cài đặt để theo dõi nhánh nội bộ “%s” bằng cách rebase."
 
-#: branch.c:99
+#: branch.c:100
 #, c-format
 msgid "Branch '%s' set up to track local branch '%s'."
 msgstr "Nhánh “%s” cài đặt để theo dõi nhánh nội bộ “%s”."
 
-#: branch.c:104
+#: branch.c:105
 #, c-format
 msgid "Branch '%s' set up to track remote ref '%s' by rebasing."
 msgstr ""
 "Nhánh “%s” cài đặt để theo dõi tham chiếu máy chủ “%s” bằng cách rebase."
 
-#: branch.c:105
+#: branch.c:106
 #, c-format
 msgid "Branch '%s' set up to track remote ref '%s'."
 msgstr "Nhánh “%s” cài đặt để theo dõi tham chiếu máy chủ “%s”."
 
-#: branch.c:109
+#: branch.c:110
 #, c-format
 msgid "Branch '%s' set up to track local ref '%s' by rebasing."
 msgstr ""
 "Nhánh “%s” cài đặt để theo dõi tham chiếu nội bộ “%s” bằng cách rebase."
 
-#: branch.c:110
+#: branch.c:111
 #, c-format
 msgid "Branch '%s' set up to track local ref '%s'."
 msgstr "Nhánh “%s” cài đặt để theo dõi tham chiếu nội bộ “%s”."
 
-#: branch.c:119
+#: branch.c:120
 msgid "Unable to write upstream branch configuration"
 msgstr "Không thể ghi cấu hình nhánh thượng nguồn"
 
-#: branch.c:156
+#: branch.c:157
 #, c-format
 msgid "Not tracking: ambiguous information for ref %s"
 msgstr "Không theo dõi: thông tin chưa rõ ràng cho tham chiếu %s"
 
-#: branch.c:189
+#: branch.c:190
 #, c-format
 msgid "'%s' is not a valid branch name."
 msgstr "“%s” không phải là một tên nhánh hợp lệ."
 
-#: branch.c:208
+#: branch.c:209
 #, c-format
 msgid "A branch named '%s' already exists."
 msgstr "Đã có nhánh mang tên “%s”."
 
-#: branch.c:213
+#: branch.c:214
 msgid "Cannot force update the current branch."
 msgstr "Không thể ép buộc cập nhật nhánh hiện hành."
 
-#: branch.c:233
+#: branch.c:234
 #, c-format
 msgid "Cannot setup tracking information; starting point '%s' is not a branch."
 msgstr ""
 "Không thể cài đặt thông tin theo dõi; điểm bắt đầu “%s” không phải là một "
 "nhánh."
 
-#: branch.c:235
+#: branch.c:236
 #, c-format
 msgid "the requested upstream branch '%s' does not exist"
 msgstr "nhánh thượng nguồn đã yêu cầu “%s” không tồn tại"
 
-#: branch.c:237
+#: branch.c:238
 msgid ""
 "\n"
 "If you are planning on basing your work on an upstream\n"
@@ -1140,27 +1140,27 @@ msgstr ""
 "sẽ theo dõi bản đối chiếu máy chủ của nó, bạn cần dùng lệnh\n"
 "\"git push -u\" để đặt cấu hình thượng nguồn bạn muốn push."
 
-#: branch.c:280
+#: branch.c:281
 #, c-format
 msgid "Not a valid object name: '%s'."
 msgstr "Không phải tên đối tượng hợp lệ: “%s”."
 
-#: branch.c:300
+#: branch.c:301
 #, c-format
 msgid "Ambiguous object name: '%s'."
 msgstr "Tên đối tượng chưa rõ ràng: “%s”."
 
-#: branch.c:305
+#: branch.c:306
 #, c-format
 msgid "Not a valid branch point: '%s'."
 msgstr "Nhánh không hợp lệ: “%s”."
 
-#: branch.c:359
+#: branch.c:360
 #, c-format
 msgid "'%s' is already checked out at '%s'"
 msgstr "“%s” đã được lấy ra tại “%s” rồi"
 
-#: branch.c:382
+#: branch.c:383
 #, c-format
 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"
@@ -1175,7 +1175,7 @@ msgstr "“%s” không giống như tập tin v2 bundle (định dạng dump c
 msgid "unrecognized header: %s%s (%d)"
 msgstr "phần đầu không được thừa nhận: %s%s (%d)"
 
-#: bundle.c:88 sequencer.c:1879 sequencer.c:2337 builtin/commit.c:750
+#: bundle.c:88 sequencer.c:2081 sequencer.c:2558 builtin/commit.c:755
 #, c-format
 msgid "could not open '%s'"
 msgstr "không thể mở “%s”"
@@ -1217,7 +1217,7 @@ msgstr "rev-list đã chết"
 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:450 builtin/log.c:183 builtin/log.c:1607 builtin/shortlog.c:296
+#: bundle.c:450 builtin/log.c:183 builtin/log.c:1607 builtin/shortlog.c:303
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "đối số không được thừa nhận: %s"
@@ -1240,18 +1240,39 @@ msgstr "mục lục gói đã chết"
 msgid "invalid color value: %.*s"
 msgstr "giá trị màu không hợp lệ: %.*s"
 
-#: commit.c:41 sequencer.c:2141 builtin/am.c:421 builtin/am.c:465
-#: builtin/am.c:1436 builtin/am.c:2072
+#: commit.c:43 sequencer.c:2364 builtin/am.c:421 builtin/am.c:465
+#: builtin/am.c:1436 builtin/am.c:2072 builtin/replace.c:376
+#: builtin/replace.c:448
 #, c-format
 msgid "could not parse %s"
 msgstr "không thể phân tích cú pháp %s"
 
-#: commit.c:43
+#: commit.c:45
 #, c-format
 msgid "%s %s is not a commit!"
 msgstr "%s %s không phải là một lần chuyển giao!"
 
-#: commit.c:1506
+#: commit.c:182
+msgid ""
+"Support for <GIT_DIR>/info/grafts is deprecated\n"
+"and will be removed in a future Git version.\n"
+"\n"
+"Please use \"git replace --convert-graft-file\"\n"
+"to convert the grafts into replace refs.\n"
+"\n"
+"Turn this message off by running\n"
+"\"git config advice.graftFileDeprecated false\""
+msgstr ""
+"Việc hỗ trợ cho <GIT_DIR>/info/grafts đã lạc hậu\n"
+"và sẽ bị xóa bỏ ở phiên bản Git tương lai.\n"
+"\n"
+"Vui lòng dùng \"git replace --convert-graft-file\"\n"
+"để chuyển đổi các graft thành các tham chiếu thay thế.\n"
+"\n"
+"Tắt lời nhắn này bằng cách chạy\n"
+"\"git config advice.graftFileDeprecated false\""
+
+#: commit.c:1540
 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"
@@ -1261,173 +1282,187 @@ msgstr ""
 "Bạn có lẽ muốn tu bổ nó sau khi sửa lời chú thích, hoặc là đặt biến\n"
 "cấu hình i18n.commitencoding thành bảng mã mà dự án của bạn muốn dùng.\n"
 
+#: commit-graph.c:669
+#, 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:696
+msgid "too many commits to write graph"
+msgstr "có quá nhiều lần chuyển giao để ghi đồ thị"
+
+#: commit-graph.c:707 builtin/init-db.c:516 builtin/init-db.c:521
+#, c-format
+msgid "cannot mkdir %s"
+msgstr "không thể mkdir (tạo thư mục): %s"
+
 #: compat/obstack.c:405 compat/obstack.c:407
 msgid "memory exhausted"
 msgstr "hết bộ nhớ"
 
-#: config.c:186
+#: config.c:187
 msgid "relative config include conditionals must come from files"
 msgstr "các điều kiện bao gồm cấu hình liên quan phải đến từ các tập tin"
 
-#: config.c:720
+#: config.c:788
 #, c-format
 msgid "bad config line %d in blob %s"
 msgstr "tập tin cấu hình sai tại dòng %d trong blob %s"
 
-#: config.c:724
+#: config.c:792
 #, c-format
 msgid "bad config line %d in file %s"
 msgstr "cấu hình sai tại dòng %d trong tập tin %s"
 
-#: config.c:728
+#: config.c:796
 #, c-format
 msgid "bad config line %d in standard input"
 msgstr "cấu hình sai tại dòng %d trong đầu vào tiêu chuẩn"
 
-#: config.c:732
+#: config.c:800
 #, c-format
 msgid "bad config line %d in submodule-blob %s"
 msgstr "cấu hình sai tại dòng %d trong blob-mô-đun-con %s"
 
-#: config.c:736
+#: config.c:804
 #, c-format
 msgid "bad config line %d in command line %s"
 msgstr "cấu hình sai tại dòng %d trong dòng lệnh %s"
 
-#: config.c:740
+#: config.c:808
 #, c-format
 msgid "bad config line %d in %s"
 msgstr "cấu hình sai tại dòng %d trong %s"
 
-#: config.c:868
+#: config.c:936
 msgid "out of range"
 msgstr "nằm ngoài phạm vi"
 
-#: config.c:868
+#: config.c:936
 msgid "invalid unit"
 msgstr "đơn vị không hợp lệ"
 
-#: config.c:874
+#: config.c:942
 #, c-format
 msgid "bad numeric config value '%s' for '%s': %s"
 msgstr "sai giá trị bằng số của cấu hình “%s” cho “%s”: %s"
 
-#: config.c:879
+#: config.c:947
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
 msgstr "sai giá trị bằng số của cấu hình “%s” cho “%s” trong blob %s: %s"
 
-#: config.c:882
+#: config.c:950
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in file %s: %s"
 msgstr "sai giá trị bằng số của cấu hình “%s” cho “%s” trong tập tin %s: %s"
 
-#: config.c:885
+#: config.c:953
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
 msgstr ""
 "sai giá trị bằng số của cấu hình “%s” cho “%s” trong đầu vào tiêu chuẩn: %s"
 
-#: config.c:888
+#: config.c:956
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
 msgstr ""
 "sai giá trị bằng số của cấu hình “%s” cho “%s” trong submodule-blob %s: %s"
 
-#: config.c:891
+#: config.c:959
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
 msgstr "sai giá trị bằng số của cấu hình “%s” cho “%s” trong dòng lệnh %s: %s"
 
-#: config.c:894
+#: config.c:962
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in %s: %s"
 msgstr "sai giá trị bằng số của cấu hình “%s” cho “%s” trong %s: %s"
 
-#: config.c:989
+#: config.c:1057
 #, c-format
 msgid "failed to expand user dir in: '%s'"
 msgstr "gặp lỗi mở rộng thư mục người dùng trong: “%s”"
 
-#: config.c:998
+#: config.c:1066
 #, c-format
 msgid "'%s' for '%s' is not a valid timestamp"
 msgstr "“%s” dành cho “%s” không phải là dấu vết thời gian hợp lệ"
 
-#: config.c:1094 config.c:1105
+#: config.c:1171 config.c:1182
 #, c-format
 msgid "bad zlib compression level %d"
 msgstr "mức nén zlib %d là sai"
 
-#: config.c:1225
+#: config.c:1307
 #, c-format
 msgid "invalid mode for object creation: %s"
 msgstr "chế độ không hợp lệ đối với việc tạo đối tượng: %s"
 
-#: config.c:1386
+#: config.c:1473
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "mức nén gói %d không hợp lệ"
 
-#: config.c:1582
+#: config.c:1681
 msgid "unable to parse command-line config"
 msgstr "không thể phân tích cấu hình dòng lệnh"
 
-#: config.c:1914
+#: config.c:2013
 msgid "unknown error occurred while reading the configuration files"
 msgstr "đã có lỗi chưa biết xảy ra trong khi đọc các tập tin cấu hình"
 
-#: config.c:2101
+#: config.c:2200
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "%s không hợp lệ: “%s”"
 
-#: config.c:2144
+#: config.c:2243
 #, c-format
 msgid "unknown core.untrackedCache value '%s'; using 'keep' default value"
 msgstr ""
 "không hiểu giá trị core.untrackedCache “%s”; dùng giá trị mặc định “keep”"
 
-#: config.c:2170
+#: config.c:2269
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr "giá trị splitIndex.maxPercentChange “%d” phải nằm giữa 0 và 100"
 
-#: config.c:2195
+#: config.c:2294
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "không thể phân tích “%s” từ cấu hình dòng lệnh"
 
-#: config.c:2197
+#: config.c:2296
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "sai biến cấu hình “%s” trong tập tin “%s” tại dòng %d"
 
-#: config.c:2256
+#: config.c:2402
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s có đa giá trị"
 
-#: config.c:2599 config.c:2816
+#: config.c:2766 config.c:3019
 #, c-format
 msgid "fstat on %s failed"
 msgstr "fstat trên %s gặp lỗi"
 
-#: config.c:2706
+#: config.c:2905
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "không thể đặt “%s” thành “%s”"
 
-#: config.c:2708 builtin/remote.c:776
+#: config.c:2907 builtin/remote.c:779
 #, c-format
 msgid "could not unset '%s'"
 msgstr "không thể thôi đặt “%s”"
 
-#: connect.c:52
+#: connect.c:61
 msgid "The remote end hung up upon initial contact"
 msgstr "Máy chủ bị treo trên lần tiếp xúc đầu tiên"
 
-#: connect.c:54
+#: connect.c:63
 msgid ""
 "Could not read from remote repository.\n"
 "\n"
@@ -1439,7 +1474,7 @@ msgstr ""
 "Vui lòng chắc chắn là bạn có đủ thẩm quyền truy cập\n"
 "và kho chứa đã sẵn có."
 
-#: connected.c:66 builtin/fsck.c:198 builtin/prune.c:144
+#: connected.c:66 builtin/fsck.c:201 builtin/prune.c:145
 msgid "Checking connectivity"
 msgstr "Đang kiểm tra kết nối"
 
@@ -1455,12 +1490,12 @@ msgstr "gặp lỗi khi ghi vào rev-list"
 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"
 
-#: convert.c:205
+#: convert.c:206
 #, c-format
 msgid "CRLF would be replaced by LF in %s."
 msgstr "CRLF nên được thay bằng LF trong %s."
 
-#: convert.c:207
+#: convert.c:208
 #, c-format
 msgid ""
 "CRLF will be replaced by LF in %s.\n"
@@ -1469,12 +1504,12 @@ msgstr ""
 "CRLF sẽ bị thay thế bằng LF trong %s.\n"
 "Tập tin sẽ có kiểu xuống dòng như bản gốc trong thư mục làm việc của bạn."
 
-#: convert.c:215
+#: convert.c:216
 #, c-format
 msgid "LF would be replaced by CRLF in %s"
 msgstr "LF nên thay bằng CRLF trong %s"
 
-#: convert.c:217
+#: convert.c:218
 #, c-format
 msgid ""
 "LF will be replaced by CRLF in %s.\n"
@@ -1483,6 +1518,48 @@ msgstr ""
 "LF sẽ bị thay thế bằng CRLF trong %s.\n"
 "Tập tin sẽ có kiểu xuống dòng như bản gốc trong thư mục làm việc của bạn."
 
+#: convert.c:279
+#, c-format
+msgid "BOM is prohibited in '%s' if encoded as %s"
+msgstr "BOM bị cấm trong “%s” nếu được mã hóa là %s"
+
+#: convert.c:286
+#, c-format
+msgid ""
+"The file '%s' contains a byte order mark (BOM). Please use UTF-%s as working-"
+"tree-encoding."
+msgstr ""
+"Tập tin “%s” có chứa ký hiệu thứ tự byte (BOM). Vui lòng dùng UTF-%s như là "
+"bảng mã cây làm việc."
+
+#: convert.c:304
+#, c-format
+msgid "BOM is required in '%s' if encoded as %s"
+msgstr "BOM là bắt buộc trong “%s” nếu được mã hóa là %s"
+
+#: convert.c:306
+#, c-format
+msgid ""
+"The file '%s' is missing a byte order mark (BOM). Please use UTF-%sBE or UTF-"
+"%sLE (depending on the byte order) as working-tree-encoding."
+msgstr ""
+"Tập tin “%s” còn thiếu ký hiệu thứ tự byte (BOM). Vui lòng dùng UTF-%sBE hay "
+"UTF-%sLE (còn phục thuộc vào thứ tự byte) như là bảng mã cây làm việc."
+
+#: convert.c:424
+#, c-format
+msgid "failed to encode '%s' from %s to %s"
+msgstr "gặp lỗi khi mã hóa “%s”  từ “%s” sang “%s”"
+
+#: convert.c:467
+#, c-format
+msgid "encoding '%s' from %s to %s and back is not the same"
+msgstr "mã hóa “%s” từ %s thành %s và ngược trở lại không phải là cùng"
+
+#: convert.c:1225
+msgid "true/false are no valid working-tree-encodings"
+msgstr "true/false là không phải bảng mã cây làm việc hợp lệ "
+
 #: date.c:116
 msgid "in the future"
 msgstr "ở thời tương lai"
@@ -1588,24 +1665,24 @@ msgstr ""
 "Tìm thấy các lỗi trong biến cấu hình “diff.dirstat”:\n"
 "%s"
 
-#: diff.c:3822
+#: diff.c:3823
 #, 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:4146
+#: diff.c:4153
 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:4149
+#: diff.c:4156
 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:4237
+#: diff.c:4244
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow cần chính xác một đặc tả đường dẫn"
 
-#: diff.c:4403
+#: diff.c:4410
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -1614,22 +1691,22 @@ msgstr ""
 "Gặp lỗi khi phân tích đối số tùy chọn --dirstat/-X:\n"
 "%s"
 
-#: diff.c:4417
+#: diff.c:4424
 #, 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:5493
+#: diff.c:5500
 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:5496
+#: diff.c:5503
 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:5499
+#: diff.c:5506
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
@@ -1637,25 +1714,25 @@ msgstr ""
 "bạn có lẽ muốn đặt biến %s của bạn thành ít nhất là %d và thử lại lệnh lần "
 "nữa."
 
-#: dir.c:1866
+#: dir.c:1867
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "không thể mở thư mục “%s”"
 
-#: dir.c:2108
+#: dir.c:2109
 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:2232
+#: dir.c:2233
 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:3024 dir.c:3029
+#: dir.c:3075 dir.c:3080
 #, c-format
 msgid "could not create directories for %s"
 msgstr "không thể tạo thư mục cho %s"
 
-#: dir.c:3054
+#: dir.c:3109
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "không thể di cư thư mục git từ “%s” sang “%s”"
@@ -1678,202 +1755,206 @@ msgstr "không thể lấy thống kê tập tin “%s”"
 msgid "Remote with no URL"
 msgstr "Máy chủ không có địa chỉ URL"
 
-#: fetch-pack.c:253
+#: fetch-pack.c:254
 msgid "git fetch-pack: expected shallow list"
 msgstr "git fetch-pack: cần danh sách shallow"
 
-#: fetch-pack.c:265
+#: fetch-pack.c:266
 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:284 builtin/archive.c:63
+#: fetch-pack.c:285 builtin/archive.c:63
 #, c-format
 msgid "remote error: %s"
 msgstr "lỗi máy chủ: %s"
 
-#: fetch-pack.c:285
+#: fetch-pack.c:286
 #, 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:337
+#: fetch-pack.c:338
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc cần multi_ack_detailed"
 
-#: fetch-pack.c:428
+#: fetch-pack.c:429 fetch-pack.c:1310
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "dòng shallow không hợp lệ: %s"
 
-#: fetch-pack.c:434
+#: fetch-pack.c:435 fetch-pack.c:1316
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "dòng unshallow không hợp lệ: %s"
 
-#: fetch-pack.c:436
+#: fetch-pack.c:437 fetch-pack.c:1318
 #, c-format
 msgid "object not found: %s"
 msgstr "Không tìm thấy đối tượng: %s"
 
-#: fetch-pack.c:439
+#: fetch-pack.c:440 fetch-pack.c:1321
 #, c-format
 msgid "error in object: %s"
 msgstr "lỗi trong đối tượng: %s"
 
-#: fetch-pack.c:441
+#: fetch-pack.c:442 fetch-pack.c:1323
 #, c-format
 msgid "no shallow found: %s"
 msgstr "không tìm shallow nào: %s"
 
-#: fetch-pack.c:444
+#: fetch-pack.c:445 fetch-pack.c:1326
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "cần shallow/unshallow, nhưng lại nhận được %s"
 
-#: fetch-pack.c:485
+#: fetch-pack.c:486
 #, c-format
 msgid "got %s %d %s"
 msgstr "nhận %s %d - %s"
 
-#: fetch-pack.c:499
+#: fetch-pack.c:500
 #, c-format
 msgid "invalid commit %s"
 msgstr "lần chuyển giao %s không hợp lệ"
 
-#: fetch-pack.c:532
+#: fetch-pack.c:533
 msgid "giving up"
 msgstr "chịu thua"
 
-#: fetch-pack.c:542 progress.c:229
+#: fetch-pack.c:543 progress.c:229
 msgid "done"
 msgstr "xong"
 
-#: fetch-pack.c:554
+#: fetch-pack.c:555
 #, c-format
 msgid "got %s (%d) %s"
 msgstr "nhận %s (%d) %s"
 
-#: fetch-pack.c:600
+#: fetch-pack.c:601
 #, c-format
 msgid "Marking %s as complete"
 msgstr "Đánh dấu %s là đã hoàn thành"
 
-#: fetch-pack.c:788
+#: fetch-pack.c:828
 #, c-format
 msgid "already have %s (%s)"
 msgstr "đã sẵn có %s (%s)"
 
-#: fetch-pack.c:829
+#: fetch-pack.c:869
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack: không thể rẽ nhánh sideband demultiplexer"
 
-#: fetch-pack.c:837
+#: fetch-pack.c:877
 msgid "protocol error: bad pack header"
 msgstr "lỗi giao thức: phần đầu gói bị sai"
 
-#: fetch-pack.c:895
+#: fetch-pack.c:944
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack: không thể rẽ nhánh %s"
 
-#: fetch-pack.c:911
+#: fetch-pack.c:960
 #, c-format
 msgid "%s failed"
 msgstr "%s gặp lỗi"
 
-#: fetch-pack.c:913
+#: fetch-pack.c:962
 msgid "error in sideband demultiplexer"
 msgstr "có lỗi trong sideband demultiplexer"
 
-#: fetch-pack.c:940
+#: fetch-pack.c:989
 msgid "Server does not support shallow clients"
 msgstr "Máy chủ không hỗ trợ máy khách shallow"
 
-#: fetch-pack.c:944
+#: fetch-pack.c:993
 msgid "Server supports multi_ack_detailed"
 msgstr "Máy chủ hỗ trợ multi_ack_detailed"
 
-#: fetch-pack.c:947
+#: fetch-pack.c:996
 msgid "Server supports no-done"
 msgstr "Máy chủ hỗ trợ no-done"
 
-#: fetch-pack.c:953
+#: fetch-pack.c:1002
 msgid "Server supports multi_ack"
 msgstr "Máy chủ hỗ trợ multi_ack"
 
-#: fetch-pack.c:957
+#: fetch-pack.c:1006
 msgid "Server supports side-band-64k"
 msgstr "Máy chủ hỗ trợ side-band-64k"
 
-#: fetch-pack.c:961
+#: fetch-pack.c:1010
 msgid "Server supports side-band"
 msgstr "Máy chủ hỗ trợ side-band"
 
-#: fetch-pack.c:965
+#: fetch-pack.c:1014
 msgid "Server supports allow-tip-sha1-in-want"
 msgstr "Máy chủ hỗ trợ allow-tip-sha1-in-want"
 
-#: fetch-pack.c:969
+#: fetch-pack.c:1018
 msgid "Server supports allow-reachable-sha1-in-want"
 msgstr "Máy chủ hỗ trợ allow-reachable-sha1-in-want"
 
-#: fetch-pack.c:979
+#: fetch-pack.c:1028
 msgid "Server supports ofs-delta"
 msgstr "Máy chủ hỗ trợ ofs-delta"
 
-#: fetch-pack.c:985
+#: fetch-pack.c:1034 fetch-pack.c:1204
 msgid "Server supports filter"
 msgstr "Máy chủ hỗ trợ bộ lọc"
 
-#: fetch-pack.c:993
+#: fetch-pack.c:1042
 #, c-format
 msgid "Server version is %.*s"
 msgstr "Phiên bản máy chủ là %.*s"
 
-#: fetch-pack.c:999
+#: fetch-pack.c:1048
 msgid "Server does not support --shallow-since"
 msgstr "Máy chủ không hỗ trợ --shallow-since"
 
-#: fetch-pack.c:1003
+#: fetch-pack.c:1052
 msgid "Server does not support --shallow-exclude"
 msgstr "Máy chủ không hỗ trợ --shallow-exclude"
 
-#: fetch-pack.c:1005
+#: fetch-pack.c:1054
 msgid "Server does not support --deepen"
 msgstr "Máy chủ không hỗ trợ --deepen"
 
-#: fetch-pack.c:1016
+#: fetch-pack.c:1065
 msgid "no common commits"
 msgstr "không có lần chuyển giao chung nào"
 
-#: fetch-pack.c:1028
+#: fetch-pack.c:1077 fetch-pack.c:1414
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack: fetch gặp lỗi."
 
-#: fetch-pack.c:1190
+#: fetch-pack.c:1199
+msgid "Server does not support shallow requests"
+msgstr "Máy chủ không hỗ trợ yêu cầu shallow"
+
+#: fetch-pack.c:1584
 msgid "no matching remote head"
 msgstr "không khớp phần đầu máy chủ"
 
-#: fetch-pack.c:1212
+#: fetch-pack.c:1610
 #, 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:1215
+#: fetch-pack.c:1613
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr ""
 "Máy phục vụ không cho phép yêu cầu cho đối tượng không được báo trước %s"
 
-#: gpg-interface.c:181
+#: gpg-interface.c:185
 msgid "gpg failed to sign the data"
 msgstr "gpg gặp lỗi khi ký dữ liệu"
 
-#: gpg-interface.c:211
+#: gpg-interface.c:210
 msgid "could not create temporary file"
 msgstr "không thể tạo tập tin tạm thời"
 
-#: gpg-interface.c:214
+#: gpg-interface.c:213
 #, c-format
 msgid "failed writing detached signature to '%s'"
 msgstr "gặp lỗi khi ghi chữ ký đính kèm vào “%s”"
@@ -1883,36 +1964,97 @@ msgstr "gặp lỗi khi ghi chữ ký đính kèm vào “%s”"
 msgid "ignore invalid color '%.*s' in log.graphColors"
 msgstr "bỏ qua màu không hợp lệ “%.*s” trong log.graphColors"
 
-#: grep.c:2022
+#: grep.c:2020
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "“%s”: không thể đọc %s"
 
-#: grep.c:2039 setup.c:163 builtin/clone.c:407 builtin/diff.c:81
+#: grep.c:2037 setup.c:164 builtin/clone.c:409 builtin/diff.c:81
 #: builtin/rm.c:134
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "gặp lỗi khi lấy thống kê về “%s”"
 
-#: grep.c:2050
+#: grep.c:2048
 #, c-format
 msgid "'%s': short read"
 msgstr "“%s”: đọc ngắn"
 
-#: help.c:179
+#: help.c:23
+msgid "start a working area (see also: git help tutorial)"
+msgstr "bắt đầu một vùng làm việc (xem thêm: git help tutorial)"
+
+#: help.c:24
+msgid "work on the current change (see also: git help everyday)"
+msgstr "làm việc trên thay đổi hiện tại (xem thêm: git help everyday)"
+
+#: help.c:25
+msgid "examine the history and state (see also: git help revisions)"
+msgstr "xem xét lịch sử tình trạng (xem thêm: git help revisions)"
+
+#: help.c:26
+msgid "grow, mark and tweak your common history"
+msgstr "thêm, ghi dấu và chỉnh lịch sử chung của bạn"
+
+#: help.c:27
+msgid "collaborate (see also: git help workflows)"
+msgstr "làm việc nhóm (xem thêm: git help workflows)"
+
+#: help.c:31
+msgid "Main Porcelain Commands"
+msgstr "Các lệnh Porcelain chính"
+
+#: help.c:32
+msgid "Ancillary Commands / Manipulators"
+msgstr "Lệnh/thao tác thứ cấp"
+
+#: help.c:33
+msgid "Ancillary Commands / Interrogators"
+msgstr "Lệnh/bộ hỏi thứ cấp"
+
+#: help.c:34
+msgid "Interacting with Others"
+msgstr "Tương tác với những cái khác"
+
+#: help.c:35
+msgid "Low-level Commands / Manipulators"
+msgstr "Lệnh/thao tác ở mức thấp"
+
+#: help.c:36
+msgid "Low-level Commands / Interrogators"
+msgstr "Lệnh/bộ hỏi ở mức thấp"
+
+#: help.c:37
+msgid "Low-level Commands / Synching Repositories"
+msgstr "Lệnh/Đồng bộ kho ở mức thấp"
+
+#: help.c:38
+msgid "Low-level Commands / Internal Helpers"
+msgstr "Lệnh/Hỗ trợ nội tại ở mức thấp"
+
+#: help.c:293
 #, c-format
 msgid "available git commands in '%s'"
 msgstr "các lệnh git sẵn có trong thư mục “%s”:"
 
-#: help.c:186
+#: help.c:300
 msgid "git commands available from elsewhere on your $PATH"
 msgstr "các lệnh git sẵn có từ một nơi khác trong $PATH của bạn"
 
-#: help.c:217
+#: help.c:309
 msgid "These are common Git commands used in various situations:"
 msgstr "Có các lệnh Git chung được sử dụng trong các tình huống khác nhau:"
 
-#: help.c:281
+#: help.c:358 git.c:90
+#, c-format
+msgid "unsupported command listing type '%s'"
+msgstr "không hỗ trợ liệt kê lệnh kiểu “%s”"
+
+#: help.c:405
+msgid "The common Git guides are:"
+msgstr "Các chỉ dẫn chung về Git là:"
+
+#: help.c:467
 #, c-format
 msgid ""
 "'%s' appears to be a git command, but we were not\n"
@@ -1921,31 +2063,31 @@ msgstr ""
 "“%s” trông như là một lệnh git, nhưng chúng tôi không\n"
 "thể thực thi nó. Có lẽ là lệnh git-%s đã bị hỏng?"
 
-#: help.c:336
+#: help.c:526
 msgid "Uh oh. Your system reports no Git commands at all."
 msgstr "Ối chà. Hệ thống của bạn báo rằng chẳng có lệnh Git nào cả."
 
-#: help.c:358
+#: help.c:548
 #, c-format
 msgid "WARNING: You called a Git command named '%s', which does not exist."
 msgstr "CẢNH BÁO: Bạn đã gọi lệnh Git có tên “%s”, mà nó lại không có sẵn."
 
-#: help.c:363
+#: help.c:553
 #, c-format
 msgid "Continuing under the assumption that you meant '%s'."
 msgstr "Tiếp tục và coi rằng ý bạn là “%s”."
 
-#: help.c:368
+#: help.c:558
 #, c-format
 msgid "Continuing in %0.1f seconds, assuming that you meant '%s'."
 msgstr "Tiếp tục trong %0.1f giây,và coi rằng ý bạn là “%s”."
 
-#: help.c:376
+#: help.c:566
 #, c-format
 msgid "git: '%s' is not a git command. See 'git --help'."
 msgstr "git: “%s” không phải là một lệnh của git. Xem “git --help”."
 
-#: help.c:380
+#: help.c:570
 msgid ""
 "\n"
 "The most similar command is"
@@ -1956,16 +2098,16 @@ msgstr[0] ""
 "\n"
 "Những lệnh giống nhất là"
 
-#: help.c:395
+#: help.c:585
 msgid "git version [<options>]"
 msgstr "git version [<các-tùy-chọn>]"
 
-#: help.c:462
+#: help.c:652
 #, c-format
 msgid "%s: %s - %s"
 msgstr "%s: %s - %s"
 
-#: help.c:466
+#: help.c:656
 msgid ""
 "\n"
 "Did you mean this?"
@@ -2030,7 +2172,7 @@ msgstr "không cho phép tên định danh là rỗng (cho <%s>)"
 msgid "name consists only of disallowed characters: %s"
 msgstr "tên chỉ được phép bao gồm các ký tự sau: %s"
 
-#: ident.c:416 builtin/commit.c:582
+#: ident.c:416 builtin/commit.c:587
 #, c-format
 msgid "invalid date format: %s"
 msgstr "ngày tháng không hợp lệ: %s"
@@ -2067,82 +2209,166 @@ msgstr ""
 msgid "Unable to create '%s.lock': %s"
 msgstr "Không thể tạo “%s.lock”: %s"
 
-#: merge.c:74
+#: merge.c:71
 msgid "failed to read the cache"
 msgstr "gặp lỗi khi đọc bộ nhớ đệm"
 
-#: merge.c:134 builtin/am.c:1946 builtin/am.c:1980 builtin/checkout.c:378
-#: builtin/checkout.c:599 builtin/clone.c:759
+#: merge.c:136 builtin/am.c:1946 builtin/am.c:1980 builtin/checkout.c:378
+#: builtin/checkout.c:606 builtin/clone.c:761
 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"
 
-#: merge-recursive.c:235
+#: merge-recursive.c:298
 msgid "(bad commit)\n"
 msgstr "(commit sai)\n"
 
-#: merge-recursive.c:257 merge-recursive.c:265
+#: merge-recursive.c:320
+#, c-format
+msgid "add_cacheinfo failed for path '%s'; merge aborting."
+msgstr "addinfo_cache gặp lỗi đối với đường dẫn “%s”; việc hòa trộn bị bãi bỏ."
+
+#: merge-recursive.c:328
 #, c-format
-msgid "addinfo_cache failed for path '%s'"
-msgstr "addinfo_cache gặp lỗi đối với đường dẫn “%s”"
+msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+msgstr ""
+"addinfo_cache gặp lỗi khi làm mới đối với đường dẫn “%s”; việc hòa trộn bị "
+"bãi bỏ."
 
-#: merge-recursive.c:329
+#: merge-recursive.c:410
 msgid "error building trees"
 msgstr "gặp lỗi khi xây dựng cây"
 
-#: merge-recursive.c:771
+#: merge-recursive.c:881
 #, c-format
 msgid "failed to create path '%s'%s"
 msgstr "gặp lỗi khi tạo đường dẫn “%s”%s"
 
-#: merge-recursive.c:782
+#: merge-recursive.c:892
 #, c-format
 msgid "Removing %s to make room for subdirectory\n"
 msgstr "Gỡ bỏ %s để tạo chỗ (room) cho thư mục con\n"
 
-#: merge-recursive.c:796 merge-recursive.c:815
+#: merge-recursive.c:906 merge-recursive.c:925
 msgid ": perhaps a D/F conflict?"
 msgstr ": có lẽ là một xung đột D/F?"
 
-#: merge-recursive.c:805
+#: merge-recursive.c:915
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
 msgstr "từ chối đóng tập tin không được theo dõi tại “%s”"
 
-#: merge-recursive.c:847 builtin/cat-file.c:37
+#: merge-recursive.c:957 builtin/cat-file.c:37
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr "không thể đọc đối tượng %s “%s”"
 
-#: merge-recursive.c:849
+#: merge-recursive.c:959
 #, c-format
 msgid "blob expected for %s '%s'"
-msgstr "đối tượng blob được mong đợi cho %s “%s”"
+msgstr "mong đợi đối tượng blob cho %s “%s”"
 
-#: merge-recursive.c:873
+#: merge-recursive.c:983
 #, c-format
 msgid "failed to open '%s': %s"
 msgstr "gặp lỗi khi mở “%s”: %s"
 
-#: merge-recursive.c:884
+#: merge-recursive.c:994
 #, c-format
 msgid "failed to symlink '%s': %s"
 msgstr "gặp lỗi khi tạo liên kết mềm (symlink) “%s”: %s"
 
-#: merge-recursive.c:889
+#: merge-recursive.c:999
 #, c-format
 msgid "do not know what to do with %06o %s '%s'"
 msgstr "không hiểu phải làm gì với %06o %s “%s”"
 
-#: merge-recursive.c:1029
+#: merge-recursive.c:1186
+#, c-format
+msgid "Failed to merge submodule %s (not checked out)"
+msgstr "Gặp lỗi khi hòa trộn mô-đun-con “%s” (không lấy ra được)"
+
+#: merge-recursive.c:1193
+#, c-format
+msgid "Failed to merge submodule %s (commits not present)"
+msgstr "Gặp lỗi khi hòa trộn mô-đun-con “%s” (lần chuyển giao không hiện diện)"
+
+#: merge-recursive.c:1200
+#, c-format
+msgid "Failed to merge submodule %s (commits don't follow merge-base)"
+msgstr ""
+"Gặp lỗi khi hòa trộn mô-đun-con “%s” (lần chuyển giao không theo sau nền-hòa-"
+"trộn)"
+
+#: merge-recursive.c:1208 merge-recursive.c:1220
+#, c-format
+msgid "Fast-forwarding submodule %s to the following commit:"
+msgstr "Chuyển-tiếp-nhanh mô-đun-con “%s” đến lần chuyển giao sau đây:"
+
+#: merge-recursive.c:1211 merge-recursive.c:1223
+#, c-format
+msgid "Fast-forwarding submodule %s"
+msgstr "Chuyển-tiếp-nhanh mô-đun-con “%s”"
+
+#: merge-recursive.c:1245
+#, c-format
+msgid "Failed to merge submodule %s (merge following commits not found)"
+msgstr ""
+"Gặp lỗi khi hòa trộn mô-đun-con “%s” (không tìm thấy các lần chuyển giao "
+"theo sau hòa trộn)"
+
+#: merge-recursive.c:1249
+#, c-format
+msgid "Failed to merge submodule %s (not fast-forward)"
+msgstr "Gặp lỗi khi hòa trộn mô-đun-con “%s” (không chuyển tiếp nhanh được)"
+
+#: merge-recursive.c:1250
+msgid "Found a possible merge resolution for the submodule:\n"
+msgstr "Tìm thấy một giải pháp hòa trộn có thể cho mô-đun-con:\n"
+
+#: merge-recursive.c:1253
+#, c-format
+msgid ""
+"If this is correct simply add it to the index for example\n"
+"by using:\n"
+"\n"
+"  git update-index --cacheinfo 160000 %s \"%s\"\n"
+"\n"
+"which will accept this suggestion.\n"
+msgstr ""
+"Nếu đây là đúng đơn giản thêm nó vào mục lục ví dụ\n"
+"bằng cách dùng:\n"
+"\n"
+"  git update-index --cacheinfo 160000 %s \"%s\"\n"
+"\n"
+"cái mà sẽ chấp nhận gợi ý này.\n"
+
+#: merge-recursive.c:1262
+#, c-format
+msgid "Failed to merge submodule %s (multiple merges found)"
+msgstr "Gặp lỗi khi hòa trộn mô-đun-con “%s” (thấy nhiều hòa trộn đa trùng)"
+
+#: merge-recursive.c:1321
 msgid "Failed to execute internal merge"
 msgstr "Gặp lỗi khi thực hiện trộn nội bộ"
 
-#: merge-recursive.c:1034
+#: merge-recursive.c:1326
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "Không thể thêm %s vào cơ sở dữ liệu"
 
-#: merge-recursive.c:1146
+#: merge-recursive.c:1358
+#, c-format
+msgid "Auto-merging %s"
+msgstr "Tự-động-hòa-trộn %s"
+
+#: merge-recursive.c:1423
+#, c-format
+msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+msgstr ""
+"Lỗi: từ chối đóng tập tin không được theo dõi tại “%s”; thay vào đó ghi vào "
+"%s."
+
+#: merge-recursive.c:1475
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -2151,7 +2377,7 @@ msgstr ""
 "XUNG ĐỘT (%s/xóa): %s bị xóa trong %s và %s trong %s. Phiên bản %s của %s "
 "còn lại trong cây (tree)."
 
-#: merge-recursive.c:1151
+#: merge-recursive.c:1480
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -2160,7 +2386,7 @@ msgstr ""
 "XUNG ĐỘT (%s/xóa): %s bị xóa trong %s và %s đến %s trong %s. Phiên bản %s "
 "của %s còn lại trong cây (tree)."
 
-#: merge-recursive.c:1158
+#: merge-recursive.c:1487
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -2169,7 +2395,7 @@ msgstr ""
 "XUNG ĐỘT (%s/xóa): %s bị xóa trong %s và %s trong %s. Phiên bản %s của %s "
 "còn lại trong cây (tree) tại %s."
 
-#: merge-recursive.c:1163
+#: merge-recursive.c:1492
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -2178,20 +2404,33 @@ msgstr ""
 "XUNG ĐỘT (%s/xóa): %s bị xóa trong %s và %s đến %s trong %s. Phiên bản %s "
 "của %s còn lại trong cây (tree) tại %s."
 
-#: merge-recursive.c:1197
+#: merge-recursive.c:1526
 msgid "rename"
 msgstr "đổi tên"
 
-#: merge-recursive.c:1197
+#: merge-recursive.c:1526
 msgid "renamed"
 msgstr "đã đổi tên"
 
-#: merge-recursive.c:1254
+#: merge-recursive.c:1580 merge-recursive.c:1736 merge-recursive.c:2368
+#: merge-recursive.c:3086
+#, c-format
+msgid "Refusing to lose dirty file at %s"
+msgstr "Từ chối đóng tập tin không được theo dõi tại “%s”"
+
+#: merge-recursive.c:1594
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr "%s là một thư mục trong %s thay vào đó thêm vào như là %s"
 
-#: merge-recursive.c:1279
+#: merge-recursive.c:1599
+#, c-format
+msgid "Refusing to lose untracked file at %s; adding as %s instead"
+msgstr ""
+"Từ chối đóng tập tin không được theo dõi tại “%s”; thay vào đó đang thêm "
+"thành %s"
+
+#: merge-recursive.c:1625
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
@@ -2200,141 +2439,190 @@ msgstr ""
 "XUNG ĐỘT (đổi-tên/đổi-tên): Đổi tên \"%s\"->\"%s\" trong nhánh \"%s\" đổi "
 "tên \"%s\"->\"%s\" trong \"%s\"%s"
 
-#: merge-recursive.c:1284
+#: merge-recursive.c:1630
 msgid " (left unresolved)"
 msgstr " (cần giải quyết)"
 
-#: merge-recursive.c:1346
+#: merge-recursive.c:1694
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
 msgstr ""
 "XUNG ĐỘT (đổi-tên/đổi-tên): Đổi tên %s->%s trong %s. Đổi tên %s->%s trong %s"
 
-#: merge-recursive.c:1379
+#: merge-recursive.c:1733
 #, c-format
 msgid "Renaming %s to %s and %s to %s instead"
 msgstr "Đang đổi tên %s thành %s thay vì %s thành %s"
 
-#: merge-recursive.c:1582
+#: merge-recursive.c:1745
+#, c-format
+msgid "Refusing to lose untracked file at %s, even though it's in the way."
+msgstr ""
+"Từ chối đóng tập tin không được theo dõi tại “%s”, ngay cả khi nó ở trên "
+"đường."
+
+#: merge-recursive.c:1951
+#, c-format
+msgid ""
+"CONFLICT (directory rename split): Unclear where to place %s because "
+"directory %s was renamed to multiple other directories, with no destination "
+"getting a majority of the files."
+msgstr ""
+"XUNG ĐỘT: (thư mục đổi tên chia tách): Không rõ ràng để đặt địa điểm %s bởi "
+"vì thư mục %s đã bị đổi tên thành nhiều thư mục khác, với không đích đến "
+"nhận một phần nhiều của các tập tin."
+
+#: merge-recursive.c:1983
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
+"implicit directory rename(s) putting the following path(s) there: %s."
+msgstr ""
+"XUNG ĐỘT: (ngầm đổi tên thư mục): Tập tin/thư mục đã sẵn có tại %s theo cách "
+"của các đổi tên thư mục ngầm đặt (các) đường dẫn sau ở đây: %s."
+
+#: merge-recursive.c:1993
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
+"implicit directory renames tried to put these paths there: %s"
+msgstr ""
+"XUNG ĐỘT: (ngầm đổi tên thư mục): Không thể ánh xạ một đường dẫn thành %s; "
+"các đổi tên thư mục ngầm cố đặt các đường dẫn ở đây: %s."
+
+#: merge-recursive.c:2085
+#, c-format
+msgid ""
+"CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
+">%s in %s"
+msgstr ""
+"XUNG ĐỘT (đổi-tên/đổi-tên): Đổi tên thư mục %s->%s trong %s. Đổi tên thư mục "
+"%s->%s trong %s"
+
+#: merge-recursive.c:2330
+#, c-format
+msgid ""
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
+msgstr ""
+"CẢNH BÁO: tránh áp dụng %s -> %s đổi thên thành %s, bởi vì bản thân %s cũng "
+"bị đổi tên."
+
+#: merge-recursive.c:2736
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s. %s added in %s"
 msgstr ""
 "XUNG ĐỘT (đổi-tên/thêm): Đổi tên %s->%s trong %s. %s được thêm vào trong %s"
 
-#: merge-recursive.c:1597
+#: merge-recursive.c:2751
 #, c-format
 msgid "Adding merged %s"
 msgstr "Thêm hòa trộn %s"
 
-#: merge-recursive.c:1604 merge-recursive.c:1834
+#: merge-recursive.c:2758 merge-recursive.c:3089
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Thay vào đó thêm vào %s"
 
-#: merge-recursive.c:1661
+#: merge-recursive.c:2914
 #, c-format
 msgid "cannot read object %s"
 msgstr "không thể đọc đối tượng %s"
 
-#: merge-recursive.c:1664
+#: merge-recursive.c:2917
 #, c-format
 msgid "object %s is not a blob"
 msgstr "đối tượng %s không phải là một blob"
 
-#: merge-recursive.c:1733
+#: merge-recursive.c:2986
 msgid "modify"
 msgstr "sửa đổi"
 
-#: merge-recursive.c:1733
+#: merge-recursive.c:2986
 msgid "modified"
 msgstr "đã sửa"
 
-#: merge-recursive.c:1743
+#: merge-recursive.c:2997
 msgid "content"
 msgstr "nội dung"
 
-#: merge-recursive.c:1750
+#: merge-recursive.c:3004
 msgid "add/add"
 msgstr "thêm/thêm"
 
-#: merge-recursive.c:1786
+#: merge-recursive.c:3046
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "Đã bỏ qua %s (đã có sẵn lần hòa trộn này)"
 
-#: merge-recursive.c:1800
-#, c-format
-msgid "Auto-merging %s"
-msgstr "Tự-động-hòa-trộn %s"
-
-#: merge-recursive.c:1804 git-submodule.sh:879
+#: merge-recursive.c:3055 git-submodule.sh:895
 msgid "submodule"
 msgstr "mô-đun-con"
 
-#: merge-recursive.c:1805
+#: merge-recursive.c:3056
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr "XUNG ĐỘT (%s): Xung đột hòa trộn trong %s"
 
-#: merge-recursive.c:1899
+#: merge-recursive.c:3178
 #, c-format
 msgid "Removing %s"
 msgstr "Đang xóa %s"
 
-#: merge-recursive.c:1925
+#: merge-recursive.c:3204
 msgid "file/directory"
 msgstr "tập-tin/thư-mục"
 
-#: merge-recursive.c:1931
+#: merge-recursive.c:3210
 msgid "directory/file"
 msgstr "thư-mục/tập-tin"
 
-#: merge-recursive.c:1938
+#: merge-recursive.c:3217
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
 msgstr ""
 "XUNG ĐỘT (%s): Ở đây không có thư mục nào có tên %s trong %s. Thêm %s như là "
 "%s"
 
-#: merge-recursive.c:1947
+#: merge-recursive.c:3226
 #, c-format
 msgid "Adding %s"
 msgstr "Thêm \"%s\""
 
-#: merge-recursive.c:1987
+#: merge-recursive.c:3267
 #, c-format
 msgid "Dirty index: cannot merge (dirty: %s)"
 msgstr "Bảng mục lục bẩn: không thể hòa trộn (bẩn: %s)"
 
-#: merge-recursive.c:1991
+#: merge-recursive.c:3271
 msgid "Already up to date!"
 msgstr "Đã cập nhật rồi!"
 
-#: merge-recursive.c:2000
+#: merge-recursive.c:3280
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr "hòa trộn các cây %s và %s gặp lỗi"
 
-#: merge-recursive.c:2097
+#: merge-recursive.c:3379
 msgid "Merging:"
 msgstr "Đang trộn:"
 
-#: merge-recursive.c:2110
+#: merge-recursive.c:3392
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] "tìm thấy %u tổ tiên chung:"
 
-#: merge-recursive.c:2149
+#: merge-recursive.c:3431
 msgid "merge returned no commit"
 msgstr "hòa trộn không trả về lần chuyển giao nào"
 
-#: merge-recursive.c:2212
+#: merge-recursive.c:3495
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "Không thể phân tích đối tượng “%s”"
 
-#: merge-recursive.c:2228 builtin/merge.c:657 builtin/merge.c:816
+#: merge-recursive.c:3511 builtin/merge.c:659 builtin/merge.c:816
 msgid "Unable to write index."
 msgstr "Không thể ghi bảng mục lục"
 
@@ -2380,31 +2668,31 @@ msgstr "Từ chối ghi đè ghi chú trong %s (nằm ngoài refs/notes/)"
 msgid "Bad %s value: '%s'"
 msgstr "Giá trị %s sai: “%s”"
 
-#: object.c:239
+#: object.c:242
 #, c-format
 msgid "unable to parse object: %s"
 msgstr "không thể phân tích đối tượng: “%s”"
 
-#: packfile.c:561
+#: packfile.c:563
 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:1694
+#: packfile.c:1742
 #, 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:1698
+#: packfile.c:1746
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr ""
 "vị trí tương đối vượt quá cuối của chỉ mục gói cho %s (mục lục bị cắt cụt à?)"
 
-#: parse-options.c:619
+#: parse-options.c:621
 msgid "..."
 msgstr "…"
 
-#: parse-options.c:638
+#: parse-options.c:640
 #, c-format
 msgid "usage: %s"
 msgstr "cách dùng: %s"
@@ -2412,26 +2700,31 @@ msgstr "cách dùng: %s"
 #. TRANSLATORS: the colon here should align with the
 #. one in "usage: %s" translation.
 #.
-#: parse-options.c:644
+#: parse-options.c:646
 #, c-format
 msgid "   or: %s"
 msgstr "     hoặc: %s"
 
-#: parse-options.c:647
+#: parse-options.c:649
 #, c-format
 msgid "    %s"
 msgstr "    %s"
 
-#: parse-options.c:686
+#: parse-options.c:688
 msgid "-NUM"
 msgstr "-SỐ"
 
-#: parse-options-cb.c:108
+#: parse-options-cb.c:44
+#, c-format
+msgid "malformed expiration date '%s'"
+msgstr "ngày tháng hết hạn dị hình “%s”"
+
+#: parse-options-cb.c:112
 #, c-format
 msgid "malformed object name '%s'"
 msgstr "tên đối tượng dị hình “%s”"
 
-#: path.c:891
+#: path.c:892
 #, c-format
 msgid "Could not make %s writable by group"
 msgstr "Không thể làm %s được ghi bởi nhóm"
@@ -2515,7 +2808,7 @@ msgstr "đặc tả đường dẫn “%s” vượt ra ngoài liên kết mềm
 msgid "unable to parse --pretty format"
 msgstr "không thể phân tích định dạng --pretty"
 
-#: read-cache.c:1473
+#: read-cache.c:1500
 #, c-format
 msgid ""
 "index.version set, but the value is invalid.\n"
@@ -2524,7 +2817,7 @@ msgstr ""
 "index.version được đặt, nhưng giá trị của nó lại không hợp lệ.\n"
 "Dùng phiên bản %i"
 
-#: read-cache.c:1483
+#: read-cache.c:1510
 #, c-format
 msgid ""
 "GIT_INDEX_VERSION set, but the value is invalid.\n"
@@ -2533,52 +2826,53 @@ msgstr ""
 "GIT_INDEX_VERSION được đặt, nhưng giá trị của nó lại không hợp lệ.\n"
 "Dùng phiên bản %i"
 
-#: read-cache.c:2375 sequencer.c:3248 wrapper.c:658 builtin/merge.c:1049
+#: read-cache.c:2404 sequencer.c:4338 wrapper.c:658 builtin/merge.c:1048
 #, c-format
 msgid "could not close '%s'"
 msgstr "không thể đóng “%s”"
 
-#: read-cache.c:2448 sequencer.c:1900 sequencer.c:2627
+#: read-cache.c:2477 sequencer.c:2102 sequencer.c:3234
 #, c-format
 msgid "could not stat '%s'"
 msgstr "không thể lấy thông tin thống kê về “%s”"
 
-#: read-cache.c:2461
+#: read-cache.c:2490
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr "không thể mở thư mục git: %s"
 
-#: read-cache.c:2473
+#: read-cache.c:2502
 #, c-format
 msgid "unable to unlink: %s"
 msgstr "không thể bỏ liên kết (unlink): “%s”"
 
-#: refs.c:706
+#: refs.c:732 sequencer.c:4334 sequencer.c:4393 wrapper.c:225 wrapper.c:395
+#: builtin/am.c:779
 #, c-format
-msgid "Could not open '%s' for writing"
-msgstr "Không thể mở “%s” để ghi"
+msgid "could not open '%s' for writing"
+msgstr "không thể mở “%s” để ghi"
 
-#: refs.c:1850
+#: refs.c:1880
 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/files-backend.c:1189
+#: refs/files-backend.c:1191
 #, c-format
 msgid "could not remove reference %s"
 msgstr "không thể gỡ bỏ tham chiếu: %s"
 
-#: refs/files-backend.c:1203 refs/packed-backend.c:1528
-#: refs/packed-backend.c:1538
+#: refs/files-backend.c:1205 refs/packed-backend.c:1531
+#: refs/packed-backend.c:1541
 #, c-format
 msgid "could not delete reference %s: %s"
 msgstr "không thể xóa bỏ tham chiếu %s: %s"
 
-#: refs/files-backend.c:1206 refs/packed-backend.c:1541
+#: refs/files-backend.c:1208 refs/packed-backend.c:1544
 #, c-format
 msgid "could not delete references: %s"
 msgstr "không thể xóa bỏ tham chiếu: %s"
 
-#: ref-filter.c:35 wt-status.c:1842
+#: ref-filter.c:35 wt-status.c:1850
 msgid "gone"
 msgstr "đã ra đi"
 
@@ -2597,157 +2891,162 @@ msgstr "đằng sau %d"
 msgid "ahead %d, behind %d"
 msgstr "trước %d, sau %d"
 
-#: ref-filter.c:107
+#: ref-filter.c:121
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr "cần định dạng: %%(color:<color>)"
 
-#: ref-filter.c:109
+#: ref-filter.c:123
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr "không nhận ra màu: %%(màu:%s)"
 
-#: ref-filter.c:129
+#: ref-filter.c:145
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr "Giá trị nguyên cần tên tham chiếu:lstrip=%s"
 
-#: ref-filter.c:133
+#: ref-filter.c:149
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr "Giá trị nguyên cần tên tham chiếu:rstrip=%s"
 
-#: ref-filter.c:135
+#: ref-filter.c:151
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr "đối số không được thừa nhận %%(%s): %s"
 
-#: ref-filter.c:184
+#: ref-filter.c:206
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr "%%(body) không nhận các đối số"
 
-#: ref-filter.c:191
+#: ref-filter.c:215
 #, c-format
 msgid "%%(subject) does not take arguments"
 msgstr "%%(subject) không nhận các đối số"
 
-#: ref-filter.c:209
+#: ref-filter.c:235
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr "không hiểu tham số %%(trailers): %s"
 
-#: ref-filter.c:232
+#: ref-filter.c:264
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr "cần nội dung mang giá trị dương:lines=%s"
 
-#: ref-filter.c:234
+#: ref-filter.c:266
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr "đối số không được thừa nhận %%(contents): %s"
 
-#: ref-filter.c:247
+#: ref-filter.c:281
 #, c-format
 msgid "positive value expected objectname:short=%s"
 msgstr "cần nội dung mang giá trị dương:shot=%s"
 
-#: ref-filter.c:251
+#: ref-filter.c:285
 #, c-format
 msgid "unrecognized %%(objectname) argument: %s"
 msgstr "đối số không được thừa nhận %%(objectname): %s"
 
-#: ref-filter.c:278
+#: ref-filter.c:315
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr "cần định dạng: %%(align:<width>,<position>)"
 
-#: ref-filter.c:290
+#: ref-filter.c:327
 #, c-format
 msgid "unrecognized position:%s"
 msgstr "vị trí không được thừa nhận:%s"
 
-#: ref-filter.c:294
+#: ref-filter.c:334
 #, c-format
 msgid "unrecognized width:%s"
 msgstr "chiều rộng không được thừa nhận:%s"
 
-#: ref-filter.c:300
+#: ref-filter.c:343
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr "đối số không được thừa nhận %%(align): %s"
 
-#: ref-filter.c:304
+#: ref-filter.c:351
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr "cần giá trị độ rộng dương với nguyên tử %%(align)"
 
-#: ref-filter.c:319
+#: ref-filter.c:369
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
 msgstr "đối số không được thừa nhận %%(if): %s"
 
-#: ref-filter.c:409
+#: ref-filter.c:464
 #, c-format
 msgid "malformed field name: %.*s"
 msgstr "tên trường dị hình: %.*s"
 
-#: ref-filter.c:435
+#: ref-filter.c:491
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr "không hiểu tên trường: %.*s"
 
-#: ref-filter.c:547
+#: ref-filter.c:608
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr "định dạng: nguyên tử %%(if) được dùng mà không có nguyên tử %%(then)"
 
-#: ref-filter.c:607
+#: ref-filter.c:671
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr "định dạng: nguyên tử %%(then) được dùng mà không có nguyên tử %%(if)"
 
-#: ref-filter.c:609
+#: ref-filter.c:673
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr "định dạng: nguyên tử %%(then) được dùng nhiều hơn một lần"
 
-#: ref-filter.c:611
+#: ref-filter.c:675
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr "định dạng: nguyên tử %%(then) được dùng sau %%(else)"
 
-#: ref-filter.c:637
+#: ref-filter.c:703
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr "định dạng: nguyên tử %%(else) được dùng mà không có nguyên tử %%(if)"
 
-#: ref-filter.c:639
+#: ref-filter.c:705
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr "định dạng: nguyên tử %%(else) được dùng mà không có nguyên tử %%(then)"
 
-#: ref-filter.c:641
+#: ref-filter.c:707
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr "định dạng: nguyên tử %%(else) được dùng nhiều hơn một lần"
 
-#: ref-filter.c:654
+#: ref-filter.c:722
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr "định dạng: nguyên tử %%(end) được dùng mà không có nguyên tử tương ứng"
 
-#: ref-filter.c:709
+#: ref-filter.c:779
 #, c-format
 msgid "malformed format string %s"
 msgstr "chuỗi định dạng dị hình %s"
 
-#: ref-filter.c:1313
+#: ref-filter.c:1387
 #, c-format
 msgid "(no branch, rebasing %s)"
 msgstr "(không nhánh, đang cải tổ %s)"
 
-#: ref-filter.c:1316
+#: ref-filter.c:1390
+#, c-format
+msgid "(no branch, rebasing detached HEAD %s)"
+msgstr "(không nhánh, đang cải tổ HEAD %s đã tách rời)"
+
+#: ref-filter.c:1393
 #, c-format
 msgid "(no branch, bisect started on %s)"
 msgstr "(không nhánh, di chuyển nửa bước được bắt đầu tại %s)"
@@ -2755,7 +3054,7 @@ msgstr "(không nhánh, di chuyển nửa bước được bắt đầu tại %s
 #. TRANSLATORS: make sure this matches "HEAD
 #. detached at " in wt-status.c
 #.
-#: ref-filter.c:1324
+#: ref-filter.c:1401
 #, c-format
 msgid "(HEAD detached at %s)"
 msgstr "(HEAD được tách rời tại %s)"
@@ -2763,148 +3062,148 @@ msgstr "(HEAD được tách rời tại %s)"
 #. TRANSLATORS: make sure this matches "HEAD
 #. detached from " in wt-status.c
 #.
-#: ref-filter.c:1331
+#: ref-filter.c:1408
 #, c-format
 msgid "(HEAD detached from %s)"
 msgstr "(HEAD được tách rời từ %s)"
 
-#: ref-filter.c:1335
+#: ref-filter.c:1412
 msgid "(no branch)"
 msgstr "(không nhánh)"
 
-#: ref-filter.c:1364
+#: ref-filter.c:1442
 #, c-format
 msgid "missing object %s for %s"
 msgstr "thiếu đối tượng %s cho %s"
 
-#: ref-filter.c:1367
+#: ref-filter.c:1445
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr "parse_object_buffer gặp lỗi trên %s cho %s"
 
-#: ref-filter.c:1819
+#: ref-filter.c:1902
 #, c-format
 msgid "malformed object at '%s'"
 msgstr "đối tượng dị hình tại “%s”"
 
-#: ref-filter.c:1886
+#: ref-filter.c:1984
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr "đang lờ đi tham chiếu với tên hỏng %s"
 
-#: ref-filter.c:1891
+#: ref-filter.c:1989
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "đang lờ đi tham chiếu hỏng %s"
 
-#: ref-filter.c:2152
+#: ref-filter.c:2261
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr "định dạng: thiếu nguyên tử %%(end)"
 
-#: ref-filter.c:2246
+#: ref-filter.c:2365
 #, c-format
 msgid "malformed object name %s"
 msgstr "tên đối tượng dị hình %s"
 
-#: remote.c:795
+#: remote.c:605
 #, c-format
 msgid "Cannot fetch both %s and %s to %s"
 msgstr "Không thể lấy về cả %s và %s cho %s"
 
-#: remote.c:799
+#: remote.c:609
 #, c-format
 msgid "%s usually tracks %s, not %s"
 msgstr "%s thường theo dõi %s, không phải %s"
 
-#: remote.c:803
+#: remote.c:613
 #, c-format
 msgid "%s tracks both %s and %s"
 msgstr "%s theo dõi cả %s và %s"
 
-#: remote.c:811
+#: remote.c:621
 msgid "Internal error"
 msgstr "Lỗi nội bộ"
 
-#: remote.c:1726 remote.c:1828
+#: remote.c:1534 remote.c:1635
 msgid "HEAD does not point to a branch"
 msgstr "HEAD không chỉ đến một nhánh nào cả"
 
-#: remote.c:1735
+#: remote.c:1543
 #, c-format
 msgid "no such branch: '%s'"
 msgstr "không có nhánh nào như thế: “%s”"
 
-#: remote.c:1738
+#: remote.c:1546
 #, c-format
 msgid "no upstream configured for branch '%s'"
 msgstr "không có thượng nguồn được cấu hình cho nhánh “%s”"
 
-#: remote.c:1744
+#: remote.c:1552
 #, c-format
 msgid "upstream branch '%s' not stored as a remote-tracking branch"
 msgstr ""
 "nhánh thượng nguồn “%s” không được lưu lại như là một nhánh theo dõi máy chủ"
 
-#: remote.c:1759
+#: remote.c:1567
 #, c-format
 msgid "push destination '%s' on remote '%s' has no local tracking branch"
 msgstr "đẩy lên đích “%s” trên máy chủ “%s” không có nhánh theo dõi nội bộ"
 
-#: remote.c:1771
+#: remote.c:1579
 #, c-format
 msgid "branch '%s' has no remote for pushing"
 msgstr "nhánh “%s” không có máy chủ để đẩy lên"
 
-#: remote.c:1782
+#: remote.c:1589
 #, c-format
 msgid "push refspecs for '%s' do not include '%s'"
 msgstr "đẩy refspecs cho “%s” không bao gồm “%s”"
 
-#: remote.c:1795
+#: remote.c:1602
 msgid "push has no destination (push.default is 'nothing')"
 msgstr "đẩy lên mà không có đích (push.default là “nothing”)"
 
-#: remote.c:1817
+#: remote.c:1624
 msgid "cannot resolve 'simple' push to a single destination"
 msgstr "không thể phân giải đẩy “đơn giản” đến một đích đơn"
 
-#: remote.c:2132
+#: remote.c:1939
 #, c-format
 msgid "Your branch is based on '%s', but the upstream is gone.\n"
 msgstr ""
 "Nhánh của bạn dựa trên cơ sở là “%s”, nhưng trên thượng nguồn không còn.\n"
 
-#: remote.c:2136
+#: remote.c:1943
 msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
 msgstr "   (dùng \" git branch --unset-upstream\" để sửa)\n"
 
-#: remote.c:2139
+#: remote.c:1946
 #, c-format
 msgid "Your branch is up to date with '%s'.\n"
 msgstr "Nhánh của bạn đã cập nhật với “%s”.\n"
 
-#: remote.c:2143
+#: remote.c:1950
 #, c-format
 msgid "Your branch and '%s' refer to different commits.\n"
 msgstr "Nhánh của bạn và “%s” tham chiếu đến các lần chuyển giao khác nhau.\n"
 
-#: remote.c:2146
+#: remote.c:1953
 #, c-format
 msgid "  (use \"%s\" for details)\n"
 msgstr "  (dùng \"%s\" để biết thêm chi tiết)\n"
 
-#: remote.c:2150
+#: remote.c:1957
 #, c-format
 msgid "Your branch is ahead of '%s' by %d commit.\n"
 msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
 msgstr[0] "Nhánh của bạn đứng trước “%s” %d lần chuyển giao.\n"
 
-#: remote.c:2156
+#: remote.c:1963
 msgid "  (use \"git push\" to publish your local commits)\n"
 msgstr "  (dùng \"git push\" để xuất bản các lần chuyển giao nội bộ của bạn)\n"
 
-#: remote.c:2159
+#: remote.c:1966
 #, c-format
 msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
 msgid_plural ""
@@ -2913,11 +3212,11 @@ msgstr[0] ""
 "Nhánh của bạn đứng đằng sau “%s” %d lần chuyển giao, và có thể được chuyển-"
 "tiếp-nhanh.\n"
 
-#: remote.c:2167
+#: remote.c:1974
 msgid "  (use \"git pull\" to update your local branch)\n"
 msgstr "  (dùng \"git pull\" để cập nhật nhánh nội bộ của bạn)\n"
 
-#: remote.c:2170
+#: remote.c:1977
 #, c-format
 msgid ""
 "Your branch and '%s' have diverged,\n"
@@ -2930,30 +3229,30 @@ msgstr[0] ""
 "và có %d và %d lần chuyển giao khác nhau cho từng cái,\n"
 "tương ứng với mỗi lần.\n"
 
-#: remote.c:2180
+#: remote.c:1987
 msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
 msgstr ""
 "  (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"
 
-#: revision.c:2277
+#: revision.c:2289
 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:2280
+#: revision.c:2292
 #, 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:2477
+#: revision.c:2489
 msgid "--first-parent is incompatible with --bisect"
 msgstr "--first-parent xung khắc với --bisect"
 
-#: run-command.c:731
+#: run-command.c:728
 msgid "open /dev/null failed"
 msgstr "gặp lỗi khi mở “/dev/null”"
 
-#: run-command.c:1274
+#: run-command.c:1271
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
@@ -3001,29 +3300,34 @@ msgstr "kết thúc nhận không hỗ trợ đẩy --atomic"
 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"
 
-#: sequencer.c:158
+#: sequencer.c:175
 #, c-format
 msgid "invalid commit message cleanup mode '%s'"
 msgstr "chế độ dọn dẹp ghi chú các lần chuyển giao không hợp lệ “%s”"
 
-#: sequencer.c:267
+#: sequencer.c:275
+#, c-format
+msgid "could not delete '%s'"
+msgstr "không thể xóa bỏ “%s”"
+
+#: sequencer.c:301
 msgid "revert"
 msgstr "hoàn nguyên"
 
-#: sequencer.c:269
+#: sequencer.c:303
 msgid "cherry-pick"
 msgstr "cherry-pick"
 
-#: sequencer.c:271
+#: sequencer.c:305
 msgid "rebase -i"
 msgstr "rebase -i"
 
-#: sequencer.c:273
+#: sequencer.c:307
 #, c-format
 msgid "Unknown action: %d"
 msgstr "Không nhận ra thao tác: %d"
 
-#: sequencer.c:330
+#: sequencer.c:364
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'"
@@ -3031,7 +3335,7 @@ msgstr ""
 "sau khi giải quyết các xung đột, đánh dấu đường dẫn đã sửa\n"
 "với lệnh “git add <đường_dẫn>” hoặc “git rm <đường_dẫn>”"
 
-#: sequencer.c:333
+#: sequencer.c:367
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'\n"
@@ -3041,43 +3345,45 @@ msgstr ""
 "với lệnh “git add <đường_dẫn>” hoặc “git rm <đường_dẫn>”\n"
 "và chuyển giao kết quả bằng lệnh “git commit”"
 
-#: sequencer.c:346 sequencer.c:2245
+#: sequencer.c:380 sequencer.c:2468
 #, c-format
 msgid "could not lock '%s'"
 msgstr "không thể khóa “%s”"
 
-#: sequencer.c:349 sequencer.c:2124 sequencer.c:2250 sequencer.c:2264
-#: sequencer.c:3246 sequencer.c:3310 wrapper.c:656
+#: sequencer.c:382 sequencer.c:2346 sequencer.c:2472 sequencer.c:2486
+#: sequencer.c:2694 sequencer.c:4336 sequencer.c:4399 wrapper.c:656
 #, c-format
 msgid "could not write to '%s'"
 msgstr "không thể ghi vào “%s”"
 
-#: sequencer.c:353
+#: sequencer.c:387
 #, c-format
 msgid "could not write eol to '%s'"
 msgstr "không thể ghi eol vào “%s”"
 
-#: sequencer.c:356 sequencer.c:2128 sequencer.c:2252
+#: sequencer.c:392 sequencer.c:2351 sequencer.c:2474 sequencer.c:2488
+#: sequencer.c:2702
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr "gặp lỗi khi hoàn thành “%s”"
 
-#: sequencer.c:379 sequencer.c:1340 sequencer.c:2148 builtin/am.c:259
-#: builtin/commit.c:722 builtin/merge.c:1047
+#: sequencer.c:415 sequencer.c:804 sequencer.c:1493 sequencer.c:2371
+#: sequencer.c:2684 sequencer.c:2788 builtin/am.c:259 builtin/commit.c:727
+#: builtin/merge.c:1046
 #, c-format
 msgid "could not read '%s'"
 msgstr "Không thể đọc “%s”."
 
-#: sequencer.c:405
+#: sequencer.c:441
 #, c-format
 msgid "your local changes would be overwritten by %s."
 msgstr "các thay đổi nội bộ của bạn có thể bị ghi đè bởi lệnh %s."
 
-#: sequencer.c:409
+#: sequencer.c:445
 msgid "commit your changes or stash them to proceed."
 msgstr "chuyển giao các thay đổi của bạn hay tạm cất (stash) chúng để xử lý."
 
-#: sequencer.c:438
+#: sequencer.c:474
 #, c-format
 msgid "%s: fast-forward"
 msgstr "%s: chuyển-tiếp-nhanh"
@@ -3085,20 +3391,20 @@ msgstr "%s: chuyển-tiếp-nhanh"
 #. TRANSLATORS: %s will be "revert", "cherry-pick" or
 #. "rebase -i".
 #.
-#: sequencer.c:526
+#: sequencer.c:563
 #, c-format
 msgid "%s: Unable to write new index file"
 msgstr "%s: Không thể ghi tập tin lưu bảng mục lục mới"
 
-#: sequencer.c:542
-msgid "could not resolve HEAD commit"
-msgstr "không thể phân giải lần chuyển giao HEAD"
-
-#: sequencer.c:562
+#: sequencer.c:579
 msgid "unable to update cache tree"
 msgstr "không thể cập nhật cây bộ nhớ đệm"
 
-#: sequencer.c:658
+#: sequencer.c:592
+msgid "could not resolve HEAD commit"
+msgstr "không thể phân giải lần chuyển giao HEAD"
+
+#: sequencer.c:749
 #, c-format
 msgid ""
 "you have staged changes in your working tree\n"
@@ -3127,11 +3433,15 @@ msgstr ""
 "\n"
 "  git rebase --continue\n"
 
-#: sequencer.c:915
+#: sequencer.c:818
+msgid "writing root commit"
+msgstr "ghi chuyển giao gốc"
+
+#: sequencer.c:1043
 msgid "'prepare-commit-msg' hook failed"
 msgstr "móc “prepare-commit-msg” bị lỗi"
 
-#: sequencer.c:922
+#: sequencer.c:1050
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -3162,7 +3472,7 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:935
+#: sequencer.c:1063
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -3190,332 +3500,318 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:975
+#: sequencer.c:1103
 msgid "couldn't look up newly created commit"
 msgstr "không thể tìm thấy lần chuyển giao mới hơn đã được tạo"
 
-#: sequencer.c:977
+#: sequencer.c:1105
 msgid "could not parse newly created commit"
 msgstr ""
 "không thể phân tích cú pháp của đối tượng chuyển giao mới hơn đã được tạo"
 
-#: sequencer.c:1023
+#: sequencer.c:1151
 msgid "unable to resolve HEAD after creating commit"
 msgstr "không thể phân giải HEAD sau khi tạo lần chuyển giao"
 
-#: sequencer.c:1025
+#: sequencer.c:1153
 msgid "detached HEAD"
 msgstr "đã rời khỏi HEAD"
 
-#: sequencer.c:1029
+#: sequencer.c:1157
 msgid " (root-commit)"
 msgstr " (root-commit)"
 
-#: sequencer.c:1050
+#: sequencer.c:1178
 msgid "could not parse HEAD"
 msgstr "không thể phân tích HEAD"
 
-#: sequencer.c:1052
+#: sequencer.c:1180
 #, c-format
 msgid "HEAD %s is not a commit!"
 msgstr "HEAD %s không phải là một lần chuyển giao!"
 
-#: sequencer.c:1056 builtin/commit.c:1491
+#: sequencer.c:1184 builtin/commit.c:1528
 msgid "could not parse HEAD commit"
 msgstr "không thể phân tích commit (lần chuyển giao) HEAD"
 
-#: sequencer.c:1107 sequencer.c:1673
+#: sequencer.c:1235 sequencer.c:1832
 msgid "unable to parse commit author"
 msgstr "không thể phân tích tác giả của lần chuyển giao"
 
-#: sequencer.c:1117 builtin/am.c:1630 builtin/merge.c:643
+#: sequencer.c:1245 builtin/am.c:1630 builtin/merge.c:645
 msgid "git write-tree failed to write a tree"
 msgstr "lệnh git write-tree gặp lỗi khi ghi một cây"
 
-#: sequencer.c:1134 sequencer.c:1186
+#: sequencer.c:1262 sequencer.c:1317
 #, c-format
 msgid "unable to read commit message from '%s'"
 msgstr "không thể đọc phần chú thích (message) từ “%s”"
 
-#: sequencer.c:1154 builtin/am.c:1650 builtin/commit.c:1594 builtin/merge.c:826
-#: builtin/merge.c:851
+#: sequencer.c:1284 builtin/am.c:1650 builtin/commit.c:1631 builtin/merge.c:825
+#: builtin/merge.c:850
 msgid "failed to write commit object"
 msgstr "gặp lỗi khi ghi đối tượng chuyển giao"
 
-#: sequencer.c:1213
+#: sequencer.c:1344
 #, c-format
 msgid "could not parse commit %s"
 msgstr "không thể phân tích lần chuyển giao %s"
 
-#: sequencer.c:1218
+#: sequencer.c:1349
 #, c-format
 msgid "could not parse parent commit %s"
 msgstr "không thể phân tích lần chuyển giao cha mẹ “%s”"
 
-#: sequencer.c:1347
-#, c-format
-msgid ""
-"unexpected 1st line of squash message:\n"
-"\n"
-"\t%.*s"
-msgstr ""
-"không cần dòng thứ nhất của ghi chú squash:\n"
-"\n"
-"\t%.*s"
-
-#: sequencer.c:1353
-#, c-format
-msgid ""
-"invalid 1st line of squash message:\n"
-"\n"
-"\t%.*s"
-msgstr ""
-"dòng thứ nhất của ghi chú squash không hợp lệ:\n"
-"\n"
-"\t%.*s"
-
-#: sequencer.c:1359 sequencer.c:1384
+#: sequencer.c:1500 sequencer.c:1525
 #, c-format
 msgid "This is a combination of %d commits."
 msgstr "Đây là tổ hợp của %d lần chuyển giao."
 
-#: sequencer.c:1368 sequencer.c:3265
+#: sequencer.c:1510 sequencer.c:4355
 msgid "need a HEAD to fixup"
 msgstr "cần một HEAD để sửa"
 
-#: sequencer.c:1370
+#: sequencer.c:1512 sequencer.c:2729
 msgid "could not read HEAD"
 msgstr "không thể đọc HEAD"
 
-#: sequencer.c:1372
+#: sequencer.c:1514
 msgid "could not read HEAD's commit message"
 msgstr "không thể đọc phần chú thích (message) của HEAD"
 
-#: sequencer.c:1378
+#: sequencer.c:1520
 #, c-format
 msgid "cannot write '%s'"
 msgstr "không thể ghi “%s”"
 
-#: sequencer.c:1387 git-rebase--interactive.sh:452
+#: sequencer.c:1527 git-rebase--interactive.sh:457
 msgid "This is the 1st commit message:"
 msgstr "Đây là chú thích cho lần chuyển giao thứ nhất:"
 
-#: sequencer.c:1395
+#: sequencer.c:1535
 #, c-format
 msgid "could not read commit message of %s"
 msgstr "không thể đọc phần chú thích (message) của %s"
 
-#: sequencer.c:1402
+#: sequencer.c:1542
 #, c-format
 msgid "This is the commit message #%d:"
 msgstr "Đây là chú thích cho lần chuyển giao thứ #%d:"
 
-#: sequencer.c:1407
+#: sequencer.c:1548
 #, c-format
 msgid "The commit message #%d will be skipped:"
 msgstr "Chú thích cho lần chuyển giao thứ #%d sẽ bị bỏ qua:"
 
-#: sequencer.c:1412
+#: sequencer.c:1553
 #, c-format
 msgid "unknown command: %d"
 msgstr "không hiểu câu lệnh %d"
 
-#: sequencer.c:1479
+#: sequencer.c:1631
 msgid "your index file is unmerged."
 msgstr "tập tin lưu mục lục của bạn không được hòa trộn."
 
-#: sequencer.c:1498
+#: sequencer.c:1638
+msgid "cannot fixup root commit"
+msgstr "không thể sửa chữa lần chuyển giao gốc"
+
+#: sequencer.c:1657
 #, c-format
 msgid "commit %s is a merge but no -m option was given."
 msgstr "lần chuyển giao %s là một lần hòa trộn nhưng không đưa ra tùy chọn -m."
 
-#: sequencer.c:1506
+#: sequencer.c:1665
 #, c-format
 msgid "commit %s does not have parent %d"
 msgstr "lần chuyển giao %s không có cha mẹ %d"
 
-#: sequencer.c:1510
+#: sequencer.c:1669
 #, c-format
 msgid "mainline was specified but commit %s is not a merge."
 msgstr ""
 "luồng chính đã được chỉ ra nhưng lần chuyển giao %s không phải là một lần "
 "hòa trộn."
 
-#: sequencer.c:1516
+#: sequencer.c:1675
 #, c-format
 msgid "cannot get commit message for %s"
 msgstr "không thể lấy ghi chú lần chuyển giao cho %s"
 
 #. TRANSLATORS: The first %s will be a "todo" command like
 #. "revert" or "pick", the second %s a SHA1.
-#: sequencer.c:1535
+#: sequencer.c:1694
 #, c-format
 msgid "%s: cannot parse parent commit %s"
 msgstr "%s: không thể phân tích lần chuyển giao mẹ của %s"
 
-#: sequencer.c:1600 sequencer.c:2397
+#: sequencer.c:1759
 #, c-format
 msgid "could not rename '%s' to '%s'"
 msgstr "không thể đổi tên “%s” thành “%s”"
 
-#: sequencer.c:1654
+#: sequencer.c:1813
 #, c-format
 msgid "could not revert %s... %s"
 msgstr "không thể hoàn nguyên %s… %s"
 
-#: sequencer.c:1655
+#: sequencer.c:1814
 #, c-format
 msgid "could not apply %s... %s"
 msgstr "không thể áp dụng miếng vá %s… %s"
 
-#: sequencer.c:1702
+#: sequencer.c:1864
 msgid "empty commit set passed"
 msgstr "lần chuyển giao trống rỗng đặt là hợp quy cách"
 
-#: sequencer.c:1712
+#: sequencer.c:1874
 #, c-format
 msgid "git %s: failed to read the index"
 msgstr "git %s: gặp lỗi đọc bảng mục lục"
 
-#: sequencer.c:1718
+#: sequencer.c:1881
 #, c-format
 msgid "git %s: failed to refresh the index"
 msgstr "git %s: gặp lỗi khi làm tươi mới bảng mục lục"
 
-#: sequencer.c:1792
+#: sequencer.c:1961
 #, c-format
 msgid "%s does not accept arguments: '%s'"
 msgstr "%s không nhận các đối số: “%s”"
 
-#: sequencer.c:1801
+#: sequencer.c:1970
 #, c-format
 msgid "missing arguments for %s"
 msgstr "thiếu đối số cho %s"
 
-#: sequencer.c:1844
+#: sequencer.c:2029
 #, c-format
 msgid "invalid line %d: %.*s"
 msgstr "dòng không hợp lệ %d: %.*s"
 
-#: sequencer.c:1852
+#: sequencer.c:2037
 #, c-format
 msgid "cannot '%s' without a previous commit"
 msgstr "không thể “%s” thể mà không có lần chuyển giao kế trước"
 
-#: sequencer.c:1883 sequencer.c:3056 sequencer.c:3091
+#: sequencer.c:2085 sequencer.c:4138 sequencer.c:4173
 #, c-format
 msgid "could not read '%s'."
 msgstr "không thể đọc “%s”."
 
-#: sequencer.c:1906
+#: sequencer.c:2108
 msgid "please fix this using 'git rebase --edit-todo'."
 msgstr "vui lòng sửa lỗi này bằng cách dùng “git rebase --edit-todo”."
 
-#: sequencer.c:1908
+#: sequencer.c:2110
 #, c-format
 msgid "unusable instruction sheet: '%s'"
 msgstr "bảng chỉ thị không thể dùng được: %s"
 
-#: sequencer.c:1913
+#: sequencer.c:2115
 msgid "no commits parsed."
 msgstr "không có lần chuyển giao nào được phân tích."
 
-#: sequencer.c:1924
+#: sequencer.c:2126
 msgid "cannot cherry-pick during a revert."
 msgstr "không thể cherry-pick trong khi hoàn nguyên."
 
-#: sequencer.c:1926
+#: sequencer.c:2128
 msgid "cannot revert during a cherry-pick."
 msgstr "không thể thực hiện việc hoàn nguyên trong khi đang cherry-pick."
 
-#: sequencer.c:1993
+#: sequencer.c:2195
 #, c-format
 msgid "invalid key: %s"
 msgstr "khóa không đúng: %s"
 
-#: sequencer.c:1996
+#: sequencer.c:2198
 #, c-format
 msgid "invalid value for %s: %s"
 msgstr "giá trị cho %s không hợp lệ: %s"
 
-#: sequencer.c:2062
+#: sequencer.c:2269
+msgid "unusable squash-onto"
+msgstr "squash-onto không dùng được"
+
+#: sequencer.c:2285
 #, c-format
 msgid "malformed options sheet: '%s'"
 msgstr "bảng tùy chọn dị hình: “%s”"
 
-#: sequencer.c:2100
+#: sequencer.c:2323
 msgid "a cherry-pick or revert is already in progress"
 msgstr "có một thao tác “cherry-pick” hoặc “revert” đang được thực hiện"
 
-#: sequencer.c:2101
+#: sequencer.c:2324
 msgid "try \"git cherry-pick (--continue | --quit | --abort)\""
 msgstr "hãy thử \"git cherry-pick (--continue | --quit | --abort)\""
 
-#: sequencer.c:2104
+#: sequencer.c:2327
 #, c-format
 msgid "could not create sequencer directory '%s'"
 msgstr "không thể tạo thư mục xếp dãy “%s”"
 
-#: sequencer.c:2118
+#: sequencer.c:2341
 msgid "could not lock HEAD"
 msgstr "không thể khóa HEAD"
 
-#: sequencer.c:2173 sequencer.c:2761
+#: sequencer.c:2396 sequencer.c:3403
 msgid "no cherry-pick or revert in progress"
 msgstr "không cherry-pick hay hoàn nguyên trong tiến trình"
 
-#: sequencer.c:2175
+#: sequencer.c:2398
 msgid "cannot resolve HEAD"
 msgstr "không thể phân giải HEAD"
 
-#: sequencer.c:2177 sequencer.c:2212
+#: sequencer.c:2400 sequencer.c:2435
 msgid "cannot abort from a branch yet to be born"
 msgstr "không thể hủy bỏ từ một nhánh mà nó còn chưa được tạo ra"
 
-#: sequencer.c:2198 builtin/grep.c:720
+#: sequencer.c:2421 builtin/grep.c:720
 #, c-format
 msgid "cannot open '%s'"
 msgstr "không mở được “%s”"
 
-#: sequencer.c:2200
+#: sequencer.c:2423
 #, c-format
 msgid "cannot read '%s': %s"
 msgstr "không thể đọc “%s”: %s"
 
-#: sequencer.c:2201
+#: sequencer.c:2424
 msgid "unexpected end of file"
 msgstr "gặp kết thúc tập tin đột xuất"
 
-#: sequencer.c:2207
+#: sequencer.c:2430
 #, c-format
 msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
 msgstr "tập tin HEAD “pre-cherry-pick” đã lưu “%s” bị hỏng"
 
-#: sequencer.c:2218
+#: sequencer.c:2441
 msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
 msgstr ""
 "Bạn có lẽ đã có HEAD đã bị di chuyển đi, Không thể tua, kiểm tra HEAD của "
 "bạn!"
 
-#: sequencer.c:2324 sequencer.c:2679
+#: sequencer.c:2545 sequencer.c:3321
 #, c-format
 msgid "could not update %s"
 msgstr "không thể cập nhật %s"
 
-#: sequencer.c:2362 sequencer.c:2659
+#: sequencer.c:2583 sequencer.c:3301
 msgid "cannot read HEAD"
 msgstr "không thể đọc HEAD"
 
-#: sequencer.c:2402 builtin/difftool.c:639
+#: sequencer.c:2618 sequencer.c:2622 builtin/difftool.c:639
 #, c-format
 msgid "could not copy '%s' to '%s'"
 msgstr "không thể chép “%s” sang “%s”"
 
-#: sequencer.c:2421
+#: sequencer.c:2641
 msgid "could not read index"
 msgstr "không thể đọc bảng mục lục"
 
-#: sequencer.c:2426
+#: sequencer.c:2646
 #, c-format
 msgid ""
 "execution failed: %s\n"
@@ -3530,11 +3826,11 @@ msgstr ""
 "  git rebase --continue\n"
 "\n"
 
-#: sequencer.c:2432
+#: sequencer.c:2652
 msgid "and made changes to the index and/or the working tree\n"
 msgstr "và tạo các thay đổi bảng mục lục và/hay cây làm việc\n"
 
-#: sequencer.c:2438
+#: sequencer.c:2658
 #, c-format
 msgid ""
 "execution succeeded: %s\n"
@@ -3551,17 +3847,62 @@ msgstr ""
 "  git rebase --continue\n"
 "\n"
 
-#: sequencer.c:2497
+#: sequencer.c:2771
+msgid "writing fake root commit"
+msgstr "ghi lần chuyển giao gốc giả"
+
+#: sequencer.c:2776
+msgid "writing squash-onto"
+msgstr "đang ghi squash-onto"
+
+#: sequencer.c:2811
+#, c-format
+msgid "failed to find tree of %s"
+msgstr "gặp lỗi khi tìm cây của %s"
+
+#: sequencer.c:2829
+msgid "could not write index"
+msgstr "không thể ghi bảng mục lục"
+
+#: sequencer.c:2861
+msgid "cannot merge without a current revision"
+msgstr "không thể hòa trộn mà không có một điểm xét duyệt hiện tại"
+
+#: sequencer.c:2884
+#, c-format
+msgid "could not resolve '%s'"
+msgstr "không thể phân giải “%s”"
+
+#: sequencer.c:2906
+#, c-format
+msgid "could not get commit message of '%s'"
+msgstr "không thể lấy chú thích của lần chuyển giao của “%s”"
+
+#: sequencer.c:2916 sequencer.c:2941
+#, c-format
+msgid "could not write '%s'"
+msgstr "không thể ghi “%s”"
+
+#: sequencer.c:3005
+#, c-format
+msgid "could not even attempt to merge '%.*s'"
+msgstr "không thể ngay cả khi thử hòa trộn “%.*s”"
+
+#: sequencer.c:3021
+msgid "merge: Unable to write new index file"
+msgstr "merge: Không thể ghi tập tin lưu bảng mục lục mới"
+
+#: sequencer.c:3088
 #, c-format
 msgid "Applied autostash.\n"
 msgstr "Đã áp dụng autostash.\n"
 
-#: sequencer.c:2509
+#: sequencer.c:3100
 #, c-format
 msgid "cannot store %s"
 msgstr "không thử lưu “%s”"
 
-#: sequencer.c:2512 git-rebase.sh:178
+#: sequencer.c:3103 git-rebase.sh:188
 #, c-format
 msgid ""
 "Applying autostash resulted in conflicts.\n"
@@ -3573,52 +3914,69 @@ msgstr ""
 "Bạn có thể chạy lệnh \"git stash pop\" hay \"git stash drop\" bất kỳ lúc "
 "nào.\n"
 
-#: sequencer.c:2595
+#: sequencer.c:3134
+#, c-format
+msgid ""
+"Could not execute the todo command\n"
+"\n"
+"    %.*s\n"
+"It has been rescheduled; To edit the command before continuing, please\n"
+"edit the todo list first:\n"
+"\n"
+"    git rebase --edit-todo\n"
+"    git rebase --continue\n"
+msgstr ""
+"Không thể thực thi lệnh todo\n"
+"\n"
+"    %.*s\n"
+"Nó đã được lập lịch lại: Để sửa lệnh trước khi tiếp tục, vui lòng\n"
+"sửa danh sách todo trước:\n"
+"\n"
+"    git rebase --edit-todo\n"
+"    git rebase --continue\n"
+
+#: sequencer.c:3202
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
 msgstr "Dừng lại ở %s…  %.*s\n"
 
-#: sequencer.c:2637
+#: sequencer.c:3264
 #, c-format
 msgid "unknown command %d"
 msgstr "không hiểu câu lệnh %d"
 
-#: sequencer.c:2667
+#: sequencer.c:3309
 msgid "could not read orig-head"
 msgstr "không thể đọc orig-head"
 
-#: sequencer.c:2672 sequencer.c:3262
+#: sequencer.c:3314 sequencer.c:4352
 msgid "could not read 'onto'"
 msgstr "không thể đọc “onto”."
 
-#: sequencer.c:2686
+#: sequencer.c:3328
 #, c-format
 msgid "could not update HEAD to %s"
 msgstr "không thể cập nhật HEAD thành %s"
 
-#: sequencer.c:2770
+#: sequencer.c:3414
 msgid "cannot rebase: You have unstaged changes."
 msgstr "không thể cải tổ: Bạn có các thay đổi chưa được đưa lên bệ phóng."
 
-#: sequencer.c:2775
-msgid "could not remove CHERRY_PICK_HEAD"
-msgstr "không thể xóa bỏ CHERRY_PICK_HEAD"
-
-#: sequencer.c:2784
+#: sequencer.c:3423
 msgid "cannot amend non-existing commit"
 msgstr "không thể tu bỏ một lần chuyển giao không tồn tại"
 
-#: sequencer.c:2786
+#: sequencer.c:3425
 #, c-format
 msgid "invalid file: '%s'"
 msgstr "tập tin không hợp lệ: “%s”"
 
-#: sequencer.c:2788
+#: sequencer.c:3427
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr "nội dung không hợp lệ: “%s”"
 
-#: sequencer.c:2791
+#: sequencer.c:3430
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
@@ -3628,45 +3986,54 @@ msgstr ""
 "Bạn có các thay đổi chưa chuyển giao trong thư mục làm việc. Vui lòng\n"
 "chuyển giao chúng trước và sau đó chạy lệnh “git rebase --continue” lần nữa."
 
-#: sequencer.c:2801
+#: sequencer.c:3455 sequencer.c:3493
+#, c-format
+msgid "could not write file: '%s'"
+msgstr "không thể ghi tập tin: “%s”"
+
+#: sequencer.c:3508
+msgid "could not remove CHERRY_PICK_HEAD"
+msgstr "không thể xóa bỏ CHERRY_PICK_HEAD"
+
+#: sequencer.c:3515
 msgid "could not commit staged changes."
 msgstr "không thể chuyển giao các thay đổi đã đưa lên bệ phóng."
 
-#: sequencer.c:2881
+#: sequencer.c:3612
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr "%s: không thể cherry-pick một %s"
 
-#: sequencer.c:2885
+#: sequencer.c:3616
 #, c-format
 msgid "%s: bad revision"
 msgstr "%s: điểm xét duyệt sai"
 
-#: sequencer.c:2918
+#: sequencer.c:3649
 msgid "can't revert as initial commit"
 msgstr "không thể hoàn nguyên một lần chuyển giao khởi tạo"
 
-#: sequencer.c:3023
+#: sequencer.c:4098
 msgid "make_script: unhandled options"
 msgstr "make_script: các tùy chọn được không xử lý"
 
-#: sequencer.c:3026
+#: sequencer.c:4101
 msgid "make_script: error preparing revisions"
 msgstr "make_script: lỗi chuẩn bị điểm hiệu chỉnh"
 
-#: sequencer.c:3060 sequencer.c:3095
+#: sequencer.c:4142 sequencer.c:4177
 #, c-format
 msgid "unusable todo list: '%s'"
 msgstr "danh sách cần làm không dùng được: “%s”"
 
-#: sequencer.c:3146
+#: sequencer.c:4236
 #, c-format
 msgid ""
 "unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
 msgstr ""
 "không nhận ra cài đặt %s cho tùy chọn rebase.missingCommitsCheck. Nên bỏ qua."
 
-#: sequencer.c:3212
+#: sequencer.c:4302
 #, c-format
 msgid ""
 "Warning: some commits may have been dropped accidentally.\n"
@@ -3675,7 +4042,7 @@ msgstr ""
 "Cảnh báo: một số lần chuyển giao có lẽ đã bị xóa một cách tình cờ.\n"
 "Các lần chuyển giao bị xóa (từ mới đến cũ):\n"
 
-#: sequencer.c:3219
+#: sequencer.c:4309
 #, c-format
 msgid ""
 "To avoid this message, use \"drop\" to explicitly remove a commit.\n"
@@ -3693,7 +4060,7 @@ msgstr ""
 "Cánh ứng xử có thể là: ignore, warn, error.\n"
 "\n"
 
-#: sequencer.c:3231
+#: sequencer.c:4321
 #, c-format
 msgid ""
 "You can fix this with 'git rebase --edit-todo' and then run 'git rebase --"
@@ -3704,27 +4071,21 @@ msgstr ""
 "continue”.\n"
 "Hoặc là bạn có thể bãi bỏ việc cải tổ bằng “git rebase --abort”.\n"
 
-#: sequencer.c:3244 sequencer.c:3304 wrapper.c:225 wrapper.c:395
-#: builtin/am.c:779
-#, c-format
-msgid "could not open '%s' for writing"
-msgstr "không thể mở “%s” để ghi"
-
-#: sequencer.c:3285
+#: sequencer.c:4375
 #, c-format
 msgid "could not parse commit '%s'"
 msgstr "không thể phân tích lần chuyển giao “%s”"
 
-#: sequencer.c:3401
+#: sequencer.c:4490
 msgid "the script was already rearranged."
 msgstr "văn lệnh đã sẵn được sắp đặt rồi."
 
-#: setup.c:122
+#: setup.c:123
 #, c-format
 msgid "'%s' is outside repository"
 msgstr "“%s” ở ngoài một kho chứa"
 
-#: setup.c:171
+#: setup.c:172
 #, c-format
 msgid ""
 "%s: no such path in the working tree.\n"
@@ -3734,7 +4095,7 @@ msgstr ""
 "Dùng “git <lệnh> -- <đường/dẫn>…” để chỉ định đường dẫn mà nó không tồn tại "
 "một cách nội bộ."
 
-#: setup.c:184
+#: setup.c:185
 #, c-format
 msgid ""
 "ambiguous argument '%s': unknown revision or path not in the working tree.\n"
@@ -3746,12 +4107,12 @@ msgstr ""
 "Dùng “--” để ngăn cách các đường dẫn khỏi điểm xem xét, như thế này:\n"
 "“git <lệnh> [<điểm xem xét>…] -- [<tập tin>…]”"
 
-#: setup.c:233
+#: setup.c:234
 #, c-format
 msgid "option '%s' must come before non-option arguments"
 msgstr "tùy chọn “%s” phải trước các đối số đầu tiên không có tùy chọn"
 
-#: setup.c:252
+#: setup.c:253
 #, c-format
 msgid ""
 "ambiguous argument '%s': both revision and filename\n"
@@ -3762,92 +4123,92 @@ msgstr ""
 "Dùng “--” để ngăn cách các đường dẫn khỏi điểm xem xét, như thế này:\n"
 "“git <lệnh> [<điểm xem xét>…] -- [<tập tin>…]”"
 
-#: setup.c:388
+#: setup.c:389
 msgid "unable to set up work tree using invalid config"
 msgstr "Không thể đặt thư mục làm việc hiện hành sử dụng cấu hình không hợp lệ"
 
-#: setup.c:395
+#: setup.c:393
 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:506
+#: setup.c:503
 #, 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:514
+#: setup.c:511
 msgid "unknown repository extensions found:"
 msgstr "tìm thấy phần mở rộng kho chưa biết:"
 
-#: setup.c:533
+#: setup.c:530
 #, c-format
 msgid "error opening '%s'"
 msgstr "gặp lỗi khi mở “%s”"
 
-#: setup.c:535
+#: setup.c:532
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr "tập tin .git là quá lớn: “%s”"
 
-#: setup.c:537
+#: setup.c:534
 #, c-format
 msgid "error reading %s"
 msgstr "gặp lỗi khi đọc %s"
 
-#: setup.c:539
+#: setup.c:536
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "định dạng tập tin git không hợp lệ: %s"
 
-#: setup.c:541
+#: setup.c:538
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "không có đường dẫn trong tập tin git: %s"
 
-#: setup.c:543
+#: setup.c:540
 #, c-format
 msgid "not a git repository: %s"
 msgstr "Không phải là kho git: %s"
 
-#: setup.c:642
+#: setup.c:639
 #, c-format
 msgid "'$%s' too big"
 msgstr "“$%s” quá lớn"
 
-#: setup.c:656
+#: setup.c:653
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "không phải là kho git: “%s”"
 
-#: setup.c:685 setup.c:687 setup.c:718
+#: setup.c:682 setup.c:684 setup.c:715
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "không thể chdir (chuyển đổi thư mục) sang “%s”"
 
-#: setup.c:690 setup.c:746 setup.c:756 setup.c:795 setup.c:803 setup.c:818
+#: setup.c:687 setup.c:743 setup.c:753 setup.c:792 setup.c:800 setup.c:815
 msgid "cannot come back to cwd"
 msgstr "không thể quay lại cwd"
 
-#: setup.c:816
+#: setup.c:813
 #, 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:827
+#: setup.c:824
 #, 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:1057
+#: setup.c:1054
 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:1069 setup.c:1075
+#: setup.c:1066 setup.c:1072
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "không thể chuyển sang “%s”"
 
-#: setup.c:1088
+#: setup.c:1085
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -3857,7 +4218,7 @@ msgstr ""
 "Dừng tại biên của hệ thống tập tin (GIT_DISCOVERY_ACROSS_FILESYSTEM chưa "
 "đặt)."
 
-#: setup.c:1172
+#: setup.c:1168
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -3866,53 +4227,53 @@ msgstr ""
 "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:1215
+#: setup.c:1211
 msgid "open /dev/null or dup failed"
 msgstr "gặp lỗi khi mở “/dev/null” hay dup"
 
-#: setup.c:1230
+#: setup.c:1226
 msgid "fork failed"
 msgstr "gặp lỗi khi rẽ nhánh tiến trình"
 
-#: setup.c:1235
+#: setup.c:1231
 msgid "setsid failed"
 msgstr "setsid gặp lỗi"
 
-#: sha1_file.c:592
+#: sha1-file.c:625
 #, c-format
 msgid "path '%s' does not exist"
 msgstr "đường dẫn “%s” không tồn tại"
 
-#: sha1_file.c:618
+#: sha1-file.c:651
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr "kho tham chiếu “%s” như là lấy ra liên kết vẫn chưa được hỗ trợ."
 
-#: sha1_file.c:624
+#: sha1-file.c:657
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr "kho tham chiếu “%s” không phải là một kho nội bộ."
 
-#: sha1_file.c:630
+#: sha1-file.c:663
 #, c-format
 msgid "reference repository '%s' is shallow"
 msgstr "kho tham chiếu “%s” là nông"
 
-#: sha1_file.c:638
+#: sha1-file.c:671
 #, c-format
 msgid "reference repository '%s' is grafted"
 msgstr "kho tham chiếu “%s” bị cấy ghép"
 
-#: sha1_name.c:422
+#: sha1-name.c:442
 #, c-format
 msgid "short SHA1 %s is ambiguous"
 msgstr "tóm lược SHA1 %s chưa rõ ràng"
 
-#: sha1_name.c:433
+#: sha1-name.c:453
 msgid "The candidates are:"
 msgstr "Các ứng cử là:"
 
-#: sha1_name.c:693
+#: sha1-name.c:695
 msgid ""
 "Git normally never creates a ref that ends with 40 hex characters\n"
 "because it will be ignored when you just specify 40-hex. These refs\n"
@@ -3936,72 +4297,72 @@ msgstr ""
 "này\n"
 "bằng cách chạy lệnh \"git config advice.objectNameWarning false\""
 
-#: submodule.c:96 submodule.c:130
+#: submodule.c:97 submodule.c:131
 msgid "Cannot change unmerged .gitmodules, resolve merge conflicts first"
 msgstr ""
 "Không thể thay đổi .gitmodules chưa hòa trộn, hãy giải quyết xung đột trộn "
 "trước"
 
-#: submodule.c:100 submodule.c:134
+#: submodule.c:101 submodule.c:135
 #, c-format
 msgid "Could not find section in .gitmodules where path=%s"
 msgstr "Không thể tìm thấy phần trong .gitmodules nơi mà đường_dẫn=%s"
 
-#: submodule.c:108
+#: submodule.c:109
 #, c-format
 msgid "Could not update .gitmodules entry %s"
 msgstr "Không thể cập nhật mục .gitmodules %s"
 
-#: submodule.c:141
+#: submodule.c:142
 #, c-format
 msgid "Could not remove .gitmodules entry for %s"
 msgstr "Không thể gỡ bỏ mục .gitmodules dành cho %s"
 
-#: submodule.c:152
+#: submodule.c:153
 msgid "staging updated .gitmodules failed"
 msgstr "gặp lỗi khi tổ chức .gitmodules đã cập nhật"
 
-#: submodule.c:312
+#: submodule.c:315
 #, c-format
 msgid "in unpopulated submodule '%s'"
 msgstr "Trong mô-đun-con không có gì “%s”"
 
-#: submodule.c:343
+#: submodule.c:346
 #, c-format
 msgid "Pathspec '%s' is in submodule '%.*s'"
 msgstr "Đặc tả đường dẫn “%s” thì ở trong mô-đun-con “%.*s”"
 
-#: submodule.c:833
+#: submodule.c:837
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr ""
 "mục tin mô-đun-con “%s” (%s) là một %s, không phải là một lần chuyển giao"
 
-#: submodule.c:1065 builtin/branch.c:648 builtin/submodule--helper.c:1724
+#: submodule.c:1069 builtin/branch.c:651 builtin/submodule--helper.c:1743
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "Gặp lỗi khi phân giải HEAD như là một tham chiếu hợp lệ."
 
-#: submodule.c:1370
+#: submodule.c:1375
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "không nhận ra “%s” là một kho git"
 
-#: submodule.c:1508
+#: submodule.c:1513
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "không thể lấy thống kê “git status” trong mô-đun-con “%s”"
 
-#: submodule.c:1521
+#: submodule.c:1526
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "không thể chạy “git status” trong mô-đun-con “%s”"
 
-#: submodule.c:1614
+#: submodule.c:1619
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "mô-đun-con “%s” có mục lục còn bẩn"
 
-#: submodule.c:1878
+#: submodule.c:1718
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
@@ -4009,18 +4370,18 @@ msgstr ""
 "relocate_gitdir cho mô-đun-con “%s” với nhiều hơn một cây làm việc là chưa "
 "được hỗ trợ"
 
-#: submodule.c:1890 submodule.c:1946
+#: submodule.c:1730 submodule.c:1786
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "không thể tìm kiếm tên cho mô-đun-con “%s”"
 
-#: submodule.c:1894 builtin/submodule--helper.c:1246
-#: builtin/submodule--helper.c:1256
+#: submodule.c:1734 builtin/submodule--helper.c:1261
+#: builtin/submodule--helper.c:1271
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "không thể tạo thư mục “%s”"
 
-#: submodule.c:1897
+#: submodule.c:1737
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -4031,29 +4392,30 @@ msgstr ""
 "“%s” sang\n"
 "“%s”\n"
 
-#: submodule.c:1981
+#: submodule.c:1821
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "không thể đệ quy vào trong mô-đun-con “%s”"
 
-#: submodule.c:2025
+#: submodule.c:1865
 msgid "could not start ls-files in .."
 msgstr "không thể lấy thông tin thống kê về ls-files trong .."
 
-#: submodule.c:2045
-msgid "BUG: returned path string doesn't match cwd?"
-msgstr "LỖI: trả về chuỗi đường dẫn không khớp cwd?"
-
-#: submodule.c:2064
+#: submodule.c:1904
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree trả về mã không như mong đợi %d"
 
-#: submodule-config.c:263
+#: submodule-config.c:230
+#, c-format
+msgid "ignoring suspicious submodule name: %s"
+msgstr "đang lờ đi tên mô-đun-con mập mờ: %s"
+
+#: submodule-config.c:294
 msgid "negative values not allowed for submodule.fetchjobs"
 msgstr "không cho phép giá trị âm ở submodule.fetchJobs"
 
-#: submodule-config.c:436
+#: submodule-config.c:467
 #, c-format
 msgid "invalid value for %s"
 msgstr "giá trị cho %s không hợp lệ"
@@ -4069,7 +4431,7 @@ msgstr "chạy lệnh kéo theo “%s” gặp lỗi"
 msgid "unknown value '%s' for key '%s'"
 msgstr "không hiểu giá trị “%s” cho khóa “%s”"
 
-#: trailer.c:539 trailer.c:544 builtin/remote.c:290
+#: trailer.c:539 trailer.c:544 builtin/remote.c:293
 #, c-format
 msgid "more than one %s"
 msgstr "nhiều hơn một %s"
@@ -4112,17 +4474,21 @@ msgstr "không thể tạo tập tin tạm thời"
 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.c:63
+#: transport.c:116
 #, c-format
 msgid "Would set upstream of '%s' to '%s' of '%s'\n"
 msgstr "Không thể đặt thượng nguồn của “%s” thành “%s” của “%s”\n"
 
-#: transport.c:152
+#: transport.c:208
 #, 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:916
+#: transport.c:584
+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:996
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
@@ -4131,7 +4497,7 @@ msgstr ""
 "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:920
+#: transport.c:1000
 #, c-format
 msgid ""
 "\n"
@@ -4158,11 +4524,11 @@ msgstr ""
 "để đẩy chúng lên máy phục vụ.\n"
 "\n"
 
-#: transport.c:928
+#: transport.c:1008
 msgid "Aborting."
 msgstr "Bãi bỏ."
 
-#: transport-helper.c:1079
+#: transport-helper.c:1087
 #, c-format
 msgid "Could not read ref %s"
 msgstr "Không thể đọc tham chiếu %s"
@@ -4179,11 +4545,11 @@ msgstr "chế độ dị hình trong đề mục cây"
 msgid "empty filename in tree entry"
 msgstr "tên tập tin trống rỗng trong mục tin cây"
 
-#: tree-walk.c:114
+#: tree-walk.c:113
 msgid "too-short tree file"
 msgstr "tập tin cây quá ngắn"
 
-#: unpack-trees.c:108
+#: unpack-trees.c:111
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by checkout:\n"
@@ -4194,7 +4560,7 @@ msgstr ""
 "%%sVui lòng chuyển giao các thay đổi hay tạm cất chúng đi trước khi bạn "
 "chuyển nhánh."
 
-#: unpack-trees.c:110
+#: unpack-trees.c:113
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by checkout:\n"
@@ -4204,7 +4570,7 @@ msgstr ""
 "checkout:\n"
 "%%s"
 
-#: unpack-trees.c:113
+#: unpack-trees.c:116
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -4215,7 +4581,7 @@ msgstr ""
 "%%sVui lòng chuyển giao các thay đổi hay tạm cất chúng đi trước khi bạn hòa "
 "trộn."
 
-#: unpack-trees.c:115
+#: unpack-trees.c:118
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -4225,7 +4591,7 @@ msgstr ""
 "hòa trộn:\n"
 "%%s"
 
-#: unpack-trees.c:118
+#: unpack-trees.c:121
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by %s:\n"
@@ -4235,7 +4601,7 @@ msgstr ""
 "%s:\n"
 "%%sVui lòng chuyển giao các thay đổi hay tạm cất chúng đi trước khi bạn %s."
 
-#: unpack-trees.c:120
+#: unpack-trees.c:123
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by %s:\n"
@@ -4245,7 +4611,7 @@ msgstr ""
 "%s:\n"
 "%%s"
 
-#: unpack-trees.c:125
+#: unpack-trees.c:128
 #, c-format
 msgid ""
 "Updating the following directories would lose untracked files in them:\n"
@@ -4255,7 +4621,7 @@ msgstr ""
 "trong nó:\n"
 "%s"
 
-#: unpack-trees.c:129
+#: unpack-trees.c:132
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by checkout:\n"
@@ -4265,7 +4631,7 @@ msgstr ""
 "checkout:\n"
 "%%sVui lòng di chuyển hay gỡ bỏ chúng trước khi bạn chuyển nhánh."
 
-#: unpack-trees.c:131
+#: unpack-trees.c:134
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by checkout:\n"
@@ -4275,7 +4641,7 @@ msgstr ""
 "checkout:\n"
 "%%s"
 
-#: unpack-trees.c:134
+#: unpack-trees.c:137
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by merge:\n"
@@ -4285,7 +4651,7 @@ msgstr ""
 "trộn:\n"
 "%%sVui lòng di chuyển hay gỡ bỏ chúng trước khi bạn hòa trộn."
 
-#: unpack-trees.c:136
+#: unpack-trees.c:139
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by merge:\n"
@@ -4295,7 +4661,7 @@ msgstr ""
 "trộn:\n"
 "%%s"
 
-#: unpack-trees.c:139
+#: unpack-trees.c:142
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by %s:\n"
@@ -4304,7 +4670,7 @@ msgstr ""
 "Các tập tin cây làm việc chưa được theo dõi sau đây sẽ bị gỡ bỏ bởi %s:\n"
 "%%sVui lòng di chuyển hay gỡ bỏ chúng trước khi bạn %s."
 
-#: unpack-trees.c:141
+#: unpack-trees.c:144
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by %s:\n"
@@ -4313,7 +4679,7 @@ msgstr ""
 "Các tập tin cây làm việc chưa được theo dõi sau đây sẽ bị gỡ bỏ bởi %s:\n"
 "%%s"
 
-#: unpack-trees.c:146
+#: unpack-trees.c:150
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by "
@@ -4324,7 +4690,7 @@ msgstr ""
 "checkout:\n"
 "%%sVui lòng di chuyển hay gỡ bỏ chúng trước khi bạn chuyển nhánh."
 
-#: unpack-trees.c:148
+#: unpack-trees.c:152
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by "
@@ -4335,7 +4701,7 @@ msgstr ""
 "checkout:\n"
 "%%s"
 
-#: unpack-trees.c:151
+#: unpack-trees.c:155
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by merge:\n"
@@ -4345,7 +4711,7 @@ msgstr ""
 "hòa trộn:\n"
 "%%sVui lòng di chuyển hay gỡ bỏ chúng trước khi bạn hòa trộn."
 
-#: unpack-trees.c:153
+#: unpack-trees.c:157
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by merge:\n"
@@ -4355,7 +4721,7 @@ msgstr ""
 "hòa trộn:\n"
 "%%s"
 
-#: unpack-trees.c:156
+#: unpack-trees.c:160
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by %s:\n"
@@ -4365,7 +4731,7 @@ msgstr ""
 "%s:\n"
 "%%sVui lòng di chuyển hay gỡ bỏ chúng trước khi bạn %s."
 
-#: unpack-trees.c:158
+#: unpack-trees.c:162
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by %s:\n"
@@ -4375,12 +4741,12 @@ msgstr ""
 "%s:\n"
 "%%s"
 
-#: unpack-trees.c:165
+#: unpack-trees.c:170
 #, c-format
 msgid "Entry '%s' overlaps with '%s'.  Cannot bind."
 msgstr "Mục “%s” đè lên “%s”. Không thể buộc."
 
-#: unpack-trees.c:168
+#: unpack-trees.c:173
 #, c-format
 msgid ""
 "Cannot update sparse checkout: the following entries are not up to date:\n"
@@ -4389,7 +4755,7 @@ msgstr ""
 "Không thể cập nhật checkout rải rác: các mục tin sau đây chưa cập nhật:\n"
 "%s"
 
-#: unpack-trees.c:170
+#: unpack-trees.c:175
 #, c-format
 msgid ""
 "The following working tree files would be overwritten by sparse checkout "
@@ -4400,7 +4766,7 @@ msgstr ""
 "nhật checkout rải rác:\n"
 "%s"
 
-#: unpack-trees.c:172
+#: unpack-trees.c:177
 #, c-format
 msgid ""
 "The following working tree files would be removed by sparse checkout "
@@ -4411,7 +4777,7 @@ msgstr ""
 "nhật checkout rải rác:\n"
 "%s"
 
-#: unpack-trees.c:174
+#: unpack-trees.c:179
 #, c-format
 msgid ""
 "Cannot update submodule:\n"
@@ -4420,12 +4786,12 @@ msgstr ""
 "Không thể cập nhật mô-đun-con:\n"
 "%s"
 
-#: unpack-trees.c:251
+#: unpack-trees.c:262
 #, c-format
 msgid "Aborting\n"
 msgstr "Bãi bỏ\n"
 
-#: unpack-trees.c:333
+#: unpack-trees.c:344
 msgid "Checking out files"
 msgstr "Đang lấy ra các tập tin"
 
@@ -4495,7 +4861,7 @@ msgid "could not open '%s' for reading and writing"
 msgstr "không thể mở “%s” để đọc và ghi"
 
 #: wrapper.c:227 wrapper.c:397 builtin/am.c:320 builtin/am.c:770
-#: builtin/am.c:862 builtin/merge.c:1044
+#: builtin/am.c:862 builtin/merge.c:1043
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "không thể mở “%s” để đọc"
@@ -4509,156 +4875,156 @@ msgstr "không thể truy cập “%s”"
 msgid "unable to get current working directory"
 msgstr "Không thể lấy thư mục làm việc hiện hành"
 
-#: wt-status.c:151
+#: wt-status.c:154
 msgid "Unmerged paths:"
 msgstr "Những đường dẫn chưa được hòa trộn:"
 
-#: wt-status.c:178 wt-status.c:205
+#: wt-status.c:181 wt-status.c:208
 #, c-format
 msgid "  (use \"git reset %s <file>...\" to unstage)"
 msgstr "  (dùng \"git reset %s <tập-tin>…\" để bỏ ra khỏi bệ phóng)"
 
-#: wt-status.c:180 wt-status.c:207
+#: wt-status.c:183 wt-status.c:210
 msgid "  (use \"git rm --cached <file>...\" to unstage)"
 msgstr "  (dùng \"git rm --cached <tập-tin>…\" để bỏ ra khỏi bệ phóng)"
 
-#: wt-status.c:184
+#: wt-status.c:187
 msgid "  (use \"git add <file>...\" to mark resolution)"
 msgstr "  (dùng \"git add <tập-tin>…\" để đánh dấu là cần giải quyết)"
 
-#: wt-status.c:186 wt-status.c:190
+#: wt-status.c:189 wt-status.c:193
 msgid "  (use \"git add/rm <file>...\" as appropriate to mark resolution)"
 msgstr ""
 "  (dùng \"git add/rm <tập-tin>…\" như là một cách thích hợp để đánh dấu là "
 "cần được giải quyết)"
 
-#: wt-status.c:188
+#: wt-status.c:191
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (dùng \"git rm <tập-tin>…\" để đánh dấu là cần giải quyết)"
 
-#: wt-status.c:199 wt-status.c:1007
+#: wt-status.c:202 wt-status.c:1015
 msgid "Changes to be committed:"
 msgstr "Những thay đổi sẽ được chuyển giao:"
 
-#: wt-status.c:217 wt-status.c:1016
+#: wt-status.c:220 wt-status.c:1024
 msgid "Changes not staged for commit:"
 msgstr "Các thay đổi chưa được đặt lên bệ phóng để chuyển giao:"
 
-#: wt-status.c:221
+#: wt-status.c:224
 msgid "  (use \"git add <file>...\" to update what will be committed)"
 msgstr "  (dùng \"git add <tập-tin>…\" để cập nhật những gì sẽ chuyển giao)"
 
-#: wt-status.c:223
+#: wt-status.c:226
 msgid "  (use \"git add/rm <file>...\" to update what will be committed)"
 msgstr ""
 "  (dùng \"git add/rm <tập-tin>…\" để cập nhật những gì sẽ được chuyển giao)"
 
-#: wt-status.c:224
+#: wt-status.c:227
 msgid ""
 "  (use \"git checkout -- <file>...\" to discard changes in working directory)"
 msgstr ""
 "  (dùng \"git checkout -- <tập-tin>…\" để loại bỏ các thay đổi trong thư mục "
 "làm việc)"
 
-#: wt-status.c:226
+#: wt-status.c:229
 msgid "  (commit or discard the untracked or modified content in submodules)"
 msgstr ""
 "  (chuyển giao hoặc là loại bỏ các nội dung chưa được theo dõi hay đã sửa "
 "chữa trong mô-đun-con)"
 
-#: wt-status.c:238
+#: wt-status.c:241
 #, c-format
 msgid "  (use \"git %s <file>...\" to include in what will be committed)"
 msgstr ""
 "  (dùng \"git %s <tập-tin>…\" để thêm vào những gì cần được chuyển giao)"
 
-#: wt-status.c:253
+#: wt-status.c:256
 msgid "both deleted:"
 msgstr "bị xóa bởi cả hai:"
 
-#: wt-status.c:255
+#: wt-status.c:258
 msgid "added by us:"
 msgstr "được thêm vào bởi chúng ta:"
 
-#: wt-status.c:257
+#: wt-status.c:260
 msgid "deleted by them:"
 msgstr "bị xóa đi bởi họ:"
 
-#: wt-status.c:259
+#: wt-status.c:262
 msgid "added by them:"
 msgstr "được thêm vào bởi họ:"
 
-#: wt-status.c:261
+#: wt-status.c:264
 msgid "deleted by us:"
 msgstr "bị xóa bởi chúng ta:"
 
-#: wt-status.c:263
+#: wt-status.c:266
 msgid "both added:"
 msgstr "được thêm vào bởi cả hai:"
 
-#: wt-status.c:265
+#: wt-status.c:268
 msgid "both modified:"
 msgstr "bị sửa bởi cả hai:"
 
-#: wt-status.c:275
+#: wt-status.c:278
 msgid "new file:"
 msgstr "tập tin mới:"
 
-#: wt-status.c:277
+#: wt-status.c:280
 msgid "copied:"
 msgstr "đã chép:"
 
-#: wt-status.c:279
+#: wt-status.c:282
 msgid "deleted:"
 msgstr "đã xóa:"
 
-#: wt-status.c:281
+#: wt-status.c:284
 msgid "modified:"
 msgstr "đã sửa:"
 
-#: wt-status.c:283
+#: wt-status.c:286
 msgid "renamed:"
 msgstr "đã đổi tên:"
 
-#: wt-status.c:285
+#: wt-status.c:288
 msgid "typechange:"
 msgstr "đổi-kiểu:"
 
-#: wt-status.c:287
+#: wt-status.c:290
 msgid "unknown:"
 msgstr "không hiểu:"
 
-#: wt-status.c:289
+#: wt-status.c:292
 msgid "unmerged:"
 msgstr "chưa hòa trộn:"
 
-#: wt-status.c:369
+#: wt-status.c:372
 msgid "new commits, "
 msgstr "lần chuyển giao mới, "
 
-#: wt-status.c:371
+#: wt-status.c:374
 msgid "modified content, "
 msgstr "nội dung bị sửa đổi, "
 
-#: wt-status.c:373
+#: wt-status.c:376
 msgid "untracked content, "
 msgstr "nội dung chưa được theo dõi, "
 
-#: wt-status.c:847
+#: wt-status.c:853
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] "Bạn hiện nay ở trong phần cất đi đang có %d mục"
 
-#: wt-status.c:879
+#: wt-status.c:885
 msgid "Submodules changed but not updated:"
 msgstr "Những mô-đun-con đã bị thay đổi nhưng chưa được cập nhật:"
 
-#: wt-status.c:881
+#: wt-status.c:887
 msgid "Submodule changes to be committed:"
 msgstr "Những mô-đun-con thay đổi đã được chuyển giao:"
 
-#: wt-status.c:963
+#: wt-status.c:969
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -4666,109 +5032,109 @@ msgstr ""
 "Không sửa hay xóa bỏ đường ở trên.\n"
 "Mọi thứ phía dưới sẽ được xóa bỏ."
 
-#: wt-status.c:1076
+#: wt-status.c:1084
 msgid "You have unmerged paths."
 msgstr "Bạn có những đường dẫn chưa được hòa trộn."
 
-#: wt-status.c:1079
+#: wt-status.c:1087
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (sửa các xung đột rồi chạy \"git commit\")"
 
-#: wt-status.c:1081
+#: wt-status.c:1089
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (dùng \"git merge --abort\" để bãi bỏ việc hòa trộn)"
 
-#: wt-status.c:1086
+#: wt-status.c:1094
 msgid "All conflicts fixed but you are still merging."
 msgstr "Tất cả các xung đột đã được giải quyết nhưng bạn vẫn đang hòa trộn."
 
-#: wt-status.c:1089
+#: wt-status.c:1097
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (dùng \"git commit\" để hoàn tất việc hòa trộn)"
 
-#: wt-status.c:1099
+#: wt-status.c:1107
 msgid "You are in the middle of an am session."
 msgstr "Bạn đang ở giữa của một phiên “am”."
 
-#: wt-status.c:1102
+#: wt-status.c:1110
 msgid "The current patch is empty."
 msgstr "Miếng vá hiện tại bị trống rỗng."
 
-#: wt-status.c:1106
+#: wt-status.c:1114
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (sửa các xung đột và sau đó chạy lệnh \"git am --continue\")"
 
-#: wt-status.c:1108
+#: wt-status.c:1116
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (dùng \"git am --skip\" để bỏ qua miếng vá này)"
 
-#: wt-status.c:1110
+#: wt-status.c:1118
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr "  (dùng \"git am --abort\" để phục hồi lại nhánh nguyên thủy)"
 
-#: wt-status.c:1242
+#: wt-status.c:1250
 msgid "git-rebase-todo is missing."
 msgstr "thiếu git-rebase-todo"
 
-#: wt-status.c:1244
+#: wt-status.c:1252
 msgid "No commands done."
 msgstr "Không thực hiện lệnh nào."
 
-#: wt-status.c:1247
+#: wt-status.c:1255
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] "Lệnh thực hiện cuối (%d lệnh được thực thi):"
 
-#: wt-status.c:1258
+#: wt-status.c:1266
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (xem thêm trong %s)"
 
-#: wt-status.c:1263
+#: wt-status.c:1271
 msgid "No commands remaining."
 msgstr "Không có lệnh nào còn lại."
 
-#: wt-status.c:1266
+#: wt-status.c:1274
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
 msgstr[0] "Lệnh cần làm kế tiếp (%d lệnh còn lại):"
 
-#: wt-status.c:1274
+#: wt-status.c:1282
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (dùng lệnh \"git rebase --edit-todo\" để xem và sửa)"
 
-#: wt-status.c:1287
+#: wt-status.c:1295
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "Bạn hiện nay đang thực hiện việc “rebase” nhánh “%s” trên “%s”."
 
-#: wt-status.c:1292
+#: wt-status.c:1300
 msgid "You are currently rebasing."
 msgstr "Bạn hiện nay đang thực hiện việc “rebase” (“cải tổ”)."
 
-#: wt-status.c:1306
+#: wt-status.c:1314
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr ""
 "  (sửa các xung đột và sau đó chạy lệnh “cải tổ” \"git rebase --continue\")"
 
-#: wt-status.c:1308
+#: wt-status.c:1316
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (dùng lệnh “cải tổ” \"git rebase --skip\" để bỏ qua lần vá này)"
 
-#: wt-status.c:1310
+#: wt-status.c:1318
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr ""
 "  (dùng lệnh “cải tổ” \"git rebase --abort\" để check-out nhánh nguyên thủy)"
 
-#: wt-status.c:1316
+#: wt-status.c:1324
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr ""
 "  (khi tất cả các xung đột đã sửa xong: chạy lệnh “cải tổ” \"git rebase --"
 "continue\")"
 
-#: wt-status.c:1320
+#: wt-status.c:1328
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
@@ -4776,134 +5142,134 @@ msgstr ""
 "Bạn hiện nay đang thực hiện việc chia tách một lần chuyển giao trong khi "
 "đang “rebase” nhánh “%s” trên “%s”."
 
-#: wt-status.c:1325
+#: wt-status.c:1333
 msgid "You are currently splitting a commit during a rebase."
 msgstr ""
 "Bạn hiện tại đang cắt đôi một lần chuyển giao trong khi đang thực hiện việc "
 "rebase."
 
-#: wt-status.c:1328
+#: wt-status.c:1336
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr ""
 "  (Một khi thư mục làm việc của bạn đã gọn gàng, chạy lệnh “cải tổ” \"git "
 "rebase --continue\")"
 
-#: wt-status.c:1332
+#: wt-status.c:1340
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr ""
 "Bạn hiện nay đang thực hiện việc sửa chữa một lần chuyển giao trong khi đang "
 "rebase nhánh “%s” trên “%s”."
 
-#: wt-status.c:1337
+#: wt-status.c:1345
 msgid "You are currently editing a commit during a rebase."
 msgstr "Bạn hiện đang sửa một lần chuyển giao trong khi bạn thực hiện rebase."
 
-#: wt-status.c:1340
+#: wt-status.c:1348
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr "  (dùng \"git commit --amend\" để “tu bổ” lần chuyển giao hiện tại)"
 
-#: wt-status.c:1342
+#: wt-status.c:1350
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr ""
 "  (chạy lệnh “cải tổ” \"git rebase --continue\" một khi bạn cảm thấy hài "
 "lòng về những thay đổi của mình)"
 
-#: wt-status.c:1352
+#: wt-status.c:1360
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "Bạn hiện nay đang thực hiện việc cherry-pick lần chuyển giao %s."
 
-#: wt-status.c:1357
+#: wt-status.c:1365
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr ""
 "  (sửa các xung đột và sau đó chạy lệnh \"git cherry-pick --continue\")"
 
-#: wt-status.c:1360
+#: wt-status.c:1368
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr ""
 "  (khi tất cả các xung đột đã sửa xong: chạy lệnh \"git cherry-pick --"
 "continue\")"
 
-#: wt-status.c:1362
+#: wt-status.c:1370
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr "  (dùng \"git cherry-pick --abort\" để hủy bỏ thao tác cherry-pick)"
 
-#: wt-status.c:1371
+#: wt-status.c:1379
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "Bạn hiện nay đang thực hiện thao tác hoàn nguyên lần chuyển giao “%s”."
 
-#: wt-status.c:1376
+#: wt-status.c:1384
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (sửa các xung đột và sau đó chạy lệnh \"git revert --continue\")"
 
-#: wt-status.c:1379
+#: wt-status.c:1387
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr ""
 "  (khi tất cả các xung đột đã sửa xong: chạy lệnh \"git revert --continue\")"
 
-#: wt-status.c:1381
+#: wt-status.c:1389
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (dùng \"git revert --abort\" để hủy bỏ thao tác hoàn nguyên)"
 
-#: wt-status.c:1392
+#: wt-status.c:1400
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr ""
 "Bạn hiện nay đang thực hiện thao tác di chuyển nửa bước (bisect), bắt đầu từ "
 "nhánh “%s”."
 
-#: wt-status.c:1396
+#: wt-status.c:1404
 msgid "You are currently bisecting."
 msgstr "Bạn hiện tại đang thực hiện việc bisect (di chuyển nửa bước)."
 
-#: wt-status.c:1399
+#: wt-status.c:1407
 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:1596
+#: wt-status.c:1604
 msgid "On branch "
 msgstr "Trên nhánh "
 
-#: wt-status.c:1602
+#: wt-status.c:1610
 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:1604
+#: wt-status.c:1612
 msgid "rebase in progress; onto "
 msgstr "rebase đang được thực hiện: lên trên "
 
-#: wt-status.c:1609
+#: wt-status.c:1617
 msgid "HEAD detached at "
 msgstr "HEAD được tách rời tại "
 
-#: wt-status.c:1611
+#: wt-status.c:1619
 msgid "HEAD detached from "
 msgstr "HEAD được tách rời từ "
 
-#: wt-status.c:1614
+#: wt-status.c:1622
 msgid "Not currently on any branch."
 msgstr "Hiện tại chẳng ở nhánh nào cả."
 
-#: wt-status.c:1634
+#: wt-status.c:1642
 msgid "Initial commit"
 msgstr "Lần chuyển giao khởi tạo"
 
-#: wt-status.c:1635
+#: wt-status.c:1643
 msgid "No commits yet"
 msgstr "Vẫn chưa chuyển giao"
 
-#: wt-status.c:1649
+#: wt-status.c:1657
 msgid "Untracked files"
 msgstr "Những tập tin chưa được theo dõi"
 
-#: wt-status.c:1651
+#: wt-status.c:1659
 msgid "Ignored files"
 msgstr "Những tập tin bị lờ đi"
 
-#: wt-status.c:1655
+#: wt-status.c:1663
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -4915,32 +5281,32 @@ msgstr ""
 "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:1661
+#: wt-status.c:1669
 #, 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:1663
+#: wt-status.c:1671
 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:1669
+#: wt-status.c:1677
 msgid "No changes"
 msgstr "Không có thay đổi nào"
 
-#: wt-status.c:1674
+#: wt-status.c:1682
 #, 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:1677
+#: wt-status.c:1685
 #, 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:1680
+#: wt-status.c:1688
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -4949,74 +5315,74 @@ 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 (dùng \"git add\" để đưa vào theo dõi)\n"
 
-#: wt-status.c:1683
+#: wt-status.c:1691
 #, 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:1686
+#: wt-status.c:1694
 #, 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:1689 wt-status.c:1694
+#: wt-status.c:1697 wt-status.c:1702
 #, c-format
 msgid "nothing to commit\n"
 msgstr "không có gì để chuyển giao\n"
 
-#: wt-status.c:1692
+#: wt-status.c:1700
 #, 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:1696
+#: wt-status.c:1704
 #, 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:1809
+#: wt-status.c:1817
 msgid "No commits yet on "
 msgstr "Vẫn không thực hiện lệnh chuyển giao nào"
 
-#: wt-status.c:1813
+#: wt-status.c:1821
 msgid "HEAD (no branch)"
 msgstr "HEAD (không nhánh)"
 
-#: wt-status.c:1844
+#: wt-status.c:1852
 msgid "different"
 msgstr "khác"
 
-#: wt-status.c:1846 wt-status.c:1854
+#: wt-status.c:1854 wt-status.c:1862
 msgid "behind "
 msgstr "đằng sau "
 
-#: wt-status.c:1849 wt-status.c:1852
+#: wt-status.c:1857 wt-status.c:1860
 msgid "ahead "
 msgstr "phía trước "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2358
+#: wt-status.c:2366
 #, 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:2364
+#: wt-status.c:2372
 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:2366
+#: wt-status.c:2374
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr ""
 "không thể %s: Mục lục của bạn có chứa các thay đổi chưa được chuyển giao."
 
-#: compat/precompose_utf8.c:58 builtin/clone.c:440
+#: compat/precompose_utf8.c:58 builtin/clone.c:442
 #, c-format
 msgid "failed to unlink '%s'"
 msgstr "gặp lỗi khi bỏ liên kết (unlink) “%s”"
@@ -5030,7 +5396,7 @@ msgstr "git add [<các-tùy-chọn>] [--]  <pathspec>…"
 msgid "unexpected diff status %c"
 msgstr "trạng thái lệnh diff không như mong đợi %c"
 
-#: builtin/add.c:88 builtin/commit.c:257
+#: builtin/add.c:88 builtin/commit.c:266
 msgid "updating files failed"
 msgstr "Cập nhật tập tin gặp lỗi"
 
@@ -5044,7 +5410,7 @@ msgid "Unstaged changes after refreshing the index:"
 msgstr ""
 "Đưa ra khỏi bệ phóng các thay đổi sau khi làm tươi mới lại bảng mục lục:"
 
-#: builtin/add.c:233 builtin/rev-parse.c:888
+#: builtin/add.c:233 builtin/rev-parse.c:892
 msgid "Could not read the index"
 msgstr "Không thể đọc bảng mục lục"
 
@@ -5075,83 +5441,83 @@ msgstr "Miếng vá trống rỗng. Nên bỏ qua."
 msgid "Could not apply '%s'"
 msgstr "Không thể áp dụng miếng vá “%s”"
 
-#: builtin/add.c:271
+#: builtin/add.c:269
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr ""
 "Các đường dẫn theo sau đây sẽ bị lờ đi bởi một trong các tập tin .gitignore "
 "của bạn:\n"
 
-#: builtin/add.c:291 builtin/clean.c:911 builtin/fetch.c:146 builtin/mv.c:124
-#: builtin/prune-packed.c:55 builtin/pull.c:207 builtin/push.c:541
-#: builtin/remote.c:1333 builtin/rm.c:242 builtin/send-pack.c:164
+#: builtin/add.c:289 builtin/clean.c:911 builtin/fetch.c:145 builtin/mv.c:123
+#: builtin/prune-packed.c:55 builtin/pull.c:212 builtin/push.c:557
+#: builtin/remote.c:1342 builtin/rm.c:240 builtin/send-pack.c:165
 msgid "dry run"
 msgstr "chạy thử"
 
-#: builtin/add.c:294
+#: builtin/add.c:292
 msgid "interactive picking"
 msgstr "sửa bằng cách tương tác"
 
-#: builtin/add.c:295 builtin/checkout.c:1128 builtin/reset.c:302
+#: builtin/add.c:293 builtin/checkout.c:1135 builtin/reset.c:302
 msgid "select hunks interactively"
 msgstr "chọn “hunks” theo kiểu tương tác"
 
-#: builtin/add.c:296
+#: builtin/add.c:294
 msgid "edit current diff and apply"
 msgstr "sửa diff hiện nay và áp dụng nó"
 
-#: builtin/add.c:297
+#: builtin/add.c:295
 msgid "allow adding otherwise ignored files"
 msgstr "cho phép thêm các tập tin bị bỏ qua khác"
 
-#: builtin/add.c:298
+#: builtin/add.c:296
 msgid "update tracked files"
 msgstr "cập nhật các tập tin được theo dõi"
 
-#: builtin/add.c:299
+#: builtin/add.c:297
 msgid "renormalize EOL of tracked files (implies -u)"
 msgstr "thường hóa lại EOL của các tập tin được theo dõi (ý là -u)"
 
-#: builtin/add.c:300
+#: builtin/add.c:298
 msgid "record only the fact that the path will be added later"
 msgstr "chỉ ghi lại sự việc mà đường dẫn sẽ được thêm vào sau"
 
-#: builtin/add.c:301
+#: builtin/add.c:299
 msgid "add changes from all tracked and untracked files"
 msgstr ""
 "thêm các thay đổi từ tất cả các tập tin có cũng như không được theo dõi dấu "
 "vết"
 
-#: builtin/add.c:304
+#: builtin/add.c:302
 msgid "ignore paths removed in the working tree (same as --no-all)"
 msgstr ""
 "lờ đi các đường dẫn bị gỡ bỏ trong cây thư mục làm việc (giống với --no-all)"
 
-#: builtin/add.c:306
+#: builtin/add.c:304
 msgid "don't add, only refresh the index"
 msgstr "không thêm, chỉ làm tươi mới bảng mục lục"
 
-#: builtin/add.c:307
+#: builtin/add.c:305
 msgid "just skip files which cannot be added because of errors"
 msgstr "chie bỏ qua những tập tin mà nó không thể được thêm vào bởi vì gặp lỗi"
 
-#: builtin/add.c:308
+#: builtin/add.c:306
 msgid "check if - even missing - files are ignored in dry run"
 msgstr ""
 "kiểm tra xem - thậm chí thiếu - tập tin bị bỏ qua trong quá trình chạy thử"
 
-#: builtin/add.c:309 builtin/update-index.c:964
+#: builtin/add.c:307 builtin/update-index.c:974
 msgid "(+/-)x"
 msgstr "(+/-)x"
 
-#: builtin/add.c:309 builtin/update-index.c:965
+#: builtin/add.c:307 builtin/update-index.c:975
 msgid "override the executable bit of the listed files"
 msgstr "ghi đè lên bít thi hành của các tập tin được liệt kê"
 
-#: builtin/add.c:311
+#: builtin/add.c:309
 msgid "warn when adding an embedded repository"
 msgstr "cảnh báo khi thêm một kho nhúng"
 
-#: builtin/add.c:326
+#: builtin/add.c:324
 #, c-format
 msgid ""
 "You've added another git repository inside your current repository.\n"
@@ -5182,47 +5548,47 @@ msgstr ""
 "\n"
 "Xem \"git help submodule\" để biết thêm chi tiết."
 
-#: builtin/add.c:354
+#: builtin/add.c:352
 #, c-format
 msgid "adding embedded git repository: %s"
 msgstr "thêm cần một kho git nhúng: %s"
 
-#: builtin/add.c:372
+#: builtin/add.c:370
 #, c-format
 msgid "Use -f if you really want to add them.\n"
 msgstr "Sử dụng tùy chọn -f nếu bạn thực sự muốn thêm chúng vào.\n"
 
-#: builtin/add.c:380
+#: builtin/add.c:378
 msgid "adding files failed"
 msgstr "thêm tập tin gặp lỗi"
 
-#: builtin/add.c:417
+#: builtin/add.c:416
 msgid "-A and -u are mutually incompatible"
 msgstr "-A và -u xung khắc nhau"
 
-#: builtin/add.c:424
+#: builtin/add.c:423
 msgid "Option --ignore-missing can only be used together with --dry-run"
 msgstr "Tùy chọn --ignore-missing chỉ có thể được dùng cùng với --dry-run"
 
-#: builtin/add.c:428
+#: builtin/add.c:427
 #, c-format
 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:443
+#: builtin/add.c:442
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr "Không có gì được chỉ ra, không có gì được thêm vào.\n"
 
-#: builtin/add.c:444
+#: builtin/add.c:443
 #, c-format
 msgid "Maybe you wanted to say 'git add .'?\n"
 msgstr "Có lẽ ý bạn là “git add .” phải không?\n"
 
-#: builtin/add.c:449 builtin/check-ignore.c:177 builtin/checkout.c:280
-#: builtin/checkout.c:483 builtin/clean.c:958 builtin/commit.c:316
+#: builtin/add.c:448 builtin/check-ignore.c:177 builtin/checkout.c:280
+#: builtin/checkout.c:483 builtin/clean.c:958 builtin/commit.c:325
 #: builtin/diff-tree.c:114 builtin/mv.c:144 builtin/reset.c:241
-#: builtin/rm.c:271 builtin/submodule--helper.c:326
+#: builtin/rm.c:270 builtin/submodule--helper.c:328
 msgid "index file corrupt"
 msgstr "tập tin ghi bảng mục lục bị hỏng"
 
@@ -5274,7 +5640,7 @@ msgstr "độ lệch múi giờ không hợp lệ"
 msgid "Patch format detection failed."
 msgstr "Dò tìm định dạng miếng vá gặp lỗi."
 
-#: builtin/am.c:1013 builtin/clone.c:405
+#: builtin/am.c:1013 builtin/clone.c:407
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr "tạo thư mục \"%s\" gặp lỗi"
@@ -5283,7 +5649,7 @@ msgstr "tạo thư mục \"%s\" gặp lỗi"
 msgid "Failed to split patches."
 msgstr "Gặp lỗi khi chia nhỏ các miếng vá."
 
-#: builtin/am.c:1148 builtin/commit.c:342
+#: builtin/am.c:1148 builtin/commit.c:351
 msgid "unable to write index file"
 msgstr "không thể ghi tập tin lưu mục lục"
 
@@ -5461,7 +5827,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:2222 builtin/init-db.c:484 builtin/prune-packed.c:57
-#: builtin/repack.c:182
+#: builtin/repack.c:192
 msgid "be quiet"
 msgstr "im lặng"
 
@@ -5504,16 +5870,17 @@ msgstr "cắt mọi thứ trước dòng scissors"
 msgid "pass it through git-apply"
 msgstr "chuyển nó qua git-apply"
 
-#: builtin/am.c:2260 builtin/fmt-merge-msg.c:665 builtin/fmt-merge-msg.c:668
-#: builtin/grep.c:853 builtin/merge.c:206 builtin/pull.c:145 builtin/pull.c:203
-#: builtin/repack.c:191 builtin/repack.c:195 builtin/repack.c:197
-#: builtin/show-branch.c:631 builtin/show-ref.c:169 builtin/tag.c:382
-#: parse-options.h:144 parse-options.h:146 parse-options.h:257
+#: builtin/am.c:2260 builtin/commit.c:1332 builtin/fmt-merge-msg.c:665
+#: builtin/fmt-merge-msg.c:668 builtin/grep.c:853 builtin/merge.c:208
+#: builtin/pull.c:150 builtin/pull.c:208 builtin/repack.c:201
+#: builtin/repack.c:205 builtin/repack.c:207 builtin/show-branch.c:631
+#: builtin/show-ref.c:169 builtin/tag.c:383 parse-options.h:144
+#: parse-options.h:146 parse-options.h:258
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2266 builtin/branch.c:629 builtin/for-each-ref.c:38
-#: builtin/replace.c:445 builtin/tag.c:418 builtin/verify-tag.c:39
+#: builtin/am.c:2266 builtin/branch.c:632 builtin/for-each-ref.c:38
+#: builtin/replace.c:543 builtin/tag.c:419 builtin/verify-tag.c:39
 msgid "format"
 msgstr "định dạng"
 
@@ -5557,8 +5924,8 @@ msgstr "nói dối về ngày chuyển giao"
 msgid "use current timestamp for author date"
 msgstr "dùng dấu thời gian hiện tại cho ngày tác giả"
 
-#: builtin/am.c:2298 builtin/commit.c:1431 builtin/merge.c:237
-#: builtin/pull.c:178 builtin/revert.c:112 builtin/tag.c:398
+#: builtin/am.c:2298 builtin/commit.c:1468 builtin/merge.c:239
+#: builtin/pull.c:183 builtin/revert.c:112 builtin/tag.c:399
 msgid "key-id"
 msgstr "mã-số-khóa"
 
@@ -5698,117 +6065,143 @@ msgstr "--write-terms cần hai tham số"
 msgid "--bisect-clean-state requires no arguments"
 msgstr "--bisect-clean-state không nhận đối số"
 
-#: builtin/blame.c:27
+#: builtin/blame.c:29
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
 msgstr "git blame [<các-tùy-chọn>] [<rev-opts>] [<rev>] [--] <tập-tin>"
 
-#: builtin/blame.c:32
+#: builtin/blame.c:34
 msgid "<rev-opts> are documented in git-rev-list(1)"
 msgstr "<rev-opts> được mô tả trong tài liệu git-rev-list(1)"
 
-#: builtin/blame.c:677
+#: builtin/blame.c:404
+#, c-format
+msgid "expecting a color: %s"
+msgstr "cần một màu: %s"
+
+#: builtin/blame.c:411
+msgid "must end with a color"
+msgstr "phải kết thúc bằng một màu"
+
+#: builtin/blame.c:697
+#, c-format
+msgid "invalid color '%s' in color.blame.repeatedLines"
+msgstr "màu không hợp lệ “%s” trong color.blame.repeatedLines"
+
+#: builtin/blame.c:715
+msgid "invalid value for blame.coloring"
+msgstr "màu không hợp lệ cho blame.coloring"
+
+#: builtin/blame.c:786
 msgid "Show blame entries as we find them, incrementally"
 msgstr "Hiển thị các mục “blame” như là chúng ta thấy chúng, tăng dần"
 
-#: builtin/blame.c:678
+#: builtin/blame.c:787
 msgid "Show blank SHA-1 for boundary commits (Default: off)"
 msgstr ""
 "Hiển thị SHA-1 trắng cho những lần chuyển giao biên giới (Mặc định: off)"
 
-#: builtin/blame.c:679
+#: builtin/blame.c:788
 msgid "Do not treat root commits as boundaries (Default: off)"
 msgstr "Không coi các lần chuyển giao gốc là giới hạn (Mặc định: off)"
 
-#: builtin/blame.c:680
+#: builtin/blame.c:789
 msgid "Show work cost statistics"
 msgstr "Hiển thị thống kê công sức làm việc"
 
-#: builtin/blame.c:681
+#: builtin/blame.c:790
 msgid "Force progress reporting"
 msgstr "Ép buộc báo cáo tiến triển công việc"
 
-#: builtin/blame.c:682
+#: builtin/blame.c:791
 msgid "Show output score for blame entries"
 msgstr "Hiển thị kết xuất điểm số có các mục tin “blame”"
 
-#: builtin/blame.c:683
+#: builtin/blame.c:792
 msgid "Show original filename (Default: auto)"
 msgstr "Hiển thị tên tập tin gốc (Mặc định: auto)"
 
-#: builtin/blame.c:684
+#: builtin/blame.c:793
 msgid "Show original linenumber (Default: off)"
 msgstr "Hiển thị số dòng gốc (Mặc định: off)"
 
-#: builtin/blame.c:685
+#: builtin/blame.c:794
 msgid "Show in a format designed for machine consumption"
 msgstr "Hiển thị ở định dạng đã thiết kế cho sự tiêu dùng bằng máy"
 
-#: builtin/blame.c:686
+#: builtin/blame.c:795
 msgid "Show porcelain format with per-line commit information"
 msgstr "Hiển thị định dạng “porcelain” với thông tin chuyển giao mỗi dòng"
 
-#: builtin/blame.c:687
+#: builtin/blame.c:796
 msgid "Use the same output mode as git-annotate (Default: off)"
 msgstr "Dùng cùng chế độ xuất ra với git-annotate (Mặc định: off)"
 
-#: builtin/blame.c:688
+#: builtin/blame.c:797
 msgid "Show raw timestamp (Default: off)"
 msgstr "Hiển thị dấu vết thời gian dạng thô (Mặc định: off)"
 
-#: builtin/blame.c:689
+#: builtin/blame.c:798
 msgid "Show long commit SHA1 (Default: off)"
 msgstr "Hiển thị SHA1 của lần chuyển giao dạng dài (Mặc định: off)"
 
-#: builtin/blame.c:690
+#: builtin/blame.c:799
 msgid "Suppress author name and timestamp (Default: off)"
 msgstr "Không hiển thị tên tác giả và dấu vết thời gian (Mặc định: off)"
 
-#: builtin/blame.c:691
+#: builtin/blame.c:800
 msgid "Show author email instead of name (Default: off)"
 msgstr "Hiển thị thư điện tử của tác giả thay vì tên (Mặc định: off)"
 
-#: builtin/blame.c:692
+#: builtin/blame.c:801
 msgid "Ignore whitespace differences"
 msgstr "Bỏ qua các khác biệt do khoảng trắng gây ra"
 
-#: builtin/blame.c:699
+#: builtin/blame.c:802
+msgid "color redundant metadata from previous line differently"
+msgstr "siêu dữ liệu dư thừa màu từ dòng trước khác hẳn"
+
+#: builtin/blame.c:803
+msgid "color lines by age"
+msgstr "các dòng màu theo tuổi"
+
+#: builtin/blame.c:810
 msgid "Use an experimental heuristic to improve diffs"
 msgstr "Dùng một phỏng đoán thử nghiệm để tăng cường các diff"
 
-#: builtin/blame.c:701
+#: builtin/blame.c:812
 msgid "Spend extra cycles to find better match"
 msgstr "Tiêu thụ thêm năng tài nguyên máy móc để tìm kiếm tốt hơn nữa"
 
-#: builtin/blame.c:702
+#: builtin/blame.c:813
 msgid "Use revisions from <file> instead of calling git-rev-list"
 msgstr ""
 "Sử dụng điểm xét duyệt (revision) từ <tập tin> thay vì gọi “git-rev-list”"
 
-#: builtin/blame.c:703
+#: builtin/blame.c:814
 msgid "Use <file>'s contents as the final image"
 msgstr "Sử dụng nội dung của <tập tin> như là ảnh cuối cùng"
 
-#: builtin/blame.c:704 builtin/blame.c:705
+#: builtin/blame.c:815 builtin/blame.c:816
 msgid "score"
 msgstr "điểm số"
 
-#: builtin/blame.c:704
+#: builtin/blame.c:815
 msgid "Find line copies within and across files"
 msgstr "Tìm các bản sao chép dòng trong và ngang qua tập tin"
 
-#: builtin/blame.c:705
+#: builtin/blame.c:816
 msgid "Find line movements within and across files"
 msgstr "Tìm các di chuyển dòng trong và ngang qua tập tin"
 
-#: builtin/blame.c:706
+#: builtin/blame.c:817
 msgid "n,m"
 msgstr "n,m"
 
-#: builtin/blame.c:706
+#: builtin/blame.c:817
 msgid "Process only line range n,m, counting from 1"
 msgstr "Xử lý chỉ dòng vùng n,m, tính từ 1"
 
-#: builtin/blame.c:753
+#: builtin/blame.c:866
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr ""
 "--progress không được dùng cùng với --incremental hay các định dạng porcelain"
@@ -5821,17 +6214,17 @@ msgstr ""
 #. your language may need more or fewer display
 #. columns.
 #.
-#: builtin/blame.c:804
+#: builtin/blame.c:917
 msgid "4 years, 11 months ago"
 msgstr "4 năm, 11 tháng trước"
 
-#: builtin/blame.c:890
+#: builtin/blame.c:1003
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
 msgstr[0] "tập tin %s chỉ có %lu dòng"
 
-#: builtin/blame.c:936
+#: builtin/blame.c:1049
 msgid "Blaming lines"
 msgstr "Các dòng blame"
 
@@ -5942,65 +6335,65 @@ msgstr "Đã xóa nhánh theo dõi máy chủ \"%s\" (từng là %s).\n"
 msgid "Deleted branch %s (was %s).\n"
 msgstr "Nhánh “%s” đã bị xóa (từng là %s)\n"
 
-#: builtin/branch.c:417 builtin/tag.c:58
+#: builtin/branch.c:416 builtin/tag.c:58
 msgid "unable to parse format string"
 msgstr "không thể phân tích chuỗi định dạng"
 
-#: builtin/branch.c:450
+#: builtin/branch.c:453
 #, c-format
 msgid "Branch %s is being rebased at %s"
 msgstr "Nhánh %s đang được cải tổ lại tại %s"
 
-#: builtin/branch.c:454
+#: builtin/branch.c:457
 #, c-format
 msgid "Branch %s is being bisected at %s"
 msgstr "Nhánh %s đang được di chuyển phân đôi (bisect) tại %s"
 
-#: builtin/branch.c:471
+#: builtin/branch.c:474
 msgid "cannot copy the current branch while not on any."
 msgstr "không thể sao chép nhánh hiện hành trong khi nó chẳng ở đâu cả."
 
-#: builtin/branch.c:473
+#: builtin/branch.c:476
 msgid "cannot rename the current branch while not on any."
 msgstr "không thể đổi tên nhánh hiện hành trong khi nó chẳng ở đâu cả."
 
-#: builtin/branch.c:484
+#: builtin/branch.c:487
 #, c-format
 msgid "Invalid branch name: '%s'"
 msgstr "Tên nhánh không hợp lệ: “%s”"
 
-#: builtin/branch.c:511
+#: builtin/branch.c:514
 msgid "Branch rename failed"
 msgstr "Gặp lỗi khi đổi tên nhánh"
 
-#: builtin/branch.c:513
+#: builtin/branch.c:516
 msgid "Branch copy failed"
 msgstr "Gặp lỗi khi sao chép nhánh"
 
-#: builtin/branch.c:517
+#: builtin/branch.c:520
 #, c-format
 msgid "Created a copy of a misnamed branch '%s'"
 msgstr "Đã tạo một bản sao của nhánh khuyết danh “%s”"
 
-#: builtin/branch.c:520
+#: builtin/branch.c:523
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
 msgstr "Đã đổi tên nhánh khuyết danh “%s” đi"
 
-#: builtin/branch.c:526
+#: builtin/branch.c:529
 #, c-format
 msgid "Branch renamed to %s, but HEAD is not updated!"
 msgstr "Nhánh bị đổi tên thành %s, nhưng HEAD lại không được cập nhật!"
 
-#: builtin/branch.c:535
+#: builtin/branch.c:538
 msgid "Branch is renamed, but update of config-file failed"
 msgstr "Nhánh bị đổi tên, nhưng cập nhật tập tin cấu hình gặp lỗi"
 
-#: builtin/branch.c:537
+#: builtin/branch.c:540
 msgid "Branch is copied, but update of config-file failed"
 msgstr "Nhánh đã được sao chép, nhưng cập nhật tập tin cấu hình gặp lỗi"
 
-#: builtin/branch.c:553
+#: builtin/branch.c:556
 #, c-format
 msgid ""
 "Please edit the description for the branch\n"
@@ -6011,184 +6404,186 @@ msgstr ""
 "  %s\n"
 "Những dòng được bắt đầu bằng “%c” sẽ được cắt bỏ.\n"
 
-#: builtin/branch.c:586
+#: builtin/branch.c:589
 msgid "Generic options"
 msgstr "Tùy chọn chung"
 
-#: builtin/branch.c:588
+#: builtin/branch.c:591
 msgid "show hash and subject, give twice for upstream branch"
 msgstr "hiển thị mã băm và chủ đề, đưa ra hai lần cho nhánh thượng nguồn"
 
-#: builtin/branch.c:589
+#: builtin/branch.c:592
 msgid "suppress informational messages"
 msgstr "không xuất các thông tin"
 
-#: builtin/branch.c:590
+#: builtin/branch.c:593
 msgid "set up tracking mode (see git-pull(1))"
 msgstr "cài đặt chế độ theo dõi (xem git-pull(1))"
 
-#: builtin/branch.c:592
+#: builtin/branch.c:595
 msgid "do not use"
 msgstr "không dùng"
 
-#: builtin/branch.c:594
+#: builtin/branch.c:597
 msgid "upstream"
 msgstr "thượng nguồn"
 
-#: builtin/branch.c:594
+#: builtin/branch.c:597
 msgid "change the upstream info"
 msgstr "thay đổi thông tin thượng nguồn"
 
-#: builtin/branch.c:595
+#: builtin/branch.c:598
 msgid "Unset the upstream info"
 msgstr "Bỏ đặt thông tin thượng nguồn"
 
-#: builtin/branch.c:596
+#: builtin/branch.c:599
 msgid "use colored output"
 msgstr "tô màu kết xuất"
 
-#: builtin/branch.c:597
+#: builtin/branch.c:600
 msgid "act on remote-tracking branches"
 msgstr "thao tác trên nhánh “remote-tracking”"
 
-#: builtin/branch.c:599 builtin/branch.c:601
+#: builtin/branch.c:602 builtin/branch.c:604
 msgid "print only branches that contain the commit"
 msgstr "chỉ hiển thị những nhánh mà nó chứa lần chuyển giao"
 
-#: builtin/branch.c:600 builtin/branch.c:602
+#: builtin/branch.c:603 builtin/branch.c:605
 msgid "print only branches that don't contain the commit"
 msgstr "chỉ hiển thị những nhánh mà nó không chứa lần chuyển giao"
 
-#: builtin/branch.c:605
+#: builtin/branch.c:608
 msgid "Specific git-branch actions:"
 msgstr "Hành động git-branch:"
 
-#: builtin/branch.c:606
+#: builtin/branch.c:609
 msgid "list both remote-tracking and local branches"
 msgstr "liệt kê cả nhánh “remote-tracking” và nội bộ"
 
-#: builtin/branch.c:608
+#: builtin/branch.c:611
 msgid "delete fully merged branch"
 msgstr "xóa một toàn bộ nhánh đã hòa trộn"
 
-#: builtin/branch.c:609
+#: builtin/branch.c:612
 msgid "delete branch (even if not merged)"
 msgstr "xóa nhánh (cho dù là chưa được hòa trộn)"
 
-#: builtin/branch.c:610
+#: builtin/branch.c:613
 msgid "move/rename a branch and its reflog"
 msgstr "di chuyển hay đổi tên một nhánh và reflog của nó"
 
-#: builtin/branch.c:611
+#: builtin/branch.c:614
 msgid "move/rename a branch, even if target exists"
 msgstr "di chuyển hoặc đổi tên một nhánh ngay cả khi đích đã có sẵn"
 
-#: builtin/branch.c:612
+#: builtin/branch.c:615
 msgid "copy a branch and its reflog"
 msgstr "sao chép một nhánh và reflog của nó"
 
-#: builtin/branch.c:613
+#: builtin/branch.c:616
 msgid "copy a branch, even if target exists"
 msgstr "sao chép một nhánh ngay cả khi đích đã có sẵn"
 
-#: builtin/branch.c:614
+#: builtin/branch.c:617
 msgid "list branch names"
 msgstr "liệt kê các tên nhánh"
 
-#: builtin/branch.c:615
+#: builtin/branch.c:618
 msgid "create the branch's reflog"
 msgstr "tạo reflog của nhánh"
 
-#: builtin/branch.c:617
+#: builtin/branch.c:620
 msgid "edit the description for the branch"
 msgstr "sửa mô tả cho nhánh"
 
-#: builtin/branch.c:618
+#: builtin/branch.c:621
 msgid "force creation, move/rename, deletion"
 msgstr "buộc tạo, di chuyển/đổi tên, xóa"
 
-#: builtin/branch.c:619
+#: builtin/branch.c:622
 msgid "print only branches that are merged"
 msgstr "chỉ hiển thị những nhánh mà nó được hòa trộn"
 
-#: builtin/branch.c:620
+#: builtin/branch.c:623
 msgid "print only branches that are not merged"
 msgstr "chỉ hiển thị những nhánh mà nó không được hòa trộn"
 
-#: builtin/branch.c:621
+#: builtin/branch.c:624
 msgid "list branches in columns"
 msgstr "liệt kê các nhánh trong các cột"
 
-#: builtin/branch.c:622 builtin/for-each-ref.c:40 builtin/tag.c:411
+#: builtin/branch.c:625 builtin/for-each-ref.c:40 builtin/ls-remote.c:70
+#: builtin/tag.c:412
 msgid "key"
 msgstr "khóa"
 
-#: builtin/branch.c:623 builtin/for-each-ref.c:41 builtin/tag.c:412
+#: builtin/branch.c:626 builtin/for-each-ref.c:41 builtin/ls-remote.c:71
+#: builtin/tag.c:413
 msgid "field name to sort on"
 msgstr "tên trường cần sắp xếp"
 
-#: builtin/branch.c:625 builtin/for-each-ref.c:43 builtin/notes.c:408
+#: builtin/branch.c:628 builtin/for-each-ref.c:43 builtin/notes.c:408
 #: builtin/notes.c:411 builtin/notes.c:571 builtin/notes.c:574
-#: builtin/tag.c:414
+#: builtin/tag.c:415
 msgid "object"
 msgstr "đối tượng"
 
-#: builtin/branch.c:626
+#: builtin/branch.c:629
 msgid "print only branches of the object"
 msgstr "chỉ hiển thị các nhánh của đối tượng"
 
-#: builtin/branch.c:628 builtin/for-each-ref.c:49 builtin/tag.c:421
+#: builtin/branch.c:631 builtin/for-each-ref.c:49 builtin/tag.c:422
 msgid "sorting and filtering are case insensitive"
 msgstr "sắp xếp và lọc là phân biệt HOA thường"
 
-#: builtin/branch.c:629 builtin/for-each-ref.c:38 builtin/tag.c:419
+#: builtin/branch.c:632 builtin/for-each-ref.c:38 builtin/tag.c:420
 #: builtin/verify-tag.c:39
 msgid "format to use for the output"
 msgstr "định dạng sẽ dùng cho đầu ra"
 
-#: builtin/branch.c:652 builtin/clone.c:735
+#: builtin/branch.c:655 builtin/clone.c:737
 msgid "HEAD not found below refs/heads!"
 msgstr "không tìm thấy HEAD ở dưới refs/heads!"
 
-#: builtin/branch.c:675
+#: builtin/branch.c:678
 msgid "--column and --verbose are incompatible"
 msgstr "tùy chọn --column và --verbose xung khắc nhau"
 
-#: builtin/branch.c:690 builtin/branch.c:742 builtin/branch.c:751
+#: builtin/branch.c:693 builtin/branch.c:745 builtin/branch.c:754
 msgid "branch name required"
 msgstr "cần chỉ ra tên nhánh"
 
-#: builtin/branch.c:718
+#: builtin/branch.c:721
 msgid "Cannot give description to detached HEAD"
 msgstr "Không thể đưa ra mô tả HEAD đã tách rời"
 
-#: builtin/branch.c:723
+#: builtin/branch.c:726
 msgid "cannot edit description of more than one branch"
 msgstr "không thể sửa mô tả cho nhiều hơn một nhánh"
 
-#: builtin/branch.c:730
+#: builtin/branch.c:733
 #, c-format
 msgid "No commit on branch '%s' yet."
 msgstr "Vẫn chưa chuyển giao trên nhánh “%s”."
 
-#: builtin/branch.c:733
+#: builtin/branch.c:736
 #, c-format
 msgid "No branch named '%s'."
 msgstr "Không có nhánh nào có tên “%s”."
 
-#: builtin/branch.c:748
+#: builtin/branch.c:751
 msgid "too many branches for a copy operation"
 msgstr "quá nhiều nhánh dành cho thao tác sao chép"
 
-#: builtin/branch.c:757
+#: builtin/branch.c:760
 msgid "too many arguments for a rename operation"
 msgstr "quá nhiều tham số cho thao tác đổi tên"
 
-#: builtin/branch.c:762
+#: builtin/branch.c:765
 msgid "too many arguments to set new upstream"
 msgstr "quá nhiều tham số để đặt thượng nguồn mới"
 
-#: builtin/branch.c:766
+#: builtin/branch.c:769
 #, c-format
 msgid ""
 "could not set upstream of HEAD to %s when it does not point to any branch."
@@ -6196,36 +6591,36 @@ msgstr ""
 "không thể đặt thượng nguồn của HEAD thành %s khi mà nó chẳng chỉ đến nhánh "
 "nào cả."
 
-#: builtin/branch.c:769 builtin/branch.c:791 builtin/branch.c:807
+#: builtin/branch.c:772 builtin/branch.c:794 builtin/branch.c:810
 #, c-format
 msgid "no such branch '%s'"
 msgstr "không có nhánh nào như thế “%s”"
 
-#: builtin/branch.c:773
+#: builtin/branch.c:776
 #, c-format
 msgid "branch '%s' does not exist"
 msgstr "chưa có nhánh “%s”"
 
-#: builtin/branch.c:785
+#: builtin/branch.c:788
 msgid "too many arguments to unset upstream"
 msgstr "quá nhiều tham số để bỏ đặt thượng nguồn"
 
-#: builtin/branch.c:789
+#: builtin/branch.c:792
 msgid "could not unset upstream of HEAD when it does not point to any branch."
 msgstr "không thể bỏ đặt thượng nguồn của HEAD không chỉ đến một nhánh nào cả."
 
-#: builtin/branch.c:795
+#: builtin/branch.c:798
 #, c-format
 msgid "Branch '%s' has no upstream information"
 msgstr "Nhánh “%s” không có thông tin thượng nguồn"
 
-#: builtin/branch.c:810
+#: builtin/branch.c:813
 msgid "-a and -r options to 'git branch' do not make sense with a branch name"
 msgstr ""
 "hai tùy chọn -a và -r áp dụng cho lệnh “git branch” không hợp lý đối với tên "
 "nhánh"
 
-#: builtin/branch.c:813
+#: builtin/branch.c:816
 msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
@@ -6246,7 +6641,7 @@ msgstr "Cần một kho chứa để có thể tạo một bundle."
 msgid "Need a repository to unbundle."
 msgstr "Cần một kho chứa để có thể giải nén một bundle."
 
-#: builtin/cat-file.c:523
+#: builtin/cat-file.c:525
 msgid ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <type> | --textconv | --filters) [--path=<path>] <object>"
@@ -6254,7 +6649,7 @@ msgstr ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <kiểu> | --textconv) | --filters) [--path=<đường/dẫn>] <đối_tượng>"
 
-#: builtin/cat-file.c:524
+#: builtin/cat-file.c:526
 msgid ""
 "git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
 "filters]"
@@ -6262,64 +6657,64 @@ msgstr ""
 "git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
 "filters]"
 
-#: builtin/cat-file.c:561
+#: builtin/cat-file.c:563
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr "<kiểu> là một trong số: blob, tree, commit hoặc tag"
 
-#: builtin/cat-file.c:562
+#: builtin/cat-file.c:564
 msgid "show object type"
 msgstr "hiển thị kiểu đối tượng"
 
-#: builtin/cat-file.c:563
+#: builtin/cat-file.c:565
 msgid "show object size"
 msgstr "hiển thị kích thước đối tượng"
 
-#: builtin/cat-file.c:565
+#: builtin/cat-file.c:567
 msgid "exit with zero when there's no error"
 msgstr "thoát với 0 khi không có lỗi"
 
-#: builtin/cat-file.c:566
+#: builtin/cat-file.c:568
 msgid "pretty-print object's content"
 msgstr "in nội dung đối tượng dạng dễ đọc"
 
-#: builtin/cat-file.c:568
+#: builtin/cat-file.c:570
 msgid "for blob objects, run textconv on object's content"
 msgstr "với đối tượng blob, chạy lệnh textconv trên nội dung của đối tượng"
 
-#: builtin/cat-file.c:570
+#: builtin/cat-file.c:572
 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:571 git-submodule.sh:878
+#: builtin/cat-file.c:573 git-submodule.sh:894
 msgid "blob"
 msgstr "blob"
 
-#: builtin/cat-file.c:572
+#: builtin/cat-file.c:574
 msgid "use a specific path for --textconv/--filters"
 msgstr "dùng một đường dẫn rõ ràng cho --textconv/--filters"
 
-#: builtin/cat-file.c:574
+#: builtin/cat-file.c:576
 msgid "allow -s and -t to work with broken/corrupt objects"
 msgstr "cho phép -s và -t để làm việc với các đối tượng sai/hỏng"
 
-#: builtin/cat-file.c:575
+#: builtin/cat-file.c:577
 msgid "buffer --batch output"
 msgstr "đệm kết xuất --batch"
 
-#: builtin/cat-file.c:577
+#: builtin/cat-file.c:579
 msgid "show info and content of objects fed from the standard input"
 msgstr ""
 "hiển thị thông tin và nội dung của các đối tượng lấy từ đầu vào tiêu chuẩn"
 
-#: builtin/cat-file.c:580
+#: builtin/cat-file.c:582
 msgid "show info about objects fed from the standard input"
 msgstr "hiển thị các thông tin về đối tượng fed  từ đầu vào tiêu chuẩn"
 
-#: builtin/cat-file.c:583
+#: builtin/cat-file.c:585
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
 msgstr "theo liên kết mềm trong-cây (được dùng với --batch hay --batch-check)"
 
-#: builtin/cat-file.c:585
+#: builtin/cat-file.c:587
 msgid "show all objects with --batch or --batch-check"
 msgstr "hiển thị mọi đối tượng với --batch hay --batch-check"
 
@@ -6347,7 +6742,7 @@ msgstr "đọc tên tập tin từ đầu vào tiêu chuẩn"
 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:20 builtin/checkout.c:1106 builtin/gc.c:358
+#: builtin/check-ignore.c:20 builtin/checkout.c:1113 builtin/gc.c:500
 msgid "suppress progress reporting"
 msgstr "chặn các báo cáo tiến trình hoạt động"
 
@@ -6438,9 +6833,9 @@ msgid "write the content to temporary files"
 msgstr "ghi nội dung vào tập tin tạm"
 
 #: builtin/checkout-index.c:173 builtin/column.c:31
-#: builtin/submodule--helper.c:1203 builtin/submodule--helper.c:1206
-#: builtin/submodule--helper.c:1212 builtin/submodule--helper.c:1574
-#: builtin/worktree.c:570
+#: builtin/submodule--helper.c:1216 builtin/submodule--helper.c:1219
+#: builtin/submodule--helper.c:1227 builtin/submodule--helper.c:1591
+#: builtin/worktree.c:610
 msgid "string"
 msgstr "chuỗi"
 
@@ -6512,54 +6907,54 @@ msgstr ""
 msgid "path '%s' is unmerged"
 msgstr "đường dẫn “%s” không được hòa trộn"
 
-#: builtin/checkout.c:505
+#: builtin/checkout.c:506
 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:636
+#: builtin/checkout.c:643
 #, 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:677
+#: builtin/checkout.c:684
 msgid "HEAD is now at"
 msgstr "HEAD hiện giờ tại"
 
-#: builtin/checkout.c:681 builtin/clone.c:689
+#: builtin/checkout.c:688 builtin/clone.c:691
 msgid "unable to update HEAD"
 msgstr "không thể cập nhật HEAD"
 
-#: builtin/checkout.c:685
+#: builtin/checkout.c:692
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Đặt lại nhánh “%s”\n"
 
-#: builtin/checkout.c:688
+#: builtin/checkout.c:695
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Đã sẵn sàng trên “%s”\n"
 
-#: builtin/checkout.c:692
+#: builtin/checkout.c:699
 #, 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:694 builtin/checkout.c:1039
+#: builtin/checkout.c:701 builtin/checkout.c:1046
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Đã chuyển đến nhánh mới “%s”\n"
 
-#: builtin/checkout.c:696
+#: builtin/checkout.c:703
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Đã chuyển đến nhánh “%s”\n"
 
-#: builtin/checkout.c:747
+#: builtin/checkout.c:754
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " … và nhiều hơn %d.\n"
 
-#: builtin/checkout.c:753
+#: builtin/checkout.c:760
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -6578,7 +6973,7 @@ msgstr[0] ""
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:772
+#: builtin/checkout.c:779
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -6599,164 +6994,164 @@ msgstr[0] ""
 " git branch <tên_nhánh_mới> %s\n"
 "\n"
 
-#: builtin/checkout.c:804
+#: builtin/checkout.c:811
 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:808
+#: builtin/checkout.c:815
 msgid "Previous HEAD position was"
 msgstr "Vị trí trước kia của HEAD là"
 
-#: builtin/checkout.c:836 builtin/checkout.c:1034
+#: builtin/checkout.c:843 builtin/checkout.c:1041
 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:940
+#: builtin/checkout.c:947
 #, 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:980 builtin/worktree.c:249
+#: builtin/checkout.c:987 builtin/worktree.c:240 builtin/worktree.c:389
 #, c-format
 msgid "invalid reference: %s"
 msgstr "tham chiếu không hợp lệ: %s"
 
-#: builtin/checkout.c:1009
+#: builtin/checkout.c:1016
 #, 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:1048
+#: builtin/checkout.c:1055
 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:1051 builtin/checkout.c:1055
+#: builtin/checkout.c:1058 builtin/checkout.c:1062
 #, 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:1059 builtin/checkout.c:1062 builtin/checkout.c:1067
-#: builtin/checkout.c:1070
+#: builtin/checkout.c:1066 builtin/checkout.c:1069 builtin/checkout.c:1074
+#: builtin/checkout.c:1077
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "“%s” không thể được dùng với “%s”"
 
-#: builtin/checkout.c:1075
+#: builtin/checkout.c:1082
 #, 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:1107 builtin/checkout.c:1109 builtin/clone.c:116
-#: builtin/remote.c:166 builtin/remote.c:168 builtin/worktree.c:387
-#: builtin/worktree.c:389
+#: builtin/checkout.c:1114 builtin/checkout.c:1116 builtin/clone.c:118
+#: builtin/remote.c:167 builtin/remote.c:169 builtin/worktree.c:433
+#: builtin/worktree.c:435
 msgid "branch"
 msgstr "nhánh"
 
-#: builtin/checkout.c:1108
+#: builtin/checkout.c:1115
 msgid "create and checkout a new branch"
 msgstr "tạo và checkout một nhánh mới"
 
-#: builtin/checkout.c:1110
+#: builtin/checkout.c:1117
 msgid "create/reset and checkout a branch"
 msgstr "tạo/đặt_lại và checkout một nhánh"
 
-#: builtin/checkout.c:1111
+#: builtin/checkout.c:1118
 msgid "create reflog for new branch"
 msgstr "tạo reflog cho nhánh mới"
 
-#: builtin/checkout.c:1112 builtin/worktree.c:391
+#: builtin/checkout.c:1119 builtin/worktree.c:437
 msgid "detach HEAD at named commit"
 msgstr "rời bỏ HEAD tại lần chuyển giao theo tên"
 
-#: builtin/checkout.c:1113
+#: builtin/checkout.c:1120
 msgid "set upstream info for new branch"
 msgstr "đặt thông tin thượng nguồn cho nhánh mới"
 
-#: builtin/checkout.c:1115
+#: builtin/checkout.c:1122
 msgid "new-branch"
 msgstr "nhánh-mới"
 
-#: builtin/checkout.c:1115
+#: builtin/checkout.c:1122
 msgid "new unparented branch"
 msgstr "nhánh không cha mới"
 
-#: builtin/checkout.c:1116
+#: builtin/checkout.c:1123
 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:1118
+#: builtin/checkout.c:1125
 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:1120
+#: builtin/checkout.c:1127
 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:1122
+#: builtin/checkout.c:1129
 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:1124 builtin/merge.c:239
+#: builtin/checkout.c:1131 builtin/merge.c:241
 msgid "update ignored files (default)"
 msgstr "cập nhật các tập tin bị bỏ qua (mặc định)"
 
-#: builtin/checkout.c:1126 builtin/log.c:1499 parse-options.h:263
+#: builtin/checkout.c:1133 builtin/log.c:1499 parse-options.h:264
 msgid "style"
 msgstr "kiểu"
 
-#: builtin/checkout.c:1127
+#: builtin/checkout.c:1134
 msgid "conflict style (merge or diff3)"
 msgstr "xung đột kiểu (hòa trộn hoặc diff3)"
 
-#: builtin/checkout.c:1130
+#: builtin/checkout.c:1137
 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 thưa thớt"
 
-#: builtin/checkout.c:1132
+#: builtin/checkout.c:1139
 msgid "second guess 'git checkout <no-such-branch>'"
 msgstr "gợi ý thứ hai \"git checkout <không-nhánh-nào-như-vậy>\""
 
-#: builtin/checkout.c:1134
+#: builtin/checkout.c:1141
 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:1138 builtin/clone.c:83 builtin/fetch.c:150
-#: builtin/merge.c:236 builtin/pull.c:123 builtin/push.c:556
-#: builtin/send-pack.c:173
+#: builtin/checkout.c:1145 builtin/clone.c:85 builtin/fetch.c:149
+#: builtin/merge.c:238 builtin/pull.c:128 builtin/push.c:572
+#: builtin/send-pack.c:174
 msgid "force progress reporting"
 msgstr "ép buộc báo cáo tiến triển công việc"
 
-#: builtin/checkout.c:1168
+#: builtin/checkout.c:1175
 msgid "-b, -B and --orphan are mutually exclusive"
 msgstr "Các tùy chọn -b, -B và --orphan loại từ lẫn nhau"
 
-#: builtin/checkout.c:1185
+#: builtin/checkout.c:1192
 msgid "--track needs a branch name"
 msgstr "--track cần tên một nhánh"
 
-#: builtin/checkout.c:1190
+#: builtin/checkout.c:1197
 msgid "Missing branch name; try -b"
 msgstr "Thiếu tên nhánh; hãy thử -b"
 
-#: builtin/checkout.c:1226
+#: builtin/checkout.c:1233
 msgid "invalid path specification"
 msgstr "đường dẫn đã cho không hợp lệ"
 
-#: builtin/checkout.c:1233
+#: builtin/checkout.c:1240
 #, 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:1237
+#: builtin/checkout.c:1244
 #, 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:1241
+#: builtin/checkout.c:1248
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -6795,7 +7190,7 @@ msgstr "Nên bỏ qua kho chứa %s\n"
 msgid "failed to remove %s"
 msgstr "gặp lỗi khi gỡ bỏ %s"
 
-#: builtin/clean.c:302 git-add--interactive.perl:572
+#: builtin/clean.c:302 git-add--interactive.perl:579
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -6808,7 +7203,7 @@ msgstr ""
 "foo        - chọn mục trên cơ sở tiền tố duy nhất\n"
 "           - (để trống) không chọn gì cả\n"
 
-#: builtin/clean.c:306 git-add--interactive.perl:581
+#: builtin/clean.c:306 git-add--interactive.perl:588
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -6829,8 +7224,8 @@ msgstr ""
 "*          - chọn tất\n"
 "           - (để trống) kết thúc việc chọn\n"
 
-#: builtin/clean.c:522 git-add--interactive.perl:547
-#: git-add--interactive.perl:552
+#: builtin/clean.c:522 git-add--interactive.perl:554
+#: git-add--interactive.perl:559
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "Hả (%s)?\n"
@@ -6855,7 +7250,7 @@ msgstr "Chọn mục muốn xóa"
 msgid "Remove %s [y/N]? "
 msgstr "Xóa bỏ “%s” [y/N]? "
 
-#: builtin/clean.c:788 git-add--interactive.perl:1710
+#: builtin/clean.c:788 git-add--interactive.perl:1717
 #, c-format
 msgid "Bye.\n"
 msgstr "Tạm biệt.\n"
@@ -6878,11 +7273,11 @@ msgstr ""
 "help                - hiển thị chính trợ giúp này\n"
 "?                   - trợ giúp dành cho chọn bằng cách nhắc"
 
-#: builtin/clean.c:823 git-add--interactive.perl:1786
+#: builtin/clean.c:823 git-add--interactive.perl:1793
 msgid "*** Commands ***"
 msgstr "*** Lệnh ***"
 
-#: builtin/clean.c:824 git-add--interactive.perl:1783
+#: builtin/clean.c:824 git-add--interactive.perl:1790
 msgid "What now"
 msgstr "Giờ thì sao"
 
@@ -6950,146 +7345,148 @@ msgstr ""
 "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/clone.c:40
+#: builtin/clone.c:42
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr "git clone [<các-tùy-chọn>] [--] <kho> [<t.mục>]"
 
-#: builtin/clone.c:85
+#: builtin/clone.c:87
 msgid "don't create a checkout"
 msgstr "không tạo một checkout"
 
-#: builtin/clone.c:86 builtin/clone.c:88 builtin/init-db.c:479
+#: builtin/clone.c:88 builtin/clone.c:90 builtin/init-db.c:479
 msgid "create a bare repository"
 msgstr "tạo kho thuần"
 
-#: builtin/clone.c:90
+#: builtin/clone.c:92
 msgid "create a mirror repository (implies bare)"
 msgstr "tạo kho bản sao (ý là kho thuần)"
 
-#: builtin/clone.c:92
+#: builtin/clone.c:94
 msgid "to clone from a local repository"
 msgstr "để nhân bản từ kho nội bộ"
 
-#: builtin/clone.c:94
+#: builtin/clone.c:96
 msgid "don't use local hardlinks, always copy"
 msgstr "không sử dụng liên kết cứng nội bộ, luôn sao chép"
 
-#: builtin/clone.c:96
+#: builtin/clone.c:98
 msgid "setup as shared repository"
 msgstr "cài đặt đây là kho chia sẻ"
 
-#: builtin/clone.c:98 builtin/clone.c:102
+#: builtin/clone.c:100 builtin/clone.c:104
 msgid "pathspec"
 msgstr "đặc-tả-đường-dẫn"
 
-#: builtin/clone.c:98 builtin/clone.c:102
+#: builtin/clone.c:100 builtin/clone.c:104
 msgid "initialize submodules in the clone"
 msgstr "khởi tạo mô-đun-con trong bản sao"
 
-#: builtin/clone.c:105
+#: builtin/clone.c:107
 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:106 builtin/init-db.c:476
+#: builtin/clone.c:108 builtin/init-db.c:476
 msgid "template-directory"
 msgstr "thư-mục-mẫu"
 
-#: builtin/clone.c:107 builtin/init-db.c:477
+#: builtin/clone.c:109 builtin/init-db.c:477
 msgid "directory from which templates will be used"
 msgstr "thư mục mà tại đó các mẫu sẽ được dùng"
 
-#: builtin/clone.c:109 builtin/clone.c:111 builtin/submodule--helper.c:1210
-#: builtin/submodule--helper.c:1577
+#: builtin/clone.c:111 builtin/clone.c:113 builtin/submodule--helper.c:1223
+#: builtin/submodule--helper.c:1594
 msgid "reference repository"
 msgstr "kho tham chiếu"
 
-#: builtin/clone.c:113
+#: builtin/clone.c:115 builtin/submodule--helper.c:1225
+#: builtin/submodule--helper.c:1596
 msgid "use --reference only while cloning"
 msgstr "chỉ dùng --reference khi nhân bản"
 
-#: builtin/clone.c:114 builtin/column.c:27 builtin/merge-file.c:44
+#: builtin/clone.c:116 builtin/column.c:27 builtin/merge-file.c:44
+#: builtin/pack-objects.c:3166 builtin/repack.c:213
 msgid "name"
 msgstr "tên"
 
-#: builtin/clone.c:115
+#: builtin/clone.c:117
 msgid "use <name> instead of 'origin' to track upstream"
 msgstr "dùng <tên> thay cho “origin” để theo dõi thượng nguồn"
 
-#: builtin/clone.c:117
+#: builtin/clone.c:119
 msgid "checkout <branch> instead of the remote's HEAD"
 msgstr "lấy ra <nhánh> thay cho HEAD của máy chủ"
 
-#: builtin/clone.c:119
+#: builtin/clone.c:121
 msgid "path to git-upload-pack on the remote"
 msgstr "đường dẫn đến git-upload-pack trên máy chủ"
 
-#: builtin/clone.c:120 builtin/fetch.c:151 builtin/grep.c:813
-#: builtin/pull.c:211
+#: builtin/clone.c:122 builtin/fetch.c:150 builtin/grep.c:813
+#: builtin/pull.c:216
 msgid "depth"
 msgstr "độ-sâu"
 
-#: builtin/clone.c:121
+#: builtin/clone.c:123
 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:122 builtin/fetch.c:153 builtin/pack-objects.c:3017
+#: builtin/clone.c:124 builtin/fetch.c:152 builtin/pack-objects.c:3157
 #: parse-options.h:154
 msgid "time"
 msgstr "thời-gian"
 
-#: builtin/clone.c:123
+#: builtin/clone.c:125
 msgid "create a shallow clone since a specific time"
 msgstr "tạo bản sao không đầy đủ từ thời điểm đã cho"
 
-#: builtin/clone.c:124 builtin/fetch.c:155
+#: builtin/clone.c:126 builtin/fetch.c:154
 msgid "revision"
 msgstr "điểm xét duyệt"
 
-#: builtin/clone.c:125 builtin/fetch.c:156
+#: builtin/clone.c:127 builtin/fetch.c:155
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "làm sâu hơn lịch sử của bản sao shallow, bằng điểm xét duyệt loại trừ"
 
-#: builtin/clone.c:127
+#: builtin/clone.c:129
 msgid "clone only one branch, HEAD or --branch"
 msgstr "chỉ nhân bản một nhánh, HEAD hoặc --branch"
 
-#: builtin/clone.c:129
+#: builtin/clone.c:131
 msgid "don't clone any tags, and make later fetches not to follow them"
 msgstr ""
 "đứng có nhân bản bất kỳ nhánh nào, và làm cho những lần lấy về sau không "
 "theo chúng nữa"
 
-#: builtin/clone.c:131
+#: builtin/clone.c:133
 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:132 builtin/init-db.c:485
+#: builtin/clone.c:134 builtin/init-db.c:485
 msgid "gitdir"
 msgstr "gitdir"
 
-#: builtin/clone.c:133 builtin/init-db.c:486
+#: builtin/clone.c:135 builtin/init-db.c:486
 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"
 
-#: builtin/clone.c:134
+#: builtin/clone.c:136
 msgid "key=value"
 msgstr "khóa=giá_trị"
 
-#: builtin/clone.c:135
+#: builtin/clone.c:137
 msgid "set config inside the new repository"
 msgstr "đặt cấu hình bên trong một kho chứa mới"
 
-#: builtin/clone.c:136 builtin/fetch.c:173 builtin/pull.c:224
-#: builtin/push.c:567
+#: builtin/clone.c:138 builtin/fetch.c:173 builtin/pull.c:229
+#: builtin/push.c:583
 msgid "use IPv4 addresses only"
 msgstr "chỉ dùng địa chỉ IPv4"
 
-#: builtin/clone.c:138 builtin/fetch.c:175 builtin/pull.c:227
-#: builtin/push.c:569
+#: builtin/clone.c:140 builtin/fetch.c:175 builtin/pull.c:232
+#: builtin/push.c:585
 msgid "use IPv6 addresses only"
 msgstr "chỉ dùng địa chỉ IPv6"
 
-#: builtin/clone.c:276
+#: builtin/clone.c:278
 msgid ""
 "No directory name could be guessed.\n"
 "Please specify a directory on the command line"
@@ -7097,42 +7494,42 @@ msgstr ""
 "Không đoán được thư mục tên là gì.\n"
 "Vui lòng chỉ định tên một thư mục trên dòng lệnh"
 
-#: builtin/clone.c:329
+#: builtin/clone.c:331
 #, c-format
 msgid "info: Could not add alternate for '%s': %s\n"
 msgstr "thông tin: không thể thêm thay thế cho “%s”: %s\n"
 
-#: builtin/clone.c:401
+#: builtin/clone.c:403
 #, c-format
 msgid "failed to open '%s'"
 msgstr "gặp lỗi khi mở “%s”"
 
-#: builtin/clone.c:409
+#: builtin/clone.c:411
 #, c-format
 msgid "%s exists and is not a directory"
 msgstr "%s có tồn tại nhưng lại không phải là một thư mục"
 
-#: builtin/clone.c:423
+#: builtin/clone.c:425
 #, c-format
 msgid "failed to stat %s\n"
 msgstr "gặp lỗi khi lấy thông tin thống kê về %s\n"
 
-#: builtin/clone.c:445
+#: builtin/clone.c:447
 #, c-format
 msgid "failed to create link '%s'"
 msgstr "gặp lỗi khi tạo được liên kết mềm %s"
 
-#: builtin/clone.c:449
+#: builtin/clone.c:451
 #, c-format
 msgid "failed to copy file to '%s'"
 msgstr "gặp lỗi khi sao chép tập tin và “%s”"
 
-#: builtin/clone.c:475
+#: builtin/clone.c:477
 #, c-format
 msgid "done.\n"
 msgstr "hoàn tất.\n"
 
-#: builtin/clone.c:489
+#: builtin/clone.c:491
 msgid ""
 "Clone succeeded, but checkout failed.\n"
 "You can inspect what was checked out with 'git status'\n"
@@ -7142,99 +7539,99 @@ msgstr ""
 "Bạn kiểm tra kỹ xem cái gì được lấy ra bằng lệnh “git status”\n"
 "và thử lấy ra với lệnh “git checkout -f HEAD”\n"
 
-#: builtin/clone.c:566
+#: builtin/clone.c:568
 #, c-format
 msgid "Could not find remote branch %s to clone."
 msgstr "Không tìm thấy nhánh máy chủ %s để nhân bản (clone)."
 
-#: builtin/clone.c:661
+#: builtin/clone.c:663
 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"
 
-#: builtin/clone.c:677
+#: builtin/clone.c:679
 #, c-format
 msgid "unable to update %s"
 msgstr "không thể cập nhật %s"
 
-#: builtin/clone.c:726
+#: builtin/clone.c:728
 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
 msgstr "refers HEAD máy chủ  chỉ đến ref không tồn tại, không thể lấy ra.\n"
 
-#: builtin/clone.c:756
+#: builtin/clone.c:758
 msgid "unable to checkout working tree"
 msgstr "không thể lấy ra (checkout) cây làm việc"
 
-#: builtin/clone.c:801
+#: builtin/clone.c:803
 msgid "unable to write parameters to config file"
 msgstr "không thể ghi các tham số vào tập tin cấu hình"
 
-#: builtin/clone.c:864
+#: builtin/clone.c:866
 msgid "cannot repack to clean up"
 msgstr "không thể đóng gói để dọn dẹp"
 
-#: builtin/clone.c:866
+#: builtin/clone.c:868
 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:906 builtin/receive-pack.c:1946
+#: builtin/clone.c:907 builtin/receive-pack.c:1947
 msgid "Too many arguments."
 msgstr "Có quá nhiều đối số."
 
-#: builtin/clone.c:910
+#: builtin/clone.c:911
 msgid "You must specify a repository to clone."
 msgstr "Bạn phải chỉ định một kho để mà nhân bản (clone)."
 
-#: builtin/clone.c:923
+#: builtin/clone.c:924
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr "tùy chọn --bare và --origin %s xung khắc nhau."
 
-#: builtin/clone.c:926
+#: builtin/clone.c:927
 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:939
+#: builtin/clone.c:940
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "kho chứa “%s” chưa tồn tại"
 
-#: builtin/clone.c:945 builtin/fetch.c:1455
+#: builtin/clone.c:946 builtin/fetch.c:1460
 #, 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:955
+#: builtin/clone.c:956
 #, 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:965
+#: builtin/clone.c:966
 #, 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:980 builtin/clone.c:1001 builtin/difftool.c:270
-#: builtin/worktree.c:255 builtin/worktree.c:285
+#: builtin/clone.c:981 builtin/clone.c:1002 builtin/difftool.c:270
+#: builtin/worktree.c:246 builtin/worktree.c:276
 #, 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:985
+#: builtin/clone.c:986
 #, 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:1005
+#: builtin/clone.c:1006
 #, 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:1007
+#: builtin/clone.c:1008
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Đang nhân bản thành “%s”…\n"
 
-#: builtin/clone.c:1031
+#: builtin/clone.c:1032
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
@@ -7308,7 +7705,7 @@ msgstr "Chèn thêm khoảng trắng vào bên phải"
 msgid "Padding space between columns"
 msgstr "Chèn thêm khoảng trắng giữa các cột"
 
-#: builtin/column.c:52
+#: builtin/column.c:51
 msgid "--command must be the first argument"
 msgstr "--command phải là đối số đầu tiên"
 
@@ -7368,63 +7765,63 @@ msgstr ""
 "Thế thì \"git cherry-pick --continue\" sẽ phục hồi lại việc cherry-pick\n"
 "những lần chuyển giao còn lại.\n"
 
-#: builtin/commit.c:284
+#: builtin/commit.c:293
 msgid "failed to unpack HEAD tree object"
 msgstr "gặp lỗi khi tháo dỡ HEAD đối tượng cây"
 
-#: builtin/commit.c:325
+#: builtin/commit.c:334
 msgid "unable to create temporary index"
 msgstr "không thể tạo bảng mục lục tạm thời"
 
-#: builtin/commit.c:331
+#: builtin/commit.c:340
 msgid "interactive add failed"
 msgstr "gặp lỗi khi thêm bằng cách tương"
 
-#: builtin/commit.c:344
+#: builtin/commit.c:353
 msgid "unable to update temporary index"
 msgstr "không thể cập nhật bảng mục lục tạm thời"
 
-#: builtin/commit.c:346
+#: builtin/commit.c:355
 msgid "Failed to update main cache tree"
 msgstr "Gặp lỗi khi cập nhật cây bộ nhớ đệm"
 
-#: builtin/commit.c:371 builtin/commit.c:395 builtin/commit.c:444
+#: builtin/commit.c:380 builtin/commit.c:403 builtin/commit.c:449
 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 (new_index)"
 
-#: builtin/commit.c:427
+#: builtin/commit.c:432
 msgid "cannot do a partial commit during a merge."
 msgstr ""
 "không thể thực hiện việc chuyển giao cục bộ trong khi đang được hòa trộn."
 
-#: builtin/commit.c:429
+#: builtin/commit.c:434
 msgid "cannot do a partial commit during a cherry-pick."
 msgstr ""
 "không thể thực hiện việc chuyển giao bộ phận trong khi đang cherry-pick."
 
-#: builtin/commit.c:437
+#: builtin/commit.c:442
 msgid "cannot read the index"
 msgstr "không đọc được bảng mục lục"
 
-#: builtin/commit.c:456
+#: builtin/commit.c:461
 msgid "unable to write temporary index file"
 msgstr "không thể ghi tập tin lưu bảng mục lục tạm thời"
 
-#: builtin/commit.c:553
+#: builtin/commit.c:558
 #, c-format
 msgid "commit '%s' lacks author header"
 msgstr "lần chuyển giao “%s” thiếu phần tác giả ở đầu"
 
-#: builtin/commit.c:555
+#: builtin/commit.c:560
 #, c-format
 msgid "commit '%s' has malformed author line"
 msgstr "lần chuyển giao “%s” có phần tác giả ở đầu dị dạng"
 
-#: builtin/commit.c:574
+#: builtin/commit.c:579
 msgid "malformed --author parameter"
 msgstr "đối số cho --author bị dị hình"
 
-#: builtin/commit.c:626
+#: builtin/commit.c:631
 msgid ""
 "unable to select a comment character that is not used\n"
 "in the current commit message"
@@ -7432,38 +7829,38 @@ msgstr ""
 "không thể chọn một ký tự ghi chú cái mà không được dùng\n"
 "trong phần ghi chú hiện tại"
 
-#: builtin/commit.c:663 builtin/commit.c:696 builtin/commit.c:1024
+#: builtin/commit.c:668 builtin/commit.c:701 builtin/commit.c:1029
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "không thể tìm kiếm commit (lần chuyển giao) %s"
 
-#: builtin/commit.c:675 builtin/shortlog.c:309
+#: builtin/commit.c:680 builtin/shortlog.c:316
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(đang đọc thông điệp nhật ký từ đầu vào tiêu chuẩn)\n"
 
-#: builtin/commit.c:677
+#: builtin/commit.c:682
 msgid "could not read log from standard input"
 msgstr "không thể đọc nhật ký từ đầu vào tiêu chuẩn"
 
-#: builtin/commit.c:681
+#: builtin/commit.c:686
 #, c-format
 msgid "could not read log file '%s'"
 msgstr "không đọc được tệp nhật ký “%s”"
 
-#: builtin/commit.c:710 builtin/commit.c:718
+#: builtin/commit.c:715 builtin/commit.c:723
 msgid "could not read SQUASH_MSG"
 msgstr "không thể đọc SQUASH_MSG"
 
-#: builtin/commit.c:715
+#: builtin/commit.c:720
 msgid "could not read MERGE_MSG"
 msgstr "không thể đọc MERGE_MSG"
 
-#: builtin/commit.c:769
+#: builtin/commit.c:774
 msgid "could not write commit template"
 msgstr "không thể ghi mẫu chuyển giao"
 
-#: builtin/commit.c:787
+#: builtin/commit.c:792
 #, c-format
 msgid ""
 "\n"
@@ -7478,7 +7875,7 @@ msgstr ""
 "\t%s\n"
 "và thử lại.\n"
 
-#: builtin/commit.c:792
+#: builtin/commit.c:797
 #, c-format
 msgid ""
 "\n"
@@ -7493,7 +7890,7 @@ msgstr ""
 "\t%s\n"
 "và thử lại.\n"
 
-#: builtin/commit.c:805
+#: builtin/commit.c:810
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -7504,7 +7901,7 @@ msgstr ""
 "bắt đầu bằng “%c” sẽ được bỏ qua, nếu phần chú thích rỗng sẽ hủy bỏ lần "
 "chuyển giao.\n"
 
-#: builtin/commit.c:813
+#: builtin/commit.c:818
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -7516,156 +7913,156 @@ msgstr ""
 "bắt đầu bằng “%c” sẽ được bỏ qua; bạn có thể xóa chúng đi nếu muốn thế.\n"
 "Phần chú thích này nếu trống rỗng sẽ hủy bỏ lần chuyển giao.\n"
 
-#: builtin/commit.c:830
+#: builtin/commit.c:835
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr "%sTác giả:           %.*s <%.*s>"
 
-#: builtin/commit.c:838
+#: builtin/commit.c:843
 #, c-format
 msgid "%sDate:      %s"
 msgstr "%sNgày tháng:        %s"
 
-#: builtin/commit.c:845
+#: builtin/commit.c:850
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr "%sNgười chuyển giao: %.*s <%.*s>"
 
-#: builtin/commit.c:862
+#: builtin/commit.c:867
 msgid "Cannot read index"
 msgstr "Không đọc được bảng mục lục"
 
-#: builtin/commit.c:928
+#: builtin/commit.c:933
 msgid "Error building trees"
 msgstr "Gặp lỗi khi xây dựng cây"
 
-#: builtin/commit.c:942 builtin/tag.c:256
+#: builtin/commit.c:947 builtin/tag.c:257
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "Xin hãy cung cấp lời chú giải hoặc là dùng tùy chọn -m hoặc là -F.\n"
 
-#: builtin/commit.c:986
+#: builtin/commit.c:991
 #, c-format
 msgid "--author '%s' is not 'Name <email>' and matches no existing author"
 msgstr ""
 "--author “%s” không phải là “Họ và tên <thư điện tửl>” và không khớp bất kỳ "
 "tác giả nào sẵn có"
 
-#: builtin/commit.c:1000
+#: builtin/commit.c:1005
 #, c-format
 msgid "Invalid ignored mode '%s'"
 msgstr "Chế độ bỏ qua không hợp lệ “%s”"
 
-#: builtin/commit.c:1014 builtin/commit.c:1264
+#: builtin/commit.c:1019 builtin/commit.c:1269
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "Chế độ cho các tập tin chưa được theo dõi không hợp lệ “%s”"
 
-#: builtin/commit.c:1052
+#: builtin/commit.c:1057
 msgid "--long and -z are incompatible"
 msgstr "hai tùy chọn -long và -z không tương thích với nhau"
 
-#: builtin/commit.c:1085
+#: builtin/commit.c:1090
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "Sử dụng cả hai tùy chọn --reset-author và --author không hợp lý"
 
-#: builtin/commit.c:1094
+#: builtin/commit.c:1099
 msgid "You have nothing to amend."
 msgstr "Không có gì để mà “tu bổ” cả."
 
-#: builtin/commit.c:1097
+#: builtin/commit.c:1102
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr ""
 "Bạn đang ở giữa của quá trình hòa trộn -- không thể thực hiện việc “tu bổ”."
 
-#: builtin/commit.c:1099
+#: builtin/commit.c:1104
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr ""
 "Bạn đang ở giữa của quá trình cherry-pick -- không thể thực hiện việc “tu "
 "bổ”."
 
-#: builtin/commit.c:1102
+#: builtin/commit.c:1107
 msgid "Options --squash and --fixup cannot be used together"
 msgstr "Các tùy chọn --squash và --fixup không thể sử dụng cùng với nhau"
 
-#: builtin/commit.c:1112
+#: builtin/commit.c:1117
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr ""
 "Chỉ được dùng một trong số tùy chọn trong số các tùy chọn -c/-C/-F/--fixup"
 
-#: builtin/commit.c:1114
+#: builtin/commit.c:1119
 msgid "Option -m cannot be combined with -c/-C/-F."
 msgstr "Tùy chọn -m không thể được tổ hợp cùng với -c/-C/-F."
 
-#: builtin/commit.c:1122
+#: builtin/commit.c:1127
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr ""
 "--reset-author chỉ có thể được sử dụng với tùy chọn -C, -c hay --amend."
 
-#: builtin/commit.c:1139
+#: builtin/commit.c:1144
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr ""
 "Chỉ một trong các tùy chọn --include/--only/--all/--interactive/--patch được "
 "sử dụng."
 
-#: builtin/commit.c:1141
+#: builtin/commit.c:1146
 msgid "No paths with --include/--only does not make sense."
 msgstr "Không đường dẫn với các tùy chọn --include/--only không hợp lý."
 
-#: builtin/commit.c:1155 builtin/tag.c:542
+#: builtin/commit.c:1160 builtin/tag.c:543
 #, c-format
 msgid "Invalid cleanup mode %s"
 msgstr "Chế độ dọn dẹp không hợp lệ %s"
 
-#: builtin/commit.c:1160
+#: builtin/commit.c:1165
 msgid "Paths with -a does not make sense."
 msgstr "Các đường dẫn với tùy chọn -a không hợp lý."
 
-#: builtin/commit.c:1278 builtin/commit.c:1443
+#: builtin/commit.c:1303 builtin/commit.c:1480
 msgid "show status concisely"
 msgstr "hiển thị trạng thái ở dạng súc tích"
 
-#: builtin/commit.c:1280 builtin/commit.c:1445
+#: builtin/commit.c:1305 builtin/commit.c:1482
 msgid "show branch information"
 msgstr "hiển thị thông tin nhánh"
 
-#: builtin/commit.c:1282
+#: builtin/commit.c:1307
 msgid "show stash information"
 msgstr "hiển thị thông tin về tạm cất"
 
-#: builtin/commit.c:1284 builtin/commit.c:1447
+#: builtin/commit.c:1309 builtin/commit.c:1484
 msgid "compute full ahead/behind values"
 msgstr "tính đầy đủ giá trị trước/sau"
 
-#: builtin/commit.c:1286
+#: builtin/commit.c:1311
 msgid "version"
 msgstr "phiên bản"
 
-#: builtin/commit.c:1286 builtin/commit.c:1449 builtin/push.c:542
-#: builtin/worktree.c:541
+#: builtin/commit.c:1311 builtin/commit.c:1486 builtin/push.c:558
+#: builtin/worktree.c:581
 msgid "machine-readable output"
 msgstr "kết xuất dạng máy-có-thể-đọc"
 
-#: builtin/commit.c:1289 builtin/commit.c:1451
+#: builtin/commit.c:1314 builtin/commit.c:1488
 msgid "show status in long format (default)"
 msgstr "hiển thị trạng thái ở định dạng dài (mặc định)"
 
-#: builtin/commit.c:1292 builtin/commit.c:1454
+#: builtin/commit.c:1317 builtin/commit.c:1491
 msgid "terminate entries with NUL"
 msgstr "chấm dứt các mục bằng NUL"
 
-#: builtin/commit.c:1294 builtin/commit.c:1298 builtin/commit.c:1457
-#: builtin/fast-export.c:999 builtin/fast-export.c:1002 builtin/tag.c:396
+#: builtin/commit.c:1319 builtin/commit.c:1323 builtin/commit.c:1494
+#: builtin/fast-export.c:1001 builtin/fast-export.c:1004 builtin/tag.c:397
 msgid "mode"
 msgstr "chế độ"
 
-#: builtin/commit.c:1295 builtin/commit.c:1457
+#: builtin/commit.c:1320 builtin/commit.c:1494
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr ""
 "hiển thị các tập tin chưa được theo dõi  dấu vết, các chế độ tùy chọn:  all, "
 "normal, no. (Mặc định: all)"
 
-#: builtin/commit.c:1299
+#: builtin/commit.c:1324
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
@@ -7673,11 +8070,11 @@ msgstr ""
 "hiển thị các tập tin bị bỏ qua, các chế độ tùy chọn: traditional, matching, "
 "no. (Mặc định: traditional)"
 
-#: builtin/commit.c:1301 parse-options.h:167
+#: builtin/commit.c:1326 parse-options.h:167
 msgid "when"
 msgstr "khi"
 
-#: builtin/commit.c:1302
+#: builtin/commit.c:1327
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
@@ -7685,190 +8082,198 @@ msgstr ""
 "bỏ qua các thay đổi trong mô-đun-con, tùy chọn khi: all, dirty, untracked. "
 "(Mặc định: all)"
 
-#: builtin/commit.c:1304
+#: builtin/commit.c:1329
 msgid "list untracked files in columns"
 msgstr "hiển thị danh sách các tập-tin chưa được theo dõi trong các cột"
 
-#: builtin/commit.c:1323
+#: builtin/commit.c:1330
+msgid "do not detect renames"
+msgstr "không dò tìm các tên thay đổi"
+
+#: builtin/commit.c:1332
+msgid "detect renames, optionally set similarity index"
+msgstr "dò các tên thay đổi, tùy ý đặt mục lục tương tự"
+
+#: builtin/commit.c:1352
 msgid "Unsupported combination of ignored and untracked-files arguments"
 msgstr ""
 "Không hỗ trỡ tổ hợp các tham số các tập tin bị bỏ qua và không được theo dõi"
 
-#: builtin/commit.c:1413
+#: builtin/commit.c:1450
 msgid "suppress summary after successful commit"
 msgstr "không hiển thị tổng kết sau khi chuyển giao thành công"
 
-#: builtin/commit.c:1414
+#: builtin/commit.c:1451
 msgid "show diff in commit message template"
 msgstr "hiển thị sự khác biệt trong mẫu tin nhắn chuyển giao"
 
-#: builtin/commit.c:1416
+#: builtin/commit.c:1453
 msgid "Commit message options"
 msgstr "Các tùy chọn ghi chú commit"
 
-#: builtin/commit.c:1417 builtin/tag.c:393
+#: builtin/commit.c:1454 builtin/tag.c:394
 msgid "read message from file"
 msgstr "đọc chú thích từ tập tin"
 
-#: builtin/commit.c:1418
+#: builtin/commit.c:1455
 msgid "author"
 msgstr "tác giả"
 
-#: builtin/commit.c:1418
+#: builtin/commit.c:1455
 msgid "override author for commit"
 msgstr "ghi đè tác giả cho commit"
 
-#: builtin/commit.c:1419 builtin/gc.c:359
+#: builtin/commit.c:1456 builtin/gc.c:501
 msgid "date"
 msgstr "ngày tháng"
 
-#: builtin/commit.c:1419
+#: builtin/commit.c:1456
 msgid "override date for commit"
 msgstr "ghi đè ngày tháng cho lần chuyển giao"
 
-#: builtin/commit.c:1420 builtin/merge.c:226 builtin/notes.c:402
-#: builtin/notes.c:565 builtin/tag.c:391
+#: builtin/commit.c:1457 builtin/merge.c:228 builtin/notes.c:402
+#: builtin/notes.c:565 builtin/tag.c:392
 msgid "message"
 msgstr "chú thích"
 
-#: builtin/commit.c:1420
+#: builtin/commit.c:1457
 msgid "commit message"
 msgstr "chú thích của lần chuyển giao"
 
-#: builtin/commit.c:1421 builtin/commit.c:1422 builtin/commit.c:1423
-#: builtin/commit.c:1424 parse-options.h:269 ref-filter.h:92
+#: builtin/commit.c:1458 builtin/commit.c:1459 builtin/commit.c:1460
+#: builtin/commit.c:1461 parse-options.h:270 ref-filter.h:92
 msgid "commit"
 msgstr "lần_chuyển_giao"
 
-#: builtin/commit.c:1421
+#: builtin/commit.c:1458
 msgid "reuse and edit message from specified commit"
 msgstr "dùng lại các ghi chú từ lần chuyển giao đã cho nhưng có cho sửa chữa"
 
-#: builtin/commit.c:1422
+#: builtin/commit.c:1459
 msgid "reuse message from specified commit"
 msgstr "dùng lại các ghi chú từ lần chuyển giao đã cho"
 
-#: builtin/commit.c:1423
+#: builtin/commit.c:1460
 msgid "use autosquash formatted message to fixup specified commit"
 msgstr ""
 "dùng ghi chú có định dạng autosquash để sửa chữa lần chuyển giao đã chỉ ra"
 
-#: builtin/commit.c:1424
+#: builtin/commit.c:1461
 msgid "use autosquash formatted message to squash specified commit"
 msgstr ""
 "dùng lời nhắn có định dạng tự động nén để nén lại các lần chuyển giao đã chỉ "
 "ra"
 
-#: builtin/commit.c:1425
+#: builtin/commit.c:1462
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr ""
 "lần chuyển giao nhận tôi là tác giả (được dùng với tùy chọn -C/-c/--amend)"
 
-#: builtin/commit.c:1426 builtin/log.c:1446 builtin/merge.c:240
-#: builtin/pull.c:149 builtin/revert.c:105
+#: builtin/commit.c:1463 builtin/log.c:1446 builtin/merge.c:242
+#: builtin/pull.c:154 builtin/revert.c:105
 msgid "add Signed-off-by:"
 msgstr "(nên dùng) thêm dòng Signed-off-by:"
 
-#: builtin/commit.c:1427
+#: builtin/commit.c:1464
 msgid "use specified template file"
 msgstr "sử dụng tập tin mẫu đã cho"
 
-#: builtin/commit.c:1428
+#: builtin/commit.c:1465
 msgid "force edit of commit"
 msgstr "ép buộc sửa lần commit"
 
-#: builtin/commit.c:1429
+#: builtin/commit.c:1466
 msgid "default"
 msgstr "mặc định"
 
-#: builtin/commit.c:1429 builtin/tag.c:397
+#: builtin/commit.c:1466 builtin/tag.c:398
 msgid "how to strip spaces and #comments from message"
 msgstr "làm thế nào để cắt bỏ khoảng trắng và #ghichú từ mẩu tin nhắn"
 
-#: builtin/commit.c:1430
+#: builtin/commit.c:1467
 msgid "include status in commit message template"
 msgstr "bao gồm các trạng thái trong mẫu ghi chú chuyển giao"
 
-#: builtin/commit.c:1432 builtin/merge.c:238 builtin/pull.c:179
+#: builtin/commit.c:1469 builtin/merge.c:240 builtin/pull.c:184
 #: builtin/revert.c:113
 msgid "GPG sign commit"
 msgstr "ký lần chuyển giao dùng GPG"
 
-#: builtin/commit.c:1435
+#: builtin/commit.c:1472
 msgid "Commit contents options"
 msgstr "Các tùy nội dung ghi chú commit"
 
-#: builtin/commit.c:1436
+#: builtin/commit.c:1473
 msgid "commit all changed files"
 msgstr "chuyển giao tất cả các tập tin có thay đổi"
 
-#: builtin/commit.c:1437
+#: builtin/commit.c:1474
 msgid "add specified files to index for commit"
 msgstr "thêm các tập tin đã chỉ ra vào bảng mục lục để chuyển giao"
 
-#: builtin/commit.c:1438
+#: builtin/commit.c:1475
 msgid "interactively add files"
 msgstr "thêm các tập-tin bằng tương tác"
 
-#: builtin/commit.c:1439
+#: builtin/commit.c:1476
 msgid "interactively add changes"
 msgstr "thêm các thay đổi bằng tương tác"
 
-#: builtin/commit.c:1440
+#: builtin/commit.c:1477
 msgid "commit only specified files"
 msgstr "chỉ chuyển giao các tập tin đã chỉ ra"
 
-#: builtin/commit.c:1441
+#: builtin/commit.c:1478
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr "vòng qua móc (hook) pre-commit và commit-msg"
 
-#: builtin/commit.c:1442
+#: builtin/commit.c:1479
 msgid "show what would be committed"
 msgstr "hiển thị xem cái gì có thể được chuyển giao"
 
-#: builtin/commit.c:1455
+#: builtin/commit.c:1492
 msgid "amend previous commit"
 msgstr "“tu bổ” (amend) lần commit trước"
 
-#: builtin/commit.c:1456
+#: builtin/commit.c:1493
 msgid "bypass post-rewrite hook"
 msgstr "vòng qua móc (hook) post-rewrite"
 
-#: builtin/commit.c:1461
+#: builtin/commit.c:1498
 msgid "ok to record an empty change"
 msgstr "ok để ghi lại một thay đổi trống rỗng"
 
-#: builtin/commit.c:1463
+#: builtin/commit.c:1500
 msgid "ok to record a change with an empty message"
 msgstr "ok để ghi các thay đổi với lời nhắn trống rỗng"
 
-#: builtin/commit.c:1536
+#: builtin/commit.c:1573
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "Tập tin MERGE_HEAD sai hỏng (%s)"
 
-#: builtin/commit.c:1543
+#: builtin/commit.c:1580
 msgid "could not read MERGE_MODE"
 msgstr "không thể đọc MERGE_MODE"
 
-#: builtin/commit.c:1562
+#: builtin/commit.c:1599
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "không thể đọc phần chú thích (message) của lần chuyển giao: %s"
 
-#: builtin/commit.c:1573
+#: builtin/commit.c:1610
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr "Bãi bỏ việc chuyển giao bởi vì phần chú thích của nó trống rỗng.\n"
 
-#: builtin/commit.c:1578
+#: builtin/commit.c:1615
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr ""
 "Đang bỏ qua việc chuyển giao; bạn đã không biên soạn phần chú thích "
 "(message).\n"
 
-#: builtin/commit.c:1613
+#: builtin/commit.c:1650
 msgid ""
 "Repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full and quota is\n"
@@ -7879,149 +8284,217 @@ msgstr ""
 "có bị đầy quá hay quota (hạn nghạch đĩa cứng) bị vượt quá,\n"
 "và sau đó \"git reset HEAD\" để khắc phục."
 
+#: builtin/commit-graph.c:9
+msgid "git commit-graph [--object-dir <objdir>]"
+msgstr "git commit-graph [--object-dir <objdir>]"
+
+#: builtin/commit-graph.c:10 builtin/commit-graph.c:16
+msgid "git commit-graph read [--object-dir <objdir>]"
+msgstr "git commit-graph read [--object-dir <objdir>]"
+
+#: builtin/commit-graph.c:11 builtin/commit-graph.c:21
+msgid ""
+"git commit-graph write [--object-dir <objdir>] [--append] [--stdin-packs|--"
+"stdin-commits]"
+msgstr ""
+"git commit-graph write [--object-dir <objdir>] [--append] [--stdin-packs|--"
+"stdin-commits]"
+
+#: builtin/commit-graph.c:39 builtin/commit-graph.c:92
+#: builtin/commit-graph.c:147 builtin/fetch.c:161 builtin/log.c:1466
+msgid "dir"
+msgstr "tmục"
+
+#: builtin/commit-graph.c:40 builtin/commit-graph.c:93
+#: builtin/commit-graph.c:148
+msgid "The object directory to store the graph"
+msgstr "Thư mục đối tượng để lưu đồ thị"
+
+#: builtin/commit-graph.c:95
+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:97
+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:99
+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ị lần chuyển giao"
+
+#: builtin/commit-graph.c:108
+msgid "cannot use both --stdin-commits and --stdin-packs"
+msgstr "không thể sử dụng cả hai --stdin-commits và --stdin-packs"
+
 #: builtin/config.c:10
 msgid "git config [<options>]"
 msgstr "git config [<các-tùy-chọn>]"
 
-#: builtin/config.c:58
+#: builtin/config.c:101
+#, c-format
+msgid "unrecognized --type argument, %s"
+msgstr "đối số không được thừa nhận --type, %s"
+
+#: builtin/config.c:123
 msgid "Config file location"
 msgstr "Vị trí tập tin cấu hình"
 
-#: builtin/config.c:59
+#: builtin/config.c:124
 msgid "use global config file"
 msgstr "dùng tập tin cấu hình toàn cục"
 
-#: builtin/config.c:60
+#: builtin/config.c:125
 msgid "use system config file"
 msgstr "sử dụng tập tin cấu hình hệ thống"
 
-#: builtin/config.c:61
+#: builtin/config.c:126
 msgid "use repository config file"
 msgstr "dùng tập tin cấu hình của kho"
 
-#: builtin/config.c:62
+#: builtin/config.c:127
 msgid "use given config file"
 msgstr "sử dụng tập tin cấu hình đã cho"
 
-#: builtin/config.c:63
+#: builtin/config.c:128
 msgid "blob-id"
 msgstr "blob-id"
 
-#: builtin/config.c:63
+#: builtin/config.c:128
 msgid "read config from given blob object"
 msgstr "đọc cấu hình từ đối tượng blob đã cho"
 
-#: builtin/config.c:64
+#: builtin/config.c:129
 msgid "Action"
 msgstr "Hành động"
 
-#: builtin/config.c:65
+#: builtin/config.c:130
 msgid "get value: name [value-regex]"
 msgstr "lấy giá-trị: tên [value-regex]"
 
-#: builtin/config.c:66
+#: builtin/config.c:131
 msgid "get all values: key [value-regex]"
 msgstr "lấy tất cả giá-trị: khóa [value-regex]"
 
-#: builtin/config.c:67
+#: builtin/config.c:132
 msgid "get values for regexp: name-regex [value-regex]"
 msgstr "lấy giá trị cho regexp: name-regex [value-regex]"
 
-#: builtin/config.c:68
+#: builtin/config.c:133
 msgid "get value specific for the URL: section[.var] URL"
 msgstr "lấy đặc tả giá trị cho URL: phần[.biến] URL"
 
-#: builtin/config.c:69
+#: builtin/config.c:134
 msgid "replace all matching variables: name value [value_regex]"
 msgstr "thay thế tất cả các biến khớp mẫu: tên giá-trị [value_regex]"
 
-#: builtin/config.c:70
+#: builtin/config.c:135
 msgid "add a new variable: name value"
 msgstr "thêm biến mới: tên giá-trị"
 
-#: builtin/config.c:71
+#: builtin/config.c:136
 msgid "remove a variable: name [value-regex]"
 msgstr "gỡ bỏ biến: tên [value-regex]"
 
-#: builtin/config.c:72
+#: builtin/config.c:137
 msgid "remove all matches: name [value-regex]"
 msgstr "gỡ bỏ mọi cái khớp: tên [value-regex]"
 
-#: builtin/config.c:73
+#: builtin/config.c:138
 msgid "rename section: old-name new-name"
 msgstr "đổi tên phần: tên-cũ tên-mới"
 
-#: builtin/config.c:74
+#: builtin/config.c:139
 msgid "remove a section: name"
 msgstr "gỡ bỏ phần: tên"
 
-#: builtin/config.c:75
+#: builtin/config.c:140
 msgid "list all"
 msgstr "liệt kê tất"
 
-#: builtin/config.c:76
+#: builtin/config.c:141
 msgid "open an editor"
 msgstr "mở một trình biên soạn"
 
-#: builtin/config.c:77
+#: builtin/config.c:142
 msgid "find the color configured: slot [default]"
 msgstr "tìm cấu hình màu sắc: slot [mặc định]"
 
-#: builtin/config.c:78
+#: builtin/config.c:143
 msgid "find the color setting: slot [stdout-is-tty]"
 msgstr "tìm các cài đặt về màu sắc: slot [stdout-là-tty]"
 
-#: builtin/config.c:79
+#: builtin/config.c:144
 msgid "Type"
 msgstr "Kiểu"
 
-#: builtin/config.c:80
+#: builtin/config.c:145
+msgid "value is given this type"
+msgstr "giá trị được đưa kiểu này"
+
+#: builtin/config.c:146
 msgid "value is \"true\" or \"false\""
 msgstr "giá trị là \"true\" hoặc \"false\""
 
-#: builtin/config.c:81
+#: builtin/config.c:147
 msgid "value is decimal number"
 msgstr "giá trị ở dạng số thập phân"
 
-#: builtin/config.c:82
+#: builtin/config.c:148
 msgid "value is --bool or --int"
 msgstr "giá trị là --bool hoặc --int"
 
-#: builtin/config.c:83
+#: builtin/config.c:149
 msgid "value is a path (file or directory name)"
 msgstr "giá trị là đường dẫn (tên tập tin hay thư mục)"
 
-#: builtin/config.c:84
+#: builtin/config.c:150
 msgid "value is an expiry date"
 msgstr "giá trị là một ngày hết hạn"
 
-#: builtin/config.c:85
+#: builtin/config.c:151
 msgid "Other"
 msgstr "Khác"
 
-#: builtin/config.c:86
+#: builtin/config.c:152
 msgid "terminate values with NUL byte"
 msgstr "chấm dứt giá trị với byte NUL"
 
-#: builtin/config.c:87
+#: builtin/config.c:153
 msgid "show variable names only"
 msgstr "chỉ hiển thị các tên biến"
 
-#: builtin/config.c:88
+#: builtin/config.c:154
 msgid "respect include directives on lookup"
 msgstr "tôn trọng kể cà các hướng trong tìm kiếm"
 
-#: builtin/config.c:89
+#: builtin/config.c:155
 msgid "show origin of config (file, standard input, blob, command line)"
 msgstr ""
 "hiển thị nguyên gốc của cấu hình (tập tin, đầu vào tiêu chuẩn, blob, dòng "
 "lệnh)"
 
-#: builtin/config.c:335
+#: builtin/config.c:156
+msgid "value"
+msgstr "giá trị"
+
+#: builtin/config.c:156
+msgid "with --get, use default value when missing entry"
+msgstr "với --get, dùng giá trị mặc định khi thiếu mục tin"
+
+#: builtin/config.c:332
+#, c-format
+msgid "failed to format default config value: %s"
+msgstr "gặp lỗi khi định dạng giá trị cấu hình mặc định: %s"
+
+#: builtin/config.c:431
 msgid "unable to parse default color value"
 msgstr "không thể phân tích giá trị màu mặc định"
 
-#: builtin/config.c:479
+#: builtin/config.c:575
 #, c-format
 msgid ""
 "# This is Git's per-user configuration file.\n"
@@ -8036,16 +8509,20 @@ msgstr ""
 "#\tname = %s\n"
 "#\temail = %s\n"
 
-#: builtin/config.c:507
+#: builtin/config.c:603
 msgid "--local can only be used inside a git repository"
 msgstr "--local chỉ có thể được dùng bên trong một kho git"
 
-#: builtin/config.c:632
+#: builtin/config.c:606
+msgid "--blob can only be used inside a git repository"
+msgstr "--blob chỉ có thể được dùng bên trong một kho git"
+
+#: builtin/config.c:735
 #, c-format
 msgid "cannot create configuration file %s"
 msgstr "không thể tạo tập tin cấu hình “%s”"
 
-#: builtin/config.c:645
+#: builtin/config.c:748
 #, c-format
 msgid ""
 "cannot overwrite multiple values with a single value\n"
@@ -8054,11 +8531,11 @@ msgstr ""
 "không thể ghi đè nhiều giá trị với một giá trị đơn\n"
 "      Dùng một biểu thức chính quy, --add hay --replace-all để thay đổi %s."
 
-#: builtin/count-objects.c:88
+#: builtin/count-objects.c:90
 msgid "git count-objects [-v] [-H | --human-readable]"
 msgstr "git count-objects [-v] [-H | --human-readable]"
 
-#: builtin/count-objects.c:98
+#: builtin/count-objects.c:100
 msgid "print sizes in human readable format"
 msgstr "hiển thị kích cỡ theo định dạng dành cho người đọc"
 
@@ -8324,23 +8801,23 @@ msgstr "thực hiện một diff toàn thư mục"
 msgid "do not prompt before launching a diff tool"
 msgstr "đừng nhắc khi khởi chạy công cụ diff"
 
-#: builtin/difftool.c:705
+#: builtin/difftool.c:704
 msgid "use symlinks in dir-diff mode"
 msgstr "dùng liên kết mềm trong diff-thư-mục"
 
-#: builtin/difftool.c:706
+#: builtin/difftool.c:705
 msgid "<tool>"
 msgstr "<công_cụ>"
 
-#: builtin/difftool.c:707
+#: builtin/difftool.c:706
 msgid "use the specified diff tool"
 msgstr "dùng công cụ diff đã cho"
 
-#: builtin/difftool.c:709
+#: builtin/difftool.c:708
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr "in ra danh sách các công cụ dif cái mà có thẻ dùng với “--tool“"
 
-#: builtin/difftool.c:712
+#: builtin/difftool.c:711
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
@@ -8348,169 +8825,165 @@ msgstr ""
 "làm cho “git-difftool” thoát khi gọi công cụ diff trả về mã không phải số "
 "không"
 
-#: builtin/difftool.c:714
+#: builtin/difftool.c:713
 msgid "<command>"
 msgstr "<lệnh>"
 
-#: builtin/difftool.c:715
+#: builtin/difftool.c:714
 msgid "specify a custom command for viewing diffs"
 msgstr "chỉ định một lệnh tùy ý để xem diff"
 
-#: builtin/difftool.c:739
+#: builtin/difftool.c:738
 msgid "no <tool> given for --tool=<tool>"
 msgstr "chưa đưa ra <công_cụ> cho --tool=<công_cụ>"
 
-#: builtin/difftool.c:746
+#: builtin/difftool.c:745
 msgid "no <cmd> given for --extcmd=<cmd>"
 msgstr "chưa đưa ra <lệnh> cho --extcmd=<lệnh>"
 
-#: builtin/fast-export.c:26
+#: builtin/fast-export.c:27
 msgid "git fast-export [rev-list-opts]"
 msgstr "git fast-export [rev-list-opts]"
 
-#: builtin/fast-export.c:998
+#: builtin/fast-export.c:1000
 msgid "show progress after <n> objects"
 msgstr "hiển thị tiến triển sau <n> đối tượng"
 
-#: builtin/fast-export.c:1000
+#: builtin/fast-export.c:1002
 msgid "select handling of signed tags"
 msgstr "chọn điều khiển của thẻ đã ký"
 
-#: builtin/fast-export.c:1003
+#: builtin/fast-export.c:1005
 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:1006
+#: builtin/fast-export.c:1008
 msgid "Dump marks to this file"
 msgstr "Đổ các đánh dấu này vào tập-tin"
 
-#: builtin/fast-export.c:1008
+#: builtin/fast-export.c:1010
 msgid "Import marks from this file"
 msgstr "nhập vào đánh dấu từ tập tin này"
 
-#: builtin/fast-export.c:1010
+#: builtin/fast-export.c:1012
 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:1012
+#: builtin/fast-export.c:1014
 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:1014
+#: builtin/fast-export.c:1016
 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:1015
+#: builtin/fast-export.c:1017
 msgid "Skip output of blob data"
 msgstr "Bỏ qua kết xuất của dữ liệu blob"
 
-#: builtin/fast-export.c:1016
+#: builtin/fast-export.c:1018
 msgid "refspec"
 msgstr "refspec"
 
-#: builtin/fast-export.c:1017
+#: builtin/fast-export.c:1019
 msgid "Apply refspec to exported refs"
 msgstr "Áp dụng refspec cho refs đã xuất"
 
-#: builtin/fast-export.c:1018
+#: builtin/fast-export.c:1020
 msgid "anonymize output"
 msgstr "kết xuất anonymize"
 
-#: builtin/fetch.c:25
+#: builtin/fetch.c:26
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
 msgstr "git fetch [<các-tùy-chọn>] [<kho-chứa> [<refspec>…]]"
 
-#: builtin/fetch.c:26
+#: builtin/fetch.c:27
 msgid "git fetch [<options>] <group>"
 msgstr "git fetch [<các-tùy-chọn>] [<nhóm>"
 
-#: builtin/fetch.c:27
+#: builtin/fetch.c:28
 msgid "git fetch --multiple [<options>] [(<repository> | <group>)...]"
 msgstr "git fetch --multiple [<các-tùy-chọn>] [(<kho> | <nhóm>)…]"
 
-#: builtin/fetch.c:28
+#: builtin/fetch.c:29
 msgid "git fetch --all [<options>]"
 msgstr "git fetch --all [<các-tùy-chọn>]"
 
-#: builtin/fetch.c:124 builtin/pull.c:188
+#: builtin/fetch.c:123 builtin/pull.c:193
 msgid "fetch from all remotes"
 msgstr "lấy về từ tất cả các máy chủ"
 
-#: builtin/fetch.c:126 builtin/pull.c:191
+#: builtin/fetch.c:125 builtin/pull.c:196
 msgid "append to .git/FETCH_HEAD instead of overwriting"
 msgstr "nối thêm vào .git/FETCH_HEAD thay vì ghi đè lên nó"
 
-#: builtin/fetch.c:128 builtin/pull.c:194
+#: builtin/fetch.c:127 builtin/pull.c:199
 msgid "path to upload pack on remote end"
 msgstr "đường dẫn đến gói tải lên trên máy chủ cuối"
 
-#: builtin/fetch.c:129 builtin/pull.c:196
+#: builtin/fetch.c:128 builtin/pull.c:201
 msgid "force overwrite of local branch"
 msgstr "ép buộc ghi đè lên nhánh nội bộ"
 
-#: builtin/fetch.c:131
+#: builtin/fetch.c:130
 msgid "fetch from multiple remotes"
 msgstr "lấy từ nhiều máy chủ cùng lúc"
 
-#: builtin/fetch.c:133 builtin/pull.c:198
+#: builtin/fetch.c:132 builtin/pull.c:203
 msgid "fetch all tags and associated objects"
 msgstr "lấy tất cả các thẻ cùng với các đối tượng liên quan đến nó"
 
-#: builtin/fetch.c:135
+#: builtin/fetch.c:134
 msgid "do not fetch all tags (--no-tags)"
 msgstr "không lấy tất cả các thẻ (--no-tags)"
 
-#: builtin/fetch.c:137
+#: builtin/fetch.c:136
 msgid "number of submodules fetched in parallel"
 msgstr "số lượng mô-đun-con được lấy đồng thời"
 
-#: builtin/fetch.c:139 builtin/pull.c:201
+#: builtin/fetch.c:138 builtin/pull.c:206
 msgid "prune remote-tracking branches no longer on remote"
 msgstr ""
 "cắt cụt (prune) các nhánh “remote-tracking” không còn tồn tại trên máy chủ "
 "nữa"
 
-#: builtin/fetch.c:141
+#: builtin/fetch.c:140
 msgid "prune local tags no longer on remote and clobber changed tags"
 msgstr "cắt xém các thẻ nội bộ không còn ở máy chủ và xóa các thẻ đã thay đổi"
 
-#: builtin/fetch.c:142 builtin/fetch.c:165 builtin/pull.c:126
+#: builtin/fetch.c:141 builtin/fetch.c:164 builtin/pull.c:131
 msgid "on-demand"
 msgstr "khi-cần"
 
-#: builtin/fetch.c:143
+#: builtin/fetch.c:142
 msgid "control recursive fetching of submodules"
 msgstr "điều khiển việc lấy về đệ quy trong các mô-đun-con"
 
-#: builtin/fetch.c:147 builtin/pull.c:209
+#: builtin/fetch.c:146 builtin/pull.c:214
 msgid "keep downloaded pack"
 msgstr "giữ lại gói đã tải về"
 
-#: builtin/fetch.c:149
+#: builtin/fetch.c:148
 msgid "allow updating of HEAD ref"
 msgstr "cho phép cập nhật th.chiếu HEAD"
 
-#: builtin/fetch.c:152 builtin/fetch.c:158 builtin/pull.c:212
+#: builtin/fetch.c:151 builtin/fetch.c:157 builtin/pull.c:217
 msgid "deepen history of shallow clone"
 msgstr "làm sâu hơn lịch sử của bản sao"
 
-#: builtin/fetch.c:154
+#: builtin/fetch.c:153
 msgid "deepen history of shallow repository based on time"
 msgstr "làm sâu hơn lịch sử của kho bản sao shallow dựa trên thời gian"
 
-#: builtin/fetch.c:160 builtin/pull.c:215
+#: builtin/fetch.c:159 builtin/pull.c:220
 msgid "convert to a complete repository"
 msgstr "chuyển đổi hoàn toàn sang kho git"
 
-#: builtin/fetch.c:162 builtin/log.c:1466
-msgid "dir"
-msgstr "tmục"
-
-#: builtin/fetch.c:163
+#: builtin/fetch.c:162
 msgid "prepend this to submodule path output"
 msgstr "soạn sẵn cái này cho kết xuất đường dẫn mô-đun-con"
 
-#: builtin/fetch.c:166
+#: builtin/fetch.c:165
 msgid ""
 "default for recursive fetching of submodules (lower priority than config "
 "files)"
@@ -8518,89 +8991,99 @@ msgstr ""
 "mặc định cho việc lấy đệ quy các mô-đun-con (có mức ưu tiên thấp hơn các tập "
 "tin cấu hình config)"
 
-#: builtin/fetch.c:170 builtin/pull.c:218
+#: builtin/fetch.c:169 builtin/pull.c:223
 msgid "accept refs that update .git/shallow"
 msgstr "chấp nhận tham chiếu cập nhật .git/shallow"
 
-#: builtin/fetch.c:171 builtin/pull.c:220
+#: builtin/fetch.c:170 builtin/pull.c:225
 msgid "refmap"
 msgstr "refmap"
 
-#: builtin/fetch.c:172 builtin/pull.c:221
+#: builtin/fetch.c:171 builtin/pull.c:226
 msgid "specify fetch refmap"
 msgstr "chỉ ra refmap cần lấy về"
 
-#: builtin/fetch.c:431
+#: builtin/fetch.c:172 builtin/ls-remote.c:77 builtin/push.c:582
+#: builtin/send-pack.c:172
+msgid "server-specific"
+msgstr "đặc-tả-máy-phục-vụ"
+
+#: builtin/fetch.c:172 builtin/ls-remote.c:77 builtin/push.c:582
+#: builtin/send-pack.c:173
+msgid "option to transmit"
+msgstr "tùy chọn để chuyển giao"
+
+#: builtin/fetch.c:442
 msgid "Couldn't find remote ref HEAD"
 msgstr "Không thể tìm thấy máy chủ cho tham chiếu HEAD"
 
-#: builtin/fetch.c:549
+#: builtin/fetch.c:560
 #, c-format
 msgid "configuration fetch.output contains invalid value %s"
 msgstr "phần cấu hình fetch.output có chứa giá-trị không hợp lệ %s"
 
-#: builtin/fetch.c:642
+#: builtin/fetch.c:653
 #, c-format
 msgid "object %s not found"
 msgstr "Không tìm thấy đối tượng %s"
 
-#: builtin/fetch.c:646
+#: builtin/fetch.c:657
 msgid "[up to date]"
 msgstr "[đã cập nhật]"
 
-#: builtin/fetch.c:659 builtin/fetch.c:739
+#: builtin/fetch.c:670 builtin/fetch.c:750
 msgid "[rejected]"
 msgstr "[Bị từ chối]"
 
-#: builtin/fetch.c:660
+#: builtin/fetch.c:671
 msgid "can't fetch in current branch"
 msgstr "không thể fetch (lấy) về nhánh hiện hành"
 
-#: builtin/fetch.c:669
+#: builtin/fetch.c:680
 msgid "[tag update]"
 msgstr "[cập nhật thẻ]"
 
-#: builtin/fetch.c:670 builtin/fetch.c:703 builtin/fetch.c:719
-#: builtin/fetch.c:734
+#: builtin/fetch.c:681 builtin/fetch.c:714 builtin/fetch.c:730
+#: builtin/fetch.c:745
 msgid "unable to update local ref"
 msgstr "không thể cập nhật tham chiếu nội bộ"
 
-#: builtin/fetch.c:689
+#: builtin/fetch.c:700
 msgid "[new tag]"
 msgstr "[thẻ mới]"
 
-#: builtin/fetch.c:692
+#: builtin/fetch.c:703
 msgid "[new branch]"
 msgstr "[nhánh mới]"
 
-#: builtin/fetch.c:695
+#: builtin/fetch.c:706
 msgid "[new ref]"
 msgstr "[ref (tham chiếu) mới]"
 
-#: builtin/fetch.c:734
+#: builtin/fetch.c:745
 msgid "forced update"
 msgstr "cưỡng bức cập nhật"
 
-#: builtin/fetch.c:739
+#: builtin/fetch.c:750
 msgid "non-fast-forward"
 msgstr "không-phải-chuyển-tiếp-nhanh"
 
-#: builtin/fetch.c:784
+#: builtin/fetch.c:795
 #, c-format
 msgid "%s did not send all necessary objects\n"
 msgstr "%s đã không gửi tất cả các đối tượng cần thiết\n"
 
-#: builtin/fetch.c:804
+#: builtin/fetch.c:815
 #, c-format
 msgid "reject %s because shallow roots are not allowed to be updated"
 msgstr "từ chối %s bởi vì các gốc nông thì không được phép cập nhật"
 
-#: builtin/fetch.c:892 builtin/fetch.c:988
+#: builtin/fetch.c:903 builtin/fetch.c:999
 #, c-format
 msgid "From %.*s\n"
 msgstr "Từ %.*s\n"
 
-#: builtin/fetch.c:903
+#: builtin/fetch.c:914
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
@@ -8609,59 +9092,59 @@ msgstr ""
 "một số tham chiếu nội bộ không thể được cập nhật; hãy thử chạy\n"
 " “git remote prune %s” để bỏ đi những nhánh cũ, hay bị xung đột"
 
-#: builtin/fetch.c:958
+#: builtin/fetch.c:969
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr "   (%s sẽ trở thành không đầu (không được quản lý))"
 
-#: builtin/fetch.c:959
+#: builtin/fetch.c:970
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr "   (%s đã trở thành không đầu (không được quản lý))"
 
-#: builtin/fetch.c:991
+#: builtin/fetch.c:1002
 msgid "[deleted]"
 msgstr "[đã xóa]"
 
-#: builtin/fetch.c:992 builtin/remote.c:1024
+#: builtin/fetch.c:1003 builtin/remote.c:1033
 msgid "(none)"
 msgstr "(không)"
 
-#: builtin/fetch.c:1015
+#: builtin/fetch.c:1026
 #, c-format
 msgid "Refusing to fetch into current branch %s of non-bare repository"
 msgstr ""
 "Từ chối việc lấy vào trong nhánh hiện tại %s của một kho chứa không phải kho "
 "trần (bare)"
 
-#: builtin/fetch.c:1034
+#: builtin/fetch.c:1045
 #, c-format
 msgid "Option \"%s\" value \"%s\" is not valid for %s"
 msgstr "Tùy chọn \"%s\" có giá trị \"%s\" là không hợp lệ cho %s"
 
-#: builtin/fetch.c:1037
+#: builtin/fetch.c:1048
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr "Tùy chọn \"%s\" bị bỏ qua với %s\n"
 
-#: builtin/fetch.c:1277
+#: builtin/fetch.c:1287
 #, c-format
 msgid "Fetching %s\n"
 msgstr "Đang lấy “%s” về\n"
 
-#: builtin/fetch.c:1279 builtin/remote.c:97
+#: builtin/fetch.c:1289 builtin/remote.c:98
 #, c-format
 msgid "Could not fetch %s"
 msgstr "không thể “%s” về"
 
-#: builtin/fetch.c:1325 builtin/fetch.c:1498
+#: builtin/fetch.c:1335 builtin/fetch.c:1503
 msgid ""
 "--filter can only be used with the remote configured in core.partialClone"
 msgstr ""
 "--filter chỉ có thể được dùng với máy chủ được cấu hình bằng core."
 "partialClone"
 
-#: builtin/fetch.c:1350
+#: builtin/fetch.c:1358
 msgid ""
 "No remote repository specified.  Please, specify either a URL or a\n"
 "remote name from which new revisions should be fetched."
@@ -8669,40 +9152,40 @@ msgstr ""
 "Chưa chỉ ra kho chứa máy chủ.  Xin hãy chỉ định hoặc là URL hoặc\n"
 "tên máy chủ từ cái mà những điểm xét duyệt mới có thể được fetch (lấy về)."
 
-#: builtin/fetch.c:1394
+#: builtin/fetch.c:1395
 msgid "You need to specify a tag name."
 msgstr "Bạn phải định rõ tên thẻ."
 
-#: builtin/fetch.c:1439
+#: builtin/fetch.c:1444
 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:1441
+#: builtin/fetch.c:1446
 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:1446
+#: builtin/fetch.c:1451
 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:1448
+#: builtin/fetch.c:1453
 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:1464
+#: builtin/fetch.c:1469
 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:1466
+#: builtin/fetch.c:1471
 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:1475
+#: builtin/fetch.c:1480
 #, 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:1482
+#: builtin/fetch.c:1487
 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ý"
 
@@ -8771,7 +9254,7 @@ msgstr "trích dẫn để phù hợp cho Tcl"
 msgid "show only <n> matched refs"
 msgstr "hiển thị chỉ <n> tham chiếu khớp"
 
-#: builtin/for-each-ref.c:39 builtin/tag.c:420
+#: builtin/for-each-ref.c:39 builtin/tag.c:421
 msgid "respect format colors"
 msgstr "các màu định dạng lưu tâm"
 
@@ -8795,81 +9278,81 @@ msgstr "chỉ hiển thị những tham chiếu mà nó chứa lần chuyển gi
 msgid "print only refs which don't contain the commit"
 msgstr "chỉ hiển thị những tham chiếu mà nó không chứa lần chuyển giao"
 
-#: builtin/fsck.c:568
+#: builtin/fsck.c:569
 msgid "Checking object directories"
 msgstr "Đang kiểm tra các thư mục đối tượng"
 
-#: builtin/fsck.c:660
+#: builtin/fsck.c:661
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<các-tùy-chọn>] [<đối-tượng>…]"
 
-#: builtin/fsck.c:666
+#: builtin/fsck.c:667
 msgid "show unreachable objects"
 msgstr "hiển thị các đối tượng không thể đọc được"
 
-#: builtin/fsck.c:667
+#: builtin/fsck.c:668
 msgid "show dangling objects"
 msgstr "hiển thị các đối tượng không được quản lý"
 
-#: builtin/fsck.c:668
+#: builtin/fsck.c:669
 msgid "report tags"
 msgstr "báo cáo các thẻ"
 
-#: builtin/fsck.c:669
+#: builtin/fsck.c:670
 msgid "report root nodes"
 msgstr "báo cáo node gốc"
 
-#: builtin/fsck.c:670
+#: builtin/fsck.c:671
 msgid "make index objects head nodes"
 msgstr "tạo “index objects head nodes”"
 
-#: builtin/fsck.c:671
+#: builtin/fsck.c:672
 msgid "make reflogs head nodes (default)"
 msgstr "tạo “reflogs head nodes” (mặc định)"
 
-#: builtin/fsck.c:672
+#: builtin/fsck.c:673
 msgid "also consider packs and alternate objects"
 msgstr "cũng cân nhắc đến các đối tượng gói và thay thế"
 
-#: builtin/fsck.c:673
+#: builtin/fsck.c:674
 msgid "check only connectivity"
 msgstr "chỉ kiểm tra kết nối"
 
-#: builtin/fsck.c:674
+#: builtin/fsck.c:675
 msgid "enable more strict checking"
 msgstr "cho phép kiểm tra hạn chế hơn"
 
-#: builtin/fsck.c:676
+#: builtin/fsck.c:677
 msgid "write dangling objects in .git/lost-found"
 msgstr "ghi các đối tượng không được quản lý trong .git/lost-found"
 
-#: builtin/fsck.c:677 builtin/prune.c:108
+#: builtin/fsck.c:678 builtin/prune.c:109
 msgid "show progress"
 msgstr "hiển thị quá trình"
 
-#: builtin/fsck.c:678
+#: builtin/fsck.c:679
 msgid "show verbose names for reachable objects"
 msgstr "hiển thị tên chi tiết cho các đối tượng đọc được"
 
-#: builtin/fsck.c:742
+#: builtin/fsck.c:745
 msgid "Checking objects"
 msgstr "Đang kiểm tra các đối tượng"
 
-#: builtin/gc.c:27
+#: builtin/gc.c:33
 msgid "git gc [<options>]"
 msgstr "git gc [<các-tùy-chọn>]"
 
-#: builtin/gc.c:80
+#: builtin/gc.c:88
 #, c-format
 msgid "Failed to fstat %s: %s"
 msgstr "Gặp lỗi khi lấy thông tin thống kê về tập tin %s: %s"
 
-#: builtin/gc.c:312
+#: builtin/gc.c:452
 #, c-format
 msgid "Can't stat %s"
 msgstr "không thể lấy thông tin thống kê về “%s”"
 
-#: builtin/gc.c:321
+#: builtin/gc.c:461
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -8884,45 +9367,54 @@ msgstr ""
 "\n"
 "%s"
 
-#: builtin/gc.c:360
+#: builtin/gc.c:502
 msgid "prune unreferenced objects"
 msgstr "xóa bỏ các đối tượng không được tham chiếu"
 
-#: builtin/gc.c:362
+#: builtin/gc.c:504
 msgid "be more thorough (increased runtime)"
 msgstr "cẩn thận hơn nữa (tăng thời gian chạy)"
 
-#: builtin/gc.c:363
+#: builtin/gc.c:505
 msgid "enable auto-gc mode"
 msgstr "bật chế độ auto-gc"
 
-#: builtin/gc.c:366
+#: builtin/gc.c:508
 msgid "force running gc even if there may be another gc running"
 msgstr "buộc gc chạy ngay cả khi có tiến trình gc khác đang chạy"
 
-#: builtin/gc.c:384
+#: builtin/gc.c:511
+msgid "repack all other packs except the largest pack"
+msgstr "đóng gói lại tất cả các gói khác ngoại trừ gói lớn nhất"
+
+#: builtin/gc.c:528
 #, c-format
-msgid "Failed to parse gc.logexpiry value %s"
-msgstr "Gặp lỗi khi phân tích giá trị gc.logexpiry %s"
+msgid "failed to parse gc.logexpiry value %s"
+msgstr "gặp lỗi khi phân tích giá trị gc.logexpiry %s"
 
-#: builtin/gc.c:412
+#: builtin/gc.c:539
+#, c-format
+msgid "failed to parse prune expiry value %s"
+msgstr "gặp lỗi khi phân tích giá trị prune %s"
+
+#: builtin/gc.c:559
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
 msgstr ""
 "Tự động đóng gói kho chứa trên nền hệ thống để tối ưu hóa hiệu suất làm "
 "việc.\n"
 
-#: builtin/gc.c:414
+#: builtin/gc.c:561
 #, c-format
 msgid "Auto packing the repository for optimum performance.\n"
 msgstr "Tự động đóng gói kho chứa để tối ưu hóa hiệu suất làm việc.\n"
 
-#: builtin/gc.c:415
+#: builtin/gc.c:562
 #, c-format
 msgid "See \"git help gc\" for manual housekeeping.\n"
 msgstr "Xem \"git help gc\" để có hướng dẫn cụ thể về cách dọn dẹp kho git.\n"
 
-#: builtin/gc.c:440
+#: builtin/gc.c:598
 #, c-format
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
@@ -8930,23 +9422,23 @@ msgstr ""
 "gc đang được thực hiện trên máy “%s” pid %<PRIuMAX> (dùng --force nếu không "
 "phải thế)"
 
-#: builtin/gc.c:487
+#: builtin/gc.c:645
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove them."
 msgstr ""
 "Có quá nhiều đối tượng tự do không được dùng đến; hãy chạy lệnh “git prune” "
 "để xóa bỏ chúng đi."
 
-#: builtin/grep.c:27
+#: builtin/grep.c:28
 msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
 msgstr "git grep [<các-tùy-chọn>] [-e] <mẫu> [<rev>…] [[--] <đường-dẫn>…]"
 
-#: builtin/grep.c:225
+#: builtin/grep.c:226
 #, c-format
 msgid "grep: failed to create thread: %s"
 msgstr "grep: gặp lỗi tạo tuyến (thread): %s"
 
-#: builtin/grep.c:283
+#: builtin/grep.c:284
 #, c-format
 msgid "invalid number of threads specified (%d) for %s"
 msgstr "số tuyến đã cho không hợp lệ (%d) cho %s"
@@ -8955,17 +9447,17 @@ msgstr "số tuyến đã cho không hợp lệ (%d) cho %s"
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:292 builtin/index-pack.c:1523 builtin/index-pack.c:1712
+#: builtin/grep.c:293 builtin/index-pack.c:1535 builtin/index-pack.c:1727
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "không hỗ trợ đa tuyến, bỏ qua %s"
 
-#: builtin/grep.c:460 builtin/grep.c:580 builtin/grep.c:622
+#: builtin/grep.c:461 builtin/grep.c:582 builtin/grep.c:623
 #, c-format
 msgid "unable to read tree (%s)"
 msgstr "không thể đọc cây (%s)"
 
-#: builtin/grep.c:637
+#: builtin/grep.c:638
 #, c-format
 msgid "unable to grep from object of type %s"
 msgstr "không thể thực hiện lệnh grep (lọc tìm) từ đối tượng thuộc kiểu %s"
@@ -9165,7 +9657,7 @@ msgstr "--no-index hay --untracked không được sử dụng cùng với revs"
 msgid "unable to resolve revision: %s"
 msgstr "không thể phân giải điểm xét duyệt: %s"
 
-#: builtin/grep.c:1036 builtin/index-pack.c:1519
+#: builtin/grep.c:1036 builtin/index-pack.c:1531
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "số tuyến chỉ ra không hợp lệ (%d)"
@@ -9235,58 +9727,62 @@ msgstr "chỉ cần băm rác ngẫu nhiên để tạo một đối tượng h
 msgid "process file as it were from this path"
 msgstr "xử lý tập tin như là nó đang ở thư mục này"
 
-#: builtin/help.c:43
+#: builtin/help.c:45
 msgid "print all available commands"
 msgstr "hiển thị danh sách các câu lệnh người dùng có thể sử dụng"
 
-#: builtin/help.c:44
+#: builtin/help.c:46
 msgid "exclude guides"
 msgstr "hướng dẫn loại trừ"
 
-#: builtin/help.c:45
+#: builtin/help.c:47
 msgid "print list of useful guides"
 msgstr "hiển thị danh sách các hướng dẫn hữu dụng"
 
-#: builtin/help.c:46
+#: builtin/help.c:48
 msgid "show man page"
 msgstr "hiển thị trang man"
 
-#: builtin/help.c:47
+#: builtin/help.c:49
 msgid "show manual in web browser"
 msgstr "hiển thị hướng dẫn sử dụng trong trình duyệt web"
 
-#: builtin/help.c:49
+#: builtin/help.c:51
 msgid "show info page"
 msgstr "hiện trang info"
 
-#: builtin/help.c:55
+#: builtin/help.c:53
+msgid "print command description"
+msgstr "hiển thị mô tả lệnh"
+
+#: builtin/help.c:58
 msgid "git help [--all] [--guides] [--man | --web | --info] [<command>]"
 msgstr "git help [--all] [--guides] [--man | --web | --info] [<lệnh>]"
 
-#: builtin/help.c:67
+#: builtin/help.c:70
 #, c-format
 msgid "unrecognized help format '%s'"
 msgstr "không nhận ra định dạng trợ giúp “%s”"
 
-#: builtin/help.c:94
+#: builtin/help.c:97
 msgid "Failed to start emacsclient."
 msgstr "Gặp lỗi khi khởi chạy emacsclient."
 
-#: builtin/help.c:107
+#: builtin/help.c:110
 msgid "Failed to parse emacsclient version."
 msgstr "Gặp lỗi khi phân tích phiên bản emacsclient."
 
-#: builtin/help.c:115
+#: builtin/help.c:118
 #, c-format
 msgid "emacsclient version '%d' too old (< 22)."
 msgstr "phiên bản của emacsclient “%d” quá cũ (< 22)."
 
-#: builtin/help.c:133 builtin/help.c:155 builtin/help.c:165 builtin/help.c:173
+#: builtin/help.c:136 builtin/help.c:158 builtin/help.c:168 builtin/help.c:176
 #, c-format
 msgid "failed to exec '%s'"
 msgstr "gặp lỗi khi thực thi “%s”"
 
-#: builtin/help.c:211
+#: builtin/help.c:214
 #, c-format
 msgid ""
 "'%s': path for unsupported man viewer.\n"
@@ -9295,7 +9791,7 @@ msgstr ""
 "“%s”: đường dẫn không hỗ trợ bộ trình chiếu man.\n"
 "Hãy cân nhắc đến việc sử dụng “man.<tool>.cmd” để thay thế."
 
-#: builtin/help.c:223
+#: builtin/help.c:226
 #, c-format
 msgid ""
 "'%s': cmd for supported man viewer.\n"
@@ -9304,352 +9800,320 @@ msgstr ""
 "“%s”: cmd (lệnh) hỗ trợ bộ trình chiếu man.\n"
 "Hãy cân nhắc đến việc sử dụng “man.<tool>.path” để thay thế."
 
-#: builtin/help.c:340
+#: builtin/help.c:343
 #, c-format
 msgid "'%s': unknown man viewer."
 msgstr "“%s”: không rõ chương trình xem man."
 
-#: builtin/help.c:357
+#: builtin/help.c:360
 msgid "no man viewer handled the request"
 msgstr "không có trình xem trợ giúp dạng manpage tiếp hợp với yêu cầu"
 
-#: builtin/help.c:365
+#: builtin/help.c:368
 msgid "no info viewer handled the request"
 msgstr "không có trình xem trợ giúp dạng info tiếp hợp với yêu cầu"
 
-#: builtin/help.c:407
-msgid "Defining attributes per path"
-msgstr "Định nghĩa các thuộc tính cho mỗi đường dẫn"
+#: builtin/help.c:415
+#, c-format
+msgid "'%s' is aliased to '%s'"
+msgstr "“%s” được đặt bí danh thành “%s”"
 
-#: builtin/help.c:408
-msgid "Everyday Git With 20 Commands Or So"
-msgstr "Mỗi ngày học 20 lệnh Git hay hơn"
-
-#: builtin/help.c:409
-msgid "A Git glossary"
-msgstr "Thuật ngữ chuyên môn Git"
-
-#: builtin/help.c:410
-msgid "Specifies intentionally untracked files to ignore"
-msgstr "Chỉ định các tập tin không cần theo dõi"
-
-#: builtin/help.c:411
-msgid "Defining submodule properties"
-msgstr "Định nghĩa thuộc tính mô-đun-con"
-
-#: builtin/help.c:412
-msgid "Specifying revisions and ranges for Git"
-msgstr "Chỉ định điểm xét duyệt và vùng cho Git"
-
-#: builtin/help.c:413
-msgid "A tutorial introduction to Git (for version 1.5.1 or newer)"
-msgstr "Hướng dẫn cách dùng Git ở mức cơ bản (bản 1.5.1 hay mới hơn)"
-
-#: builtin/help.c:414
-msgid "An overview of recommended workflows with Git"
-msgstr "Tổng quan về luồng công việc khuyến nghị nên dùng với Git."
-
-#: builtin/help.c:426
-msgid "The common Git guides are:\n"
-msgstr "Các chỉ dẫn chung về cách dùng Git là:\n"
-
-#: builtin/help.c:444
-#, c-format
-msgid "'%s' is aliased to '%s'"
-msgstr "“%s” được đặt bí danh thành “%s”"
-
-#: builtin/help.c:466 builtin/help.c:483
+#: builtin/help.c:442 builtin/help.c:459
 #, c-format
 msgid "usage: %s%s"
 msgstr "cách dùng: %s%s"
 
-#: builtin/index-pack.c:157
+#: builtin/index-pack.c:158
 #, c-format
 msgid "unable to open %s"
 msgstr "không thể mở %s"
 
-#: builtin/index-pack.c:207
+#: builtin/index-pack.c:208
 #, c-format
 msgid "object type mismatch at %s"
 msgstr "kiểu đối tượng không khớp tại %s"
 
-#: builtin/index-pack.c:227
+#: builtin/index-pack.c:228
 #, c-format
 msgid "did not receive expected object %s"
 msgstr "Không thể lấy về đối tượng cần %s"
 
-#: builtin/index-pack.c:230
+#: builtin/index-pack.c:231
 #, c-format
 msgid "object %s: expected type %s, found %s"
 msgstr "đối tượng %s: cần kiểu %s nhưng lại nhận được %s"
 
-#: builtin/index-pack.c:272
+#: builtin/index-pack.c:273
 #, c-format
 msgid "cannot fill %d byte"
 msgid_plural "cannot fill %d bytes"
 msgstr[0] "không thể điền thêm vào %d byte"
 
-#: builtin/index-pack.c:282
+#: builtin/index-pack.c:283
 msgid "early EOF"
 msgstr "gặp kết thúc tập tin EOF quá sớm"
 
-#: builtin/index-pack.c:283
+#: builtin/index-pack.c:284
 msgid "read error on input"
 msgstr "lỗi đọc ở đầu vào"
 
-#: builtin/index-pack.c:295
+#: builtin/index-pack.c:296
 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:302
+#: builtin/index-pack.c:303
 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"
 
-#: builtin/index-pack.c:305 builtin/unpack-objects.c:93
+#: builtin/index-pack.c:306 builtin/unpack-objects.c:93
 msgid "pack exceeds maximum allowed size"
 msgstr "gói đã vượt quá cỡ tối đa được phép"
 
-#: builtin/index-pack.c:320
+#: builtin/index-pack.c:321
 #, c-format
 msgid "unable to create '%s'"
 msgstr "không thể tạo “%s”"
 
-#: builtin/index-pack.c:326
+#: builtin/index-pack.c:327
 #, c-format
 msgid "cannot open packfile '%s'"
 msgstr "không thể mở packfile “%s”"
 
-#: builtin/index-pack.c:340
+#: builtin/index-pack.c:341
 msgid "pack signature mismatch"
 msgstr "chữ ký cho gói không khớp"
 
-#: builtin/index-pack.c:342
+#: builtin/index-pack.c:343
 #, c-format
 msgid "pack version %<PRIu32> unsupported"
 msgstr "không hỗ trợ phiên bản gói %<PRIu32>"
 
-#: builtin/index-pack.c:360
+#: builtin/index-pack.c:361
 #, c-format
 msgid "pack has bad object at offset %<PRIuMAX>: %s"
 msgstr "gói có đối tượng sai tại khoảng bù %<PRIuMAX>: %s"
 
-#: builtin/index-pack.c:481
+#: builtin/index-pack.c:482
 #, c-format
 msgid "inflate returned %d"
 msgstr "xả nén trả về %d"
 
-#: builtin/index-pack.c:530
+#: builtin/index-pack.c:531
 msgid "offset value overflow for delta base object"
 msgstr "tràn giá trị khoảng bù cho đối tượng delta cơ sở"
 
-#: builtin/index-pack.c:538
+#: builtin/index-pack.c:539
 msgid "delta base offset is out of bound"
 msgstr "khoảng bù cơ sở cho delta nằm ngoài phạm vi"
 
-#: builtin/index-pack.c:546
+#: builtin/index-pack.c:547
 #, c-format
 msgid "unknown object type %d"
 msgstr "không hiểu kiểu đối tượng %d"
 
-#: builtin/index-pack.c:577
+#: builtin/index-pack.c:578
 msgid "cannot pread pack file"
 msgstr "không thể chạy hàm pread cho tập tin gói"
 
-#: builtin/index-pack.c:579
+#: builtin/index-pack.c:580
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
 msgstr[0] "tập tin gói bị kết thúc sớm, thiếu %<PRIuMAX> byte"
 
-#: builtin/index-pack.c:605
+#: builtin/index-pack.c:606
 msgid "serious inflate inconsistency"
 msgstr "sự mâu thuẫn xả nén nghiêm trọng"
 
-#: builtin/index-pack.c:750 builtin/index-pack.c:756 builtin/index-pack.c:779
-#: builtin/index-pack.c:818 builtin/index-pack.c:827
+#: builtin/index-pack.c:751 builtin/index-pack.c:757 builtin/index-pack.c:780
+#: builtin/index-pack.c:819 builtin/index-pack.c:828
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "SỰ VA CHẠM SHA1 ĐàXẢY RA VỚI %s!"
 
-#: builtin/index-pack.c:753 builtin/pack-objects.c:182
-#: builtin/pack-objects.c:276
+#: builtin/index-pack.c:754 builtin/pack-objects.c:198
+#: builtin/pack-objects.c:292
 #, c-format
 msgid "unable to read %s"
 msgstr "không thể đọc %s"
 
-#: builtin/index-pack.c:816
+#: builtin/index-pack.c:817
 #, c-format
 msgid "cannot read existing object info %s"
 msgstr "không thể đọc thông tin đối tượng sẵn có %s"
 
-#: builtin/index-pack.c:824
+#: builtin/index-pack.c:825
 #, c-format
 msgid "cannot read existing object %s"
 msgstr "không thể đọc đối tượng đã tồn tại %s"
 
-#: builtin/index-pack.c:838
+#: builtin/index-pack.c:839
 #, c-format
 msgid "invalid blob object %s"
 msgstr "đối tượng blob không hợp lệ %s"
 
-#: builtin/index-pack.c:853
+#: builtin/index-pack.c:842 builtin/index-pack.c:860
+msgid "fsck error in packed object"
+msgstr "lỗi fsck trong đối tượng đóng gói"
+
+#: builtin/index-pack.c:857
 #, c-format
 msgid "invalid %s"
 msgstr "%s không hợp lệ"
 
-#: builtin/index-pack.c:856
-msgid "Error in object"
-msgstr "Lỗi trong đối tượng"
-
-#: builtin/index-pack.c:858
+#: builtin/index-pack.c:862
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr "Không phải tất cả các đối tượng con của %s là có thể với tới được"
 
-#: builtin/index-pack.c:930 builtin/index-pack.c:961
+#: builtin/index-pack.c:934 builtin/index-pack.c:965
 msgid "failed to apply delta"
 msgstr "gặp lỗi khi áp dụng delta"
 
-#: builtin/index-pack.c:1131
+#: builtin/index-pack.c:1135
 msgid "Receiving objects"
 msgstr "Đang nhận về các đối tượng"
 
-#: builtin/index-pack.c:1131
+#: builtin/index-pack.c:1135
 msgid "Indexing objects"
 msgstr "Các đối tượng bảng mục lục"
 
-#: builtin/index-pack.c:1165
+#: builtin/index-pack.c:1169
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr "gói bị sai hỏng (SHA1 không khớp)"
 
-#: builtin/index-pack.c:1170
+#: builtin/index-pack.c:1174
 msgid "cannot fstat packfile"
 msgstr "không thể lấy thông tin thống kê packfile"
 
-#: builtin/index-pack.c:1173
+#: builtin/index-pack.c:1177
 msgid "pack has junk at the end"
 msgstr "pack có phần thừa ở cuối"
 
-#: builtin/index-pack.c:1185
+#: builtin/index-pack.c:1189
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr "lộn xộn hơn cả điên rồ khi chạy hàm parse_pack_objects()"
 
-#: builtin/index-pack.c:1208
+#: builtin/index-pack.c:1212
 msgid "Resolving deltas"
 msgstr "Đang phân giải các delta"
 
-#: builtin/index-pack.c:1219
+#: builtin/index-pack.c:1223
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "không thể tạo tuyến: %s"
 
-#: builtin/index-pack.c:1261
+#: builtin/index-pack.c:1265
 msgid "confusion beyond insanity"
 msgstr "lộn xộn hơn cả điên rồ"
 
-#: builtin/index-pack.c:1267
+#: builtin/index-pack.c:1271
 #, c-format
 msgid "completed with %d local object"
 msgid_plural "completed with %d local objects"
 msgstr[0] "đầy đủ với %d đối tượng nội bộ"
 
-#: builtin/index-pack.c:1279
+#: builtin/index-pack.c:1283
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr "Gặp tổng kiểm tra tail không cần cho %s (đĩa hỏng?)"
 
-#: builtin/index-pack.c:1283
+#: builtin/index-pack.c:1287
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
 msgstr[0] "gói có %d delta chưa được giải quyết"
 
-#: builtin/index-pack.c:1307
+#: builtin/index-pack.c:1311
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr "không thể xả nén đối tượng nối thêm (%d)"
 
-#: builtin/index-pack.c:1383
+#: builtin/index-pack.c:1388
 #, c-format
 msgid "local object %s is corrupt"
 msgstr "đối tượng nội bộ %s bị hỏng"
 
-#: builtin/index-pack.c:1397
+#: builtin/index-pack.c:1402
 #, c-format
 msgid "packfile name '%s' does not end with '.pack'"
 msgstr "tên tập tin tập tin gói “%s” không được kết thúc bằng đuôi “.pack”"
 
-#: builtin/index-pack.c:1422
+#: builtin/index-pack.c:1427
 #, c-format
 msgid "cannot write %s file '%s'"
 msgstr "không thể ghi %s tập tin “%s”"
 
-#: builtin/index-pack.c:1430
+#: builtin/index-pack.c:1435
 #, c-format
 msgid "cannot close written %s file '%s'"
 msgstr "không thể đóng tập tin được ghi %s “%s”"
 
-#: builtin/index-pack.c:1454
+#: builtin/index-pack.c:1459
 msgid "error while closing pack file"
 msgstr "gặp lỗi trong khi đóng tập tin gói"
 
-#: builtin/index-pack.c:1468
+#: builtin/index-pack.c:1473
 msgid "cannot store pack file"
 msgstr "không thể lưu tập tin gói"
 
-#: builtin/index-pack.c:1476
+#: builtin/index-pack.c:1481
 msgid "cannot store index file"
 msgstr "không thể lưu trữ tập tin ghi mục lục"
 
-#: builtin/index-pack.c:1513
+#: builtin/index-pack.c:1525
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "sai pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1581
+#: builtin/index-pack.c:1594
 #, 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:1583
+#: builtin/index-pack.c:1596
 #, 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:1631
+#: builtin/index-pack.c:1644
 #, 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:1638
+#: builtin/index-pack.c:1651
 #, 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:1675
+#: builtin/index-pack.c:1688
 msgid "Cannot come back to cwd"
 msgstr "Không thể quay lại cwd"
 
-#: builtin/index-pack.c:1724 builtin/index-pack.c:1727
-#: builtin/index-pack.c:1743 builtin/index-pack.c:1747
+#: builtin/index-pack.c:1739 builtin/index-pack.c:1742
+#: builtin/index-pack.c:1758 builtin/index-pack.c:1762
 #, c-format
 msgid "bad %s"
 msgstr "%s sai"
 
-#: builtin/index-pack.c:1763
+#: builtin/index-pack.c:1778
 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:1765
+#: builtin/index-pack.c:1780
 msgid "--stdin requires a git repository"
 msgstr "--stdin cần một kho git"
 
-#: builtin/index-pack.c:1771
+#: builtin/index-pack.c:1786
 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:578
+msgid "fsck error in pack objects"
+msgstr "lỗi fsck trong các đối tượng gói"
+
 #: builtin/init-db.c:55
 #, c-format
 msgid "cannot stat '%s'"
@@ -9687,8 +10151,8 @@ msgstr "đang lờ đi mẫu “%s”"
 
 #: builtin/init-db.c:120
 #, c-format
-msgid "templates not found %s"
-msgstr "các mẫu không được tìm thấy %s"
+msgid "templates not found in %s"
+msgstr "các mẫu không được tìm thấy trong %s"
 
 #: builtin/init-db.c:135
 #, c-format
@@ -9746,11 +10210,6 @@ msgstr "các quyền"
 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:516 builtin/init-db.c:521
-#, c-format
-msgid "cannot mkdir %s"
-msgstr "không thể mkdir (tạo thư mục): %s"
-
 #: builtin/init-db.c:525
 #, c-format
 msgid "cannot chdir to %s"
@@ -9934,7 +10393,7 @@ msgstr "Hai thư mục kết xuất?"
 msgid "Unknown commit %s"
 msgstr "Không hiểu lần chuyển giao %s"
 
-#: builtin/log.c:1289 builtin/notes.c:887 builtin/tag.c:522
+#: builtin/log.c:1289 builtin/notes.c:887 builtin/tag.c:523
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr "Gặp lỗi khi phân giải “%s” như là một tham chiếu hợp lệ."
@@ -10289,7 +10748,7 @@ msgstr ""
 msgid "show debugging data"
 msgstr "hiển thị dữ liệu gỡ lỗi"
 
-#: builtin/ls-remote.c:7
+#: builtin/ls-remote.c:9
 msgid ""
 "git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
@@ -10299,39 +10758,39 @@ msgstr ""
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
 "                     [--symref] [<kho> [<các tham chiếu>…]]"
 
-#: builtin/ls-remote.c:52
+#: builtin/ls-remote.c:59
 msgid "do not print remote URL"
 msgstr "không hiển thị URL máy chủ"
 
-#: builtin/ls-remote.c:53 builtin/ls-remote.c:55
+#: builtin/ls-remote.c:60 builtin/ls-remote.c:62
 msgid "exec"
 msgstr "thực thi"
 
-#: builtin/ls-remote.c:54 builtin/ls-remote.c:56
+#: builtin/ls-remote.c:61 builtin/ls-remote.c:63
 msgid "path of git-upload-pack on the remote host"
 msgstr "đường dẫn của git-upload-pack trên máy chủ"
 
-#: builtin/ls-remote.c:58
+#: builtin/ls-remote.c:65
 msgid "limit to tags"
 msgstr "giới hạn tới các thẻ"
 
-#: builtin/ls-remote.c:59
+#: builtin/ls-remote.c:66
 msgid "limit to heads"
 msgstr "giới hạn cho các đầu"
 
-#: builtin/ls-remote.c:60
+#: builtin/ls-remote.c:67
 msgid "do not show peeled tags"
 msgstr "không hiển thị thẻ bị peel (gọt bỏ)"
 
-#: builtin/ls-remote.c:62
+#: builtin/ls-remote.c:69
 msgid "take url.<base>.insteadOf into account"
 msgstr "lấy url.<base>.insteadOf vào trong tài khoản"
 
-#: builtin/ls-remote.c:64
+#: builtin/ls-remote.c:73
 msgid "exit with exit code 2 if no matching refs are found"
 msgstr "thoát với mã là 2 nếu không tìm thấy tham chiếu nào khớp"
 
-#: builtin/ls-remote.c:67
+#: builtin/ls-remote.c:76
 msgid "show underlying ref in addition to the object pointed by it"
 msgstr "hiển thị tham chiếu nằm dưới để thêm vào đối tượng được chỉ bởi nó"
 
@@ -10376,167 +10835,167 @@ msgstr "liệt kê cây mục tin; không chỉ thư mục hiện hành (ngụ 
 msgid "empty mbox: '%s'"
 msgstr "mbox trống rỗng: “%s”"
 
-#: builtin/merge.c:49
+#: builtin/merge.c:51
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<các-tùy-chọn>] [<commit>…]"
 
-#: builtin/merge.c:50
+#: builtin/merge.c:52
 msgid "git merge --abort"
 msgstr "git merge --abort"
 
-#: builtin/merge.c:51
+#: builtin/merge.c:53
 msgid "git merge --continue"
 msgstr "git merge --continue"
 
-#: builtin/merge.c:108
+#: builtin/merge.c:110
 msgid "switch `m' requires a value"
 msgstr "switch “m” yêu cầu một giá trị"
 
-#: builtin/merge.c:145
+#: builtin/merge.c:147
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
 msgstr "Không tìm thấy chiến lược hòa trộn “%s”.\n"
 
-#: builtin/merge.c:146
+#: builtin/merge.c:148
 #, c-format
 msgid "Available strategies are:"
 msgstr "Các chiến lược sẵn sàng là:"
 
-#: builtin/merge.c:151
+#: builtin/merge.c:153
 #, c-format
 msgid "Available custom strategies are:"
 msgstr "Các chiến lược tùy chỉnh sẵn sàng là:"
 
-#: builtin/merge.c:201 builtin/pull.c:137
+#: builtin/merge.c:203 builtin/pull.c:142
 msgid "do not show a diffstat at the end of the merge"
 msgstr "không hiển thị thống kê khác biệt tại cuối của lần hòa trộn"
 
-#: builtin/merge.c:204 builtin/pull.c:140
+#: builtin/merge.c:206 builtin/pull.c:145
 msgid "show a diffstat at the end of the merge"
 msgstr "hiển thị thống kê khác biệt tại cuối của hòa trộn"
 
-#: builtin/merge.c:205 builtin/pull.c:143
+#: builtin/merge.c:207 builtin/pull.c:148
 msgid "(synonym to --stat)"
 msgstr "(đồng nghĩa với --stat)"
 
-#: builtin/merge.c:207 builtin/pull.c:146
+#: builtin/merge.c:209 builtin/pull.c:151
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr "thêm (ít nhất <n>) mục từ shortlog cho ghi chú chuyển giao hòa trộn"
 
-#: builtin/merge.c:210 builtin/pull.c:152
+#: builtin/merge.c:212 builtin/pull.c:157
 msgid "create a single commit instead of doing a merge"
 msgstr "tạo một lần chuyển giao đưon thay vì thực hiện việc hòa trộn"
 
-#: builtin/merge.c:212 builtin/pull.c:155
+#: builtin/merge.c:214 builtin/pull.c:160
 msgid "perform a commit if the merge succeeds (default)"
 msgstr "thực hiện chuyển giao nếu hòa trộn thành công (mặc định)"
 
-#: builtin/merge.c:214 builtin/pull.c:158
+#: builtin/merge.c:216 builtin/pull.c:163
 msgid "edit message before committing"
 msgstr "sửa chú thích trước khi chuyển giao"
 
-#: builtin/merge.c:215
+#: builtin/merge.c:217
 msgid "allow fast-forward (default)"
 msgstr "cho phép chuyển-tiếp-nhanh (mặc định)"
 
-#: builtin/merge.c:217 builtin/pull.c:164
+#: builtin/merge.c:219 builtin/pull.c:169
 msgid "abort if fast-forward is not possible"
 msgstr "bỏ qua nếu chuyển-tiếp-nhanh không thể được"
 
-#: builtin/merge.c:221 builtin/pull.c:167
+#: builtin/merge.c:223 builtin/pull.c:172
 msgid "verify that the named commit has a valid GPG signature"
 msgstr "thẩm tra xem lần chuyển giao có tên đó có chữ ký GPG hợp lệ hay không"
 
-#: builtin/merge.c:222 builtin/notes.c:777 builtin/pull.c:171
+#: builtin/merge.c:224 builtin/notes.c:777 builtin/pull.c:176
 #: builtin/revert.c:109
 msgid "strategy"
 msgstr "chiến lược"
 
-#: builtin/merge.c:223 builtin/pull.c:172
+#: builtin/merge.c:225 builtin/pull.c:177
 msgid "merge strategy to use"
 msgstr "chiến lược hòa trộn sẽ dùng"
 
-#: builtin/merge.c:224 builtin/pull.c:175
+#: builtin/merge.c:226 builtin/pull.c:180
 msgid "option=value"
 msgstr "tùy_chọn=giá_trị"
 
-#: builtin/merge.c:225 builtin/pull.c:176
+#: builtin/merge.c:227 builtin/pull.c:181
 msgid "option for selected merge strategy"
 msgstr "tùy chọn cho chiến lược hòa trộn đã chọn"
 
-#: builtin/merge.c:227
+#: builtin/merge.c:229
 msgid "merge commit message (for a non-fast-forward merge)"
 msgstr ""
 "hòa trộn ghi chú của lần chuyển giao (dành cho hòa trộn không-chuyển-tiếp-"
 "nhanh)"
 
-#: builtin/merge.c:231
+#: builtin/merge.c:233
 msgid "abort the current in-progress merge"
 msgstr "bãi bỏ quá trình hòa trộn hiện tại đang thực hiện"
 
-#: builtin/merge.c:233
+#: builtin/merge.c:235
 msgid "continue the current in-progress merge"
 msgstr "tiếp tục quá trình hòa trộn hiện tại đang thực hiện"
 
-#: builtin/merge.c:235 builtin/pull.c:183
+#: builtin/merge.c:237 builtin/pull.c:188
 msgid "allow merging unrelated histories"
 msgstr "cho phép hòa trộn lịch sử không liên quan"
 
-#: builtin/merge.c:241
+#: builtin/merge.c:243
 msgid "verify commit-msg hook"
 msgstr "thẩm tra móc (hook) commit-msg"
 
-#: builtin/merge.c:266
+#: builtin/merge.c:268
 msgid "could not run stash."
 msgstr "không thể chạy stash."
 
-#: builtin/merge.c:271
+#: builtin/merge.c:273
 msgid "stash failed"
 msgstr "lệnh tạm cất gặp lỗi"
 
-#: builtin/merge.c:276
+#: builtin/merge.c:278
 #, c-format
 msgid "not a valid object: %s"
 msgstr "không phải là một đối tượng hợp lệ: %s"
 
-#: builtin/merge.c:298 builtin/merge.c:315
+#: builtin/merge.c:300 builtin/merge.c:317
 msgid "read-tree failed"
 msgstr "read-tree gặp lỗi"
 
-#: builtin/merge.c:345
+#: builtin/merge.c:347
 msgid " (nothing to squash)"
 msgstr " (không có gì để squash)"
 
-#: builtin/merge.c:356
+#: builtin/merge.c:358
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
 msgstr "Squash commit -- không cập nhật HEAD\n"
 
-#: builtin/merge.c:406
+#: builtin/merge.c:408
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
 msgstr "Không có lời chú thích hòa trộn -- nên không cập nhật HEAD\n"
 
-#: builtin/merge.c:456
+#: builtin/merge.c:458
 #, c-format
 msgid "'%s' does not point to a commit"
 msgstr "“%s” không chỉ đến một lần chuyển giao nào cả"
 
-#: builtin/merge.c:546
+#: builtin/merge.c:548
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Chuỗi branch.%s.mergeoptions sai: %s"
 
-#: builtin/merge.c:668
+#: builtin/merge.c:669
 msgid "Not handling anything other than two heads merge."
 msgstr "Không cầm nắm gì ngoài hai head hòa trộn"
 
-#: builtin/merge.c:682
+#: builtin/merge.c:683
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Không hiểu tùy chọn cho merge-recursive: -X%s"
 
-#: builtin/merge.c:697
+#: builtin/merge.c:698
 #, c-format
 msgid "unable to write %s"
 msgstr "không thể ghi %s"
@@ -10575,67 +11034,67 @@ msgstr ""
 msgid "Empty commit message."
 msgstr "Chú thích của lần commit (chuyển giao) bị trống rỗng."
 
-#: builtin/merge.c:820
+#: builtin/merge.c:819
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Tuyệt vời.\n"
 
-#: builtin/merge.c:873
+#: builtin/merge.c:872
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr ""
 "Việc tự động hòa trộn gặp lỗi; hãy sửa các xung đột sau đó chuyển giao kết "
 "quả.\n"
 
-#: builtin/merge.c:912
+#: builtin/merge.c:911
 msgid "No current branch."
 msgstr "không phải nhánh hiện hành"
 
-#: builtin/merge.c:914
+#: builtin/merge.c:913
 msgid "No remote for the current branch."
 msgstr "Không có máy chủ cho nhánh hiện hành."
 
-#: builtin/merge.c:916
+#: builtin/merge.c:915
 msgid "No default upstream defined for the current branch."
 msgstr "Không có thượng nguồn mặc định được định nghĩa cho nhánh hiện hành."
 
-#: builtin/merge.c:921
+#: builtin/merge.c:920
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "Không nhánh mạng theo dõi cho %s từ %s"
 
-#: builtin/merge.c:974
+#: builtin/merge.c:973
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "Giá trị sai “%s” trong biến môi trường “%s”"
 
-#: builtin/merge.c:1076
+#: builtin/merge.c:1075
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "không phải là một thứ gì đó mà chúng tôi có thể hòa trộn trong %s: %s"
 
-#: builtin/merge.c:1110
+#: builtin/merge.c:1109
 msgid "not something we can merge"
 msgstr "không phải là thứ gì đó mà chúng tôi có thể hòa trộn"
 
-#: builtin/merge.c:1212
+#: builtin/merge.c:1211
 msgid "--abort expects no arguments"
 msgstr "--abort không nhận các đối số"
 
-#: builtin/merge.c:1216
+#: builtin/merge.c:1215
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr ""
 "Ở đây không có lần hòa trộn nào được hủy bỏ giữa chừng cả (thiếu MERGE_HEAD)."
 
-#: builtin/merge.c:1228
+#: builtin/merge.c:1227
 msgid "--continue expects no arguments"
 msgstr "--continue không nhận đối số"
 
-#: builtin/merge.c:1232
+#: builtin/merge.c:1231
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "Ở đây không có lần hòa trộn nào đang được xử lý cả (thiếu MERGE_HEAD)."
 
-#: builtin/merge.c:1248
+#: builtin/merge.c:1247
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -10643,7 +11102,7 @@ msgstr ""
 "Bạn chưa kết thúc việc hòa trộn (MERGE_HEAD vẫn tồn tại).\n"
 "Hãy chuyển giao các thay đổi trước khi bạn có thể hòa trộn."
 
-#: builtin/merge.c:1255
+#: builtin/merge.c:1254
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -10651,115 +11110,115 @@ msgstr ""
 "Bạn chưa kết thúc việc cherry-pick (CHERRY_PICK_HEAD vẫn tồn tại).\n"
 "Hãy chuyển giao các thay đổi trước khi bạn có thể hòa trộn."
 
-#: builtin/merge.c:1258
+#: builtin/merge.c:1257
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr "Bạn chưa kết thúc việc cherry-pick (CHERRY_PICK_HEAD vẫn tồn tại)."
 
-#: builtin/merge.c:1267
+#: builtin/merge.c:1266
 msgid "You cannot combine --squash with --no-ff."
 msgstr "Bạn không thể kết hợp --squash với --no-ff."
 
-#: builtin/merge.c:1275
+#: builtin/merge.c:1274
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr "Không chỉ ra lần chuyển giao và merge.defaultToUpstream chưa được đặt."
 
-#: builtin/merge.c:1292
+#: builtin/merge.c:1291
 msgid "Squash commit into empty head not supported yet"
 msgstr "Squash commit vào một head trống rỗng vẫn chưa được hỗ trợ"
 
-#: builtin/merge.c:1294
+#: builtin/merge.c:1293
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr ""
 "Chuyển giao không-chuyển-tiếp-nhanh không hợp lý ở trong một head trống rỗng"
 
-#: builtin/merge.c:1299
+#: builtin/merge.c:1298
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - không phải là thứ gì đó mà chúng tôi có thể hòa trộn"
 
-#: builtin/merge.c:1301
+#: builtin/merge.c:1300
 msgid "Can merge only exactly one commit into empty head"
 msgstr ""
 "Không thể hòa trộn một cách đúng đắn một lần chuyển giao vào một head rỗng"
 
-#: builtin/merge.c:1335
+#: builtin/merge.c:1334
 #, 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."
 
-#: builtin/merge.c:1338
+#: builtin/merge.c:1337
 #, 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."
 
-#: builtin/merge.c:1341
+#: builtin/merge.c:1340
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "Lần chuyển giao %s không có chữ ký GPG."
 
-#: builtin/merge.c:1344
+#: builtin/merge.c:1343
 #, 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"
 
-#: builtin/merge.c:1403
+#: builtin/merge.c:1402
 msgid "refusing to merge unrelated histories"
 msgstr "từ chối hòa trộn lịch sử không liên quan"
 
-#: builtin/merge.c:1412
+#: builtin/merge.c:1411
 msgid "Already up to date."
 msgstr "Đã cập nhật rồi."
 
-#: builtin/merge.c:1422
+#: builtin/merge.c:1421
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Đang cập nhật %s..%s\n"
 
-#: builtin/merge.c:1463
+#: builtin/merge.c:1462
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "Đang thử hòa trộn kiểu “trivial in-index”…\n"
 
-#: builtin/merge.c:1470
+#: builtin/merge.c:1469
 #, c-format
 msgid "Nope.\n"
 msgstr "Không.\n"
 
-#: builtin/merge.c:1495
+#: builtin/merge.c:1494
 msgid "Already up to date. Yeeah!"
 msgstr "Đã cập nhật rồi. Yeeah!"
 
-#: builtin/merge.c:1501
+#: builtin/merge.c:1500
 msgid "Not possible to fast-forward, aborting."
 msgstr "Thực hiện lệnh chuyển-tiếp-nhanh là không thể được, đang bỏ qua."
 
-#: builtin/merge.c:1524 builtin/merge.c:1603
+#: builtin/merge.c:1523 builtin/merge.c:1602
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "Đang tua lại cây thành thời xa xưa…\n"
 
-#: builtin/merge.c:1528
+#: builtin/merge.c:1527
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "Đang thử chiến lược hòa trộn %s…\n"
 
-#: builtin/merge.c:1594
+#: builtin/merge.c:1593
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "Không có chiến lược hòa trộn nào được nắm giữ (handle) sự hòa trộn.\n"
 
-#: builtin/merge.c:1596
+#: builtin/merge.c:1595
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "Hòa trộn với chiến lược %s gặp lỗi.\n"
 
-#: builtin/merge.c:1605
+#: builtin/merge.c:1604
 #, c-format
 msgid "Using the %s to prepare resolving by hand.\n"
 msgstr "Sử dụng %s để chuẩn bị giải quyết bằng tay.\n"
 
-#: builtin/merge.c:1617
+#: builtin/merge.c:1616
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
@@ -10896,26 +11355,26 @@ msgstr "cho phép tạo nhiều hơn một cây"
 msgid "git mv [<options>] <source>... <destination>"
 msgstr "git mv [<các-tùy-chọn>] <nguồn>… <đích>"
 
-#: builtin/mv.c:83
+#: builtin/mv.c:82
 #, c-format
 msgid "Directory %s is in index and no submodule?"
 msgstr "Thư mục “%s” có ở trong chỉ mục mà không có mô-đun con?"
 
-#: builtin/mv.c:85 builtin/rm.c:289
+#: builtin/mv.c:84 builtin/rm.c:288
 msgid "Please stage your changes to .gitmodules or stash them to proceed"
 msgstr ""
 "Hãy đưa các thay đổi của bạn vào .gitmodules hay tạm cất chúng đi để xử lý"
 
-#: builtin/mv.c:103
+#: builtin/mv.c:102
 #, c-format
 msgid "%.*s is in index"
 msgstr "%.*s trong bảng mục lục"
 
-#: builtin/mv.c:125
+#: builtin/mv.c:124
 msgid "force move/rename even if target exists"
 msgstr "ép buộc di chuyển hay đổi tên thậm chí cả khi đích đã tồn tại"
 
-#: builtin/mv.c:127
+#: builtin/mv.c:126
 msgid "skip move/rename errors"
 msgstr "bỏ qua các lỗi liên quan đến di chuyển, đổi tên"
 
@@ -10980,7 +11439,7 @@ msgstr "%s, nguồn=%s, đích=%s"
 msgid "Renaming %s to %s\n"
 msgstr "Đổi tên %s thành %s\n"
 
-#: builtin/mv.c:276 builtin/remote.c:712 builtin/repack.c:394
+#: builtin/mv.c:276 builtin/remote.c:715 builtin/repack.c:409
 #, c-format
 msgid "renaming '%s' failed"
 msgstr "gặp lỗi khi đổi tên “%s”"
@@ -11172,12 +11631,12 @@ msgstr "không thể ghi đối tượng ghi chú (note)"
 msgid "the note contents have been left in %s"
 msgstr "nội dung ghi chú còn lại %s"
 
-#: builtin/notes.c:234 builtin/tag.c:506
+#: builtin/notes.c:234 builtin/tag.c:507
 #, c-format
 msgid "cannot read '%s'"
 msgstr "không thể đọc “%s”"
 
-#: builtin/notes.c:236 builtin/tag.c:509
+#: builtin/notes.c:236 builtin/tag.c:510
 #, c-format
 msgid "could not open or read '%s'"
 msgstr "không thể mở hay đọc “%s”"
@@ -11424,7 +11883,7 @@ msgstr "cố gắng gỡ bỏ một note chưa từng tồn tại không phải
 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:943 builtin/prune.c:106 builtin/worktree.c:160
+#: builtin/notes.c:943 builtin/prune.c:107 builtin/worktree.c:151
 msgid "do not remove, show only"
 msgstr "không gỡ bỏ, chỉ hiển thị"
 
@@ -11445,213 +11904,241 @@ msgstr "dùng “notes” từ <notes-ref>"
 msgid "unknown subcommand: %s"
 msgstr "không hiểu câu lệnh con: %s"
 
-#: builtin/pack-objects.c:33
+#: builtin/pack-objects.c:48
 msgid ""
 "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects --stdout [các-tùy-chọn…] [< <danh-sách-tham-chiếu> | < "
 "<danh-sách-đối-tượng>]"
 
-#: builtin/pack-objects.c:34
+#: builtin/pack-objects.c:49
 msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr ""
 "git pack-objects [các-tùy-chọn…] <base-name> [< <danh-sách-ref> | < <danh-"
 "sách-đối-tượng>]"
 
-#: builtin/pack-objects.c:195 builtin/pack-objects.c:198
+#: builtin/pack-objects.c:211 builtin/pack-objects.c:214
 #, c-format
 msgid "deflate error (%d)"
 msgstr "lỗi giải nén (%d)"
 
-#: builtin/pack-objects.c:791
+#: builtin/pack-objects.c:810
 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:804
+#: builtin/pack-objects.c:823
 msgid "Writing objects"
 msgstr "Đang ghi lại các đối tượng"
 
-#: builtin/pack-objects.c:1084
+#: builtin/pack-objects.c:1106
 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:2454
+#: builtin/pack-objects.c:1765
+msgid "Counting objects"
+msgstr "Đang đếm các đối tượng"
+
+#: builtin/pack-objects.c:1895
+#, c-format
+msgid "unable to get size of %s"
+msgstr "không thể lấy kích cỡ của %s"
+
+#: builtin/pack-objects.c:1910
+#, 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:2564
 msgid "Compressing objects"
 msgstr "Đang nén các đối tượng"
 
-#: builtin/pack-objects.c:2625
+#: builtin/pack-objects.c:2735
 msgid "invalid value for --missing"
 msgstr "giá trị cho --missing không hợp lệ"
 
-#: builtin/pack-objects.c:2928
+#: builtin/pack-objects.c:3067
 #, 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:2932
+#: builtin/pack-objects.c:3071
 #, c-format
 msgid "bad index version '%s'"
 msgstr "phiên bản mục lục sai “%s”"
 
-#: builtin/pack-objects.c:2962
+#: builtin/pack-objects.c:3102
 msgid "do not show progress meter"
 msgstr "không hiển thị bộ đo tiến trình"
 
-#: builtin/pack-objects.c:2964
+#: builtin/pack-objects.c:3104
 msgid "show progress meter"
 msgstr "hiển thị bộ đo tiến trình"
 
-#: builtin/pack-objects.c:2966
+#: builtin/pack-objects.c:3106
 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/pack-objects.c:2969
+#: builtin/pack-objects.c:3109
 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"
 
-#: builtin/pack-objects.c:2970
+#: builtin/pack-objects.c:3110
 msgid "version[,offset]"
 msgstr "phiên bản[,offset]"
 
-#: builtin/pack-objects.c:2971
+#: builtin/pack-objects.c:3111
 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:2974
+#: builtin/pack-objects.c:3114
 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:2976
+#: builtin/pack-objects.c:3116
 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:2978
+#: builtin/pack-objects.c:3118
 msgid "ignore packed objects"
 msgstr "bỏ qua các đối tượng đóng gói"
 
-#: builtin/pack-objects.c:2980
+#: builtin/pack-objects.c:3120
 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:2982
+#: builtin/pack-objects.c:3122
 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:2984
+#: builtin/pack-objects.c:3124
 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:2986
+#: builtin/pack-objects.c:3126
 msgid "reuse existing deltas"
 msgstr "dùng lại các delta sẵn có"
 
-#: builtin/pack-objects.c:2988
+#: builtin/pack-objects.c:3128
 msgid "reuse existing objects"
 msgstr "dùng lại các đối tượng sẵn có"
 
-#: builtin/pack-objects.c:2990
+#: builtin/pack-objects.c:3130
 msgid "use OFS_DELTA objects"
 msgstr "dùng các đối tượng OFS_DELTA"
 
-#: builtin/pack-objects.c:2992
+#: builtin/pack-objects.c:3132
 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:2994
+#: builtin/pack-objects.c:3134
 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:2996
+#: builtin/pack-objects.c:3136
 msgid "read revision arguments from standard input"
 msgstr " đọc tham số “revision” từ thiết bị nhập chuẩn"
 
-#: builtin/pack-objects.c:2998
+#: builtin/pack-objects.c:3138
 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:3001
+#: builtin/pack-objects.c:3141
 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:3004
+#: builtin/pack-objects.c:3144
 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:3007
+#: builtin/pack-objects.c:3147
 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:3010
+#: builtin/pack-objects.c:3150
 msgid "output pack to stdout"
 msgstr "xuất gói ra đầu ra tiêu chuẩn"
 
-#: builtin/pack-objects.c:3012
+#: builtin/pack-objects.c:3152
 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:3014
+#: builtin/pack-objects.c:3154
 msgid "keep unreachable objects"
 msgstr "giữ lại các đối tượng không thể đọc được"
 
-#: builtin/pack-objects.c:3016
+#: builtin/pack-objects.c:3156
 msgid "pack loose unreachable objects"
 msgstr "pack mất các đối tượng không thể đọc được"
 
-#: builtin/pack-objects.c:3018
+#: builtin/pack-objects.c:3158
 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:3021
+#: builtin/pack-objects.c:3161
 msgid "create thin packs"
 msgstr "tạo gói nhẹ"
 
-#: builtin/pack-objects.c:3023
+#: builtin/pack-objects.c:3163
 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:3025
+#: builtin/pack-objects.c:3165
 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:3027
+#: builtin/pack-objects.c:3167
+msgid "ignore this pack"
+msgstr "bỏ qua gói này"
+
+#: builtin/pack-objects.c:3169
 msgid "pack compression level"
 msgstr "mức nén gói"
 
-#: builtin/pack-objects.c:3029
+#: builtin/pack-objects.c:3171
 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:3031
+#: builtin/pack-objects.c:3173
 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:3033
+#: builtin/pack-objects.c:3175
 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:3036
+#: builtin/pack-objects.c:3178
 msgid "handling for missing objects"
 msgstr "xử lý cho thiếu đối tượng"
 
-#: builtin/pack-objects.c:3039
+#: builtin/pack-objects.c:3181
 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:3178
-msgid "Counting objects"
-msgstr "Đang đếm các đối tượng"
+#: builtin/pack-objects.c:3205
+#, 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:3210
+#, c-format
+msgid "pack.deltaCacheLimit is too high, forcing %d"
+msgstr "pack.deltaCacheLimit là quá cao, ép dùng %d"
+
+#: builtin/pack-objects.c:3338
+msgid "Enumerating objects"
+msgstr "Đánh số các đối tượng"
 
-#: builtin/pack-refs.c:6
+#: builtin/pack-refs.c:7
 msgid "git pack-refs [<options>]"
 msgstr "git pack-refs [<các-tùy-chọn>]"
 
-#: builtin/pack-refs.c:14
+#: builtin/pack-refs.c:15
 msgid "pack everything"
 msgstr "đóng gói mọi thứ"
 
-#: builtin/pack-refs.c:15
+#: builtin/pack-refs.c:16
 msgid "prune loose refs (default)"
 msgstr "prune (cắt cụt) những tham chiếu bị mất (mặc định)"
 
@@ -11667,65 +12154,65 @@ msgstr "Đang gỡ các đối tượng trùng lặp"
 msgid "git prune [-n] [-v] [--progress] [--expire <time>] [--] [<head>...]"
 msgstr "git prune [-n] [-v] [--progress] [--expire <thời-gian>] [--] [<head>…]"
 
-#: builtin/prune.c:107
+#: builtin/prune.c:108
 msgid "report pruned objects"
 msgstr "báo cáo các đối tượng đã prune"
 
-#: builtin/prune.c:110
+#: builtin/prune.c:111
 msgid "expire objects older than <time>"
 msgstr "các đối tượng hết hạn cũ hơn khoảng <thời gian>"
 
-#: builtin/prune.c:112
+#: builtin/prune.c:113
 msgid "limit traversal to objects outside promisor packfiles"
 msgstr "giới hạn giao đến các đối tượng nằm ngoài các tập tin gói hứa hẹn"
 
-#: builtin/prune.c:126
+#: builtin/prune.c:127
 msgid "cannot prune in a precious-objects repo"
 msgstr "không thể tỉa bớt trong một kho đối_tượng_vĩ_đại"
 
-#: builtin/pull.c:54 builtin/pull.c:56
+#: builtin/pull.c:59 builtin/pull.c:61
 #, c-format
 msgid "Invalid value for %s: %s"
 msgstr "Giá trị không hợp lệ %s: %s"
 
-#: builtin/pull.c:76
+#: builtin/pull.c:81
 msgid "git pull [<options>] [<repository> [<refspec>...]]"
 msgstr "git pull [<các-tùy-chọn>] [<kho-chứa> [<refspec>…]]"
 
-#: builtin/pull.c:127
+#: builtin/pull.c:132
 msgid "control for recursive fetching of submodules"
 msgstr "điều khiển việc lấy về đệ quy của các mô-đun-con"
 
-#: builtin/pull.c:131
+#: builtin/pull.c:136
 msgid "Options related to merging"
 msgstr "Các tùy chọn liên quan đến hòa trộn"
 
-#: builtin/pull.c:134
+#: builtin/pull.c:139
 msgid "incorporate changes by rebasing rather than merging"
 msgstr "các thay đổi hợp nhất bằng cải tổ thay vì hòa trộn"
 
-#: builtin/pull.c:161 builtin/rebase--helper.c:23 builtin/revert.c:121
+#: builtin/pull.c:166 builtin/rebase--helper.c:23 builtin/revert.c:121
 msgid "allow fast-forward"
 msgstr "cho phép chuyển-tiếp-nhanh"
 
-#: builtin/pull.c:170
+#: builtin/pull.c:175
 msgid "automatically stash/stash pop before and after rebase"
 msgstr "tự động stash/stash pop tước và sau tu bổ (rebase)"
 
-#: builtin/pull.c:186
+#: builtin/pull.c:191
 msgid "Options related to fetching"
 msgstr "Các tùy chọn liên quan đến lệnh lấy về"
 
-#: builtin/pull.c:204
+#: builtin/pull.c:209
 msgid "number of submodules pulled in parallel"
 msgstr "số lượng mô-đun-con được đẩy lên đồng thời"
 
-#: builtin/pull.c:299
+#: builtin/pull.c:304
 #, c-format
 msgid "Invalid value for pull.ff: %s"
 msgstr "Giá trị không hợp lệ cho pull.ff: %s"
 
-#: builtin/pull.c:415
+#: builtin/pull.c:420
 msgid ""
 "There is no candidate for rebasing against among the refs that you just "
 "fetched."
@@ -11733,14 +12220,14 @@ msgstr ""
 "Ở đây không có ứng cử nào để cải tổ lại trong số các tham chiếu mà bạn vừa "
 "lấy về."
 
-#: builtin/pull.c:417
+#: builtin/pull.c:422
 msgid ""
 "There are no candidates for merging among the refs that you just fetched."
 msgstr ""
 "Ở đây không có ứng cử nào để hòa trộn trong số các tham chiếu mà bạn vừa lấy "
 "về."
 
-#: builtin/pull.c:418
+#: builtin/pull.c:423
 msgid ""
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
@@ -11749,7 +12236,7 @@ msgstr ""
 "tự\n"
 "đại diện mà nó lại không khớp trên điểm cuối máy phục vụ."
 
-#: builtin/pull.c:421
+#: builtin/pull.c:426
 #, c-format
 msgid ""
 "You asked to pull from the remote '%s', but did not specify\n"
@@ -11761,43 +12248,43 @@ msgstr ""
 "theo mặc định cho nhánh hiện tại của bạn, bạn phải chỉ định\n"
 "một nhánh trên dòng lệnh."
 
-#: builtin/pull.c:426 git-parse-remote.sh:73
+#: builtin/pull.c:431 git-parse-remote.sh:73
 msgid "You are not currently on a branch."
 msgstr "Hiện tại bạn chẳng ở nhánh nào cả."
 
-#: builtin/pull.c:428 builtin/pull.c:443 git-parse-remote.sh:79
+#: builtin/pull.c:433 builtin/pull.c:448 git-parse-remote.sh:79
 msgid "Please specify which branch you want to rebase against."
 msgstr "Vui lòng chỉ định nhánh nào bạn muốn cải tổ lại."
 
-#: builtin/pull.c:430 builtin/pull.c:445 git-parse-remote.sh:82
+#: builtin/pull.c:435 builtin/pull.c:450 git-parse-remote.sh:82
 msgid "Please specify which branch you want to merge with."
 msgstr "Vui lòng chỉ định nhánh nào bạn muốn hòa trộn vào."
 
-#: builtin/pull.c:431 builtin/pull.c:446
+#: builtin/pull.c:436 builtin/pull.c:451
 msgid "See git-pull(1) for details."
 msgstr "Xem git-pull(1) để biết thêm chi tiết."
 
-#: builtin/pull.c:433 builtin/pull.c:439 builtin/pull.c:448
+#: builtin/pull.c:438 builtin/pull.c:444 builtin/pull.c:453
 #: git-parse-remote.sh:64
 msgid "<remote>"
 msgstr "<máy chủ>"
 
-#: builtin/pull.c:433 builtin/pull.c:448 builtin/pull.c:453 git-rebase.sh:477
+#: builtin/pull.c:438 builtin/pull.c:453 builtin/pull.c:458 git-rebase.sh:523
 #: git-parse-remote.sh:65
 msgid "<branch>"
 msgstr "<nhánh>"
 
-#: builtin/pull.c:441 git-parse-remote.sh:75
+#: builtin/pull.c:446 git-parse-remote.sh:75
 msgid "There is no tracking information for the current branch."
 msgstr "Ở đây không có thông tin theo dõi cho nhánh hiện hành."
 
-#: builtin/pull.c:450 git-parse-remote.sh:95
+#: builtin/pull.c:455 git-parse-remote.sh:95
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:"
 msgstr ""
 "Nếu bạn muốn theo dõi thông tin cho nhánh này bạn có thể thực hiện bằng lệnh:"
 
-#: builtin/pull.c:455
+#: builtin/pull.c:460
 #, c-format
 msgid ""
 "Your configuration specifies to merge with the ref '%s'\n"
@@ -11806,29 +12293,29 @@ msgstr ""
 "Các đặc tả cấu hình của bạn để hòa trộn với tham chiếu “%s”\n"
 "từ máy dịch vụ, nhưng không có nhánh nào như thế được lấy về."
 
-#: builtin/pull.c:819
+#: builtin/pull.c:826
 msgid "ignoring --verify-signatures for rebase"
 msgstr "bỏ qua --verify-signatures khi rebase"
 
-#: builtin/pull.c:867
+#: builtin/pull.c:874
 msgid "--[no-]autostash option is only valid with --rebase."
 msgstr "tùy chọn --[no-]autostash chỉ hợp lệ khi dùng với --rebase."
 
-#: builtin/pull.c:875
+#: builtin/pull.c:882
 msgid "Updating an unborn branch with changes added to the index."
 msgstr ""
 "Đang cập nhật một nhánh chưa được sinh ra với các thay đổi được thêm vào "
 "bảng mục lục."
 
-#: builtin/pull.c:878
+#: builtin/pull.c:885
 msgid "pull with rebase"
 msgstr "pull với rebase"
 
-#: builtin/pull.c:879
+#: builtin/pull.c:886
 msgid "please commit or stash them."
 msgstr "xin hãy chuyển giao hoặc tạm cất (stash) chúng."
 
-#: builtin/pull.c:904
+#: builtin/pull.c:911
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -11839,7 +12326,7 @@ msgstr ""
 "đang chuyển-tiếp-nhanh cây làm việc của bạn từ\n"
 "lần chuyển giaot %s."
 
-#: builtin/pull.c:909
+#: builtin/pull.c:916
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -11857,32 +12344,32 @@ msgstr ""
 "$ git reset --hard\n"
 "để khôi phục lại."
 
-#: builtin/pull.c:924
+#: builtin/pull.c:931
 msgid "Cannot merge multiple branches into empty head."
 msgstr "Không thể hòa trộn nhiều nhánh vào trong một head trống rỗng."
 
-#: builtin/pull.c:928
+#: builtin/pull.c:935
 msgid "Cannot rebase onto multiple branches."
 msgstr "Không thể thực hiện lệnh rebase (cải tổ) trên nhiều nhánh."
 
-#: builtin/pull.c:935
+#: builtin/pull.c:942
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr ""
 "không thể cải tổ với các thay đổi mô-đun-con được ghi lại một cách cục bộ"
 
-#: builtin/push.c:17
+#: builtin/push.c:19
 msgid "git push [<options>] [<repository> [<refspec>...]]"
 msgstr "git push [<các-tùy-chọn>] [<kho-chứa> [<refspec>…]]"
 
-#: builtin/push.c:92
+#: builtin/push.c:111
 msgid "tag shorthand without <tag>"
 msgstr "dùng tốc ký thẻ không có <thẻ>"
 
-#: builtin/push.c:102
+#: builtin/push.c:121
 msgid "--delete only accepts plain target ref names"
 msgstr "--delete chỉ chấp nhận các tên tham chiếu dạng thường"
 
-#: builtin/push.c:146
+#: builtin/push.c:165
 msgid ""
 "\n"
 "To choose either option permanently, see push.default in 'git help config'."
@@ -11891,7 +12378,7 @@ msgstr ""
 "Để chọn mỗi tùy chọn một cách cố định, xem push.default trong “git help "
 "config”."
 
-#: builtin/push.c:149
+#: builtin/push.c:168
 #, c-format
 msgid ""
 "The upstream branch of your current branch does not match\n"
@@ -11916,7 +12403,7 @@ msgstr ""
 "    git push %s %s\n"
 "%s"
 
-#: builtin/push.c:164
+#: builtin/push.c:183
 #, c-format
 msgid ""
 "You are not currently on a branch.\n"
@@ -11931,7 +12418,7 @@ msgstr ""
 "\n"
 "    git push %s HEAD:<tên-của-nhánh-máy-chủ>\n"
 
-#: builtin/push.c:178
+#: builtin/push.c:197
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -11945,12 +12432,12 @@ msgstr ""
 "\n"
 "    git push --set-upstream %s %s\n"
 
-#: builtin/push.c:186
+#: builtin/push.c:205
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
 msgstr "Nhánh hiện tại %s có nhiều nhánh thượng nguồn, từ chối push."
 
-#: builtin/push.c:189
+#: builtin/push.c:208
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -11962,14 +12449,14 @@ msgstr ""
 "nhánh hiện tại “%s” của bạn, mà không báo cho tôi biết là cái gì được push\n"
 "để cập nhật nhánh máy chủ nào."
 
-#: builtin/push.c:248
+#: builtin/push.c:267
 msgid ""
 "You didn't specify any refspecs to push, and push.default is \"nothing\"."
 msgstr ""
 "Bạn đã không chỉ ra một refspecs nào để đẩy lên, và push.default là \"không "
 "là gì cả\"."
 
-#: builtin/push.c:255
+#: builtin/push.c:274
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
@@ -11982,7 +12469,7 @@ msgstr ""
 "Xem “Note about fast-forwards” trong “git push --help” để có thông tin chi "
 "tiết."
 
-#: builtin/push.c:261
+#: builtin/push.c:280
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. Check out this branch and integrate the remote changes\n"
@@ -11996,7 +12483,7 @@ msgstr ""
 "Xem “Note about fast-forwards” trong “git push --help” để có thông tin chi "
 "tiết."
 
-#: builtin/push.c:267
+#: builtin/push.c:286
 msgid ""
 "Updates were rejected because the remote contains work that you do\n"
 "not have locally. This is usually caused by another repository pushing\n"
@@ -12011,11 +12498,11 @@ msgstr ""
 "Xem “Note about fast-forwards” trong “git push --help” để có thông tin chi "
 "tiết."
 
-#: builtin/push.c:274
+#: builtin/push.c:293
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr "Việc cập nhật bị từ chối bởi vì thẻ đã sẵn có từ trước trên máy chủ."
 
-#: builtin/push.c:277
+#: builtin/push.c:296
 msgid ""
 "You cannot update a remote ref that points at a non-commit object,\n"
 "or update a remote ref to make it point at a non-commit object,\n"
@@ -12027,22 +12514,22 @@ msgstr ""
 "đối tượng\n"
 "không phải chuyển giao, mà không sử dụng tùy chọn “--force”.\n"
 
-#: builtin/push.c:337
+#: builtin/push.c:357
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "Đang đẩy lên %s\n"
 
-#: builtin/push.c:341
+#: builtin/push.c:361
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "gặp lỗi khi đẩy tới một số tham chiếu đến “%s”"
 
-#: builtin/push.c:372
+#: builtin/push.c:395
 #, c-format
 msgid "bad repository '%s'"
 msgstr "repository (kho) sai “%s”"
 
-#: builtin/push.c:373
+#: builtin/push.c:396
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -12063,112 +12550,104 @@ msgstr ""
 "\n"
 "    git push <tên>\n"
 
-#: builtin/push.c:391
-msgid "--all and --tags are incompatible"
-msgstr "--all và --tags xung khắc nhau"
-
-#: builtin/push.c:392
-msgid "--all can't be combined with refspecs"
-msgstr "--all không thể được tổ hợp cùng với đặc tả đường dẫn"
-
-#: builtin/push.c:397
-msgid "--mirror and --tags are incompatible"
-msgstr "--mirror và --tags xung khắc nhau"
-
-#: builtin/push.c:398
-msgid "--mirror can't be combined with refspecs"
-msgstr "--mirror không thể được tổ hợp cùng với đặc tả đường dẫn"
-
-#: builtin/push.c:403
-msgid "--all and --mirror are incompatible"
-msgstr "--all và --mirror xung khắc nhau"
-
-#: builtin/push.c:535
+#: builtin/push.c:551
 msgid "repository"
 msgstr "kho"
 
-#: builtin/push.c:536 builtin/send-pack.c:163
+#: builtin/push.c:552 builtin/send-pack.c:164
 msgid "push all refs"
 msgstr "đẩy tất cả các tham chiếu"
 
-#: builtin/push.c:537 builtin/send-pack.c:165
+#: builtin/push.c:553 builtin/send-pack.c:166
 msgid "mirror all refs"
 msgstr "mirror tất cả các tham chiếu"
 
-#: builtin/push.c:539
+#: builtin/push.c:555
 msgid "delete refs"
 msgstr "xóa các tham chiếu"
 
-#: builtin/push.c:540
+#: builtin/push.c:556
 msgid "push tags (can't be used with --all or --mirror)"
 msgstr "đẩy các thẻ (không dùng cùng với --all hay --mirror)"
 
-#: builtin/push.c:543 builtin/send-pack.c:166
+#: builtin/push.c:559 builtin/send-pack.c:167
 msgid "force updates"
 msgstr "ép buộc cập nhật"
 
-#: builtin/push.c:545 builtin/send-pack.c:180
+#: builtin/push.c:561 builtin/send-pack.c:181
 msgid "refname>:<expect"
 msgstr "tên-tham-chiếu>:<cần"
 
-#: builtin/push.c:546 builtin/send-pack.c:181
+#: builtin/push.c:562 builtin/send-pack.c:182
 msgid "require old value of ref to be at this value"
 msgstr "yêu cầu giá-trị cũ của tham chiếu thì là giá-trị này"
 
-#: builtin/push.c:549
+#: builtin/push.c:565
 msgid "control recursive pushing of submodules"
 msgstr "điều khiển việc đẩy lên (push) đệ qui của mô-đun-con"
 
-#: builtin/push.c:551 builtin/send-pack.c:174
+#: builtin/push.c:567 builtin/send-pack.c:175
 msgid "use thin pack"
 msgstr "tạo gói nhẹ"
 
-#: builtin/push.c:552 builtin/push.c:553 builtin/send-pack.c:160
-#: builtin/send-pack.c:161
+#: builtin/push.c:568 builtin/push.c:569 builtin/send-pack.c:161
+#: builtin/send-pack.c:162
 msgid "receive pack program"
 msgstr "chương trình nhận gói"
 
-#: builtin/push.c:554
+#: builtin/push.c:570
 msgid "set upstream for git pull/status"
 msgstr "đặt thượng nguồn cho git pull/status"
 
-#: builtin/push.c:557
+#: builtin/push.c:573
 msgid "prune locally removed refs"
 msgstr "xén tỉa những tham chiếu bị gỡ bỏ"
 
-#: builtin/push.c:559
+#: builtin/push.c:575
 msgid "bypass pre-push hook"
 msgstr "vòng qua móc tiền-đẩy (pre-push)"
 
-#: builtin/push.c:560
+#: builtin/push.c:576
 msgid "push missing but relevant tags"
 msgstr "push phần bị thiếu nhưng các thẻ lại thích hợp"
 
-#: builtin/push.c:563 builtin/send-pack.c:168
+#: builtin/push.c:579 builtin/send-pack.c:169
 msgid "GPG sign the push"
 msgstr "ký lần đẩy dùng GPG"
 
-#: builtin/push.c:565 builtin/send-pack.c:175
+#: builtin/push.c:581 builtin/send-pack.c:176
 msgid "request atomic transaction on remote side"
 msgstr "yêu cầu giao dịch hạt nhân bên phía máy chủ"
 
-#: builtin/push.c:566 builtin/send-pack.c:171
-msgid "server-specific"
-msgstr "đặc-tả-máy-phục-vụ"
-
-#: builtin/push.c:566 builtin/send-pack.c:172
-msgid "option to transmit"
-msgstr "tùy chọn để chuyển giao"
-
-#: builtin/push.c:583
+#: builtin/push.c:599
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr "--delete là xung khắc với các tùy chọn --all, --mirror và --tags"
 
-#: builtin/push.c:585
+#: builtin/push.c:601
 msgid "--delete doesn't make sense without any refs"
 msgstr "--delete không hợp lý nếu không có bất kỳ tham chiếu nào"
 
 #: builtin/push.c:604
+msgid "--all and --tags are incompatible"
+msgstr "--all và --tags xung khắc nhau"
+
+#: builtin/push.c:606
+msgid "--all can't be combined with refspecs"
+msgstr "--all không thể được tổ hợp cùng với đặc tả đường dẫn"
+
+#: builtin/push.c:610
+msgid "--mirror and --tags are incompatible"
+msgstr "--mirror và --tags xung khắc nhau"
+
+#: builtin/push.c:612
+msgid "--mirror can't be combined with refspecs"
+msgstr "--mirror không thể được tổ hợp cùng với đặc tả đường dẫn"
+
+#: builtin/push.c:615
+msgid "--all and --mirror are incompatible"
+msgstr "--all và --mirror xung khắc nhau"
+
+#: builtin/push.c:634
 msgid "push options must not have new line characters"
 msgstr "các tùy chọn push phải không có ký tự dòng mới"
 
@@ -12183,68 +12662,68 @@ msgstr ""
 "[--index-output=<tập-tin>] (--empty | <tree-ish1> [<tree-ish2> [<tree-"
 "ish3>]])"
 
-#: builtin/read-tree.c:121
+#: builtin/read-tree.c:120
 msgid "write resulting index to <file>"
 msgstr "ghi mục lục kết quả vào <tập-tin>"
 
-#: builtin/read-tree.c:124
+#: builtin/read-tree.c:123
 msgid "only empty the index"
 msgstr "chỉ với bảng mục lục trống rỗng"
 
-#: builtin/read-tree.c:126
+#: builtin/read-tree.c:125
 msgid "Merging"
 msgstr "Hòa trộn"
 
-#: builtin/read-tree.c:128
+#: builtin/read-tree.c:127
 msgid "perform a merge in addition to a read"
 msgstr "thực hiện một hòa trộn thêm vào việc đọc"
 
-#: builtin/read-tree.c:130
+#: builtin/read-tree.c:129
 msgid "3-way merge if no file level merging required"
 msgstr ""
 "hòa trộn kiểu “3-way” nếu không có tập tin mức hòa trộn nào được yêu cầu "
 
-#: builtin/read-tree.c:132
+#: builtin/read-tree.c:131
 msgid "3-way merge in presence of adds and removes"
 msgstr "hòa trộn 3-way trong sự hiện diện của “adds” và “removes”"
 
-#: builtin/read-tree.c:134
+#: builtin/read-tree.c:133
 msgid "same as -m, but discard unmerged entries"
 msgstr "giống với -m, nhưng bỏ qua các mục chưa được hòa trộn"
 
-#: builtin/read-tree.c:135
+#: builtin/read-tree.c:134
 msgid "<subdirectory>/"
 msgstr "<thư-mục-con>/"
 
-#: builtin/read-tree.c:136
+#: builtin/read-tree.c:135
 msgid "read the tree into the index under <subdirectory>/"
 msgstr "đọc cây vào trong bảng mục lục dưới <thư_mục_con>/"
 
-#: builtin/read-tree.c:139
+#: builtin/read-tree.c:138
 msgid "update working tree with merge result"
 msgstr "cập nhật cây làm việc với kết quả hòa trộn"
 
-#: builtin/read-tree.c:141
+#: builtin/read-tree.c:140
 msgid "gitignore"
 msgstr "gitignore"
 
-#: builtin/read-tree.c:142
+#: builtin/read-tree.c:141
 msgid "allow explicitly ignored files to be overwritten"
 msgstr "cho phép các tập tin rõ ràng bị lờ đi được ghi đè"
 
-#: builtin/read-tree.c:145
+#: builtin/read-tree.c:144
 msgid "don't check the working tree after merging"
 msgstr "không kiểm tra cây làm việc sau hòa trộn"
 
-#: builtin/read-tree.c:146
+#: builtin/read-tree.c:145
 msgid "don't update the index or the work tree"
 msgstr "không cập nhật bảng mục lục hay cây làm việc"
 
-#: builtin/read-tree.c:148
+#: builtin/read-tree.c:147
 msgid "skip applying sparse checkout filter"
 msgstr "bỏ qua áp dụng bộ lọc lấy ra (checkout) thưa thớt"
 
-#: builtin/read-tree.c:150
+#: builtin/read-tree.c:149
 msgid "debug unpack-trees"
 msgstr "gỡ lỗi “unpack-trees”"
 
@@ -12261,46 +12740,58 @@ msgid "allow commits with empty messages"
 msgstr "chấp nhận chuyển giao mà không ghi chú gì"
 
 #: builtin/rebase--helper.c:27
+msgid "rebase merge commits"
+msgstr "cải tổ các lần chuyển giao hòa trộn"
+
+#: builtin/rebase--helper.c:29
+msgid "keep original branch points of cousins"
+msgstr "giữ các điểm nhánh nguyên bản của các anh em họ"
+
+#: builtin/rebase--helper.c:30
 msgid "continue rebase"
 msgstr "tiếp tục cải tổ"
 
-#: builtin/rebase--helper.c:29
+#: builtin/rebase--helper.c:32
 msgid "abort rebase"
 msgstr "bãi bỏ việc cải tổ"
 
-#: builtin/rebase--helper.c:32
+#: builtin/rebase--helper.c:35
 msgid "make rebase script"
 msgstr "tạo văn lệnh rebase"
 
-#: builtin/rebase--helper.c:34
+#: builtin/rebase--helper.c:37
 msgid "shorten commit ids in the todo list"
 msgstr "rút ngắn mã chuyển giao trong danh sách cần làm"
 
-#: builtin/rebase--helper.c:36
+#: builtin/rebase--helper.c:39
 msgid "expand commit ids in the todo list"
 msgstr "khai triển mã chuyển giao trong danh sách cần làm"
 
-#: builtin/rebase--helper.c:38
+#: builtin/rebase--helper.c:41
 msgid "check the todo list"
 msgstr "kiểm tra danh sách cần làm"
 
-#: builtin/rebase--helper.c:40
+#: builtin/rebase--helper.c:43
 msgid "skip unnecessary picks"
 msgstr "bỏ qua các lệnh cậy (pick) không cần thiết"
 
-#: builtin/rebase--helper.c:42
+#: builtin/rebase--helper.c:45
 msgid "rearrange fixup/squash lines"
 msgstr "sắp xếp lại các dòng fixup/squash"
 
-#: builtin/rebase--helper.c:44
+#: builtin/rebase--helper.c:47
 msgid "insert exec commands in todo list"
 msgstr "chèn các lệnh thực thi trong danh sách cần làm"
 
-#: builtin/receive-pack.c:30
+#: builtin/rebase--helper.c:68
+msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
+msgstr "--[no-]rebase-cousins không có tác dụng khi không có --rebase-merges"
+
+#: builtin/receive-pack.c:31
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <thư-mục-git>"
 
-#: builtin/receive-pack.c:841
+#: builtin/receive-pack.c:842
 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"
@@ -12330,7 +12821,7 @@ msgstr ""
 "Để 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:861
+#: builtin/receive-pack.c:862
 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"
@@ -12351,11 +12842,11 @@ msgstr ""
 "\n"
 "Để chấm dứt lời nhắn này, bạn hãy đặt nó thành “refuse”."
 
-#: builtin/receive-pack.c:1934
+#: builtin/receive-pack.c:1935
 msgid "quiet"
 msgstr "im lặng"
 
-#: builtin/receive-pack.c:1948
+#: builtin/receive-pack.c:1949
 msgid "You must specify a directory."
 msgstr "Bạn phải chỉ định thư mục."
 
@@ -12364,11 +12855,11 @@ msgstr "Bạn phải chỉ định thư mục."
 msgid "'%s' is not a valid timestamp"
 msgstr "“%s” không phải là dấu thời gian hợp lệ"
 
-#: builtin/remote.c:13
+#: builtin/remote.c:14
 msgid "git remote [-v | --verbose]"
 msgstr "git remote [-v | --verbose]"
 
-#: builtin/remote.c:14
+#: builtin/remote.c:15
 msgid ""
 "git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
 "mirror=<fetch|push>] <name> <url>"
@@ -12376,82 +12867,82 @@ msgstr ""
 "git remote add [-t <nhánh>] [-m <master>] [-f] [--tags|--no-tags] [--"
 "mirror=<fetch|push>] <tên> <url>"
 
-#: builtin/remote.c:15 builtin/remote.c:35
+#: builtin/remote.c:16 builtin/remote.c:36
 msgid "git remote rename <old> <new>"
 msgstr "git remote rename <tên-cũ> <tên-mới>"
 
-#: builtin/remote.c:16 builtin/remote.c:40
+#: builtin/remote.c:17 builtin/remote.c:41
 msgid "git remote remove <name>"
 msgstr "git remote remove <tên>"
 
-#: builtin/remote.c:17 builtin/remote.c:45
+#: builtin/remote.c:18 builtin/remote.c:46
 msgid "git remote set-head <name> (-a | --auto | -d | --delete | <branch>)"
 msgstr "git remote set-head <tên> (-a | --auto | -d | --delete | <nhánh>)"
 
-#: builtin/remote.c:18
+#: builtin/remote.c:19
 msgid "git remote [-v | --verbose] show [-n] <name>"
 msgstr "git remote [-v | --verbose] show [-n] <tên>"
 
-#: builtin/remote.c:19
+#: builtin/remote.c:20
 msgid "git remote prune [-n | --dry-run] <name>"
 msgstr "git remote prune [-n | --dry-run] <tên>"
 
-#: builtin/remote.c:20
+#: builtin/remote.c:21
 msgid ""
 "git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]"
 msgstr ""
 "git remote [-v | --verbose] update [-p | --prune] [(<nhóm> | <máy-chủ>)…]"
 
-#: builtin/remote.c:21
+#: builtin/remote.c:22
 msgid "git remote set-branches [--add] <name> <branch>..."
 msgstr "git remote set-branches [--add] <tên> <nhánh>…"
 
-#: builtin/remote.c:22 builtin/remote.c:71
+#: builtin/remote.c:23 builtin/remote.c:72
 msgid "git remote get-url [--push] [--all] <name>"
 msgstr "git remote set-url [--push] [--all] <tên>"
 
-#: builtin/remote.c:23 builtin/remote.c:76
+#: builtin/remote.c:24 builtin/remote.c:77
 msgid "git remote set-url [--push] <name> <newurl> [<oldurl>]"
 msgstr "git remote set-url [--push] <tên> <url-mới> [<url-cũ>]"
 
-#: builtin/remote.c:24 builtin/remote.c:77
+#: builtin/remote.c:25 builtin/remote.c:78
 msgid "git remote set-url --add <name> <newurl>"
 msgstr "git remote set-url --add <tên> <url-mới>"
 
-#: builtin/remote.c:25 builtin/remote.c:78
+#: builtin/remote.c:26 builtin/remote.c:79
 msgid "git remote set-url --delete <name> <url>"
 msgstr "git remote set-url --delete <tên> <url>"
 
-#: builtin/remote.c:30
+#: builtin/remote.c:31
 msgid "git remote add [<options>] <name> <url>"
 msgstr "git remote add [<các-tùy-chọn>] <tên> <url>"
 
-#: builtin/remote.c:50
+#: builtin/remote.c:51
 msgid "git remote set-branches <name> <branch>..."
 msgstr "git remote set-branches <tên> <nhánh>…"
 
-#: builtin/remote.c:51
+#: builtin/remote.c:52
 msgid "git remote set-branches --add <name> <branch>..."
 msgstr "git remote set-branches --add <tên> <nhánh>…"
 
-#: builtin/remote.c:56
+#: builtin/remote.c:57
 msgid "git remote show [<options>] <name>"
 msgstr "git remote show [<các-tùy-chọn>] <tên>"
 
-#: builtin/remote.c:61
+#: builtin/remote.c:62
 msgid "git remote prune [<options>] <name>"
 msgstr "git remote prune [<các-tùy-chọn>] <tên>"
 
-#: builtin/remote.c:66
+#: builtin/remote.c:67
 msgid "git remote update [<options>] [<group> | <remote>]..."
 msgstr "git remote update [<các-tùy-chọn>] [<nhóm> | <máy-chủ>]…"
 
-#: builtin/remote.c:95
+#: builtin/remote.c:96
 #, c-format
 msgid "Updating %s"
 msgstr "Đang cập nhật %s"
 
-#: builtin/remote.c:127
+#: builtin/remote.c:128
 msgid ""
 "--mirror is dangerous and deprecated; please\n"
 "\t use --mirror=fetch or --mirror=push instead"
@@ -12459,86 +12950,86 @@ msgstr ""
 "--mirror nguy hiểm và không dùng nữa; xin hãy\n"
 "\t sử dụng tùy chọn --mirror=fetch hoặc --mirror=push để thay thế"
 
-#: builtin/remote.c:144
+#: builtin/remote.c:145
 #, c-format
 msgid "unknown mirror argument: %s"
 msgstr "không hiểu tham số máy bản sao (mirror): %s"
 
-#: builtin/remote.c:160
+#: builtin/remote.c:161
 msgid "fetch the remote branches"
 msgstr "lấy về các nhánh từ máy chủ"
 
-#: builtin/remote.c:162
+#: builtin/remote.c:163
 msgid "import all tags and associated objects when fetching"
 msgstr "nhập vào tất cả các đối tượng thẻ và thành phần liên quan khi lấy về"
 
-#: builtin/remote.c:165
+#: builtin/remote.c:166
 msgid "or do not fetch any tag at all (--no-tags)"
 msgstr "hoặc không lấy về bất kỳ thẻ nào (--no-tags)"
 
-#: builtin/remote.c:167
+#: builtin/remote.c:168
 msgid "branch(es) to track"
 msgstr "các nhánh để theo dõi"
 
-#: builtin/remote.c:168
+#: builtin/remote.c:169
 msgid "master branch"
 msgstr "nhánh master"
 
-#: builtin/remote.c:169
+#: builtin/remote.c:170
 msgid "push|fetch"
 msgstr "push|fetch"
 
-#: builtin/remote.c:170
+#: builtin/remote.c:171
 msgid "set up remote as a mirror to push to or fetch from"
 msgstr "đặt máy chủ (remote) như là một máy bản sao để push hay fetch từ đó"
 
-#: builtin/remote.c:182
+#: builtin/remote.c:183
 msgid "specifying a master branch makes no sense with --mirror"
 msgstr "đang chỉ định một nhánh master không hợp lý với tùy chọn --mirror"
 
-#: builtin/remote.c:184
+#: builtin/remote.c:185
 msgid "specifying branches to track makes sense only with fetch mirrors"
 msgstr "chỉ định những nhánh để theo dõi chỉ hợp lý với các “fetch mirror”"
 
-#: builtin/remote.c:191 builtin/remote.c:631
+#: builtin/remote.c:192 builtin/remote.c:634
 #, c-format
 msgid "remote %s already exists."
 msgstr "máy chủ %s đã tồn tại rồi."
 
-#: builtin/remote.c:195 builtin/remote.c:635
+#: builtin/remote.c:196 builtin/remote.c:638
 #, c-format
 msgid "'%s' is not a valid remote name"
 msgstr "“%s” không phải tên máy chủ hợp lệ"
 
-#: builtin/remote.c:235
+#: builtin/remote.c:236
 #, c-format
 msgid "Could not setup master '%s'"
 msgstr "Không thể cài đặt nhánh master “%s”"
 
-#: builtin/remote.c:337
+#: builtin/remote.c:342
 #, c-format
 msgid "Could not get fetch map for refspec %s"
 msgstr "Không thể lấy ánh xạ (map) fetch cho đặc tả tham chiếu %s"
 
-#: builtin/remote.c:438 builtin/remote.c:446
+#: builtin/remote.c:441 builtin/remote.c:449
 msgid "(matching)"
 msgstr "(khớp)"
 
-#: builtin/remote.c:450
+#: builtin/remote.c:453
 msgid "(delete)"
 msgstr "(xóa)"
 
-#: builtin/remote.c:624 builtin/remote.c:759 builtin/remote.c:858
+#: builtin/remote.c:627 builtin/remote.c:762 builtin/remote.c:861
 #, c-format
 msgid "No such remote: %s"
 msgstr "Không có máy chủ nào như thế: %s"
 
-#: builtin/remote.c:641
+#: builtin/remote.c:644
 #, c-format
 msgid "Could not rename config section '%s' to '%s'"
 msgstr "Không thể đổi tên phần của cấu hình từ “%s” thành “%s”"
 
-#: builtin/remote.c:661
+#: builtin/remote.c:664
 #, c-format
 msgid ""
 "Not updating non-default fetch refspec\n"
@@ -12549,17 +13040,17 @@ msgstr ""
 "\t%s\n"
 "\tXin hãy cập nhật phần cấu hình một cách thủ công nếu thấy cần thiết."
 
-#: builtin/remote.c:697
+#: builtin/remote.c:700
 #, c-format
 msgid "deleting '%s' failed"
 msgstr "gặp lỗi khi xóa “%s”"
 
-#: builtin/remote.c:731
+#: builtin/remote.c:734
 #, c-format
 msgid "creating '%s' failed"
 msgstr "gặp lỗi khi tạo “%s”"
 
-#: builtin/remote.c:796
+#: builtin/remote.c:799
 msgid ""
 "Note: A branch outside the refs/remotes/ hierarchy was not removed;\n"
 "to delete it, use:"
@@ -12571,113 +13062,119 @@ msgstr[0] ""
 "đi;\n"
 "để xóa đi, sử dụng:"
 
-#: builtin/remote.c:810
+#: builtin/remote.c:813
 #, c-format
 msgid "Could not remove config section '%s'"
 msgstr "Không thể gỡ bỏ phần cấu hình “%s”"
 
-#: builtin/remote.c:911
+#: builtin/remote.c:914
 #, c-format
 msgid " new (next fetch will store in remotes/%s)"
 msgstr " mới (lần lấy về tiếp theo sẽ lưu trong remotes/%s)"
 
-#: builtin/remote.c:914
+#: builtin/remote.c:917
 msgid " tracked"
 msgstr " được theo dõi"
 
-#: builtin/remote.c:916
+#: builtin/remote.c:919
 msgid " stale (use 'git remote prune' to remove)"
 msgstr " cũ rích (dùng “git remote prune” để gỡ bỏ)"
 
-#: builtin/remote.c:918
+#: builtin/remote.c:921
 msgid " ???"
 msgstr " ???"
 
-#: builtin/remote.c:959
+#: builtin/remote.c:962
 #, c-format
 msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch"
 msgstr "branch.%s.merge không hợp lệ; không thể cải tổ về phía > 1 nhánh"
 
-#: builtin/remote.c:967
+#: builtin/remote.c:971
 #, c-format
 msgid "rebases interactively onto remote %s"
 msgstr "thực hiện rebase một cách tương tác trên máy chủ %s"
 
-#: builtin/remote.c:968
+#: builtin/remote.c:973
+#, c-format
+msgid "rebases interactively (with merges) onto remote %s"
+msgstr ""
+"thực hiện cải tổ (với các hòa trộn) một cách tương tác lên trên máy chủ %s"
+
+#: builtin/remote.c:976
 #, c-format
 msgid "rebases onto remote %s"
 msgstr "thực hiện rebase trên máy chủ %s"
 
-#: builtin/remote.c:971
+#: builtin/remote.c:980
 #, c-format
 msgid " merges with remote %s"
 msgstr " hòa trộn với máy chủ %s"
 
-#: builtin/remote.c:974
+#: builtin/remote.c:983
 #, c-format
 msgid "merges with remote %s"
 msgstr "hòa trộn với máy chủ %s"
 
-#: builtin/remote.c:977
+#: builtin/remote.c:986
 #, c-format
 msgid "%-*s    and with remote %s\n"
 msgstr "%-*s    và với máy chủ %s\n"
 
-#: builtin/remote.c:1020
+#: builtin/remote.c:1029
 msgid "create"
 msgstr "tạo"
 
-#: builtin/remote.c:1023
+#: builtin/remote.c:1032
 msgid "delete"
 msgstr "xóa"
 
-#: builtin/remote.c:1027
+#: builtin/remote.c:1036
 msgid "up to date"
 msgstr "đã cập nhật"
 
-#: builtin/remote.c:1030
+#: builtin/remote.c:1039
 msgid "fast-forwardable"
 msgstr "có-thể-chuyển-tiếp-nhanh"
 
-#: builtin/remote.c:1033
+#: builtin/remote.c:1042
 msgid "local out of date"
 msgstr "dữ liệu nội bộ đã cũ"
 
-#: builtin/remote.c:1040
+#: builtin/remote.c:1049
 #, c-format
 msgid "    %-*s forces to %-*s (%s)"
 msgstr "    %-*s ép buộc thành %-*s (%s)"
 
-#: builtin/remote.c:1043
+#: builtin/remote.c:1052
 #, c-format
 msgid "    %-*s pushes to %-*s (%s)"
 msgstr "    %-*s đẩy lên thành %-*s (%s)"
 
-#: builtin/remote.c:1047
+#: builtin/remote.c:1056
 #, c-format
 msgid "    %-*s forces to %s"
 msgstr "    %-*s ép buộc thành %s"
 
-#: builtin/remote.c:1050
+#: builtin/remote.c:1059
 #, c-format
 msgid "    %-*s pushes to %s"
 msgstr "    %-*s đẩy lên thành %s"
 
-#: builtin/remote.c:1118
+#: builtin/remote.c:1127
 msgid "do not query remotes"
 msgstr "không truy vấn các máy chủ"
 
-#: builtin/remote.c:1145
+#: builtin/remote.c:1154
 #, c-format
 msgid "* remote %s"
 msgstr "* máy chủ %s"
 
-#: builtin/remote.c:1146
+#: builtin/remote.c:1155
 #, c-format
 msgid "  Fetch URL: %s"
 msgstr "  URL để lấy về: %s"
 
-#: builtin/remote.c:1147 builtin/remote.c:1163 builtin/remote.c:1302
+#: builtin/remote.c:1156 builtin/remote.c:1172 builtin/remote.c:1311
 msgid "(no URL)"
 msgstr "(không có URL)"
 
@@ -12685,181 +13182,181 @@ msgstr "(không có URL)"
 #. with the one in " Fetch URL: %s"
 #. translation.
 #.
-#: builtin/remote.c:1161 builtin/remote.c:1163
+#: builtin/remote.c:1170 builtin/remote.c:1172
 #, c-format
 msgid "  Push  URL: %s"
 msgstr "  URL để đẩy lên: %s"
 
-#: builtin/remote.c:1165 builtin/remote.c:1167 builtin/remote.c:1169
+#: builtin/remote.c:1174 builtin/remote.c:1176 builtin/remote.c:1178
 #, c-format
 msgid "  HEAD branch: %s"
 msgstr "  Nhánh HEAD: %s"
 
-#: builtin/remote.c:1165
+#: builtin/remote.c:1174
 msgid "(not queried)"
 msgstr "(không yêu cầu)"
 
-#: builtin/remote.c:1167
+#: builtin/remote.c:1176
 msgid "(unknown)"
 msgstr "(không hiểu)"
 
-#: builtin/remote.c:1171
+#: builtin/remote.c:1180
 #, c-format
 msgid ""
 "  HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
 msgstr "  nhánh HEAD (HEAD máy chủ chưa rõ ràng, có lẽ là một trong số sau):\n"
 
-#: builtin/remote.c:1183
+#: builtin/remote.c:1192
 #, c-format
 msgid "  Remote branch:%s"
 msgid_plural "  Remote branches:%s"
 msgstr[0] "  Những nhánh trên máy chủ:%s"
 
-#: builtin/remote.c:1186 builtin/remote.c:1212
+#: builtin/remote.c:1195 builtin/remote.c:1221
 msgid " (status not queried)"
 msgstr " (trạng thái không được yêu cầu)"
 
-#: builtin/remote.c:1195
+#: builtin/remote.c:1204
 msgid "  Local branch configured for 'git pull':"
 msgid_plural "  Local branches configured for 'git pull':"
 msgstr[0] "  Những nhánh nội bộ đã được cấu hình cho lệnh “git pull”:"
 
-#: builtin/remote.c:1203
+#: builtin/remote.c:1212
 msgid "  Local refs will be mirrored by 'git push'"
 msgstr "  refs nội bộ sẽ được phản chiếu bởi lệnh “git push”"
 
-#: builtin/remote.c:1209
+#: builtin/remote.c:1218
 #, c-format
 msgid "  Local ref configured for 'git push'%s:"
 msgid_plural "  Local refs configured for 'git push'%s:"
 msgstr[0] "  Những tham chiếu nội bộ được cấu hình cho lệnh “git push”%s:"
 
-#: builtin/remote.c:1230
+#: builtin/remote.c:1239
 msgid "set refs/remotes/<name>/HEAD according to remote"
 msgstr "đặt refs/remotes/<tên>/HEAD cho phù hợp với máy chủ"
 
-#: builtin/remote.c:1232
+#: builtin/remote.c:1241
 msgid "delete refs/remotes/<name>/HEAD"
 msgstr "xóa refs/remotes/<tên>/HEAD"
 
-#: builtin/remote.c:1247
+#: builtin/remote.c:1256
 msgid "Cannot determine remote HEAD"
 msgstr "Không thể xác định được HEAD máy chủ"
 
-#: builtin/remote.c:1249
+#: builtin/remote.c:1258
 msgid "Multiple remote HEAD branches. Please choose one explicitly with:"
 msgstr "Nhiều nhánh HEAD máy chủ. Hãy chọn rõ ràng một:"
 
-#: builtin/remote.c:1259
+#: builtin/remote.c:1268
 #, c-format
 msgid "Could not delete %s"
 msgstr "Không thể xóa bỏ %s"
 
-#: builtin/remote.c:1267
+#: builtin/remote.c:1276
 #, c-format
 msgid "Not a valid ref: %s"
 msgstr "Không phải là tham chiếu hợp lệ: %s"
 
-#: builtin/remote.c:1269
+#: builtin/remote.c:1278
 #, c-format
 msgid "Could not setup %s"
 msgstr "Không thể cài đặt %s"
 
-#: builtin/remote.c:1287
+#: builtin/remote.c:1296
 #, c-format
 msgid " %s will become dangling!"
 msgstr " %s sẽ trở thành không đầu (không được quản lý)!"
 
-#: builtin/remote.c:1288
+#: builtin/remote.c:1297
 #, c-format
 msgid " %s has become dangling!"
 msgstr " %s đã trở thành không đầu (không được quản lý)!"
 
-#: builtin/remote.c:1298
+#: builtin/remote.c:1307
 #, c-format
 msgid "Pruning %s"
 msgstr "Đang xén bớt %s"
 
-#: builtin/remote.c:1299
+#: builtin/remote.c:1308
 #, c-format
 msgid "URL: %s"
 msgstr "URL: %s"
 
-#: builtin/remote.c:1315
+#: builtin/remote.c:1324
 #, c-format
 msgid " * [would prune] %s"
 msgstr " * [nên xén bớt] %s"
 
-#: builtin/remote.c:1318
+#: builtin/remote.c:1327
 #, c-format
 msgid " * [pruned] %s"
 msgstr " * [đã bị xén] %s"
 
-#: builtin/remote.c:1363
+#: builtin/remote.c:1372
 msgid "prune remotes after fetching"
 msgstr "cắt máy chủ sau khi lấy về"
 
-#: builtin/remote.c:1426 builtin/remote.c:1480 builtin/remote.c:1548
+#: builtin/remote.c:1435 builtin/remote.c:1489 builtin/remote.c:1557
 #, c-format
 msgid "No such remote '%s'"
 msgstr "Không có máy chủ nào có tên “%s”"
 
-#: builtin/remote.c:1442
+#: builtin/remote.c:1451
 msgid "add branch"
 msgstr "thêm nhánh"
 
-#: builtin/remote.c:1449
+#: builtin/remote.c:1458
 msgid "no remote specified"
 msgstr "chưa chỉ ra máy chủ nào"
 
-#: builtin/remote.c:1466
+#: builtin/remote.c:1475
 msgid "query push URLs rather than fetch URLs"
 msgstr "truy vấn đẩy URL thay vì lấy"
 
-#: builtin/remote.c:1468
+#: builtin/remote.c:1477
 msgid "return all URLs"
 msgstr "trả về mọi URL"
 
-#: builtin/remote.c:1496
+#: builtin/remote.c:1505
 #, c-format
 msgid "no URLs configured for remote '%s'"
 msgstr "không có URL nào được cấu hình cho nhánh “%s”"
 
-#: builtin/remote.c:1522
+#: builtin/remote.c:1531
 msgid "manipulate push URLs"
 msgstr "đẩy các “URL” bằng tay"
 
-#: builtin/remote.c:1524
+#: builtin/remote.c:1533
 msgid "add URL"
 msgstr "thêm URL"
 
-#: builtin/remote.c:1526
+#: builtin/remote.c:1535
 msgid "delete URLs"
 msgstr "xóa URLs"
 
-#: builtin/remote.c:1533
+#: builtin/remote.c:1542
 msgid "--add --delete doesn't make sense"
 msgstr "--add --delete không hợp lý"
 
-#: builtin/remote.c:1572
+#: builtin/remote.c:1581
 #, c-format
 msgid "Invalid old URL pattern: %s"
 msgstr "Kiểu mẫu URL cũ không hợp lệ: %s"
 
-#: builtin/remote.c:1580
+#: builtin/remote.c:1589
 #, c-format
 msgid "No such URL found: %s"
 msgstr "Không tìm thấy URL như vậy: %s"
 
-#: builtin/remote.c:1582
+#: builtin/remote.c:1591
 msgid "Will not delete all non-push URLs"
 msgstr "Sẽ không xóa những địa chỉ URL không-push"
 
-#: builtin/remote.c:1598
+#: builtin/remote.c:1607
 msgid "be verbose; must be placed before a subcommand"
 msgstr "chi tiết; phải được đặt trước một lệnh-con"
 
-#: builtin/remote.c:1629
+#: builtin/remote.c:1638
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr "Không hiểu câu lệnh con: %s"
@@ -12876,127 +13373,135 @@ msgstr ""
 "Gia tăng repack là không tương thích với chỉ mục bitmap. Dùng\n"
 "--no-write-bitmap-index hay tắt cấu hình pack.writebitmaps."
 
-#: builtin/repack.c:170
+#: builtin/repack.c:180
 msgid "pack everything in a single pack"
 msgstr "đóng gói mọi thứ trong một gói đơn"
 
-#: builtin/repack.c:172
+#: builtin/repack.c:182
 msgid "same as -a, and turn unreachable objects loose"
 msgstr "giống với -a, và chỉnh sửa các đối tượng không đọc được thiếu sót"
 
-#: builtin/repack.c:175
+#: builtin/repack.c:185
 msgid "remove redundant packs, and run git-prune-packed"
 msgstr "xóa bỏ các gói dư thừa, và chạy git-prune-packed"
 
-#: builtin/repack.c:177
+#: builtin/repack.c:187
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr "chuyển --no-reuse-delta cho git-pack-objects"
 
-#: builtin/repack.c:179
+#: builtin/repack.c:189
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr "chuyển --no-reuse-object cho git-pack-objects"
 
-#: builtin/repack.c:181
+#: builtin/repack.c:191
 msgid "do not run git-update-server-info"
 msgstr "không chạy git-update-server-info"
 
-#: builtin/repack.c:184
+#: builtin/repack.c:194
 msgid "pass --local to git-pack-objects"
 msgstr "chuyển --local cho git-pack-objects"
 
-#: builtin/repack.c:186
+#: builtin/repack.c:196
 msgid "write bitmap index"
 msgstr "ghi mục lục ánh xạ"
 
-#: builtin/repack.c:187
+#: builtin/repack.c:197
 msgid "approxidate"
 msgstr "ngày ước tính"
 
-#: builtin/repack.c:188
+#: builtin/repack.c:198
 msgid "with -A, do not loosen objects older than this"
 msgstr "với -A, các đối tượng cũ hơn khoảng thời gian này thì không bị mất"
 
-#: builtin/repack.c:190
+#: builtin/repack.c:200
 msgid "with -a, repack unreachable objects"
 msgstr "với -a, đóng gói lại các đối tượng không thể đọc được"
 
-#: builtin/repack.c:192
+#: builtin/repack.c:202
 msgid "size of the window used for delta compression"
 msgstr "kích thước cửa sổ được dùng cho nén “delta”"
 
-#: builtin/repack.c:193 builtin/repack.c:199
+#: builtin/repack.c:203 builtin/repack.c:209
 msgid "bytes"
 msgstr "byte"
 
-#: builtin/repack.c:194
+#: builtin/repack.c:204
 msgid "same as the above, but limit memory size instead of entries count"
 msgstr "giống như trên, nhưng giới hạn kích thước bộ nhớ hay vì số lượng"
 
-#: builtin/repack.c:196
+#: builtin/repack.c:206
 msgid "limits the maximum delta depth"
 msgstr "giới hạn độ sâu tối đa của “delta”"
 
-#: builtin/repack.c:198
+#: builtin/repack.c:208
 msgid "limits the maximum number of threads"
 msgstr "giới hạn số lượng tối đa tuyến trình"
 
-#: builtin/repack.c:200
+#: builtin/repack.c:210
 msgid "maximum size of each packfile"
 msgstr "kích thước tối đa cho từng tập tin gói"
 
-#: builtin/repack.c:202
+#: builtin/repack.c:212
 msgid "repack objects in packs marked with .keep"
 msgstr "đóng gói lại các đối tượng trong các gói đã đánh dấu bằng .keep"
 
-#: builtin/repack.c:212
+#: builtin/repack.c:214
+msgid "do not repack this pack"
+msgstr "đừng đóng gói lại gói này"
+
+#: builtin/repack.c:224
 msgid "cannot delete packs in a precious-objects repo"
 msgstr "không thể xóa các gói trong một kho đối_tượng_vĩ_đại"
 
-#: builtin/repack.c:216
+#: builtin/repack.c:228
 msgid "--keep-unreachable and -A are incompatible"
 msgstr "--keep-unreachable và -A xung khắc nhau"
 
-#: builtin/repack.c:410 builtin/worktree.c:148
+#: builtin/repack.c:425 builtin/worktree.c:139
 #, c-format
 msgid "failed to remove '%s'"
 msgstr "gặp lỗi khi gỡ bỏ “%s”"
 
-#: builtin/replace.c:20
+#: builtin/replace.c:22
 msgid "git replace [-f] <object> <replacement>"
 msgstr "git replace [-f] <đối-tượng> <thay-thế>"
 
-#: builtin/replace.c:21
+#: builtin/replace.c:23
 msgid "git replace [-f] --edit <object>"
 msgstr "git replace [-f] --edit <đối tượng>"
 
-#: builtin/replace.c:22
+#: builtin/replace.c:24
 msgid "git replace [-f] --graft <commit> [<parent>...]"
 msgstr "git replace [-f] --graft <lần_chuyển_giao> [<cha_mẹ>…]"
 
-#: builtin/replace.c:23
+#: builtin/replace.c:25
+msgid "git replace [-f] --convert-graft-file"
+msgstr "git replace [-f] --convert-graft-file"
+
+#: builtin/replace.c:26
 msgid "git replace -d <object>..."
 msgstr "git replace -d <đối tượng>…"
 
-#: builtin/replace.c:24
+#: builtin/replace.c:27
 msgid "git replace [--format=<format>] [-l [<pattern>]]"
 msgstr "git replace [--format=<định_dạng>] [-l [<mẫu>]]"
 
-#: builtin/replace.c:331 builtin/replace.c:369 builtin/replace.c:397
+#: builtin/replace.c:371 builtin/replace.c:415 builtin/replace.c:445
 #, c-format
 msgid "Not a valid object name: '%s'"
 msgstr "Không phải là tên đối tượng hợp lệ: “%s”"
 
-#: builtin/replace.c:361
+#: builtin/replace.c:407
 #, c-format
 msgid "bad mergetag in commit '%s'"
 msgstr "thẻ hòa trộn sai trong lần chuyển giao “%s”"
 
-#: builtin/replace.c:363
+#: builtin/replace.c:409
 #, c-format
 msgid "malformed mergetag in commit '%s'"
 msgstr "thẻ hòa trộn không đúng dạng ở lần chuyển giao “%s”"
 
-#: builtin/replace.c:374
+#: builtin/replace.c:421
 #, c-format
 msgid ""
 "original commit '%s' contains mergetag '%s' that is discarded; use --edit "
@@ -13005,45 +13510,58 @@ msgstr ""
 "lần chuyển giao gốc “%s” có chứa thẻ hòa trộn “%s” cái mà bị loại bỏ; dùng "
 "tùy chọn --edit thay cho --graft"
 
-#: builtin/replace.c:407
+#: builtin/replace.c:460
 #, c-format
 msgid "the original commit '%s' has a gpg signature."
 msgstr "lần chuyển giao gốc “%s” có chữ ký GPG."
 
-#: builtin/replace.c:408
+#: builtin/replace.c:461
 msgid "the signature will be removed in the replacement commit!"
 msgstr "chữ ký sẽ được bỏ đi trong lần chuyển giao thay thế!"
 
-#: builtin/replace.c:414
+#: builtin/replace.c:471
 #, c-format
 msgid "could not write replacement commit for: '%s'"
 msgstr "không thể ghi lần chuyển giao thay thế cho: “%s”"
 
-#: builtin/replace.c:438
+#: builtin/replace.c:514
+#, c-format
+msgid ""
+"could not convert the following graft(s):\n"
+"%s"
+msgstr ""
+"Không thể chuyển đổi các graft sau đây:\n"
+"%s"
+
+#: builtin/replace.c:535
 msgid "list replace refs"
 msgstr "liệt kê các refs thay thế"
 
-#: builtin/replace.c:439
+#: builtin/replace.c:536
 msgid "delete replace refs"
 msgstr "xóa tham chiếu thay thế"
 
-#: builtin/replace.c:440
+#: builtin/replace.c:537
 msgid "edit existing object"
 msgstr "sửa đối tượng sẵn có"
 
-#: builtin/replace.c:441
+#: builtin/replace.c:538
 msgid "change a commit's parents"
 msgstr "thay đổi cha mẹ của lần chuyển giao"
 
-#: builtin/replace.c:442
+#: builtin/replace.c:539
+msgid "convert existing graft file"
+msgstr "chuyển đổi các tập tin graft sẵn có"
+
+#: builtin/replace.c:540
 msgid "replace the ref if it exists"
 msgstr "thay thế tham chiếu nếu nó đã sẵn có"
 
-#: builtin/replace.c:444
+#: builtin/replace.c:542
 msgid "do not pretty-print contents for --edit"
 msgstr "đừng in đẹp các nội dung cho --edit"
 
-#: builtin/replace.c:445
+#: builtin/replace.c:543
 msgid "use this format"
 msgstr "dùng định dạng này"
 
@@ -13205,23 +13723,23 @@ msgstr "rev-list không hỗ trợ hiển thị các ghi chú"
 msgid "cannot combine --use-bitmap-index with object filtering"
 msgstr "không thể tổ hợp --use-bitmap-index với lọc đối tượng"
 
-#: builtin/rev-parse.c:402
+#: builtin/rev-parse.c:406
 msgid "git rev-parse --parseopt [<options>] -- [<args>...]"
 msgstr "git rev-parse --parseopt [<các-tùy-chọn>] -- [<các tham số>…]"
 
-#: builtin/rev-parse.c:407
+#: builtin/rev-parse.c:411
 msgid "keep the `--` passed as an arg"
 msgstr "giữ lại “--” chuyển sang làm tham số"
 
-#: builtin/rev-parse.c:409
+#: builtin/rev-parse.c:413
 msgid "stop parsing after the first non-option argument"
 msgstr "dừng phân tích sau đối số đầu tiên không có tùy chọn"
 
-#: builtin/rev-parse.c:412
+#: builtin/rev-parse.c:416
 msgid "output in stuck long form"
 msgstr "kết xuất trong định dạng gậy dài"
 
-#: builtin/rev-parse.c:545
+#: builtin/rev-parse.c:549
 msgid ""
 "git rev-parse --parseopt [<options>] -- [<args>...]\n"
 "   or: git rev-parse --sq-quote [<arg>...]\n"
@@ -13357,42 +13875,42 @@ msgid "the following file has local modifications:"
 msgid_plural "the following files have local modifications:"
 msgstr[0] "những tập tin sau đây có những thay đổi nội bộ:"
 
-#: builtin/rm.c:243
+#: builtin/rm.c:241
 msgid "do not list removed files"
 msgstr "không liệt kê các tập tin đã gỡ bỏ"
 
-#: builtin/rm.c:244
+#: builtin/rm.c:242
 msgid "only remove from the index"
 msgstr "chỉ gỡ bỏ từ mục lục"
 
-#: builtin/rm.c:245
+#: builtin/rm.c:243
 msgid "override the up-to-date check"
 msgstr "ghi đè lên kiểm tra cập nhật"
 
-#: builtin/rm.c:246
+#: builtin/rm.c:244
 msgid "allow recursive removal"
 msgstr "cho phép gỡ bỏ đệ qui"
 
-#: builtin/rm.c:248
+#: builtin/rm.c:246
 msgid "exit with a zero status even if nothing matched"
 msgstr "thoát ra với trạng thái khác không thậm chí nếu không có gì khớp"
 
-#: builtin/rm.c:307
+#: builtin/rm.c:306
 #, c-format
 msgid "not removing '%s' recursively without -r"
 msgstr "không thể gỡ bỏ “%s” một cách đệ qui mà không có tùy chọn -r"
 
-#: builtin/rm.c:346
+#: builtin/rm.c:345
 #, c-format
 msgid "git rm: unable to remove %s"
 msgstr "git rm: không thể gỡ bỏ %s"
 
-#: builtin/rm.c:369
+#: builtin/rm.c:368
 #, c-format
 msgid "could not remove '%s'"
 msgstr "không thể gỡ bỏ “%s”"
 
-#: builtin/send-pack.c:19
+#: builtin/send-pack.c:20
 msgid ""
 "git send-pack [--all | --mirror] [--dry-run] [--force] [--receive-pack=<git-"
 "receive-pack>] [--verbose] [--thin] [--atomic] [<host>:]<directory> "
@@ -13404,50 +13922,70 @@ msgstr ""
 "chiếu>…]\n"
 "  --all và đặc tả <ref> rõ ràng là loại trừ lẫn nhau."
 
-#: builtin/send-pack.c:162
+#: builtin/send-pack.c:163
 msgid "remote name"
 msgstr "tên máy dịch vụ"
 
-#: builtin/send-pack.c:176
+#: builtin/send-pack.c:177
 msgid "use stateless RPC protocol"
 msgstr "dùng giao thức RPC không ổn định"
 
-#: builtin/send-pack.c:177
+#: builtin/send-pack.c:178
 msgid "read refs from stdin"
 msgstr "đọc tham chiếu từ đầu vào tiêu chuẩn"
 
-#: builtin/send-pack.c:178
+#: builtin/send-pack.c:179
 msgid "print status from remote helper"
 msgstr "in các trạng thái từ phần hướng dẫn trên máy dịch vụ"
 
+#: builtin/serve.c:7
+msgid "git serve [<options>]"
+msgstr "git serve [<các-tùy-chọn>]"
+
+#: builtin/serve.c:17 builtin/upload-pack.c:23
+msgid "quit after a single request/response exchange"
+msgstr "thoát sau khi một trao đổi yêu cầu hay trả lời đơn"
+
+#: builtin/serve.c:19
+msgid "exit immediately after advertising capabilities"
+msgstr "thoát ngay sau khi khởi tạo quảng cáo capabilities"
+
 #: builtin/shortlog.c:14
-msgid "git shortlog [<options>] [<revision-range>] [[--] [<path>...]]"
-msgstr "git shortlog [<các-tùy-chọn>] [<vùng-xét-duyệt>] [[--] [<đường-dẫn>…]]"
+msgid "git shortlog [<options>] [<revision-range>] [[--] <path>...]"
+msgstr "git shortlog [<các-tùy-chọn>] [<vùng-xét-duyệt>] [[--] [<đường/dẫn>…]]"
 
-#: builtin/shortlog.c:263
+#: builtin/shortlog.c:15
+msgid "git log --pretty=short | git shortlog [<options>]"
+msgstr "git log --pretty=short | git shortlog [<các-tùy-chọn>]"
+
+#: builtin/shortlog.c:264
 msgid "Group by committer rather than author"
 msgstr "Nhóm theo người chuyển giao thay vì tác giả"
 
-#: builtin/shortlog.c:265
+#: builtin/shortlog.c:266
 msgid "sort output according to the number of commits per author"
 msgstr "sắp xếp kết xuất tuân theo số lượng chuyển giao trên mỗi tác giả"
 
-#: builtin/shortlog.c:267
+#: builtin/shortlog.c:268
 msgid "Suppress commit descriptions, only provides commit count"
 msgstr "Chặn mọi mô tả lần chuyển giao, chỉ đưa ra số lượng lần chuyển giao"
 
-#: builtin/shortlog.c:269
+#: builtin/shortlog.c:270
 msgid "Show the email address of each author"
 msgstr "Hiển thị thư điện tử cho từng tác giả"
 
-#: builtin/shortlog.c:270
+#: builtin/shortlog.c:271
 msgid "w[,i1[,i2]]"
 msgstr "w[,i1[,i2]]"
 
-#: builtin/shortlog.c:271
+#: builtin/shortlog.c:272
 msgid "Linewrap output"
 msgstr "Ngắt dòng khi quá dài"
 
+#: builtin/shortlog.c:298
+msgid "too many arguments given outside repository"
+msgstr "quá nhiều tham số đưa ra ngoài kho chứa"
+
 #: builtin/show-branch.c:12
 msgid ""
 "git show-branch [-a | --all] [-r | --remotes] [--topo-order | --date-order]\n"
@@ -13645,39 +14183,39 @@ msgstr "giữ và xóa bỏ mọi dòng bắt đầu bằng ký tự ghi chú"
 msgid "prepend comment character and space to each line"
 msgstr "treo trước ký tự ghi chú và ký tự khoảng trắng cho từng dòng"
 
-#: builtin/submodule--helper.c:35 builtin/submodule--helper.c:1669
+#: builtin/submodule--helper.c:37 builtin/submodule--helper.c:1688
 #, c-format
 msgid "No such ref: %s"
 msgstr "Không có tham chiếu nào như thế: %s"
 
-#: builtin/submodule--helper.c:42 builtin/submodule--helper.c:1678
+#: builtin/submodule--helper.c:44 builtin/submodule--helper.c:1697
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr "Cần tên tham chiếu dạng đầy đủ, nhưng lại nhận được %s"
 
-#: builtin/submodule--helper.c:59
+#: builtin/submodule--helper.c:61
 msgid "submodule--helper print-default-remote takes no arguments"
 msgstr "submodule--helper print-default-remote takes không nhận tham số"
 
-#: builtin/submodule--helper.c:96
+#: builtin/submodule--helper.c:98
 #, c-format
 msgid "cannot strip one component off url '%s'"
 msgstr "không thể cắt bỏ một thành phần ra khỏi “%s” url"
 
-#: builtin/submodule--helper.c:404 builtin/submodule--helper.c:1198
+#: builtin/submodule--helper.c:406 builtin/submodule--helper.c:1211
 msgid "alternative anchor for relative paths"
 msgstr "điểm neo thay thế cho các đường dẫn tương đối"
 
-#: builtin/submodule--helper.c:409
+#: builtin/submodule--helper.c:411
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper list [--prefix=</đường/dẫn>] [</đường/dẫn>…]"
 
-#: builtin/submodule--helper.c:460 builtin/submodule--helper.c:483
+#: builtin/submodule--helper.c:462 builtin/submodule--helper.c:485
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr "Không tìm thấy url cho đường dẫn mô-đun-con “%s” trong .gitmodules"
 
-#: builtin/submodule--helper.c:498
+#: builtin/submodule--helper.c:500
 #, c-format
 msgid ""
 "could not lookup configuration '%s'. Assuming this repository is its own "
@@ -13686,56 +14224,56 @@ msgstr ""
 "không thể tìm thấy cấu hình “%s”. Coi rằng kho này là thượng nguồn có quyền "
 "sở hữu chính nó."
 
-#: builtin/submodule--helper.c:509
+#: builtin/submodule--helper.c:511
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr "Gặp lỗi khi đăng ký url cho đường dẫn mô-đun-con “%s”"
 
-#: builtin/submodule--helper.c:513
+#: builtin/submodule--helper.c:515
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr "Mô-đun-con “%s” (%s) được đăng ký cho đường dẫn “%s”\n"
 
-#: builtin/submodule--helper.c:523
+#: builtin/submodule--helper.c:525
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
 msgstr "cảnh báo: chế độ lệnh cập nhật được gợi ý cho mô-đun-con “%s”\n"
 
-#: builtin/submodule--helper.c:530
+#: builtin/submodule--helper.c:532
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
 msgstr "Gặp lỗi khi đăng ký chế độ cập nhật cho đường dẫn mô-đun-con “%s”"
 
-#: builtin/submodule--helper.c:552
+#: builtin/submodule--helper.c:554
 msgid "Suppress output for initializing a submodule"
 msgstr "Chặn kết xuất cho khởi tạo một mô-đun-con"
 
-#: builtin/submodule--helper.c:557
+#: builtin/submodule--helper.c:559
 msgid "git submodule--helper init [<path>]"
 msgstr "git submodule--helper init [</đường/dẫn>]"
 
-#: builtin/submodule--helper.c:625 builtin/submodule--helper.c:747
+#: builtin/submodule--helper.c:631 builtin/submodule--helper.c:757
 #, c-format
 msgid "no submodule mapping found in .gitmodules for path '%s'"
 msgstr ""
 "Không tìm thấy ánh xạ (mapping) mô-đun-con trong .gitmodules cho đường dẫn "
 "“%s”"
 
-#: builtin/submodule--helper.c:660
+#: builtin/submodule--helper.c:670
 #, c-format
 msgid "could not resolve HEAD ref inside the submodule '%s'"
 msgstr "không thể phân giải tham chiếu HEAD bên trong mô-đun-con “%s”"
 
-#: builtin/submodule--helper.c:687 builtin/submodule--helper.c:856
+#: builtin/submodule--helper.c:697 builtin/submodule--helper.c:866
 #, c-format
 msgid "failed to recurse into submodule '%s'"
 msgstr "gặp lỗi khi đệ quy vào trong mô-đun-con “%s”"
 
-#: builtin/submodule--helper.c:711 builtin/submodule--helper.c:1021
+#: builtin/submodule--helper.c:721 builtin/submodule--helper.c:1031
 msgid "Suppress submodule status output"
 msgstr "Chặn két xuất tình trạng mô-đun-con"
 
-#: builtin/submodule--helper.c:712
+#: builtin/submodule--helper.c:722
 msgid ""
 "Use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
@@ -13743,52 +14281,52 @@ msgstr ""
 "Dùng lần chuyển giao lưu trong mục lục thay cho cái được lưu trong HEAD mô-"
 "đun-con"
 
-#: builtin/submodule--helper.c:713
+#: builtin/submodule--helper.c:723
 msgid "recurse into nested submodules"
 msgstr "đệ quy vào trong mô-đun-con lồng nhau"
 
-#: builtin/submodule--helper.c:718
+#: builtin/submodule--helper.c:728
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr ""
 "git submodule status [--quiet] [--cached] [--recursive] [</đường/dẫn>…]"
 
-#: builtin/submodule--helper.c:742
+#: builtin/submodule--helper.c:752
 msgid "git submodule--helper name <path>"
 msgstr "git submodule--helper name </đường/dẫn>"
 
-#: builtin/submodule--helper.c:806
+#: builtin/submodule--helper.c:816
 #, c-format
 msgid "Synchronizing submodule url for '%s'\n"
 msgstr "url mô-đun-con đồng bộ hóa cho “%s”\n"
 
-#: builtin/submodule--helper.c:812
+#: builtin/submodule--helper.c:822
 #, c-format
 msgid "failed to register url for submodule path '%s'"
 msgstr "gặp lỗi khi đăng ký url cho đường dẫn mô-đun-con “%s”"
 
-#: builtin/submodule--helper.c:826
+#: builtin/submodule--helper.c:836
 #, c-format
 msgid "failed to get the default remote for submodule '%s'"
 msgstr "gặp lỗi khi lấy máy chủ mặc định cho mô-đun-con “%s”"
 
-#: builtin/submodule--helper.c:837
+#: builtin/submodule--helper.c:847
 #, c-format
 msgid "failed to update remote for submodule '%s'"
 msgstr "gặp lỗi khi cập nhật cho mô-đun-con “%s”"
 
-#: builtin/submodule--helper.c:885
+#: builtin/submodule--helper.c:895
 msgid "Suppress output of synchronizing submodule url"
 msgstr "Chặn kết xuất cho đồng bộ url mô-đun-con"
 
-#: builtin/submodule--helper.c:887
+#: builtin/submodule--helper.c:897
 msgid "Recurse into nested submodules"
 msgstr "Đệ quy vào trong các mô-đun-con lồng nhau"
 
-#: builtin/submodule--helper.c:892
+#: builtin/submodule--helper.c:902
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
 msgstr "git submodule--helper sync [--quiet] [--recursive] [</đường/dẫn>]"
 
-#: builtin/submodule--helper.c:946
+#: builtin/submodule--helper.c:956
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
@@ -13797,7 +14335,7 @@ msgstr ""
 "Cây làm việc mô-đun-con “%s” có chứa thư mục .git (dùng “rm -rf” nếu bạn "
 "thực sự muốn gỡ bỏ nó cùng với toàn bộ lịch sử của chúng)"
 
-#: builtin/submodule--helper.c:958
+#: builtin/submodule--helper.c:968
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains local modifications; use '-f' to discard "
@@ -13806,80 +14344,80 @@ msgstr ""
 "Cây làm việc mô-đun-con “%s” chứa các thay đổi nội bộ; hãy dùng “-f” để loại "
 "bỏ chúng đi"
 
-#: builtin/submodule--helper.c:966
+#: builtin/submodule--helper.c:976
 #, c-format
 msgid "Cleared directory '%s'\n"
 msgstr "Đã xóa thư mục “%s”\n"
 
-#: builtin/submodule--helper.c:968
+#: builtin/submodule--helper.c:978
 #, c-format
 msgid "Could not remove submodule work tree '%s'\n"
 msgstr "Không thể gỡ bỏ cây làm việc mô-đun-con “%s”\n"
 
-#: builtin/submodule--helper.c:977
+#: builtin/submodule--helper.c:987
 #, c-format
 msgid "could not create empty submodule directory %s"
 msgstr "không thể tạo thư mục mô-đun-con rỗng “%s”"
 
-#: builtin/submodule--helper.c:993
+#: builtin/submodule--helper.c:1003
 #, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "Mô-đun-con “%s” (%s) được đăng ký cho đường dẫn “%s”\n"
 
-#: builtin/submodule--helper.c:1022
+#: builtin/submodule--helper.c:1032
 msgid "Remove submodule working trees even if they contain local changes"
 msgstr "Gỡ bỏ cây làm việc của mô-đun-con ngay cả khi nó có thay đổi nội bộ"
 
-#: builtin/submodule--helper.c:1023
+#: builtin/submodule--helper.c:1033
 msgid "Unregister all submodules"
 msgstr "Bỏ đăng ký tất cả các trong mô-đun-con"
 
-#: builtin/submodule--helper.c:1028
+#: builtin/submodule--helper.c:1038
 msgid ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
 msgstr ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--]  [</đường/dẫn>…]]"
 
-#: builtin/submodule--helper.c:1042
+#: builtin/submodule--helper.c:1052
 msgid "Use '--all' if you really want to deinitialize all submodules"
 msgstr "Dùng “--all” nếu bạn thực sự muốn hủy khởi tạo mọi mô-đun-con"
 
-#: builtin/submodule--helper.c:1133 builtin/submodule--helper.c:1136
+#: builtin/submodule--helper.c:1145 builtin/submodule--helper.c:1148
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
 msgstr "mô-đun-con “%s” không thể thêm thay thế: %s"
 
-#: builtin/submodule--helper.c:1172
+#: builtin/submodule--helper.c:1184
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
 msgstr "Giá trị “%s” cho submodule.alternateErrorStrategy không được thừa nhận"
 
-#: builtin/submodule--helper.c:1179
+#: builtin/submodule--helper.c:1191
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
 msgstr "Giá trị “%s” cho submodule.alternateLocation không được thừa nhận"
 
-#: builtin/submodule--helper.c:1201
+#: builtin/submodule--helper.c:1214
 msgid "where the new submodule will be cloned to"
 msgstr "nhân bản mô-đun-con mới vào chỗ nào"
 
-#: builtin/submodule--helper.c:1204
+#: builtin/submodule--helper.c:1217
 msgid "name of the new submodule"
 msgstr "tên của mô-đun-con mới"
 
-#: builtin/submodule--helper.c:1207
+#: builtin/submodule--helper.c:1220
 msgid "url where to clone the submodule from"
 msgstr "url nơi mà nhân bản mô-đun-con từ đó"
 
-#: builtin/submodule--helper.c:1213
+#: builtin/submodule--helper.c:1228
 msgid "depth for shallow clones"
 msgstr "chiều sâu lịch sử khi tạo bản sao"
 
-#: builtin/submodule--helper.c:1216 builtin/submodule--helper.c:1587
+#: builtin/submodule--helper.c:1231 builtin/submodule--helper.c:1606
 msgid "force cloning progress"
 msgstr "ép buộc tiến trình nhân bản"
 
-#: builtin/submodule--helper.c:1221
+#: builtin/submodule--helper.c:1236
 msgid ""
 "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
 "<repository>] [--name <name>] [--depth <depth>] --url <url> --path <path>"
@@ -13887,84 +14425,84 @@ msgstr ""
 "git submodule--helper clone [--prefix=</đường/dẫn>] [--quiet] [--reference "
 "<kho>] [--name <tên>] [--depth <sâu>] [--url <url>] [</đường/dẫn>…]"
 
-#: builtin/submodule--helper.c:1252
+#: builtin/submodule--helper.c:1267
 #, c-format
 msgid "clone of '%s' into submodule path '%s' failed"
 msgstr "Nhân bản “%s” vào đường dẫn mô-đun-con “%s” gặp lỗi"
 
-#: builtin/submodule--helper.c:1267
+#: builtin/submodule--helper.c:1281
 #, c-format
 msgid "could not get submodule directory for '%s'"
 msgstr "không thể lấy thư mục mô-đun-con cho “%s”"
 
-#: builtin/submodule--helper.c:1332
+#: builtin/submodule--helper.c:1347
 #, c-format
 msgid "Submodule path '%s' not initialized"
 msgstr "Đường dẫn mô-đun-con “%s” chưa được khởi tạo"
 
-#: builtin/submodule--helper.c:1336
+#: builtin/submodule--helper.c:1351
 msgid "Maybe you want to use 'update --init'?"
 msgstr "Có lẽ bạn là bạn muốn dùng \"update --init\" phải không?"
 
-#: builtin/submodule--helper.c:1365
+#: builtin/submodule--helper.c:1380
 #, c-format
 msgid "Skipping unmerged submodule %s"
 msgstr "Bỏ qua các mô-đun-con chưa được hòa trộn %s"
 
-#: builtin/submodule--helper.c:1394
+#: builtin/submodule--helper.c:1409
 #, c-format
 msgid "Skipping submodule '%s'"
 msgstr "Bỏ qua mô-đun-con “%s”"
 
-#: builtin/submodule--helper.c:1527
+#: builtin/submodule--helper.c:1544
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
 msgstr "Gặp lỗi khi nhân bản “%s”. Thử lại lịch trình"
 
-#: builtin/submodule--helper.c:1538
+#: builtin/submodule--helper.c:1555
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
 msgstr "Gặp lỗi khi nhân bản “%s” lần thứ hai nên bãi bỏ"
 
-#: builtin/submodule--helper.c:1568 builtin/submodule--helper.c:1788
+#: builtin/submodule--helper.c:1585 builtin/submodule--helper.c:1808
 msgid "path into the working tree"
 msgstr "đường dẫn đến cây làm việc"
 
-#: builtin/submodule--helper.c:1571
+#: builtin/submodule--helper.c:1588
 msgid "path into the working tree, across nested submodule boundaries"
 msgstr "đường dẫn đến cây làm việc, chéo biên giới mô-đun-con lồng nhau"
 
-#: builtin/submodule--helper.c:1575
+#: builtin/submodule--helper.c:1592
 msgid "rebase, merge, checkout or none"
 msgstr "rebase, merge, checkout hoặc không làm gì cả"
 
-#: builtin/submodule--helper.c:1579
+#: builtin/submodule--helper.c:1598
 msgid "Create a shallow clone truncated to the specified number of revisions"
 msgstr ""
 "Tạo một bản sao nông được cắt ngắn thành số lượng điểm xét duyệt đã cho"
 
-#: builtin/submodule--helper.c:1582
+#: builtin/submodule--helper.c:1601
 msgid "parallel jobs"
 msgstr "công việc đồng thời"
 
-#: builtin/submodule--helper.c:1584
+#: builtin/submodule--helper.c:1603
 msgid "whether the initial clone should follow the shallow recommendation"
 msgstr "nhân bản lần đầu có nên theo khuyến nghị là nông hay không"
 
-#: builtin/submodule--helper.c:1585
+#: builtin/submodule--helper.c:1604
 msgid "don't print cloning progress"
 msgstr "đừng in tiến trình nhân bản"
 
-#: builtin/submodule--helper.c:1592
+#: builtin/submodule--helper.c:1611
 msgid "git submodule--helper update_clone [--prefix=<path>] [<path>...]"
 msgstr ""
 "git submodule--helper update_clone [--prefix=</đường/dẫn>] [</đường/dẫn>…]"
 
-#: builtin/submodule--helper.c:1605
+#: builtin/submodule--helper.c:1624
 msgid "bad value for update parameter"
 msgstr "giá trị cho  tham số cập nhật bị sai"
 
-#: builtin/submodule--helper.c:1673
+#: builtin/submodule--helper.c:1692
 #, c-format
 msgid ""
 "Submodule (%s) branch configured to inherit branch from superproject, but "
@@ -13973,20 +14511,20 @@ msgstr ""
 "Nhánh mô-đun-con (%s) được cấu hình kế thừa nhánh từ siêu dự án, nhưng siêu "
 "dự án lại không trên bất kỳ nhánh nào"
 
-#: builtin/submodule--helper.c:1789
+#: builtin/submodule--helper.c:1809
 msgid "recurse into submodules"
 msgstr "đệ quy vào trong mô-đun-con"
 
-#: builtin/submodule--helper.c:1795
+#: builtin/submodule--helper.c:1815
 msgid "git submodule--helper embed-git-dir [<path>...]"
 msgstr "git submodule--helper embed-git-dir [</đường/dẫn>…]"
 
-#: builtin/submodule--helper.c:1857
+#: builtin/submodule--helper.c:1901
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s không hỗ trợ --super-prefix"
 
-#: builtin/submodule--helper.c:1863
+#: builtin/submodule--helper.c:1907
 #, 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ệ"
@@ -14055,7 +14593,7 @@ msgstr "không tìm thấy tìm thấy thẻ “%s”."
 msgid "Deleted tag '%s' (was %s)\n"
 msgstr "Thẻ đã bị xóa “%s” (từng là %s)\n"
 
-#: builtin/tag.c:131
+#: builtin/tag.c:132
 #, c-format
 msgid ""
 "\n"
@@ -14068,7 +14606,7 @@ msgstr ""
 "  %s\n"
 "Những dòng được bắt đầu bằng “%c” sẽ được bỏ qua.\n"
 
-#: builtin/tag.c:135
+#: builtin/tag.c:136
 #, c-format
 msgid ""
 "\n"
@@ -14083,147 +14621,147 @@ msgstr ""
 "Những dòng được bắt đầu bằng “%c” sẽ được giữ lại; bạn có thể xóa chúng đi "
 "nếu muốn.\n"
 
-#: builtin/tag.c:189
+#: builtin/tag.c:190
 msgid "unable to sign the tag"
 msgstr "không thể ký thẻ"
 
-#: builtin/tag.c:191
+#: builtin/tag.c:192
 msgid "unable to write tag file"
 msgstr "không thể ghi vào tập tin lưu thẻ"
 
-#: builtin/tag.c:216
+#: builtin/tag.c:217
 msgid "bad object type."
 msgstr "kiểu đối tượng sai."
 
-#: builtin/tag.c:265
+#: builtin/tag.c:266
 msgid "no tag message?"
 msgstr "không có chú thích gì cho cho thẻ à?"
 
-#: builtin/tag.c:272
+#: builtin/tag.c:273
 #, c-format
 msgid "The tag message has been left in %s\n"
 msgstr "Nội dung ghi chú còn lại %s\n"
 
-#: builtin/tag.c:381
+#: builtin/tag.c:382
 msgid "list tag names"
 msgstr "chỉ liệt kê tên các thẻ"
 
-#: builtin/tag.c:383
+#: builtin/tag.c:384
 msgid "print <n> lines of each tag message"
 msgstr "hiển thị <n> dòng cho mỗi ghi chú"
 
-#: builtin/tag.c:385
+#: builtin/tag.c:386
 msgid "delete tags"
 msgstr "xóa thẻ"
 
-#: builtin/tag.c:386
+#: builtin/tag.c:387
 msgid "verify tags"
 msgstr "thẩm tra thẻ"
 
-#: builtin/tag.c:388
+#: builtin/tag.c:389
 msgid "Tag creation options"
 msgstr "Tùy chọn tạo thẻ"
 
-#: builtin/tag.c:390
+#: builtin/tag.c:391
 msgid "annotated tag, needs a message"
 msgstr "để chú giải cho thẻ, cần một lời ghi chú"
 
-#: builtin/tag.c:392
+#: builtin/tag.c:393
 msgid "tag message"
 msgstr "phần chú thích cho thẻ"
 
-#: builtin/tag.c:394
+#: builtin/tag.c:395
 msgid "force edit of tag message"
 msgstr "ép buộc sửa thẻ lần commit"
 
-#: builtin/tag.c:395
+#: builtin/tag.c:396
 msgid "annotated and GPG-signed tag"
 msgstr "thẻ chú giải và ký kiểu GPG"
 
-#: builtin/tag.c:399
+#: builtin/tag.c:400
 msgid "use another key to sign the tag"
 msgstr "dùng kháo khác để ký thẻ"
 
-#: builtin/tag.c:400
+#: builtin/tag.c:401
 msgid "replace the tag if exists"
 msgstr "thay thế nếu thẻ đó đã có trước"
 
-#: builtin/tag.c:401 builtin/update-ref.c:368
+#: builtin/tag.c:402 builtin/update-ref.c:368
 msgid "create a reflog"
 msgstr "tạo một reflog"
 
-#: builtin/tag.c:403
+#: builtin/tag.c:404
 msgid "Tag listing options"
 msgstr "Các tùy chọn liệt kê thẻ"
 
-#: builtin/tag.c:404
+#: builtin/tag.c:405
 msgid "show tag list in columns"
 msgstr "hiển thị danh sách thẻ trong các cột"
 
-#: builtin/tag.c:405 builtin/tag.c:407
+#: builtin/tag.c:406 builtin/tag.c:408
 msgid "print only tags that contain the commit"
 msgstr "chỉ hiển thị những nhánh mà nó chứa lần chuyển giao"
 
-#: builtin/tag.c:406 builtin/tag.c:408
+#: builtin/tag.c:407 builtin/tag.c:409
 msgid "print only tags that don't contain the commit"
 msgstr "chỉ hiển thị những thẻ mà nó không chứa lần chuyển giao"
 
-#: builtin/tag.c:409
+#: builtin/tag.c:410
 msgid "print only tags that are merged"
 msgstr "chỉ hiển thị những thẻ mà nó được hòa trộn"
 
-#: builtin/tag.c:410
+#: builtin/tag.c:411
 msgid "print only tags that are not merged"
 msgstr "chỉ hiển thị những thẻ mà nó không được hòa trộn"
 
-#: builtin/tag.c:415
+#: builtin/tag.c:416
 msgid "print only tags of the object"
 msgstr "chỉ hiển thị các thẻ của đối tượng"
 
-#: builtin/tag.c:459
+#: builtin/tag.c:460
 msgid "--column and -n are incompatible"
 msgstr "--column và -n xung khắc nhau"
 
-#: builtin/tag.c:481
+#: builtin/tag.c:482
 msgid "-n option is only allowed in list mode"
 msgstr "tùy chọn -n chỉ cho phép dùng trong chế độ liệt kê"
 
-#: builtin/tag.c:483
+#: builtin/tag.c:484
 msgid "--contains option is only allowed in list mode"
 msgstr "tùy chọn --contains chỉ cho phép dùng trong chế độ liệt kê"
 
-#: builtin/tag.c:485
+#: builtin/tag.c:486
 msgid "--no-contains option is only allowed in list mode"
 msgstr "tùy chọn --no-contains chỉ cho phép dùng trong chế độ liệt kê"
 
-#: builtin/tag.c:487
+#: builtin/tag.c:488
 msgid "--points-at option is only allowed in list mode"
 msgstr "tùy chọn --points-at chỉ cho phép dùng trong chế độ liệt kê"
 
-#: builtin/tag.c:489
+#: builtin/tag.c:490
 msgid "--merged and --no-merged options are only allowed in list mode"
 msgstr ""
 "tùy chọn --merged và --no-merged chỉ cho phép dùng trong chế độ liệt kê"
 
-#: builtin/tag.c:500
+#: builtin/tag.c:501
 msgid "only one -F or -m option is allowed."
 msgstr "chỉ có một tùy chọn -F hoặc -m là được phép."
 
-#: builtin/tag.c:519
+#: builtin/tag.c:520
 msgid "too many params"
 msgstr "quá nhiều đối số"
 
-#: builtin/tag.c:525
+#: builtin/tag.c:526
 #, c-format
 msgid "'%s' is not a valid tag name."
 msgstr "“%s” không phải thẻ hợp lệ."
 
-#: builtin/tag.c:530
+#: builtin/tag.c:531
 #, c-format
 msgid "tag '%s' already exists"
 msgstr "Thẻ “%s” đã tồn tại rồi"
 
-#: builtin/tag.c:561
+#: builtin/tag.c:562
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
 msgstr "Đã cập nhật thẻ “%s” (trước là %s)\n"
@@ -14292,147 +14830,147 @@ msgstr "thông tin thống kê thư mục không thay đổi sau khi xóa thư m
 msgid " OK"
 msgstr " Đồng ý"
 
-#: builtin/update-index.c:579
+#: builtin/update-index.c:589
 msgid "git update-index [<options>] [--] [<file>...]"
 msgstr "git update-index [<các-tùy-chọn>] [--] [<tập-tin>…]"
 
-#: builtin/update-index.c:936
+#: builtin/update-index.c:946
 msgid "continue refresh even when index needs update"
 msgstr "tiếp tục làm mới ngay cả khi bảng mục lục cần được cập nhật"
 
-#: builtin/update-index.c:939
+#: builtin/update-index.c:949
 msgid "refresh: ignore submodules"
 msgstr "refresh: lờ đi mô-đun-con"
 
-#: builtin/update-index.c:942
+#: builtin/update-index.c:952
 msgid "do not ignore new files"
 msgstr "không bỏ qua các tập tin mới tạo"
 
-#: builtin/update-index.c:944
+#: builtin/update-index.c:954
 msgid "let files replace directories and vice-versa"
 msgstr "để các tập tin thay thế các thư mục và “vice-versa”"
 
-#: builtin/update-index.c:946
+#: builtin/update-index.c:956
 msgid "notice files missing from worktree"
 msgstr "thông báo các tập-tin thiếu trong thư-mục làm việc"
 
-#: builtin/update-index.c:948
+#: builtin/update-index.c:958
 msgid "refresh even if index contains unmerged entries"
 msgstr ""
 "làm tươi mới thậm chí khi bảng mục lục chứa các mục tin chưa được hòa trộn"
 
-#: builtin/update-index.c:951
+#: builtin/update-index.c:961
 msgid "refresh stat information"
 msgstr "lấy lại thông tin thống kê"
 
-#: builtin/update-index.c:955
+#: builtin/update-index.c:965
 msgid "like --refresh, but ignore assume-unchanged setting"
 msgstr "giống --refresh, nhưng bỏ qua các cài đặt “assume-unchanged”"
 
-#: builtin/update-index.c:959
+#: builtin/update-index.c:969
 msgid "<mode>,<object>,<path>"
 msgstr "<chế_độ>,<đối_tượng>,<đường_dẫn>"
 
-#: builtin/update-index.c:960
+#: builtin/update-index.c:970
 msgid "add the specified entry to the index"
 msgstr "thêm các tập tin đã chỉ ra vào bảng mục lục"
 
-#: builtin/update-index.c:969
+#: builtin/update-index.c:979
 msgid "mark files as \"not changing\""
 msgstr "Đánh dấu các tập tin là \"không thay đổi\""
 
-#: builtin/update-index.c:972
+#: builtin/update-index.c:982
 msgid "clear assumed-unchanged bit"
 msgstr "xóa bít assumed-unchanged (giả định là không thay đổi)"
 
-#: builtin/update-index.c:975
+#: builtin/update-index.c:985
 msgid "mark files as \"index-only\""
 msgstr "đánh dấu các tập tin là “chỉ-đọc”"
 
-#: builtin/update-index.c:978
+#: builtin/update-index.c:988
 msgid "clear skip-worktree bit"
 msgstr "xóa bít skip-worktree"
 
-#: builtin/update-index.c:981
+#: builtin/update-index.c:991
 msgid "add to index only; do not add content to object database"
 msgstr ""
 "chỉ thêm vào bảng mục lục; không thêm nội dung vào cơ sở dữ liệu đối tượng"
 
-#: builtin/update-index.c:983
+#: builtin/update-index.c:993
 msgid "remove named paths even if present in worktree"
 msgstr ""
 "gỡ bỏ các đường dẫn được đặt tên thậm chí cả khi nó hiện diện trong thư mục "
 "làm việc"
 
-#: builtin/update-index.c:985
+#: builtin/update-index.c:995
 msgid "with --stdin: input lines are terminated by null bytes"
 msgstr "với tùy chọn --stdin: các dòng đầu vào được chấm dứt bởi ký tự null"
 
-#: builtin/update-index.c:987
+#: builtin/update-index.c:997
 msgid "read list of paths to be updated from standard input"
 msgstr "đọc danh sách đường dẫn cần cập nhật từ đầu vào tiêu chuẩn"
 
-#: builtin/update-index.c:991
+#: builtin/update-index.c:1001
 msgid "add entries from standard input to the index"
 msgstr "không thể đọc các mục từ đầu vào tiêu chuẩn vào bảng mục lục"
 
-#: builtin/update-index.c:995
+#: builtin/update-index.c:1005
 msgid "repopulate stages #2 and #3 for the listed paths"
 msgstr "phục hồi các trạng thái #2 và #3 cho các đường dẫn được liệt kê"
 
-#: builtin/update-index.c:999
+#: builtin/update-index.c:1009
 msgid "only update entries that differ from HEAD"
 msgstr "chỉ cập nhật các mục tin mà nó khác biệt so với HEAD"
 
-#: builtin/update-index.c:1003
+#: builtin/update-index.c:1013
 msgid "ignore files missing from worktree"
 msgstr "bỏ qua các tập-tin thiếu trong thư-mục làm việc"
 
-#: builtin/update-index.c:1006
+#: builtin/update-index.c:1016
 msgid "report actions to standard output"
 msgstr "báo cáo các thao tác ra thiết bị xuất chuẩn"
 
-#: builtin/update-index.c:1008
+#: builtin/update-index.c:1018
 msgid "(for porcelains) forget saved unresolved conflicts"
 msgstr "(cho “porcelains”) quên các xung đột chưa được giải quyết đã ghi"
 
-#: builtin/update-index.c:1012
+#: builtin/update-index.c:1022
 msgid "write index in this format"
 msgstr "ghi mục lục ở định dạng này"
 
-#: builtin/update-index.c:1014
+#: builtin/update-index.c:1024
 msgid "enable or disable split index"
 msgstr "bật/tắt chia cắt bảng mục lục"
 
-#: builtin/update-index.c:1016
+#: builtin/update-index.c:1026
 msgid "enable/disable untracked cache"
 msgstr "bật/tắt bộ đệm không theo vết"
 
-#: builtin/update-index.c:1018
+#: builtin/update-index.c:1028
 msgid "test if the filesystem supports untracked cache"
 msgstr "kiểm tra xem hệ thống tập tin có hỗ trợ đệm không theo dõi hay không"
 
-#: builtin/update-index.c:1020
+#: builtin/update-index.c:1030
 msgid "enable untracked cache without testing the filesystem"
 msgstr "bật bộ đệm không theo vết mà không kiểm tra hệ thống tập tin"
 
-#: builtin/update-index.c:1022
+#: builtin/update-index.c:1032
 msgid "write out the index even if is not flagged as changed"
 msgstr "ghi ra mục lục ngay cả khi không được đánh cờ là có thay đổi"
 
-#: builtin/update-index.c:1024
+#: builtin/update-index.c:1034
 msgid "enable or disable file system monitor"
 msgstr "bật/tắt theo dõi hệ thống tập tin"
 
-#: builtin/update-index.c:1026
+#: builtin/update-index.c:1036
 msgid "mark files as fsmonitor valid"
 msgstr "đánh dấu các tập tin là hợp lệ fsmonitor"
 
-#: builtin/update-index.c:1029
+#: builtin/update-index.c:1039
 msgid "clear fsmonitor valid bit"
 msgstr "xóa bít hợp lệ fsmonitor"
 
-#: builtin/update-index.c:1127
+#: builtin/update-index.c:1138
 msgid ""
 "core.splitIndex is set to false; remove or change it, if you really want to "
 "enable split index"
@@ -14440,7 +14978,7 @@ msgstr ""
 "core.splitIndex được đặt là sai; xóa bỏ hay thay đổi nó, nếu bạn thực sự "
 "muốn bật chia tách mục lục"
 
-#: builtin/update-index.c:1136
+#: builtin/update-index.c:1147
 msgid ""
 "core.splitIndex is set to true; remove or change it, if you really want to "
 "disable split index"
@@ -14448,7 +14986,7 @@ msgstr ""
 "core.splitIndex được đặt là đúng; xóa bỏ hay thay đổi nó, nếu bạn thực sự "
 "muốn tắt chia tách mục lục"
 
-#: builtin/update-index.c:1147
+#: builtin/update-index.c:1158
 msgid ""
 "core.untrackedCache is set to true; remove or change it, if you really want "
 "to disable the untracked cache"
@@ -14456,11 +14994,11 @@ msgstr ""
 "core.untrackedCache được đặt là đúng; xóa bỏ hay thay đổi nó, nếu bạn thực "
 "sự muốn tắt bộ đệm chưa theo dõi"
 
-#: builtin/update-index.c:1151
+#: builtin/update-index.c:1162
 msgid "Untracked cache disabled"
 msgstr "Nhớ đệm không theo vết bị tắt"
 
-#: builtin/update-index.c:1159
+#: builtin/update-index.c:1170
 msgid ""
 "core.untrackedCache is set to false; remove or change it, if you really want "
 "to enable the untracked cache"
@@ -14468,29 +15006,29 @@ msgstr ""
 "core.untrackedCache được đặt là sai; xóa bỏ hay thay đổi nó, nếu bạn thực sự "
 "muốn bật bộ đệm chưa theo dõi"
 
-#: builtin/update-index.c:1163
+#: builtin/update-index.c:1174
 #, c-format
 msgid "Untracked cache enabled for '%s'"
 msgstr "Nhớ đệm không theo vết được bật cho “%s”"
 
-#: builtin/update-index.c:1171
+#: builtin/update-index.c:1182
 msgid "core.fsmonitor is unset; set it if you really want to enable fsmonitor"
 msgstr ""
 "core.fsmonitor chưa được đặt; đặt nó nếu bạn thực sự muốn bật theo dõi hệ "
 "thống tập tin"
 
-#: builtin/update-index.c:1175
+#: builtin/update-index.c:1186
 msgid "fsmonitor enabled"
 msgstr "fsmonitor được bật"
 
-#: builtin/update-index.c:1178
+#: builtin/update-index.c:1189
 msgid ""
 "core.fsmonitor is set; remove it if you really want to disable fsmonitor"
 msgstr ""
 "core.fsmonitor đã được đặt; bỏ đặt nó nếu bạn thực sự muốn bật theo dõi hệ "
 "thống tập tin"
 
-#: builtin/update-index.c:1182
+#: builtin/update-index.c:1193
 msgid "fsmonitor disabled"
 msgstr "fsmonitor bị tắt"
 
@@ -14530,13 +15068,29 @@ msgstr "git update-server-info [--force]"
 msgid "update the info files from scratch"
 msgstr "cập nhật các tập tin thông tin từ điểm xuất phát"
 
-#: builtin/verify-commit.c:18
-msgid "git verify-commit [-v | --verbose] <commit>..."
-msgstr "git verify-commit [-v | --verbose] <lần_chuyển_giao>…"
-
-#: builtin/verify-commit.c:73
-msgid "print commit contents"
-msgstr "hiển thị nội dung của lần chuyển giao"
+#: builtin/upload-pack.c:11
+msgid "git upload-pack [<options>] <dir>"
+msgstr "git upload-pack [<các-tùy-chọn>] </đường/dẫn>"
+
+#: builtin/upload-pack.c:25
+msgid "exit immediately after initial ref advertisement"
+msgstr "thoát ngay sau khi khởi tạo quảng cáo tham chiếu"
+
+#: builtin/upload-pack.c:27
+msgid "do not try <directory>/.git/ if <directory> is no Git directory"
+msgstr "đừng thử <thư_mục>/.git/ nếu <thư_mục> không phải là thư mục Git"
+
+#: builtin/upload-pack.c:29
+msgid "interrupt transfer after <n> seconds of inactivity"
+msgstr "ngắt truyền thông sau <n> giây không hoạt động"
+
+#: builtin/verify-commit.c:18
+msgid "git verify-commit [-v | --verbose] <commit>..."
+msgstr "git verify-commit [-v | --verbose] <lần_chuyển_giao>…"
+
+#: builtin/verify-commit.c:73
+msgid "print commit contents"
+msgstr "hiển thị nội dung của lần chuyển giao"
 
 #: builtin/verify-commit.c:74 builtin/verify-tag.c:38
 msgid "print raw gpg status output"
@@ -14590,198 +15144,213 @@ msgstr "git worktree remove [<các-tùy-chọn>] <worktree>"
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock </đường/dẫn>"
 
-#: builtin/worktree.c:60
+#: builtin/worktree.c:58
 #, 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:66
+#: builtin/worktree.c:64
 #, 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"
 
-#: builtin/worktree.c:71 builtin/worktree.c:80
+#: builtin/worktree.c:69 builtin/worktree.c:78
 #, 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:90
+#: builtin/worktree.c:88
 #, 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>)"
 
-#: builtin/worktree.c:98
+#: builtin/worktree.c:96
 #, 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ệ"
 
-#: builtin/worktree.c:114
+#: builtin/worktree.c:105
 #, 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"
 
-#: builtin/worktree.c:161
+#: builtin/worktree.c:152
 msgid "report pruned working trees"
 msgstr "báo cáo các cây làm việc đã prune"
 
-#: builtin/worktree.c:163
+#: builtin/worktree.c:154
 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:238
+#: builtin/worktree.c:229
 #, c-format
 msgid "'%s' already exists"
 msgstr "“%s” đã có từ trước rồi"
 
-#: builtin/worktree.c:269
+#: builtin/worktree.c:260
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "không thể tạo thư mục của “%s”"
 
-#: builtin/worktree.c:308
+#: builtin/worktree.c:373 builtin/worktree.c:379
+#, 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:375
+#, 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:384
 #, c-format
-msgid "Preparing %s (identifier %s)"
-msgstr "Đang chuẩn bị %s (định danh %s)"
+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:385
+#: builtin/worktree.c:390
+#, 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:431
 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:388
+#: builtin/worktree.c:434
 msgid "create a new branch"
 msgstr "tạo nhánh mới"
 
-#: builtin/worktree.c:390
+#: builtin/worktree.c:436
 msgid "create or reset a branch"
 msgstr "tạo hay đặt lại một nhánh"
 
-#: builtin/worktree.c:392
+#: builtin/worktree.c:438
 msgid "populate the new working tree"
 msgstr "di chuyển cây làm việc mới"
 
-#: builtin/worktree.c:393
+#: builtin/worktree.c:439
 msgid "keep the new working tree locked"
 msgstr "giữ cây làm việc mới bị khóa"
 
-#: builtin/worktree.c:395
+#: builtin/worktree.c:441
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "cài đặt chế độ theo dõi (xem git-branch(1))"
 
-#: builtin/worktree.c:398
+#: builtin/worktree.c:444
 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:406
+#: builtin/worktree.c:452
 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:471
+#: builtin/worktree.c:511
 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:571
+#: builtin/worktree.c:611
 msgid "reason for locking"
 msgstr "lý do khóa"
 
-#: builtin/worktree.c:583 builtin/worktree.c:616 builtin/worktree.c:670
-#: builtin/worktree.c:809
+#: builtin/worktree.c:623 builtin/worktree.c:656 builtin/worktree.c:710
+#: builtin/worktree.c:850
 #, 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:585 builtin/worktree.c:618
+#: builtin/worktree.c:625 builtin/worktree.c:658
 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:590
+#: builtin/worktree.c:630
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "“%s” đã được khóa rồi, lý do: %s"
 
-#: builtin/worktree.c:592
+#: builtin/worktree.c:632
 #, c-format
 msgid "'%s' is already locked"
 msgstr "“%s” đã được khóa rồi"
 
-#: builtin/worktree.c:620
+#: builtin/worktree.c:660
 #, c-format
 msgid "'%s' is not locked"
 msgstr "“%s” chưa bị khóa"
 
-#: builtin/worktree.c:645
+#: builtin/worktree.c:685
 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:672 builtin/worktree.c:811
+#: builtin/worktree.c:712 builtin/worktree.c:852
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "“%s” là cây làm việc chính"
 
-#: builtin/worktree.c:677
+#: builtin/worktree.c:717
 #, 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:683
+#: builtin/worktree.c:723
 #, c-format
 msgid "target '%s' already exists"
 msgstr "đích “%s” đã tồn tại rồi"
 
-#: builtin/worktree.c:690
+#: builtin/worktree.c:730
 #, c-format
 msgid "cannot move a locked working tree, lock reason: %s"
 msgstr "không thể di chuyển một cây-làm-việc bị khóa, khóa vì: %s"
 
-#: builtin/worktree.c:692
+#: builtin/worktree.c:732
 msgid "cannot move a locked working tree"
 msgstr "không thể di chuyển một cây-làm-việc bị khóa"
 
-#: builtin/worktree.c:695
+#: builtin/worktree.c:735
 #, 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:700
+#: builtin/worktree.c:740
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "gặp lỗi khi chuyển “%s” sang “%s”"
 
-#: builtin/worktree.c:748
+#: builtin/worktree.c:788
 #, 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:752
+#: builtin/worktree.c:792
 #, c-format
 msgid "'%s' is dirty, use --force to delete it"
 msgstr "“%s” đang bẩn, hãy dùng --force để xóa nó"
 
-#: builtin/worktree.c:757
+#: builtin/worktree.c:797
 #, 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:768 builtin/worktree.c:782
+#: builtin/worktree.c:808 builtin/worktree.c:822
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "gặp lỗi khi xóa “%s”"
 
-#: builtin/worktree.c:794
+#: builtin/worktree.c:834
 msgid "force removing even if the worktree is dirty"
 msgstr "ép buộc di chuyển thậm chí cả khi cây làm việc đang bẩn"
 
-#: builtin/worktree.c:815
+#: builtin/worktree.c:856
 #, c-format
 msgid "cannot remove a locked working tree, lock reason: %s"
 msgstr "không thể gỡ bỏ một cây-làm-việc bị khóa, khóa vì: %s"
 
-#: builtin/worktree.c:817
+#: builtin/worktree.c:858
 msgid "cannot remove a locked working tree"
 msgstr "không thể gỡ bỏ một cây-làm-việc bị khóa"
 
-#: builtin/worktree.c:820
+#: builtin/worktree.c:861
 #, 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"
@@ -14802,26 +15371,6 @@ msgstr "ghi đối tượng cây (tree) cho <tiền tố> thư mục con"
 msgid "only useful for debugging"
 msgstr "chỉ hữu ích khi cần gỡ lỗi"
 
-#: upload-pack.c:27
-msgid "git upload-pack [<options>] <dir>"
-msgstr "git upload-pack [<các-tùy-chọn>] </đường/dẫn>"
-
-#: upload-pack.c:1070
-msgid "quit after a single request/response exchange"
-msgstr "thoát sau khi một trao đổi yêu cầu hay trả lời đơn"
-
-#: upload-pack.c:1072
-msgid "exit immediately after initial ref advertisement"
-msgstr "thoát ngay sau khi khởi tạo quảng cáo tham chiếu"
-
-#: upload-pack.c:1074
-msgid "do not try <directory>/.git/ if <directory> is no Git directory"
-msgstr "đừng thử <thư_mục>/.git/ nếu <thư_mục> không phải là thư mục Git"
-
-#: upload-pack.c:1076
-msgid "interrupt transfer after <n> seconds of inactivity"
-msgstr "ngắt truyền thông sau <n> giây không hoạt động"
-
 #: credential-cache--daemon.c:222
 #, c-format
 msgid ""
@@ -14839,23 +15388,25 @@ msgstr ""
 msgid "print debugging messages to stderr"
 msgstr "in thông tin gỡ lỗi ra đầu ra lỗi tiêu chuẩn"
 
-#: git.c:8
+#: git.c:27
 msgid ""
 "git [--version] [--help] [-C <path>] [-c <name>=<value>]\n"
 "           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
-"           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]\n"
+"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
+"bare]\n"
 "           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
 "           <command> [<args>]"
 msgstr ""
 "git [--version] [--help] [-C </đường/dẫn/>] [-c <tên>=<giá trị>]\n"
 "           [--exec-path[=</đường/dẫn/>]] [--html-path] [--man-path] [--info-"
 "path]\n"
-"           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]\n"
+"           [-p | --paginate | -P --no-pager] [--no-replace-objects] [--"
+"bare]\n"
 "           [--git-dir=</đường/dẫn/>] [--work-tree=</đường/dẫn/>] [--"
 "namespace=<tên>]\n"
 "           <lệnh> [<các tham số>]"
 
-#: git.c:15
+#: git.c:34
 msgid ""
 "'git help -a' and 'git help -g' list available subcommands and some\n"
 "concept guides. See 'git help <command>' or 'git help <concept>'\n"
@@ -14865,67 +15416,67 @@ msgstr ""
 "hướng dẫn về khái niệm. Xem “git help <lệnh>” hay “git help <khái-niệm>”\n"
 "để xem các đặc tả cho lệnh hay khái niệm cụ thể."
 
-#: git.c:95
+#: git.c:173
 #, c-format
 msgid "no directory given for --git-dir\n"
 msgstr "chưa chỉ ra thư mục cho --git-dir\n"
 
-#: git.c:109
+#: git.c:187
 #, c-format
 msgid "no namespace given for --namespace\n"
 msgstr "chưa đưa ra không gian làm việc cho --namespace\n"
 
-#: git.c:123
+#: git.c:201
 #, c-format
 msgid "no directory given for --work-tree\n"
 msgstr "chưa đưa ra cây làm việc cho --work-tree\n"
 
-#: git.c:137
+#: git.c:215
 #, c-format
 msgid "no prefix given for --super-prefix\n"
 msgstr "chưa đưa ra tiền tố cho --super-prefix\n"
 
-#: git.c:159
+#: git.c:237
 #, c-format
 msgid "-c expects a configuration string\n"
 msgstr "-c cần một chuỗi cấu hình\n"
 
-#: git.c:197
+#: git.c:275
 #, c-format
 msgid "no directory given for -C\n"
 msgstr ""
 "chưa đưa ra thư mục cho -C\n"
 "\n"
 
-#: git.c:212
+#: git.c:300
 #, c-format
 msgid "unknown option: %s\n"
 msgstr "không hiểu tùy chọn: %s\n"
 
-#: git.c:687
+#: git.c:765
 #, c-format
 msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
 msgstr "gặp lỗi khi khai triển bí danh “%s”; “%s” không phải là lệnh git\n"
 
-#: git.c:699
+#: git.c:777
 #, c-format
 msgid "failed to run command '%s': %s\n"
 msgstr "gặp lỗi khi chạy lệnh “%s”: %s\n"
 
-#: http.c:342
+#: http.c:348
 #, c-format
 msgid "negative value for http.postbuffer; defaulting to %d"
 msgstr "giá trị âm cho http.postbuffer; mặc định là %d"
 
-#: http.c:363
+#: http.c:369
 msgid "Delegation control is not supported with cURL < 7.22.0"
 msgstr "Điều khiển giao quyền không được hỗ trợ với cURL < 7.22.0"
 
-#: http.c:372
+#: http.c:378
 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:1857
+#: http.c:1854
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -14936,7 +15487,7 @@ msgstr ""
 "      hỏi cho: %s\n"
 " chuyển hướng: %s"
 
-#: remote-curl.c:345
+#: remote-curl.c:401
 #, c-format
 msgid "redirecting to %s"
 msgstr "chuyển hướng đến %s"
@@ -14949,131 +15500,669 @@ msgstr "các_tham_số"
 msgid "object filtering"
 msgstr "lọc đối tượng"
 
-#: common-cmds.h:9
-msgid "start a working area (see also: git help tutorial)"
-msgstr "bắt đầu một vùng làm việc (xem thêm: git help tutorial)"
+#: parse-options.h:157
+msgid "expiry-date"
+msgstr "ngày hết hạn"
 
-#: common-cmds.h:10
-msgid "work on the current change (see also: git help everyday)"
-msgstr "làm việc trên thay đổi hiện tại (xem thêm: git help everyday)"
+#: parse-options.h:172
+msgid "no-op (backward compatibility)"
+msgstr "no-op (tương thích ngược)"
 
-#: common-cmds.h:11
-msgid "examine the history and state (see also: git help revisions)"
-msgstr "xem xét lịch sử tình trạng (xem thêm: git help revisions)"
+#: parse-options.h:251
+msgid "be more verbose"
+msgstr "chi tiết hơn nữa"
 
-#: common-cmds.h:12
-msgid "grow, mark and tweak your common history"
-msgstr "thêm, ghi dấu và chỉnh lịch sử chung của bạn"
+#: parse-options.h:253
+msgid "be more quiet"
+msgstr "im lặng hơn nữa"
 
-#: common-cmds.h:13
-msgid "collaborate (see also: git help workflows)"
-msgstr "làm việc nhóm (xem thêm: git help workflows)"
+#: parse-options.h:259
+msgid "use <n> digits to display SHA-1s"
+msgstr "sử dụng <n> chữ số để hiển thị SHA-1s"
 
-#: common-cmds.h:17
+#: command-list.h:50
 msgid "Add file contents to the index"
 msgstr "Thêm nội dung tập tin vào bảng mục lục"
 
-#: common-cmds.h:18
+#: command-list.h:51
+msgid "Apply a series of patches from a mailbox"
+msgstr "Áp dụng một chuỗi các miếng và từ một mailbox"
+
+#: command-list.h:52
+msgid "Annotate file lines with commit information"
+msgstr "Các dòng diễn giải tập tin với thông tin chuyển giao"
+
+#: command-list.h:53
+msgid "Apply a patch to files and/or to the index"
+msgstr ""
+"Áp dụng một miếng vá cho các tập tin đã chỉ ra và/hoặc vào bảng mục lục"
+
+#: command-list.h:54
+msgid "Import an Arch repository into Git"
+msgstr "Nhập một kho Arch vào một kho Git"
+
+#: command-list.h:55
+msgid "Create an archive of files from a named tree"
+msgstr "Tạo một kho nén các tập tin từ cây làm việc có tên"
+
+#: command-list.h:56
 msgid "Use binary search to find the commit that introduced a bug"
 msgstr "Tìm kiếm dạng nhị phân để tìm ra lần chuyển giao nào đưa ra lỗi"
 
-#: common-cmds.h:19
+#: command-list.h:57
+msgid "Show what revision and author last modified each line of a file"
+msgstr ""
+"Hiển thị số hiệu phiên bản và tác giả sửa đổi cuối cho từng dòng của một tập "
+"tin"
+
+#: command-list.h:58
 msgid "List, create, or delete branches"
 msgstr "Liệt kê, tạo hay là xóa các nhánh"
 
-#: common-cmds.h:20
+#: command-list.h:59
+msgid "Move objects and refs by archive"
+msgstr "Di chuyển các đối tượng và tham chiếu theo kho lưu"
+
+#: command-list.h:60
+msgid "Provide content or type and size information for repository objects"
+msgstr "Cung cấp nội dung hoặc thông tin về kiểu và cỡ cho các đối tượng kho"
+
+#: command-list.h:61
+msgid "Display gitattributes information"
+msgstr "Hiển thị thông tin gitattributes"
+
+#: command-list.h:62
+msgid "Debug gitignore / exclude files"
+msgstr "Gỡ lỗi các tập tin gitignore / exclude"
+
+#: command-list.h:63
+msgid "Show canonical names and email addresses of contacts"
+msgstr "Hiển thị tên và địa chỉ thư điện tử của các liên hệ dạng chuẩn hóa"
+
+#: command-list.h:64
 msgid "Switch branches or restore working tree files"
 msgstr "Chuyển các nhánh hoặc phục hồi lại các tập tin cây làm việc"
 
-#: common-cmds.h:21
+#: command-list.h:65
+msgid "Copy files from the index to the working tree"
+msgstr "Sao chép các tập tin từ mục lục ra cây làm việc"
+
+#: command-list.h:66
+msgid "Ensures that a reference name is well formed"
+msgstr "Đảm bảo rằng một tên tham chiếu ở dạng thức tốt"
+
+#: command-list.h:67
+msgid "Find commits yet to be applied to upstream"
+msgstr "Tìm những lần chuyển giao còn chưa được áp dụng lên thượng nguồn"
+
+#: command-list.h:68
+msgid "Apply the changes introduced by some existing commits"
+msgstr "Áp dụng các thay đổi được đưa ra bởi một số lần chuyển giao sẵn có"
+
+#: command-list.h:69
+msgid "Graphical alternative to git-commit"
+msgstr "Tương tác đồ họa với git-commit"
+
+#: command-list.h:70
+msgid "Remove untracked files from the working tree"
+msgstr "Gỡ bỏ các tập tin không được theo dõi từ cây làm việc"
+
+#: command-list.h:71
 msgid "Clone a repository into a new directory"
 msgstr "Nhân bản một kho chứa đến một thư mục mới"
 
-#: common-cmds.h:22
+#: command-list.h:72
+msgid "Display data in columns"
+msgstr "Hiển thị dữ liệu dạng các cột"
+
+#: command-list.h:73
 msgid "Record changes to the repository"
 msgstr "Ghi các thay đổi vào kho chứa"
 
-#: common-cmds.h:23
+#: command-list.h:74
+msgid "Write and verify Git commit graph files"
+msgstr "Ghi và thẩm tra các tập tin đồ họa các lền chuyển giao git"
+
+#: command-list.h:75
+msgid "Create a new commit object"
+msgstr "Tạo một đối tượng chuyển giao"
+
+#: command-list.h:76
+msgid "Get and set repository or global options"
+msgstr "Lấy và đặt kho hoặc các tùy chọn toàn cục"
+
+#: command-list.h:77
+msgid "Count unpacked number of objects and their disk consumption"
+msgstr ""
+"Đếm số lượng đối tượng chưa được đóng gói và mức tiêu dùng đĩa của chúng"
+
+#: command-list.h:78
+msgid "Retrieve and store user credentials"
+msgstr "Nhận và lưu chứng nhận của người dùng"
+
+#: command-list.h:79
+msgid "Helper to temporarily store passwords in memory"
+msgstr "Bộ hỗ trợ để lưu mật khẩu tạm thời trong bộ nhớ"
+
+#: command-list.h:80
+msgid "Helper to store credentials on disk"
+msgstr "Bộ hỗ trợ để lưu chứng nhận vào đĩa"
+
+#: command-list.h:81
+msgid "Export a single commit to a CVS checkout"
+msgstr "Xuất một lần chuyển giao thành một lần lấy ra CVS"
+
+#: command-list.h:82
+msgid "Salvage your data out of another SCM people love to hate"
+msgstr "Xem xét giá trị dữ liệu của bạn khỏi người khác yêu SCM để ghét"
+
+#: command-list.h:83
+msgid "A CVS server emulator for Git"
+msgstr "Một bộ mô phỏng máy dịch vụ CVS cho Git"
+
+#: command-list.h:84
+msgid "A really simple server for Git repositories"
+msgstr "Một máy phục vụ thực sự đơn giản dành cho kho Git"
+
+#: command-list.h:85
+msgid "Give an object a human readable name based on an available ref"
+msgstr ""
+"Đưa ra một đối tượng dựa trên một tên ở dạng con người đọc được trên một "
+"tham chiếu sẵn có"
+
+#: command-list.h:86
 msgid "Show changes between commits, commit and working tree, etc"
 msgstr ""
 "Xem các thay đổi giữa những lần chuyển giao, giữa một lần chuyển giao và cây "
 "làm việc, v.v.."
 
-#: common-cmds.h:24
+#: command-list.h:87
+msgid "Compares files in the working tree and the index"
+msgstr "So sánh các tập tin trong cây làm việc và bảng mục lục"
+
+#: command-list.h:88
+msgid "Compare a tree to the working tree or index"
+msgstr "So sánh các cây trong cây làm việc hoặc bảng mục lục"
+
+#: command-list.h:89
+msgid "Compares the content and mode of blobs found via two tree objects"
+msgstr ""
+"So sánh nội dung và chế độ của các blob tìm thấy thông qua hai đối tượng cây"
+
+#: command-list.h:90
+msgid "Show changes using common diff tools"
+msgstr "Hiển thị các thay đổi sử dụng các công cụ diff chung"
+
+#: command-list.h:91
+msgid "Git data exporter"
+msgstr "Bộ xuất dữ liệu Git"
+
+#: command-list.h:92
+msgid "Backend for fast Git data importers"
+msgstr "Ứng dụng chạy phía sau cho bộ nhập nhanh dữ liệu Git"
+
+#: command-list.h:93
 msgid "Download objects and refs from another repository"
 msgstr "Tải về các đối tượng và tham chiếu từ kho chứa khác"
 
-#: common-cmds.h:25
+#: command-list.h:94
+msgid "Receive missing objects from another repository"
+msgstr "Tải về các đối tượng còn thiếu từ kho chứa khác"
+
+#: command-list.h:95
+msgid "Rewrite branches"
+msgstr "Những nhánh ghi lại"
+
+#: command-list.h:96
+msgid "Produce a merge commit message"
+msgstr "Sản sinh một ghi chú lần chuyển giao hòa trộn"
+
+#: command-list.h:97
+msgid "Output information on each ref"
+msgstr "Xuất thông tin cho từng tham chiếu"
+
+#: command-list.h:98
+msgid "Prepare patches for e-mail submission"
+msgstr "Chuẩn bị các miếng vá để gửi qua thư điện tử"
+
+#: command-list.h:99
+msgid "Verifies the connectivity and validity of the objects in the database"
+msgstr ""
+"Thẩm tra lại tính kết nối và tính hiệu lực cảu các đối tượng trong cơ sở dữ "
+"liệu"
+
+#: command-list.h:100
+msgid "Cleanup unnecessary files and optimize the local repository"
+msgstr "Dọn dẹp các tập tin không cần thiết và tối ưu kho nội bộ"
+
+#: command-list.h:101
+msgid "Extract commit ID from an archive created using git-archive"
+msgstr ""
+"Rút trích mã số lần chuyển giao từ một kho nén đã được tạo bởi git-archive"
+
+#: command-list.h:102
 msgid "Print lines matching a pattern"
 msgstr "In ra những dòng khớp với một mẫu"
 
-#: common-cmds.h:26
+#: command-list.h:103
+msgid "A portable graphical interface to Git"
+msgstr "Một giao diện đồ họa khả chuyển cho Git"
+
+#: command-list.h:104
+msgid "Compute object ID and optionally creates a blob from a file"
+msgstr "Tính toán ID đối tượng và tùy chọn là tạo một blob từ một tập tin"
+
+#: command-list.h:105
+msgid "Display help information about Git"
+msgstr "Hiển thị thông tin trợ giúp về Git"
+
+#: command-list.h:106
+msgid "Server side implementation of Git over HTTP"
+msgstr "Thi hành phía máy chủ của Git qua HTTP"
+
+#: command-list.h:107
+msgid "Download from a remote Git repository via HTTP"
+msgstr "Tải về từ một kho chứa Git trên mạng thông qua HTTP"
+
+#: command-list.h:108
+msgid "Push objects over HTTP/DAV to another repository"
+msgstr "Đẩy các đối tượng lên thông qua HTTP/DAV đến kho chứa khác"
+
+#: command-list.h:109
+msgid "Send a collection of patches from stdin to an IMAP folder"
+msgstr ""
+"Gửi một bộ sưu tập các miếng vá từ đầu vào tiêu chuẩn đến một thư mục IMAP"
+
+#: command-list.h:110
+msgid "Build pack index file for an existing packed archive"
+msgstr "Xây dựng tập tin mục lục gói cho một kho nén đã đóng gói sẵn có"
+
+#: command-list.h:111
 msgid "Create an empty Git repository or reinitialize an existing one"
 msgstr "Tạo một kho git mới hay khởi tạo lại một kho đã tồn tại từ trước"
 
-#: common-cmds.h:27
+#: command-list.h:112
+msgid "Instantly browse your working repository in gitweb"
+msgstr "Duyệt ngay kho làm việc của bạn trong gitweb"
+
+#: command-list.h:113
+msgid "add or parse structured information in commit messages"
+msgstr "thêm hay phân tích thông tin cấu trúc trong ghi chú lần chuyển giao"
+
+#: command-list.h:114
+msgid "The Git repository browser"
+msgstr "Bộ duyện kho Git"
+
+#: command-list.h:115
 msgid "Show commit logs"
 msgstr "Hiển thị nhật ký các lần chuyển giao"
 
-#: common-cmds.h:28
+#: command-list.h:116
+msgid "Show information about files in the index and the working tree"
+msgstr "Hiển thị thông tin về các tập tin trong bảng mục lục và cây làm việc"
+
+#: command-list.h:117
+msgid "List references in a remote repository"
+msgstr "Liệt kê các tham chiếu trong một kho chứa trên mạng"
+
+#: command-list.h:118
+msgid "List the contents of a tree object"
+msgstr "Liệt kê nội dung của đối tượng cây"
+
+#: command-list.h:119
+msgid "Extracts patch and authorship from a single e-mail message"
+msgstr "Trích xuất miếng và và nguồn tác giả từ một thư điện tử đơn"
+
+#: command-list.h:120
+msgid "Simple UNIX mbox splitter program"
+msgstr "Chương trình phân tách UNIX mbox đơn giản"
+
+#: command-list.h:121
 msgid "Join two or more development histories together"
 msgstr "Hợp nhất hai hay nhiều hơn lịch sử của các nhà phát triển"
 
-#: common-cmds.h:29
+#: command-list.h:122
+msgid "Find as good common ancestors as possible for a merge"
+msgstr "Tìm các tổ tiên chung tốt có thể được cho hòa trộn"
+
+#: command-list.h:123
+msgid "Run a three-way file merge"
+msgstr "Chạy một hòa trộn tập tin “3-đường”"
+
+#: command-list.h:124
+msgid "Run a merge for files needing merging"
+msgstr "Chạy một hòa trộn cho các tập tin cần hòa trộn"
+
+#: command-list.h:125
+msgid "The standard helper program to use with git-merge-index"
+msgstr "Một chương trình hỗ trợ tiêu chuẩn dùng với git-merge-index"
+
+#: command-list.h:126
+msgid "Run merge conflict resolution tools to resolve merge conflicts"
+msgstr ""
+"Chạy công cụ phân giải xung đột hòa trộn để mà giải quyết các xung đột hòa "
+"trộn"
+
+#: command-list.h:127
+msgid "Show three-way merge without touching index"
+msgstr "Hiển thị hòa trộn ba-đường mà không đụng chạm đến mục lục"
+
+#: command-list.h:128
+msgid "Creates a tag object"
+msgstr "Tạo một đối tượng thẻ"
+
+#: command-list.h:129
+msgid "Build a tree-object from ls-tree formatted text"
+msgstr "Xây dựng một tree-object từ văn bản định dạng ls-tree"
+
+#: command-list.h:130
 msgid "Move or rename a file, a directory, or a symlink"
 msgstr "Di chuyển hay đổi tên một tập tin, thư mục hoặc liên kết mềm"
 
-#: common-cmds.h:30
+#: command-list.h:131
+msgid "Find symbolic names for given revs"
+msgstr "Tìm các tên liên kết mềm cho điểm xét đã cho"
+
+#: command-list.h:132
+msgid "Add or inspect object notes"
+msgstr "thêm hoặc điều tra đối tượng ghi chú"
+
+#: command-list.h:133
+msgid "Import from and submit to Perforce repositories"
+msgstr "Nhập vào từ và gửi đến các kho cần thiết"
+
+#: command-list.h:134
+msgid "Create a packed archive of objects"
+msgstr "Tạo một kho lưu được đóng gói cho các đối"
+
+#: command-list.h:135
+msgid "Find redundant pack files"
+msgstr "Tìm các tập tin gói dư thừa"
+
+#: command-list.h:136
+msgid "Pack heads and tags for efficient repository access"
+msgstr "Đóng gói các phần đầu và thẻ để truy cập kho hiệu quả hơn"
+
+#: command-list.h:137
+msgid "Routines to help parsing remote repository access parameters"
+msgstr "Các thủ tục để giúp phân tích các tham số truy cập kho chứa trên mạng"
+
+#: command-list.h:138
+msgid "Compute unique ID for a patch"
+msgstr "Tính toán ID duy nhất cho một miếng vá"
+
+#: command-list.h:139
+msgid "Prune all unreachable objects from the object database"
+msgstr ""
+"Xén bớt tất các các đối tượng không tiếp cận được từ cơ sở dữ liệu đối tượng"
+
+#: command-list.h:140
+msgid "Remove extra objects that are already in pack files"
+msgstr "Xóa bỏ các đối tượng mở rộng cái mà đã sẵn có trong các tập tin gói"
+
+#: command-list.h:141
 msgid "Fetch from and integrate with another repository or a local branch"
 msgstr "Lấy về và hợp nhất với kho khác hay một nhánh nội bộ"
 
-#: common-cmds.h:31
+#: command-list.h:142
 msgid "Update remote refs along with associated objects"
 msgstr "Cập nhật th.chiếu máy chủ cùng với các đối tượng liên quan đến nó"
 
-#: common-cmds.h:32
+#: command-list.h:143
+msgid "Applies a quilt patchset onto the current branch"
+msgstr "Ấp dụng một bộ miếng vá quilt vào trong nhánh hiện hành"
+
+#: command-list.h:144
+msgid "Reads tree information into the index"
+msgstr "Đọc thông tin cây vào trong mục lục"
+
+#: command-list.h:145
 msgid "Reapply commits on top of another base tip"
 msgstr "Thu hoạch các lần chuyển giao trên đỉnh của đầu mút cơ sở khác"
 
-#: common-cmds.h:33
+#: command-list.h:146
+msgid "Receive what is pushed into the repository"
+msgstr "Nhận cái mà được đẩy vào trong kho"
+
+#: command-list.h:147
+msgid "Manage reflog information"
+msgstr "Quản lý thông tin reflog"
+
+#: command-list.h:148
+msgid "Manage set of tracked repositories"
+msgstr "Quản lý tập hợp các kho chứa đã được theo dõi"
+
+#: command-list.h:149
+msgid "Pack unpacked objects in a repository"
+msgstr "Đóng gói các đối tượng chưa đóng gói ở một kho chứa"
+
+#: command-list.h:150
+msgid "Create, list, delete refs to replace objects"
+msgstr "Tạo, liệt kê, xóa các tham chiếu để thay thế các đối tượng"
+
+#: command-list.h:151
+msgid "Generates a summary of pending changes"
+msgstr "Tạo ra một tóm tắt các thay đổi còn treo"
+
+#: command-list.h:152
+msgid "Reuse recorded resolution of conflicted merges"
+msgstr "Dùng lại các giải pháp đã ghi lại của các hòa trộn bị xung đột"
+
+#: command-list.h:153
 msgid "Reset current HEAD to the specified state"
 msgstr "Đặt lại HEAD hiện hành thành trạng thái đã cho"
 
-#: common-cmds.h:34
+#: command-list.h:154
+msgid "Revert some existing commits"
+msgstr "Hoàn lại một số lần chuyển giao sẵn có"
+
+#: command-list.h:155
+msgid "Lists commit objects in reverse chronological order"
+msgstr "Liệt kê các đối tượng chuyển giao theo thứ tự tôpô đảo ngược"
+
+#: command-list.h:156
+msgid "Pick out and massage parameters"
+msgstr "Cậy ra và xử lý các tham số"
+
+#: command-list.h:157
 msgid "Remove files from the working tree and from the index"
 msgstr "Gỡ bỏ các tập tin từ cây làm việc và từ bảng mục lục"
 
-#: common-cmds.h:35
+#: command-list.h:158
+msgid "Send a collection of patches as emails"
+msgstr "Gửi một tập hợp của các miếng vá ở dạng thư điện tử"
+
+#: command-list.h:159
+msgid "Push objects over Git protocol to another repository"
+msgstr "Đẩy các đối tượng lên thông qua giao thức Git đến kho chứa khác"
+
+#: command-list.h:160
+msgid "Restricted login shell for Git-only SSH access"
+msgstr "Hệ vỏ đăng nhập có hạn chế cho truy cập SSH chỉ-Git"
+
+#: command-list.h:161
+msgid "Summarize 'git log' output"
+msgstr "Kết xuất “git log” dạng tóm tắt"
+
+#: command-list.h:162
 msgid "Show various types of objects"
 msgstr "Hiển thị các kiểu khác nhau của các đối tượng"
 
-#: common-cmds.h:36
+#: command-list.h:163
+msgid "Show branches and their commits"
+msgstr "Hiển thị những nhánh và các lần chuyển giao của chúng"
+
+#: command-list.h:164
+msgid "Show packed archive index"
+msgstr "Hiển thị các muc lục kho nén đã đóng gói"
+
+#: command-list.h:165
+msgid "List references in a local repository"
+msgstr "Liệt kê các tham chiếu trong một kho nội bộ"
+
+#: command-list.h:166
+msgid "Git's i18n setup code for shell scripts"
+msgstr "Nã cài đặt quốc tế hóa của Git cho văn lệnh hệ vỏ"
+
+#: command-list.h:167
+msgid "Common Git shell script setup code"
+msgstr "Mã cài đặt văn lệnh hệ vỏ Git chung"
+
+#: command-list.h:168
+msgid "Stash the changes in a dirty working directory away"
+msgstr "Tạm cất đi các thay đổi trong một thư mục làm việc bẩn"
+
+#: command-list.h:169
+msgid "Add file contents to the staging area"
+msgstr "Thêm nội dung tập tin vào vùng bệ phóng"
+
+#: command-list.h:170
 msgid "Show the working tree status"
 msgstr "Hiển thị trạng thái cây làm việc"
 
-#: common-cmds.h:37
+#: command-list.h:171
+msgid "Remove unnecessary whitespace"
+msgstr "Xóa bỏ các khoảng trắng không cần thiết"
+
+#: command-list.h:172
+msgid "Initialize, update or inspect submodules"
+msgstr "Khởi tạo, cập nhật hay điều tra các mô-đun-con"
+
+#: command-list.h:173
+msgid "Bidirectional operation between a Subversion repository and Git"
+msgstr "Thao tác hai hướng giữ hai kho Subversion và Git"
+
+#: command-list.h:174
+msgid "Read, modify and delete symbolic refs"
+msgstr "Đọc, sửa và xóa tham chiếu mềm"
+
+#: command-list.h:175
 msgid "Create, list, delete or verify a tag object signed with GPG"
 msgstr "Tạo, liệt kê, xóa hay xác thực một đối tượng thẻ được ký bằng GPG"
 
-#: parse-options.h:157
-msgid "expiry-date"
-msgstr "ngày hết hạn"
+#: command-list.h:176
+msgid "Creates a temporary file with a blob's contents"
+msgstr "Tạo một tập tin tạm với nội dung của blob"
 
-#: parse-options.h:172
-msgid "no-op (backward compatibility)"
-msgstr "no-op (tương thích ngược)"
+#: command-list.h:177
+msgid "Unpack objects from a packed archive"
+msgstr "Gỡ các đối tượng khỏi một kho lưu đã đóng gói"
 
-#: parse-options.h:250
-msgid "be more verbose"
-msgstr "chi tiết hơn nữa"
+#: command-list.h:178
+msgid "Register file contents in the working tree to the index"
+msgstr "Đăng ký nội dung tập tin từ cây làm việc đến bảng mục lục"
 
-#: parse-options.h:252
-msgid "be more quiet"
-msgstr "im lặng hơn nữa"
+#: command-list.h:179
+msgid "Update the object name stored in a ref safely"
+msgstr "Cập nhật tên đối tượng được lưu trong một tham chiếu một cách an toàn"
 
-#: parse-options.h:258
-msgid "use <n> digits to display SHA-1s"
-msgstr "sử dụng <n> chữ số để hiển thị SHA-1s"
+#: command-list.h:180
+msgid "Update auxiliary info file to help dumb servers"
+msgstr "Cập nhật tập tin thông tin phụ trợ để giúp đỡ các dịch vụ dumb"
+
+#: command-list.h:181
+msgid "Send archive back to git-archive"
+msgstr "Gửi trở lại kho lưu đến git-archive"
+
+#: command-list.h:182
+msgid "Send objects packed back to git-fetch-pack"
+msgstr "Gửi trở lại các đối tượng đã đóng gói cho git-fetch-pack"
+
+#: command-list.h:183
+msgid "Show a Git logical variable"
+msgstr "Hiển thị một biến Git luận lý"
+
+#: command-list.h:184
+msgid "Check the GPG signature of commits"
+msgstr "Kiểm tra ký lần chuyển giao dùng GPG"
+
+#: command-list.h:185
+msgid "Validate packed Git archive files"
+msgstr "Kiểm tra lại các tập tin kho (lưu trữ, nén) Git đã được đóng gói"
+
+#: command-list.h:186
+msgid "Check the GPG signature of tags"
+msgstr "Kiểm tra chữ ký GPG của các thẻ"
+
+#: command-list.h:187
+msgid "Git web interface (web frontend to Git repositories)"
+msgstr "Giao diện Git trên nền web (ứng dụng web chạy trên kho Git)"
+
+#: command-list.h:188
+msgid "Show logs with difference each commit introduces"
+msgstr "Hiển thị các nhật ký với từng lần chuyển giao khác nhau đưa ra"
+
+#: command-list.h:189
+msgid "Manage multiple working trees"
+msgstr "Quản lý nhiều cây làm việc"
+
+#: command-list.h:190
+msgid "Create a tree object from the current index"
+msgstr "Tạo một đối tượng cây từ đầu vào tiêu chuẩn stdin hiện tại"
+
+#: command-list.h:191
+msgid "Defining attributes per path"
+msgstr "Định nghĩa các thuộc tính cho mỗi đường dẫn"
+
+#: command-list.h:192
+msgid "Git command-line interface and conventions"
+msgstr "Giao diện dòng lệnh Git và quy ước"
+
+#: command-list.h:193
+msgid "A Git core tutorial for developers"
+msgstr "Hướng dẫn Git cơ bản cho nhà phát triển"
+
+#: command-list.h:194
+msgid "Git for CVS users"
+msgstr "Git dành cho những người dùng CVS"
+
+#: command-list.h:195
+msgid "Tweaking diff output"
+msgstr "Chỉnh kết xuất diff"
+
+#: command-list.h:196
+msgid "A useful minimum set of commands for Everyday Git"
+msgstr "Một tập hợp lệnh hữu dụng tối thiểu để dùng Git hàng ngày"
+
+#: command-list.h:197
+msgid "A Git Glossary"
+msgstr "Thuật ngữ chuyên môn Git"
+
+#: command-list.h:198
+msgid "Hooks used by Git"
+msgstr "Các móc được sử dụng bởi Git"
+
+#: command-list.h:199
+msgid "Specifies intentionally untracked files to ignore"
+msgstr "Chỉ định các tập tin không cần theo dõi"
+
+#: command-list.h:200
+msgid "Defining submodule properties"
+msgstr "Định nghĩa thuộc tính mô-đun-con"
+
+#: command-list.h:201
+msgid "Git namespaces"
+msgstr "không gian tên Git"
+
+#: command-list.h:202
+msgid "Git Repository Layout"
+msgstr "Bố cục kho Git"
+
+#: command-list.h:203
+msgid "Specifying revisions and ranges for Git"
+msgstr "Chỉ định điểm xét duyệt và vùng cho Git"
+
+#: command-list.h:204
+msgid "A tutorial introduction to Git: part two"
+msgstr "Hướng dẫn cách dùng Git: phần hai"
+
+#: command-list.h:205
+msgid "A tutorial introduction to Git"
+msgstr "Hướng dẫn cách dùng Git"
+
+#: command-list.h:206
+msgid "An overview of recommended workflows with Git"
+msgstr "Tổng quan về luồng công việc khuyến nghị nên dùng với Git."
 
 #: rerere.h:40
 msgid "update the index with reused conflict resolution if possible"
@@ -15304,7 +16393,7 @@ msgstr "Đang thử hòa trộn đơn giản với $pretty_name"
 msgid "Simple merge did not work, trying automatic merge."
 msgstr "Hòa trộn đơn giản không làm việc, thử hòa trộn tự động."
 
-#: git-rebase.sh:60
+#: git-rebase.sh:61
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
@@ -15319,44 +16408,44 @@ msgstr ""
 "Để bãi bỏ và quay trở lại trạng thái trước \"git rebase\", chạy \"git rebase "
 "--abort\"."
 
-#: git-rebase.sh:163 git-rebase.sh:409
+#: git-rebase.sh:173 git-rebase.sh:442
 #, sh-format
 msgid "Could not move back to $head_name"
 msgstr "Không thể quay trở lại $head_name"
 
-#: git-rebase.sh:174
+#: git-rebase.sh:184
 msgid "Applied autostash."
 msgstr "Đã áp dụng autostash."
 
-#: git-rebase.sh:177
+#: git-rebase.sh:187
 #, sh-format
 msgid "Cannot store $stash_sha1"
 msgstr "Không thể lưu $stash_sha1"
 
-#: git-rebase.sh:218
+#: git-rebase.sh:229
 msgid "The pre-rebase hook refused to rebase."
 msgstr "Móc (hook) pre-rebase từ chối rebase."
 
-#: git-rebase.sh:223
+#: git-rebase.sh:234
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr ""
 "Hình như đang trong quá trình thực hiện lệnh “git-am”. Không thể rebase."
 
-#: git-rebase.sh:370
+#: git-rebase.sh:403
 msgid "No rebase in progress?"
 msgstr "Không có tiến trình rebase nào phải không?"
 
-#: git-rebase.sh:381
+#: git-rebase.sh:414
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr ""
 "Hành động “--edit-todo” chỉ có thể dùng trong quá trình “rebase” (sửa lịch "
 "sử) tương tác."
 
-#: git-rebase.sh:388
+#: git-rebase.sh:421
 msgid "Cannot read HEAD"
 msgstr "Không thể đọc HEAD"
 
-#: git-rebase.sh:391
+#: git-rebase.sh:424
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
@@ -15364,7 +16453,7 @@ msgstr ""
 "Bạn phải sửa tất cả các lần hòa trộn xung đột và sau\n"
 "đó đánh dấu chúng là cần xử lý sử dụng lệnh git add"
 
-#: git-rebase.sh:435
+#: git-rebase.sh:468
 #, sh-format
 msgid ""
 "It seems that there is already a $state_dir_base directory, and\n"
@@ -15385,74 +16474,78 @@ msgstr ""
 "và chạy TÔI lần nữa. TÔI  dừng lại trong trường hợp bạn vẫn\n"
 "có một số thứ quý giá ở đây."
 
-#: git-rebase.sh:491
+#: git-rebase.sh:509
+msgid "error: cannot combine '--signoff' with '--preserve-merges'"
+msgstr "lỗi: không thể kết hợp “--signoff” với “--preserve-merges”"
+
+#: git-rebase.sh:537
 #, sh-format
 msgid "invalid upstream '$upstream_name'"
 msgstr "thượng nguồn không hợp lệ “$upstream_name”"
 
-#: git-rebase.sh:515
+#: git-rebase.sh:561
 #, sh-format
 msgid "$onto_name: there are more than one merge bases"
 msgstr "$onto_name: ở đây có nhiều hơn một nền móng hòa trộn"
 
-#: git-rebase.sh:518 git-rebase.sh:522
+#: git-rebase.sh:564 git-rebase.sh:568
 #, sh-format
 msgid "$onto_name: there is no merge base"
 msgstr "$onto_name: ở đây không có nền móng hòa trộn nào"
 
-#: git-rebase.sh:527
+#: git-rebase.sh:573
 #, sh-format
 msgid "Does not point to a valid commit: $onto_name"
 msgstr "Không chỉ đến một lần chuyển giao không hợp lệ: $onto_name"
 
-#: git-rebase.sh:553
+#: git-rebase.sh:599
 #, sh-format
 msgid "fatal: no such branch/commit '$branch_name'"
 msgstr "nghiêm trọng: không có nhánh như thế: “$branch_name”"
 
-#: git-rebase.sh:586
+#: git-rebase.sh:632
 msgid "Cannot autostash"
 msgstr "Không thể autostash"
 
-#: git-rebase.sh:591
+#: git-rebase.sh:637
 #, sh-format
 msgid "Created autostash: $stash_abbrev"
 msgstr "Đã tạo autostash: $stash_abbrev"
 
-#: git-rebase.sh:595
+#: git-rebase.sh:641
 msgid "Please commit or stash them."
 msgstr "Xin hãy chuyển giao hoặc tạm cất (stash) chúng."
 
-#: git-rebase.sh:618
+#: git-rebase.sh:664
 #, sh-format
 msgid "HEAD is up to date."
 msgstr "HEAD đã cập nhật."
 
-#: git-rebase.sh:620
+#: git-rebase.sh:666
 #, sh-format
 msgid "Current branch $branch_name is up to date."
 msgstr "Nhánh hiện tại $branch_name đã được cập nhật rồi."
 
-#: git-rebase.sh:628
+#: git-rebase.sh:674
 #, sh-format
 msgid "HEAD is up to date, rebase forced."
 msgstr "HEAD hiện đã được cập nhật rồi, bị ép buộc rebase."
 
-#: git-rebase.sh:630
+#: git-rebase.sh:676
 #, sh-format
 msgid "Current branch $branch_name is up to date, rebase forced."
 msgstr "Nhánh hiện tại $branch_name đã được cập nhật rồi, lệnh rebase ép buộc."
 
-#: git-rebase.sh:642
+#: git-rebase.sh:688
 #, sh-format
 msgid "Changes from $mb to $onto:"
 msgstr "Thay đổi từ $mb thành $onto:"
 
-#: git-rebase.sh:651
+#: git-rebase.sh:697
 msgid "First, rewinding head to replay your work on top of it..."
 msgstr "Trước tiên, di chuyển head để xem lại các công việc trên đỉnh của nó…"
 
-#: git-rebase.sh:661
+#: git-rebase.sh:707
 #, sh-format
 msgid "Fast-forwarded $branch_name to $onto_name."
 msgstr "Chuyển-tiếp-nhanh $branch_name thành $onto_name."
@@ -15521,114 +16614,114 @@ msgstr "Không thể ghi lại trạng thái hiện hành"
 msgid "Saved working directory and index state $stash_msg"
 msgstr "Đã ghi lại thư mục làm việc và trạng thái mục lục $stash_msg"
 
-#: git-stash.sh:340
+#: git-stash.sh:342
 msgid "Cannot remove worktree changes"
 msgstr "Không thể gỡ bỏ các thay đổi cây-làm-việc"
 
-#: git-stash.sh:488
+#: git-stash.sh:490
 #, sh-format
 msgid "unknown option: $opt"
 msgstr "không hiểu tùy chọn: $opt"
 
-#: git-stash.sh:501
+#: git-stash.sh:503
 msgid "No stash entries found."
 msgstr "Không tìm thấy các mục tạm cất (stash) nào."
 
-#: git-stash.sh:508
+#: git-stash.sh:510
 #, sh-format
 msgid "Too many revisions specified: $REV"
 msgstr "Chỉ ra quá nhiều điểm xét duyệt: $REV"
 
-#: git-stash.sh:523
+#: git-stash.sh:525
 #, sh-format
 msgid "$reference is not a valid reference"
 msgstr "$reference không phải là tham chiếu hợp lệ"
 
-#: git-stash.sh:551
+#: git-stash.sh:553
 #, sh-format
 msgid "'$args' is not a stash-like commit"
 msgstr "“$args” không phải là lần chuyển giao kiểu-stash (cất đi)"
 
-#: git-stash.sh:562
+#: git-stash.sh:564
 #, sh-format
 msgid "'$args' is not a stash reference"
 msgstr "”$args” không phải tham chiếu đến stash"
 
-#: git-stash.sh:570
+#: git-stash.sh:572
 msgid "unable to refresh index"
 msgstr "không thể làm tươi mới bảng mục lục"
 
-#: git-stash.sh:574
+#: git-stash.sh:576
 msgid "Cannot apply a stash in the middle of a merge"
 msgstr "Không thể áp dụng một stash ở giữa của quá trình hòa trộn"
 
-#: git-stash.sh:582
+#: git-stash.sh:584
 msgid "Conflicts in index. Try without --index."
 msgstr "Xung đột trong bảng mục lục. Hãy thử mà không dùng tùy chọn --index."
 
-#: git-stash.sh:584
+#: git-stash.sh:586
 msgid "Could not save index tree"
 msgstr "Không thể ghi lại cây chỉ mục"
 
-#: git-stash.sh:593
+#: git-stash.sh:595
 msgid "Could not restore untracked files from stash entry"
 msgstr "Không thể phục hồi các tập tin chưa theo dõi từ mục cất đi (stash)"
 
-#: git-stash.sh:618
+#: git-stash.sh:620
 msgid "Cannot unstage modified files"
 msgstr "Không thể bỏ ra khỏi bệ phóng các tập tin đã được sửa chữa"
 
-#: git-stash.sh:633
+#: git-stash.sh:635
 msgid "Index was not unstashed."
 msgstr "Bảng mục lục đã không được bỏ stash."
 
-#: git-stash.sh:647
+#: git-stash.sh:649
 msgid "The stash entry is kept in case you need it again."
 msgstr "Các mục tạm cất (stash) được giữ trong trường hợp bạn lại cần nó."
 
-#: git-stash.sh:656
+#: git-stash.sh:658
 #, sh-format
 msgid "Dropped ${REV} ($s)"
 msgstr "Đã xóa ${REV} ($s)"
 
-#: git-stash.sh:657
+#: git-stash.sh:659
 #, sh-format
 msgid "${REV}: Could not drop stash entry"
 msgstr "${REV}: Không thể xóa bỏ mục stash"
 
-#: git-stash.sh:665
+#: git-stash.sh:667
 msgid "No branch name specified"
 msgstr "Chưa chỉ ra tên của nhánh"
 
-#: git-stash.sh:744
+#: git-stash.sh:746
 msgid "(To restore them type \"git stash apply\")"
 msgstr "(Để phục hồi lại chúng hãy gõ \"git stash apply\")"
 
-#: git-submodule.sh:181
+#: git-submodule.sh:188
 msgid "Relative path can only be used from the toplevel of the working tree"
 msgstr ""
 "Đường dẫn tương đối chỉ có thể dùng từ thư mục ở mức cao nhất của cây làm "
 "việc"
 
-#: git-submodule.sh:191
+#: git-submodule.sh:198
 #, sh-format
 msgid "repo URL: '$repo' must be absolute or begin with ./|../"
 msgstr ""
 "repo URL: “$repo” phải là đường dẫn tuyệt đối hoặc là bắt đầu bằng ./|../"
 
-#: git-submodule.sh:210
+#: git-submodule.sh:217
 #, sh-format
 msgid "'$sm_path' already exists in the index"
 msgstr "”$sm_path” thực sự đã tồn tại ở bảng mục lục rồi"
 
-#: git-submodule.sh:213
+#: git-submodule.sh:220
 #, sh-format
 msgid "'$sm_path' already exists in the index and is not a submodule"
 msgstr ""
 "”$sm_path” thực sự đã tồn tại ở bảng mục lục rồi và không phải là một mô-đun-"
 "con"
 
-#: git-submodule.sh:219
+#: git-submodule.sh:226
 #, sh-format
 msgid ""
 "The following path is ignored by one of your .gitignore files:\n"
@@ -15640,23 +16733,23 @@ msgstr ""
 "$sm_path\n"
 "Sử dụng -f nếu bạn thực sự muốn thêm nó vào."
 
-#: git-submodule.sh:237
+#: git-submodule.sh:249
 #, sh-format
 msgid "Adding existing repo at '$sm_path' to the index"
 msgstr "Đang thêm repo có sẵn tại “$sm_path” vào bảng mục lục"
 
-#: git-submodule.sh:239
+#: git-submodule.sh:251
 #, sh-format
 msgid "'$sm_path' already exists and is not a valid git repo"
 msgstr "”$sm_path” đã tồn tại từ trước và không phải là một kho git hợp lệ"
 
-#: git-submodule.sh:247
+#: git-submodule.sh:259
 #, sh-format
 msgid "A git directory for '$sm_name' is found locally with remote(s):"
 msgstr ""
 "Thư mục git cho “$sm_name” được tìm thấy một cách cục bộ với các máy chủ:"
 
-#: git-submodule.sh:249
+#: git-submodule.sh:261
 #, sh-format
 msgid ""
 "If you want to reuse this local git directory instead of cloning again from\n"
@@ -15672,50 +16765,50 @@ msgstr ""
 "hoặc là bạn không chắc chắn điều đó nghĩa là gì thì chọn tên khác với tùy "
 "chọn “--name”."
 
-#: git-submodule.sh:255
+#: git-submodule.sh:267
 #, sh-format
 msgid "Reactivating local git directory for submodule '$sm_name'."
 msgstr ""
 "Phục hồi sự hoạt động của thư mục git nội bộ cho mô-đun-con “$sm_name”."
 
-#: git-submodule.sh:267
+#: git-submodule.sh:279
 #, sh-format
 msgid "Unable to checkout submodule '$sm_path'"
 msgstr "Không thể lấy ra mô-đun-con “$sm_path”"
 
-#: git-submodule.sh:272
+#: git-submodule.sh:284
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr "Gặp lỗi khi thêm mô-đun-con “$sm_path”"
 
-#: git-submodule.sh:281
+#: git-submodule.sh:293
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
 msgstr "Gặp lỗi khi đăng ký với hệ thống mô-đun-con “$sm_path”"
 
-#: git-submodule.sh:342
+#: git-submodule.sh:354
 #, sh-format
 msgid "Entering '$displaypath'"
 msgstr "Đang vào “$displaypath”"
 
-#: git-submodule.sh:362
+#: git-submodule.sh:374
 #, sh-format
 msgid "Stopping at '$displaypath'; script returned non-zero status."
 msgstr "Dừng lại tại “$displaypath”; script trả về trạng thái khác không."
 
-#: git-submodule.sh:584
+#: git-submodule.sh:600
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
 msgstr ""
 "Không tìm thấy điểm xét duyệt hiện hành trong đường dẫn mô-đun-con "
 "“$displaypath”"
 
-#: git-submodule.sh:594
+#: git-submodule.sh:610
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr "Không thể lấy về trong đường dẫn mô-đun-con “$sm_path”"
 
-#: git-submodule.sh:599
+#: git-submodule.sh:615
 #, sh-format
 msgid ""
 "Unable to find current ${remote_name}/${branch} revision in submodule path "
@@ -15724,12 +16817,12 @@ msgstr ""
 "Không thể tìm thấy điểm xét duyệt hiện hành ${remote_name}/${branch} trong "
 "đường dẫn mô-đun-con “$sm_path”"
 
-#: git-submodule.sh:617
+#: git-submodule.sh:633
 #, sh-format
 msgid "Unable to fetch in submodule path '$displaypath'"
 msgstr "Không thể lấy về trong đường dẫn mô-đun-con “$displaypath”"
 
-#: git-submodule.sh:623
+#: git-submodule.sh:639
 #, sh-format
 msgid ""
 "Fetched in submodule path '$displaypath', but it did not contain $sha1. "
@@ -15738,74 +16831,74 @@ msgstr ""
 "Đã lấy về từ đường dẫn mô-đun con “$displaypath”, nhưng nó không chứa $sha1. "
 "Lấy về theo định hướng của lần chuyển giao đó gặp lỗi."
 
-#: git-submodule.sh:630
+#: git-submodule.sh:646
 #, sh-format
 msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
 msgstr "Không thể lấy ra “$sha1” trong đường dẫn mô-đun-con “$displaypath”"
 
-#: git-submodule.sh:631
+#: git-submodule.sh:647
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
 msgstr "Đường dẫn mô-đun-con “$displaypath”: đã checkout “$sha1”"
 
-#: git-submodule.sh:635
+#: git-submodule.sh:651
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
 msgstr "Không thể cải tổ “$sha1” trong đường dẫn mô-đun-con “$displaypath”"
 
-#: git-submodule.sh:636
+#: git-submodule.sh:652
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
 msgstr "Đường dẫn mô-đun-con “$displaypath”: được rebase vào trong “$sha1”"
 
-#: git-submodule.sh:641
+#: git-submodule.sh:657
 #, sh-format
 msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
 msgstr ""
 "Không thể hòa trộn (merge) “$sha1” trong đường dẫn mô-đun-con “$displaypath”"
 
-#: git-submodule.sh:642
+#: git-submodule.sh:658
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
 msgstr "Đường dẫn mô-đun-con “$displaypath”: được hòa trộn vào “$sha1”"
 
-#: git-submodule.sh:647
+#: git-submodule.sh:663
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
 msgstr ""
 "Thực hiện không thành công lệnh “$command $sha1” trong đường dẫn mô-đun-con "
 "“$displaypath”"
 
-#: git-submodule.sh:648
+#: git-submodule.sh:664
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr "Đường dẫn mô-đun-con “$displaypath”: “$command $sha1”"
 
-#: git-submodule.sh:679
+#: git-submodule.sh:695
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "Gặp lỗi khi đệ quy vào trong đường dẫn mô-đun-con “$displaypath”"
 
-#: git-submodule.sh:775
+#: git-submodule.sh:791
 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:827
+#: git-submodule.sh:843
 #, sh-format
 msgid "unexpected mode $mod_dst"
 msgstr "chế độ không như mong chờ $mod_dst"
 
-#: git-submodule.sh:847
+#: git-submodule.sh:863
 #, 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:850
+#: git-submodule.sh:866
 #, 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:853
+#: git-submodule.sh:869
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
 msgstr ""
@@ -15817,40 +16910,55 @@ msgstr ""
 msgid "See git-${cmd}(1) for details."
 msgstr "Xem git-${cmd}(1) để biết thêm chi tiết."
 
-#: git-rebase--interactive.sh:140
+#: git-rebase--interactive.sh:142
 #, sh-format
 msgid "Rebasing ($new_count/$total)"
 msgstr "Đang rebase ($new_count/$total)"
 
-#: git-rebase--interactive.sh:156
+#: git-rebase--interactive.sh:158
 msgid ""
 "\n"
 "Commands:\n"
-"p, pick = use commit\n"
-"r, reword = use commit, but edit the commit message\n"
-"e, edit = use commit, but stop for amending\n"
-"s, squash = use commit, but meld into previous commit\n"
-"f, fixup = like \"squash\", but discard this commit's log message\n"
-"x, exec = run command (the rest of the line) using shell\n"
-"d, drop = remove commit\n"
+"p, pick <commit> = use commit\n"
+"r, reword <commit> = use commit, but edit the commit message\n"
+"e, edit <commit> = use commit, but stop for amending\n"
+"s, squash <commit> = use commit, but meld into previous commit\n"
+"f, fixup <commit> = like \"squash\", but discard this commit's log message\n"
+"x, exec <command> = run command (the rest of the line) using shell\n"
+"d, drop <commit> = remove commit\n"
+"l, label <label> = label current HEAD with a name\n"
+"t, reset <label> = reset HEAD to a label\n"
+"m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]\n"
+".       create a merge commit using the original merge commit's\n"
+".       message (or the oneline, if no original merge commit was\n"
+".       specified). Use -c <commit> to reword the commit message.\n"
 "\n"
 "These lines can be re-ordered; they are executed from top to bottom.\n"
 msgstr ""
 "\n"
 "Các lệnh:\n"
-" p, pick = dùng lần chuyển giao\n"
-" r, reword = dùng lần chuyển giao, nhưng sửa lại phần chú thích\n"
-" e, edit = dùng lần chuyển giao, nhưng dừng lại để tu bổ (amend)\n"
-" s, squash = dùng lần chuyển giao, nhưng meld vào lần chuyển giao kế trước\n"
-" f, fixup = giống như \"squash\", nhưng loại bỏ chú thích của lần chuyển "
-"giao này\n"
-" x, exec = chạy lệnh (phần còn lại của dòng) dùng hệ vỏ\n"
-" d, drop = xóa lần chuyển giao\n"
+"p, pick <commit> = dùng lần chuyển giao\n"
+"r, reword <commit> = dùng lần chuyển giao, nhưng sửa lại phần chú thích\n"
+"e, edit <commit> = dùng lần chuyển giao, nhưng dừng lại để tu bổ (amend)\n"
+"s, squash <commit> = dùng lần chuyển giao, nhưng meld vào lần chuyển giao kế "
+"trước\n"
+"f, fixup <commit> = giống như \"squash\", nhưng loại bỏ chú thích nhật ký "
+"của lần chuyển giao này\n"
+"x, exec <commit> = chạy lệnh (phần còn lại của dòng) dùng hệ vỏ\n"
+"d, drop <commit> = xóa lần chuyển giao\n"
+"l, label <label> = đánh nhãn HEAD hiện tại bằng một tên\n"
+"t, reset <label> = đặt lại HEAD thành một nhãn\n"
+"m, merge [-C <commit> | -c <commit>] <nhãn> [# <một_dòng>]\n"
+".       tạo một lần chuyển giao hòa trộn sử dụng chú thích của lần chuyển\n"
+".       giao hòa trộn gốc (hoặc một_dòng, nếu không chỉ định lần chuyển giao "
+"hòa\n"
+".       trộn gốc). Dùng -c <commit> để reword chú thích của lần chuyển "
+"giao.\n"
 "\n"
 "Những dòng này có thể đảo ngược thứ tự; chúng chạy từ trên đỉnh xuống dưới "
 "đáy.\n"
 
-#: git-rebase--interactive.sh:171
+#: git-rebase--interactive.sh:179
 msgid ""
 "\n"
 "Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
@@ -15859,7 +16967,7 @@ msgstr ""
 "Đừng xóa bất kỳ dòng nào. Dùng “drop” một cách rõ ràng để xóa bỏ một lần "
 "chuyển giao.\n"
 
-#: git-rebase--interactive.sh:175
+#: git-rebase--interactive.sh:183
 msgid ""
 "\n"
 "If you remove a line here THAT COMMIT WILL BE LOST.\n"
@@ -15867,7 +16975,7 @@ msgstr ""
 "\n"
 "Nếu bạn xóa bỏ một dòng ở đây thì LẦN CHUYỂN GIAO ĐÓ SẼ MẤT.\n"
 
-#: git-rebase--interactive.sh:213
+#: git-rebase--interactive.sh:221
 #, sh-format
 msgid ""
 "You can amend the commit now, with\n"
@@ -15886,82 +16994,82 @@ msgstr ""
 "\n"
 "\tgit rebase --continue"
 
-#: git-rebase--interactive.sh:238
+#: git-rebase--interactive.sh:246
 #, sh-format
 msgid "$sha1: not a commit that can be picked"
 msgstr "$sha1: không phải là lần chuyển giao mà có thể lấy ra được"
 
-#: git-rebase--interactive.sh:277
+#: git-rebase--interactive.sh:285
 #, sh-format
 msgid "Invalid commit name: $sha1"
 msgstr "Tên lần chuyển giao không hợp lệ: $sha1"
 
-#: git-rebase--interactive.sh:319
+#: git-rebase--interactive.sh:325
 msgid "Cannot write current commit's replacement sha1"
 msgstr "Không thể ghi lại sha1 thay thế của lần chuyển giao"
 
-#: git-rebase--interactive.sh:371
+#: git-rebase--interactive.sh:376
 #, sh-format
 msgid "Fast-forward to $sha1"
 msgstr "Chuyển-tiếp-nhanh đến $sha1"
 
-#: git-rebase--interactive.sh:373
+#: git-rebase--interactive.sh:378
 #, sh-format
 msgid "Cannot fast-forward to $sha1"
 msgstr "Không thể chuyển-tiếp-nhanh đến $sha1"
 
-#: git-rebase--interactive.sh:382
+#: git-rebase--interactive.sh:387
 #, sh-format
 msgid "Cannot move HEAD to $first_parent"
 msgstr "Không thể di chuyển HEAD đến $first_parent"
 
-#: git-rebase--interactive.sh:387
+#: git-rebase--interactive.sh:392
 #, sh-format
 msgid "Refusing to squash a merge: $sha1"
 msgstr "Từ chối squash lần hòa trộn: $sha1"
 
-#: git-rebase--interactive.sh:405
+#: git-rebase--interactive.sh:410
 #, sh-format
 msgid "Error redoing merge $sha1"
 msgstr "Gặp lỗi khi hoàn lại bước hòa trộn $sha1"
 
-#: git-rebase--interactive.sh:414
+#: git-rebase--interactive.sh:419
 #, sh-format
 msgid "Could not pick $sha1"
 msgstr "Không thể lấy ra $sha1"
 
-#: git-rebase--interactive.sh:423
+#: git-rebase--interactive.sh:428
 #, sh-format
 msgid "This is the commit message #${n}:"
 msgstr "Đây là chú thích cho lần chuyển giao thứ #${n}:"
 
-#: git-rebase--interactive.sh:428
+#: git-rebase--interactive.sh:433
 #, sh-format
 msgid "The commit message #${n} will be skipped:"
 msgstr "Chú thích cho lần chuyển giao thứ #${n} sẽ bị bỏ qua:"
 
-#: git-rebase--interactive.sh:439
+#: git-rebase--interactive.sh:444
 #, sh-format
 msgid "This is a combination of $count commit."
 msgid_plural "This is a combination of $count commits."
 msgstr[0] "Đây là tổ hợp của $count lần chuyển giao."
 
-#: git-rebase--interactive.sh:448
+#: git-rebase--interactive.sh:453
 #, sh-format
 msgid "Cannot write $fixup_msg"
 msgstr "Không thể $fixup_msg"
 
-#: git-rebase--interactive.sh:451
+#: git-rebase--interactive.sh:456
 msgid "This is a combination of 2 commits."
 msgstr "Đây là tổ hợp của 2 lần chuyển giao."
 
-#: git-rebase--interactive.sh:492 git-rebase--interactive.sh:535
-#: git-rebase--interactive.sh:538
+#: git-rebase--interactive.sh:497 git-rebase--interactive.sh:540
+#: git-rebase--interactive.sh:543
 #, sh-format
 msgid "Could not apply $sha1... $rest"
 msgstr "Không thể áp dụng $sha1… $rest"
 
-#: git-rebase--interactive.sh:567
+#: git-rebase--interactive.sh:572
 #, sh-format
 msgid ""
 "Could not amend commit after successfully picking $sha1... $rest\n"
@@ -15977,31 +17085,31 @@ msgstr ""
 "này\n"
 "trước khi bạn có thể làm việc lại với lần chuyển giao."
 
-#: git-rebase--interactive.sh:582
+#: git-rebase--interactive.sh:587
 #, sh-format
 msgid "Stopped at $sha1_abbrev... $rest"
 msgstr "Bị dừng tại $sha1_abbrev… $rest"
 
-#: git-rebase--interactive.sh:597
+#: git-rebase--interactive.sh:602
 #, sh-format
 msgid "Cannot '$squash_style' without a previous commit"
 msgstr "Không “$squash_style” thể mà không có lần chuyển giao kế trước"
 
-#: git-rebase--interactive.sh:639
+#: git-rebase--interactive.sh:644
 #, sh-format
 msgid "Executing: $rest"
 msgstr "Thực thi: $rest"
 
-#: git-rebase--interactive.sh:647
+#: git-rebase--interactive.sh:652
 #, sh-format
 msgid "Execution failed: $rest"
 msgstr "Thực thi gặp lỗi: $rest"
 
-#: git-rebase--interactive.sh:649
+#: git-rebase--interactive.sh:654
 msgid "and made changes to the index and/or the working tree"
 msgstr "và tạo các thay đổi bảng mục lục và/hay cây làm việc"
 
-#: git-rebase--interactive.sh:651
+#: git-rebase--interactive.sh:656
 msgid ""
 "You can fix the problem, and then run\n"
 "\n"
@@ -16012,7 +17120,7 @@ msgstr ""
 "\tgit rebase --continue"
 
 #. TRANSLATORS: after these lines is a command to be issued by the user
-#: git-rebase--interactive.sh:664
+#: git-rebase--interactive.sh:669
 #, sh-format
 msgid ""
 "Execution succeeded: $rest\n"
@@ -16027,29 +17135,29 @@ msgstr ""
 "\n"
 "\tgit rebase --continue"
 
-#: git-rebase--interactive.sh:675
+#: git-rebase--interactive.sh:680
 #, sh-format
 msgid "Unknown command: $command $sha1 $rest"
 msgstr "Lệnh chưa biết: $command $sha1 $rest"
 
-#: git-rebase--interactive.sh:676
+#: git-rebase--interactive.sh:681
 msgid "Please fix this using 'git rebase --edit-todo'."
 msgstr "Vui lòng sửa lỗi này bằng cách dùng “git rebase --edit-todo”."
 
-#: git-rebase--interactive.sh:711
+#: git-rebase--interactive.sh:716
 #, sh-format
 msgid "Successfully rebased and updated $head_name."
 msgstr "Cài tổ và cập nhật $head_name một cách thành công."
 
-#: git-rebase--interactive.sh:735
+#: git-rebase--interactive.sh:740
 msgid "could not detach HEAD"
 msgstr "không thể tách rời HEAD"
 
-#: git-rebase--interactive.sh:771
+#: git-rebase--interactive.sh:778
 msgid "Could not remove CHERRY_PICK_HEAD"
 msgstr "Không thể xóa bỏ CHERRY_PICK_HEAD"
 
-#: git-rebase--interactive.sh:776
+#: git-rebase--interactive.sh:783
 #, sh-format
 msgid ""
 "You have staged changes in your working tree.\n"
@@ -16080,11 +17188,11 @@ msgstr ""
 "\n"
 "  git rebase --continue\n"
 
-#: git-rebase--interactive.sh:793
+#: git-rebase--interactive.sh:800
 msgid "Error trying to find the author identity to amend commit"
 msgstr "Lỗi khi cố tìm định danh của tác giả để tu bổ lần chuyển giao"
 
-#: git-rebase--interactive.sh:798
+#: git-rebase--interactive.sh:805
 msgid ""
 "You have uncommitted changes in your working tree. Please commit them\n"
 "first and then run 'git rebase --continue' again."
@@ -16093,11 +17201,11 @@ msgstr ""
 "Vui lòng chuyển giao chúng và sau đó chạy lệnh “git rebase --continue” lần "
 "nữa."
 
-#: git-rebase--interactive.sh:803 git-rebase--interactive.sh:807
+#: git-rebase--interactive.sh:810 git-rebase--interactive.sh:814
 msgid "Could not commit staged changes."
 msgstr "Không thể chuyển giao các thay đổi đã đưa lên bệ phóng."
 
-#: git-rebase--interactive.sh:836
+#: git-rebase--interactive.sh:843
 msgid ""
 "\n"
 "You are editing the todo file of an ongoing interactive rebase.\n"
@@ -16111,55 +17219,58 @@ msgstr ""
 "    git rebase --continue\n"
 "\n"
 
-#: git-rebase--interactive.sh:844 git-rebase--interactive.sh:1008
+#: git-rebase--interactive.sh:851 git-rebase--interactive.sh:937
 msgid "Could not execute editor"
 msgstr "Không thể thực thi trình biên soạn"
 
-#: git-rebase--interactive.sh:860
+#: git-rebase--interactive.sh:872
 #, sh-format
 msgid "Could not checkout $switch_to"
 msgstr "Không thể checkout $switch_to"
 
-#: git-rebase--interactive.sh:865
+#: git-rebase--interactive.sh:879
 msgid "No HEAD?"
 msgstr "Không HEAD?"
 
-#: git-rebase--interactive.sh:866
+#: git-rebase--interactive.sh:880
 #, sh-format
 msgid "Could not create temporary $state_dir"
 msgstr "Không thể tạo thư mục tạm thời $state_dir"
 
-#: git-rebase--interactive.sh:869
+#: git-rebase--interactive.sh:883
 msgid "Could not mark as interactive"
 msgstr "Không thể đánh dấu là tương tác"
 
-#: git-rebase--interactive.sh:879 git-rebase--interactive.sh:884
-msgid "Could not init rewritten commits"
-msgstr "Không thể khởi tạo các lần chuyển giao ghi lại"
-
-#: git-rebase--interactive.sh:910
-msgid "Could not generate todo list"
-msgstr "Không thể tạo danh sách cần làm"
-
-#: git-rebase--interactive.sh:986
+#: git-rebase--interactive.sh:915
 #, sh-format
 msgid "Rebase $shortrevisions onto $shortonto ($todocount command)"
 msgid_plural "Rebase $shortrevisions onto $shortonto ($todocount commands)"
 msgstr[0] "Cải tổ $shortrevisions vào $shortonto (các lệnh $todocount)"
 
-#: git-rebase--interactive.sh:991
+#: git-rebase--interactive.sh:920
 msgid ""
 "\n"
-"However, if you remove everything, the rebase will be aborted.\n"
+"\tHowever, if you remove everything, the rebase will be aborted.\n"
 "\n"
+"\t"
 msgstr ""
 "\n"
-"Tuy nhiên, nếu bạn xóa bỏ mọi thứ, việc cải tổ sẽ bị bãi bỏ.\n"
+"\tTuy nhiên, nếu bạn xóa bỏ mọi thứ, việc cải tổ sẽ bị bãi bỏ.\n"
+"\n"
+"\t"
 
-#: git-rebase--interactive.sh:998
+#: git-rebase--interactive.sh:927
 msgid "Note that empty commits are commented out"
 msgstr "Chú ý rằng lần chuyển giao trống rỗng là ghi chú"
 
+#: git-rebase--interactive.sh:980
+msgid "Could not generate todo list"
+msgstr "Không thể tạo danh sách cần làm"
+
+#: git-rebase--interactive.sh:1001 git-rebase--interactive.sh:1006
+msgid "Could not init rewritten commits"
+msgstr "Không thể khởi tạo các lần chuyển giao ghi lại"
+
 #: git-sh-setup.sh:89 git-sh-setup.sh:94
 #, sh-format
 msgid "usage: $dashless $USAGE"
@@ -16240,64 +17351,64 @@ msgstr "đã đưa lên bệ phóng"
 msgid "unstaged"
 msgstr "chưa đưa lên bệ phóng"
 
-#: git-add--interactive.perl:246 git-add--interactive.perl:271
+#: git-add--interactive.perl:253 git-add--interactive.perl:278
 msgid "binary"
 msgstr "nhị phân"
 
-#: git-add--interactive.perl:255 git-add--interactive.perl:309
+#: git-add--interactive.perl:262 git-add--interactive.perl:316
 msgid "nothing"
 msgstr "không có gì"
 
-#: git-add--interactive.perl:291 git-add--interactive.perl:306
+#: git-add--interactive.perl:298 git-add--interactive.perl:313
 msgid "unchanged"
 msgstr "không thay đổi"
 
-#: git-add--interactive.perl:602
+#: git-add--interactive.perl:609
 #, perl-format
 msgid "added %d path\n"
 msgid_plural "added %d paths\n"
 msgstr[0] "đã thêm %d đường dẫn\n"
 
-#: git-add--interactive.perl:605
+#: git-add--interactive.perl:612
 #, perl-format
 msgid "updated %d path\n"
 msgid_plural "updated %d paths\n"
 msgstr[0] "đã cập nhật %d đường dẫn\n"
 
-#: git-add--interactive.perl:608
+#: git-add--interactive.perl:615
 #, perl-format
 msgid "reverted %d path\n"
 msgid_plural "reverted %d paths\n"
 msgstr[0] "đã hoàn nguyên %d đường dẫn\n"
 
-#: git-add--interactive.perl:611
+#: git-add--interactive.perl:618
 #, perl-format
 msgid "touched %d path\n"
 msgid_plural "touched %d paths\n"
 msgstr[0] "%d đường dẫn đã touch (chạm)\n"
 
-#: git-add--interactive.perl:620
+#: git-add--interactive.perl:627
 msgid "Update"
 msgstr "Cập nhật"
 
-#: git-add--interactive.perl:632
+#: git-add--interactive.perl:639
 msgid "Revert"
 msgstr "Hoàn nguyên"
 
-#: git-add--interactive.perl:655
+#: git-add--interactive.perl:662
 #, perl-format
 msgid "note: %s is untracked now.\n"
 msgstr "chú ý: %s giờ đã bỏ theo dõi.\n"
 
-#: git-add--interactive.perl:666
+#: git-add--interactive.perl:673
 msgid "Add untracked"
 msgstr "Thêm các cái chưa được theo dõi"
 
-#: git-add--interactive.perl:672
+#: git-add--interactive.perl:679
 msgid "No untracked files.\n"
 msgstr "Không có tập tin nào chưa được theo dõi.\n"
 
-#: git-add--interactive.perl:1026
+#: git-add--interactive.perl:1033
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
@@ -16305,7 +17416,7 @@ msgstr ""
 "Nếu miếng vá được áp dụng sạch sẽ, hunk đã sửa sẽ ngay lập tức\n"
 "được đánh dấu để chuyển lên bệ phóng."
 
-#: git-add--interactive.perl:1029
+#: git-add--interactive.perl:1036
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
@@ -16313,7 +17424,7 @@ msgstr ""
 "Nếu miếng vá được áp dụng sạch sẽ, hunk đã sửa sẽ ngay lập tức\n"
 "được đánh dấu để tạm cất."
 
-#: git-add--interactive.perl:1032
+#: git-add--interactive.perl:1039
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
@@ -16321,7 +17432,7 @@ msgstr ""
 "Nếu miếng vá được áp dụng sạch sẽ, hunk đã 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:1035 git-add--interactive.perl:1044
+#: git-add--interactive.perl:1042 git-add--interactive.perl:1051
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
@@ -16329,7 +17440,7 @@ msgstr ""
 "Nếu miếng vá được áp dụng sạch sẽ, hunk đã sửa sẽ ngay lập tức\n"
 "được đánh dấu để áp dụng."
 
-#: git-add--interactive.perl:1038 git-add--interactive.perl:1041
+#: git-add--interactive.perl:1045 git-add--interactive.perl:1048
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
@@ -16337,16 +17448,16 @@ msgstr ""
 "Nếu miếng vá được áp dụng sạch sẽ, hunk đã sửa sẽ ngay lập tức\n"
 "được đánh dấu để loại bỏ."
 
-#: git-add--interactive.perl:1078
+#: git-add--interactive.perl:1085
 #, perl-format
 msgid "failed to open hunk edit file for writing: %s"
 msgstr "gặp lỗi khi tập tin sửa hunk để ghi: %s"
 
-#: git-add--interactive.perl:1079
+#: git-add--interactive.perl:1086
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr "Chế độ sửa hunk bằng tay -- xem ở đáy để có hướng dẫn sử dụng nhanh.\n"
 
-#: git-add--interactive.perl:1085
+#: git-add--interactive.perl:1092
 #, perl-format
 msgid ""
 "---\n"
@@ -16360,7 +17471,7 @@ msgstr ""
 "Những dòng bắt đầu bằng %s sẽ bị loại bỏ.\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: git-add--interactive.perl:1093
+#: git-add--interactive.perl:1100
 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"
@@ -16370,7 +17481,7 @@ msgstr ""
 "để sửa lần nữa. Nếu mọi dòng của hunk bị xóa bỏ, thế thì những\n"
 "sửa dổi sẽ bị loại bỏ, và hunk vẫn giữ nguyên.\n"
 
-#: git-add--interactive.perl:1107
+#: git-add--interactive.perl:1114
 #, perl-format
 msgid "failed to open hunk edit file for reading: %s"
 msgstr "gặp lỗi khi mở tập tin hunk để đọc: %s"
@@ -16381,14 +17492,14 @@ msgstr "gặp lỗi khi mở tập tin hunk để đọc: %s"
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: git-add--interactive.perl:1206
+#: git-add--interactive.perl:1213
 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]? "
 
-#: git-add--interactive.perl:1215
+#: git-add--interactive.perl:1222
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -16403,7 +17514,7 @@ msgstr ""
 "d - đừng đưa lên bệ phóng hunk này cũng như bất kỳ cái nào còn lại trong tập "
 "tin"
 
-#: git-add--interactive.perl:1221
+#: git-add--interactive.perl:1228
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -16417,7 +17528,7 @@ msgstr ""
 "a - tạm cất hunk này và tất cả các hunk sau này trong tập tin\n"
 "d - đừng tạm cất hunk này cũng như bất kỳ cái nào còn lại trong tập tin"
 
-#: git-add--interactive.perl:1227
+#: git-add--interactive.perl:1234
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -16433,7 +17544,7 @@ msgstr ""
 "d - đừng đưa ra khỏi bệ phóng hunk này cũng như bất kỳ cái nào còn lại trong "
 "tập tin"
 
-#: git-add--interactive.perl:1233
+#: git-add--interactive.perl:1240
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -16447,7 +17558,7 @@ msgstr ""
 "a - áp dụng hunk này và tất cả các hunk sau này trong tập tin\n"
 "d - đừng áp dụng hunk này cũng như bất kỳ cái nào sau này trong tập tin"
 
-#: git-add--interactive.perl:1239
+#: git-add--interactive.perl:1246
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -16461,7 +17572,7 @@ msgstr ""
 "a - loại bỏ hunk này và tất cả các hunk sau này trong tập tin\n"
 "d - đừng loại bỏ hunk này cũng như bất kỳ cái nào sau này trong tập tin"
 
-#: git-add--interactive.perl:1245
+#: git-add--interactive.perl:1252
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -16475,7 +17586,7 @@ msgstr ""
 "a - loại bỏ hunk này và tất cả các hunk sau này trong tập tin\n"
 "d - đừng loại bỏ hunk này cũng như bất kỳ cái nào sau này trong tập tin"
 
-#: git-add--interactive.perl:1251
+#: git-add--interactive.perl:1258
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -16489,7 +17600,7 @@ msgstr ""
 "a - áp dụng hunk này và tất cả các hunk sau này trong tập tin\n"
 "d - đừng áp dụng hunk này cũng như bất kỳ cái nào sau này trong tập tin"
 
-#: git-add--interactive.perl:1266
+#: git-add--interactive.perl:1273
 msgid ""
 "g - select a hunk to go to\n"
 "/ - search for a hunk matching the given regex\n"
@@ -16511,209 +17622,209 @@ msgstr ""
 "e - sửa bằng tay hunk hiện hành\n"
 "? - in trợ giúp\n"
 
-#: git-add--interactive.perl:1297
+#: git-add--interactive.perl:1304
 msgid "The selected hunks do not apply to the index!\n"
 msgstr "Các hunk đã chọn không được áp dụng vào bảng mục lục!\n"
 
-#: git-add--interactive.perl:1298
+#: git-add--interactive.perl:1305
 msgid "Apply them to the worktree anyway? "
 msgstr "Vẫn áp dụng chúng cho cây làm việc? "
 
-#: git-add--interactive.perl:1301
+#: git-add--interactive.perl:1308
 msgid "Nothing was applied.\n"
 msgstr "Đã không áp dụng gì cả.\n"
 
-#: git-add--interactive.perl:1312
+#: git-add--interactive.perl:1319
 #, 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:1321
+#: git-add--interactive.perl:1328
 msgid "Only binary files changed.\n"
 msgstr "Chỉ có các tập tin nhị phân là thay đổi.\n"
 
-#: git-add--interactive.perl:1323
+#: git-add--interactive.perl:1330
 msgid "No changes.\n"
 msgstr "Không có thay đổi nào.\n"
 
-#: git-add--interactive.perl:1331
+#: git-add--interactive.perl:1338
 msgid "Patch update"
 msgstr "Cập nhật miếng vá"
 
-#: git-add--interactive.perl:1383
+#: git-add--interactive.perl:1390
 #, 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,?]? "
 
-#: git-add--interactive.perl:1384
+#: git-add--interactive.perl:1391
 #, 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,?]? "
 
-#: git-add--interactive.perl:1385
+#: git-add--interactive.perl:1392
 #, perl-format
 msgid "Stage this hunk [y,n,q,a,d%s,?]? "
 msgstr "Đưa lên bệ phóng hunk này [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1388
+#: git-add--interactive.perl:1395
 #, 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,?]? "
 
-#: git-add--interactive.perl:1389
+#: git-add--interactive.perl:1396
 #, perl-format
 msgid "Stash deletion [y,n,q,a,d%s,?]? "
 msgstr "Xóa tạm cất [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1390
+#: git-add--interactive.perl:1397
 #, perl-format
 msgid "Stash this hunk [y,n,q,a,d%s,?]? "
 msgstr "Tạm cất hunk này [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1393
+#: git-add--interactive.perl:1400
 #, 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,?]? "
 
-#: git-add--interactive.perl:1394
+#: git-add--interactive.perl:1401
 #, 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,?]? "
 
-#: git-add--interactive.perl:1395
+#: git-add--interactive.perl:1402
 #, perl-format
 msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
 msgstr "Bỏ ra khỏi bệ phóng hunk này [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1398
+#: git-add--interactive.perl:1405
 #, 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,?]? "
 
-#: git-add--interactive.perl:1399
+#: git-add--interactive.perl:1406
 #, 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,?]? "
 
-#: git-add--interactive.perl:1400
+#: git-add--interactive.perl:1407
 #, perl-format
 msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
 msgstr "Áo dụng hunk này vào mục lục [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1403
+#: git-add--interactive.perl:1410
 #, 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,?]? "
 
-#: git-add--interactive.perl:1404
+#: git-add--interactive.perl:1411
 #, 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,?]? "
 
-#: git-add--interactive.perl:1405
+#: git-add--interactive.perl:1412
 #, perl-format
 msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
 msgstr "Loại bỏ hunk này khỏi cây làm việc [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1408
+#: git-add--interactive.perl:1415
 #, 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,?]? "
 
-#: git-add--interactive.perl:1409
+#: git-add--interactive.perl:1416
 #, 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,?]? "
 
-#: git-add--interactive.perl:1410
+#: git-add--interactive.perl:1417
 #, perl-format
 msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Loại bỏ hunk này khỏi mục lục và cây làm việc [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1413
+#: git-add--interactive.perl:1420
 #, 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,?]? "
 
-#: git-add--interactive.perl:1414
+#: git-add--interactive.perl:1421
 #, 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,?]? "
 
-#: git-add--interactive.perl:1415
+#: git-add--interactive.perl:1422
 #, perl-format
 msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "Áp dụng hunk này vào mục lục và cây làm việc [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1515
+#: git-add--interactive.perl:1522
 msgid "No other hunks to goto\n"
 msgstr "Không còn hunk nào để mà nhảy đến\n"
 
-#: git-add--interactive.perl:1522
+#: git-add--interactive.perl:1529
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "nhảy đến hunk nào (<ret> để xem thêm)? "
 
-#: git-add--interactive.perl:1524
+#: git-add--interactive.perl:1531
 msgid "go to which hunk? "
 msgstr "nhảy đến hunk nào?"
 
-#: git-add--interactive.perl:1533
+#: git-add--interactive.perl:1540
 #, perl-format
 msgid "Invalid number: '%s'\n"
 msgstr "Số không hợp lệ: “%s”\n"
 
-#: git-add--interactive.perl:1538
+#: git-add--interactive.perl:1545
 #, 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 hunk..\n"
 
-#: git-add--interactive.perl:1564
+#: git-add--interactive.perl:1571
 msgid "No other hunks to search\n"
 msgstr "Không còn hunk nào để mà tìm kiếm\n"
 
-#: git-add--interactive.perl:1568
+#: git-add--interactive.perl:1575
 msgid "search for regex? "
 msgstr "tìm kiếm cho regex? "
 
-#: git-add--interactive.perl:1581
+#: git-add--interactive.perl:1588
 #, 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:1591
+#: git-add--interactive.perl:1598
 msgid "No hunk matches the given pattern\n"
 msgstr "Không thấy hunk nào khớp mẫu đã cho\n"
 
-#: git-add--interactive.perl:1603 git-add--interactive.perl:1625
+#: git-add--interactive.perl:1610 git-add--interactive.perl:1632
 msgid "No previous hunk\n"
 msgstr "Không có hunk kế trước\n"
 
-#: git-add--interactive.perl:1612 git-add--interactive.perl:1631
+#: git-add--interactive.perl:1619 git-add--interactive.perl:1638
 msgid "No next hunk\n"
 msgstr "Không có hunk kế tiếp\n"
 
-#: git-add--interactive.perl:1637
+#: git-add--interactive.perl:1644
 msgid "Sorry, cannot split this hunk\n"
 msgstr "Rất tiếc, không thể chia nhỏ hunk này\n"
 
-#: git-add--interactive.perl:1643
+#: git-add--interactive.perl:1650
 #, perl-format
 msgid "Split into %d hunk.\n"
 msgid_plural "Split into %d hunks.\n"
 msgstr[0] "Chi nhỏ thành %d hunks.\n"
 
-#: git-add--interactive.perl:1653
+#: git-add--interactive.perl:1660
 msgid "Sorry, cannot edit this hunk\n"
 msgstr "Rất tiếc, không thể sửa hunk này\n"
 
-#: git-add--interactive.perl:1699
+#: git-add--interactive.perl:1706
 msgid "Review diff"
 msgstr "Xem xét lại diff"
 
 #. TRANSLATORS: please do not translate the command names
 #. 'status', 'update', 'revert', etc.
-#: git-add--interactive.perl:1718
+#: git-add--interactive.perl:1725
 msgid ""
 "status        - show paths with changes\n"
 "update        - add working tree state to the staged set of changes\n"
@@ -16733,18 +17844,18 @@ msgstr ""
 "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:1735 git-add--interactive.perl:1740
-#: git-add--interactive.perl:1743 git-add--interactive.perl:1750
-#: git-add--interactive.perl:1754 git-add--interactive.perl:1760
+#: git-add--interactive.perl:1742 git-add--interactive.perl:1747
+#: git-add--interactive.perl:1750 git-add--interactive.perl:1757
+#: git-add--interactive.perl:1761 git-add--interactive.perl:1767
 msgid "missing --"
 msgstr "thiếu --"
 
-#: git-add--interactive.perl:1756
+#: git-add--interactive.perl:1763
 #, perl-format
 msgid "unknown --patch mode: %s"
 msgstr "không hiểu chế độ --patch: %s"
 
-#: git-add--interactive.perl:1762 git-add--interactive.perl:1768
+#: git-add--interactive.perl:1769 git-add--interactive.perl:1775
 #, perl-format
 msgid "invalid argument %s, expecting --"
 msgstr "đối số không hợp lệ %s, cần --"
@@ -16956,7 +18067,7 @@ msgstr "Làm gì với địa chỉ này? (thoát[q]|xóa[d]|sửa[e]): "
 msgid "CA path \"%s\" does not exist"
 msgstr "đường dẫn CA “%s” không tồn tại"
 
-#: git-send-email.perl:1395
+#: git-send-email.perl:1400
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -16980,136 +18091,166 @@ msgstr ""
 "    chạy “git config --global sendemail.confirm auto”.\n"
 "\n"
 
-#. TRANSLATORS: Make sure to include [y] [n] [q] [a] in your
+#. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1410
-msgid "Send this email? ([y]es|[n]o|[q]uit|[a]ll): "
-msgstr "Gửi thư này chứ? ([y]có|[n]không|[q]thoát|[a]tất): "
+#: git-send-email.perl:1415
+msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
+msgstr "Gửi thư này chứ? ([y]có|[n]không|[e]sửa|[q]thoát|[a]tất): "
 
-#: git-send-email.perl:1413
+#: git-send-email.perl:1418
 msgid "Send this email reply required"
 msgstr "Gửi thư này trả lời yêu cầu"
 
-#: git-send-email.perl:1439
+#: git-send-email.perl:1446
 msgid "The required SMTP server is not properly defined."
 msgstr "Máy phục vụ SMTP chưa được định nghĩa một cách thích hợp."
 
-#: git-send-email.perl:1486
+#: git-send-email.perl:1493
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
 msgstr "Máy chủ không hỗ trợ STARTTLS! %s"
 
-#: git-send-email.perl:1491 git-send-email.perl:1495
+#: git-send-email.perl:1498 git-send-email.perl:1502
 #, perl-format
 msgid "STARTTLS failed! %s"
 msgstr "STARTTLS gặp lỗi! %s"
 
-#: git-send-email.perl:1505
+#: git-send-email.perl:1512
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
 msgstr ""
 "Không thể khởi tạo SMTP một cách đúng đắn. Kiểm tra cấu hình và dùng --smtp-"
 "debug."
 
-#: git-send-email.perl:1523
+#: git-send-email.perl:1530
 #, perl-format
 msgid "Failed to send %s\n"
 msgstr "Gặp lỗi khi gửi %s\n"
 
-#: git-send-email.perl:1526
+#: git-send-email.perl:1533
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr "Thử gửi %s\n"
 
-#: git-send-email.perl:1526
+#: git-send-email.perl:1533
 #, perl-format
 msgid "Sent %s\n"
 msgstr "Gửi %s\n"
 
-#: git-send-email.perl:1528
+#: git-send-email.perl:1535
 msgid "Dry-OK. Log says:\n"
 msgstr "Dry-OK. Nhật ký nói rằng:\n"
 
-#: git-send-email.perl:1528
+#: git-send-email.perl:1535
 msgid "OK. Log says:\n"
 msgstr "OK. Nhật ký nói rằng:\n"
 
-#: git-send-email.perl:1540
+#: git-send-email.perl:1547
 msgid "Result: "
 msgstr "Kết quả: "
 
-#: git-send-email.perl:1543
+#: git-send-email.perl:1550
 msgid "Result: OK\n"
 msgstr "Kết quả: Tốt\n"
 
-#: git-send-email.perl:1556
+#: git-send-email.perl:1568
 #, perl-format
 msgid "can't open file %s"
 msgstr "không thể mở tập tin “%s”"
 
-#: git-send-email.perl:1603 git-send-email.perl:1623
+#: git-send-email.perl:1615 git-send-email.perl:1635
 #, perl-format
 msgid "(mbox) Adding cc: %s from line '%s'\n"
 msgstr "(mbox) Thêm cc: %s từ dòng “%s”\n"
 
-#: git-send-email.perl:1609
+#: git-send-email.perl:1621
 #, perl-format
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) Đang thêm to: %s từ dòng “%s”\n"
 
-#: git-send-email.perl:1657
+#: git-send-email.perl:1674
 #, 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:1682
+#: git-send-email.perl:1699
 #, 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:1788
+#: git-send-email.perl:1817
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) Không thể thực thi “%s”"
 
-#: git-send-email.perl:1795
+#: git-send-email.perl:1824
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) Đang thêm %s: %s từ: “%s”\n"
 
-#: git-send-email.perl:1799
+#: git-send-email.perl:1828
 #, 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:1826
+#: git-send-email.perl:1855
 msgid "cannot send message as 7bit"
 msgstr "không thể lấy gửi thư dạng 7 bít"
 
-#: git-send-email.perl:1834
+#: git-send-email.perl:1863
 msgid "invalid transfer encoding"
 msgstr "bảng mã truyền không hợp lệ"
 
-#: git-send-email.perl:1872 git-send-email.perl:1923 git-send-email.perl:1933
+#: git-send-email.perl:1901 git-send-email.perl:1952 git-send-email.perl:1962
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "không thể mở %s: %s\n"
 
-#: git-send-email.perl:1875
+#: git-send-email.perl:1904
 #, 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:1891
+#: git-send-email.perl:1920
 #, 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:1895
+#: git-send-email.perl:1924
 #, 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]: "
+msgstr "Bạn có thực sự muốn gửi %s? [y|N](có/KHÔNG): "
+
+#~ msgid "Everyday Git With 20 Commands Or So"
+#~ msgstr "Mỗi ngày học 20 lệnh Git hay hơn"
+
+#~ msgid "Could not open '%s' for writing"
+#~ msgstr "Không thể mở “%s” để ghi"
+
+#~ msgid ""
+#~ "unexpected 1st line of squash message:\n"
+#~ "\n"
+#~ "\t%.*s"
+#~ msgstr ""
+#~ "không cần dòng thứ nhất của ghi chú squash:\n"
+#~ "\n"
+#~ "\t%.*s"
+
+#~ msgid ""
+#~ "invalid 1st line of squash message:\n"
+#~ "\n"
+#~ "\t%.*s"
+#~ msgstr ""
+#~ "dòng thứ nhất của ghi chú squash không hợp lệ:\n"
+#~ "\n"
+#~ "\t%.*s"
+
+#~ msgid "BUG: returned path string doesn't match cwd?"
+#~ msgstr "LỖI: trả về chuỗi đường dẫn không khớp cwd?"
+
+#~ msgid "Error in object"
+#~ msgstr "Lỗi trong đối tượng"
 
 #~ msgid "git fetch-pack: expected ACK/NAK, got EOF"
 #~ msgstr "git fetch-pack: cần ACK/NAK, nhưng lại nhận được EOF"
@@ -17305,9 +18446,6 @@ msgstr "Bạn có thực sự muốn gửi %s? [y|N]: "
 #~ msgid "blob object"
 #~ msgstr "đối tượng blob"
 
-#~ msgid "other tag object"
-#~ msgstr "đối tượng thẻ khác"
-
 #~ msgid ""
 #~ "There is nothing to exclude from by :(exclude) patterns.\n"
 #~ "Perhaps you forgot to add either ':/' or '.' ?"
@@ -17671,9 +18809,6 @@ msgstr "Bạn có thực sự muốn gửi %s? [y|N]: "
 #~ "Vui lòng đưa các thay đổi của bạn vào “.gitmodules” hay tạm cất chúng đi "
 #~ "để xử lý"
 
-#~ msgid "could not verify the tag '%s'"
-#~ msgstr "không thể thẩm tra thẻ “%s”"
-
 #~ msgid "failed to remove: %s"
 #~ msgstr "gặp lỗi khi gỡ bỏ: %s"
 
@@ -17865,9 +19000,6 @@ msgstr "Bạn có thực sự muốn gửi %s? [y|N]: "
 #~ msgid "no branch specified"
 #~ msgstr "chưa chỉ ra tên của nhánh"
 
-#~ msgid "check a branch out in a separate working directory"
-#~ msgstr "lấy ra một nhánh trong một thư mục làm việc cách biệt"
-
 #~ msgid "prune .git/worktrees"
 #~ msgstr "xén .git/worktrees"
 
@@ -18078,9 +19210,6 @@ msgstr "Bạn có thực sự muốn gửi %s? [y|N]: "
 #~ msgid "more than %d trees given: '%s'"
 #~ msgstr "đã chỉ ra nhiều hơn %d cây (tree): “%s”"
 
-#~ msgid "You cannot combine --no-ff with --ff-only."
-#~ msgstr "Bạn không thể kết hợp --no-ff với --ff-only."
-
 #~ msgid ""
 #~ "'%s' has changes staged in the index\n"
 #~ "(use --cached to keep the file, or -f to force removal)"
index fa3f48445633ca3a86b12665a88c7feb40ec5fdf..239a54a7e3f7fa12bda5af07b4af1c56150a306b 100644 (file)
@@ -58,7 +58,7 @@
 #   fork                             |  派生
 #   Git archive                      |  仓库(对于 arch 用户)
 #   gitfile                          |  gitfile(仓库链接文件)
-#   grafts                           |  (提交)嫁接
+#   grafts                           |  (提交)移植
 #   hash                             |  哈希值
 #   HEAD                             |  HEAD(头指针,亦即当前分支)
 #   head                             |  头、分支
@@ -138,8 +138,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2018-03-16 07:29+0800\n"
-"PO-Revision-Date: 2018-03-25 22:20+0800\n"
+"POT-Creation-Date: 2018-06-16 22:06+0800\n"
+"PO-Revision-Date: 2018-06-18 00:28+0800\n"
 "Last-Translator: Jiang Xin <worldhello.net@gmail.com>\n"
 "Language-Team: GitHub <https://github.com/jiangxin/git/>\n"
 "Language: zh_CN\n"
@@ -148,37 +148,37 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: advice.c:62
+#: advice.c:92
 #, c-format
-msgid "hint: %.*s\n"
-msgstr "提示:%.*s\n"
+msgid "%shint: %.*s%s\n"
+msgstr "%s提示:%.*s%s\n"
 
-#: advice.c:90
+#: advice.c:137
 msgid "Cherry-picking is not possible because you have unmerged files."
 msgstr "无法拣选,因为您有未合并的文件。"
 
-#: advice.c:92
+#: advice.c:139
 msgid "Committing is not possible because you have unmerged files."
 msgstr "无法提交,因为您有未合并的文件。"
 
-#: advice.c:94
+#: advice.c:141
 msgid "Merging is not possible because you have unmerged files."
 msgstr "无法合并,因为您有未合并的文件。"
 
-#: advice.c:96
+#: advice.c:143
 msgid "Pulling is not possible because you have unmerged files."
 msgstr "无法拉取,因为您有未合并的文件。"
 
-#: advice.c:98
+#: advice.c:145
 msgid "Reverting is not possible because you have unmerged files."
 msgstr "无法回退,因为您有未合并的文件。"
 
-#: advice.c:100
+#: advice.c:147
 #, c-format
 msgid "It is not possible to %s because you have unmerged files."
 msgstr "无法 %s,因为您有未合并的文件。"
 
-#: advice.c:108
+#: advice.c:155
 msgid ""
 "Fix them up in the work tree, and then use 'git add/rm <file>'\n"
 "as appropriate to mark resolution and make a commit."
@@ -186,23 +186,23 @@ msgstr ""
 "请在工作区改正文件,然后酌情使用 'git add/rm <文件>' 命令标记\n"
 "解决方案并提交。"
 
-#: advice.c:116
+#: advice.c:163
 msgid "Exiting because of an unresolved conflict."
 msgstr "因为存在未解决的冲突而退出。"
 
-#: advice.c:121 builtin/merge.c:1251
+#: advice.c:168 builtin/merge.c:1250
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "您尚未结束您的合并(存在 MERGE_HEAD)。"
 
-#: advice.c:123
+#: advice.c:170
 msgid "Please, commit your changes before merging."
 msgstr "请在合并前先提交您的修改。"
 
-#: advice.c:124
+#: advice.c:171
 msgid "Exiting because of unfinished merge."
 msgstr "因为存在未完成的合并而退出。"
 
-#: advice.c:130
+#: advice.c:177
 #, c-format
 msgid ""
 "Note: checking out '%s'.\n"
@@ -460,7 +460,7 @@ msgstr "打补丁失败:%s:%ld"
 msgid "cannot checkout %s"
 msgstr "不能检出 %s"
 
-#: apply.c:3396 apply.c:3407 apply.c:3453 setup.c:277
+#: apply.c:3396 apply.c:3407 apply.c:3453 setup.c:278
 #, c-format
 msgid "failed to read %s"
 msgstr "无法读取 %s"
@@ -659,7 +659,7 @@ msgstr[1] "应用 %%s 个补丁,其中 %d 个被拒绝..."
 msgid "truncating .rej filename to %.*s.rej"
 msgstr "截短 .rej 文件名为 %.*s.rej"
 
-#: apply.c:4545 builtin/fetch.c:775 builtin/fetch.c:1025
+#: apply.c:4545 builtin/fetch.c:786 builtin/fetch.c:1036
 #, c-format
 msgid "cannot open %s"
 msgstr "不能打开 %s"
@@ -713,15 +713,15 @@ msgid_plural "%d lines applied after fixing whitespace errors."
 msgstr[0] "修复空白错误后,应用了 %d 行。"
 msgstr[1] "修复空白错误后,应用了 %d 行。"
 
-#: apply.c:4894 builtin/add.c:539 builtin/mv.c:298 builtin/rm.c:390
+#: apply.c:4894 builtin/add.c:538 builtin/mv.c:300 builtin/rm.c:389
 msgid "Unable to write new index file"
 msgstr "无法写入新索引文件"
 
 #: apply.c:4921 apply.c:4924 builtin/am.c:2254 builtin/am.c:2257
-#: builtin/clone.c:118 builtin/fetch.c:127 builtin/pull.c:193
-#: builtin/submodule--helper.c:403 builtin/submodule--helper.c:1197
-#: builtin/submodule--helper.c:1200 builtin/submodule--helper.c:1567
-#: builtin/submodule--helper.c:1570 builtin/submodule--helper.c:1787
+#: builtin/clone.c:120 builtin/fetch.c:126 builtin/pull.c:198
+#: builtin/submodule--helper.c:405 builtin/submodule--helper.c:1210
+#: builtin/submodule--helper.c:1213 builtin/submodule--helper.c:1584
+#: builtin/submodule--helper.c:1587 builtin/submodule--helper.c:1807
 #: git-add--interactive.perl:197
 msgid "path"
 msgstr "路径"
@@ -796,7 +796,7 @@ msgstr "确保至少匹配 <n> 行上下文"
 
 #: apply.c:4960 builtin/am.c:2242 builtin/interpret-trailers.c:95
 #: builtin/interpret-trailers.c:97 builtin/interpret-trailers.c:99
-#: builtin/pack-objects.c:3035
+#: builtin/pack-objects.c:3177
 msgid "action"
 msgstr "动作"
 
@@ -824,9 +824,9 @@ msgstr "将拒绝的补丁片段保存在对应的 *.rej 文件中"
 msgid "allow overlapping hunks"
 msgstr "允许重叠的补丁片段"
 
-#: apply.c:4977 builtin/add.c:292 builtin/check-ignore.c:21
-#: builtin/commit.c:1276 builtin/count-objects.c:96 builtin/fsck.c:665
-#: builtin/log.c:1901 builtin/mv.c:123 builtin/read-tree.c:125
+#: apply.c:4977 builtin/add.c:290 builtin/check-ignore.c:21
+#: builtin/commit.c:1301 builtin/count-objects.c:98 builtin/fsck.c:666
+#: builtin/log.c:1901 builtin/mv.c:122 builtin/read-tree.c:124
 msgid "be verbose"
 msgstr "冗长输出"
 
@@ -864,98 +864,98 @@ msgstr ""
 msgid "git archive --remote <repo> [--exec <cmd>] --list"
 msgstr "git archive --remote <仓库> [--exec <命令>] --list"
 
-#: archive.c:351 builtin/add.c:176 builtin/add.c:515 builtin/rm.c:299
+#: archive.c:351 builtin/add.c:176 builtin/add.c:514 builtin/rm.c:298
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "路径规格 '%s' 未匹配任何文件"
 
-#: archive.c:436
+#: archive.c:434
 msgid "fmt"
 msgstr "格式"
 
-#: archive.c:436
+#: archive.c:434
 msgid "archive format"
 msgstr "归档格式"
 
-#: archive.c:437 builtin/log.c:1462
+#: archive.c:435 builtin/log.c:1462
 msgid "prefix"
 msgstr "前缀"
 
-#: archive.c:438
+#: archive.c:436
 msgid "prepend prefix to each pathname in the archive"
 msgstr "为归档中每个路径名加上前缀"
 
-#: archive.c:439 builtin/blame.c:702 builtin/blame.c:703 builtin/config.c:62
-#: builtin/fast-export.c:1005 builtin/fast-export.c:1007 builtin/grep.c:869
+#: archive.c:437 builtin/blame.c:813 builtin/blame.c:814 builtin/config.c:127
+#: builtin/fast-export.c:1007 builtin/fast-export.c:1009 builtin/grep.c:869
 #: builtin/hash-object.c:103 builtin/ls-files.c:551 builtin/ls-files.c:554
-#: builtin/notes.c:405 builtin/notes.c:568 builtin/read-tree.c:120
+#: builtin/notes.c:405 builtin/notes.c:568 builtin/read-tree.c:119
 #: parse-options.h:165
 msgid "file"
 msgstr "文件"
 
-#: archive.c:440 builtin/archive.c:89
+#: archive.c:438 builtin/archive.c:89
 msgid "write the archive to this file"
 msgstr "归档写入此文件"
 
-#: archive.c:442
+#: archive.c:440
 msgid "read .gitattributes in working directory"
 msgstr "读取工作区中的 .gitattributes"
 
-#: archive.c:443
+#: archive.c:441
 msgid "report archived files on stderr"
 msgstr "在标准错误上报告归档文件"
 
-#: archive.c:444
+#: archive.c:442
 msgid "store only"
 msgstr "只存储"
 
-#: archive.c:445
+#: archive.c:443
 msgid "compress faster"
 msgstr "压缩速度更快"
 
-#: archive.c:453
+#: archive.c:451
 msgid "compress better"
 msgstr "压缩效果更好"
 
-#: archive.c:456
+#: archive.c:454
 msgid "list supported archive formats"
 msgstr "列出支持的归档格式"
 
-#: archive.c:458 builtin/archive.c:90 builtin/clone.c:108 builtin/clone.c:111
-#: builtin/submodule--helper.c:1209 builtin/submodule--helper.c:1576
+#: archive.c:456 builtin/archive.c:90 builtin/clone.c:110 builtin/clone.c:113
+#: builtin/submodule--helper.c:1222 builtin/submodule--helper.c:1593
 msgid "repo"
 msgstr "仓库"
 
-#: archive.c:459 builtin/archive.c:91
+#: archive.c:457 builtin/archive.c:91
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "从远程仓库(<仓库>)提取归档文件"
 
-#: archive.c:460 builtin/archive.c:92 builtin/notes.c:489
+#: archive.c:458 builtin/archive.c:92 builtin/notes.c:489
 msgid "command"
 msgstr "命令"
 
-#: archive.c:461 builtin/archive.c:93
+#: archive.c:459 builtin/archive.c:93
 msgid "path to the remote git-upload-archive command"
 msgstr "远程 git-upload-archive 命令的路径"
 
-#: archive.c:468
+#: archive.c:466
 msgid "Unexpected option --remote"
 msgstr "未知参数 --remote"
 
-#: archive.c:470
+#: archive.c:468
 msgid "Option --exec can only be used together with --remote"
 msgstr "选项 --exec 只能和 --remote 同时使用"
 
-#: archive.c:472
+#: archive.c:470
 msgid "Unexpected option --output"
 msgstr "未知参数 --output"
 
-#: archive.c:494
+#: archive.c:492
 #, c-format
 msgid "Unknown archive format '%s'"
 msgstr "未知归档格式 '%s'"
 
-#: archive.c:501
+#: archive.c:499
 #, c-format
 msgid "Argument not supported for format '%s': -%d"
 msgstr "参数不支持此格式 '%s':-%d"
@@ -973,22 +973,22 @@ msgstr ""
 "负值模版在 git attributes 中被忽略\n"
 "当字符串确实要以感叹号开始时,使用 '\\!'。"
 
-#: bisect.c:460
+#: bisect.c:461
 #, c-format
 msgid "Badly quoted content in file '%s': %s"
 msgstr "文件 '%s' 包含错误的引用格式:%s"
 
-#: bisect.c:668
+#: bisect.c:669
 #, c-format
 msgid "We cannot bisect more!\n"
 msgstr "我们无法进行更多的二分查找!\n"
 
-#: bisect.c:722
+#: bisect.c:723
 #, c-format
 msgid "Not a valid commit name %s"
 msgstr "不是一个有效的提交名 %s"
 
-#: bisect.c:746
+#: bisect.c:747
 #, c-format
 msgid ""
 "The merge base %s is bad.\n"
@@ -997,7 +997,7 @@ msgstr ""
 "合并基线 %s 是坏的。\n"
 "这意味着介于 %s 和 [%s] 之间的 bug 已经被修复。\n"
 
-#: bisect.c:751
+#: bisect.c:752
 #, c-format
 msgid ""
 "The merge base %s is new.\n"
@@ -1006,7 +1006,7 @@ msgstr ""
 "合并基线 %s 是新的。\n"
 "介于 %s 和 [%s] 之间的属性已经被修改。\n"
 
-#: bisect.c:756
+#: bisect.c:757
 #, c-format
 msgid ""
 "The merge base %s is %s.\n"
@@ -1015,7 +1015,7 @@ msgstr ""
 "合并基线 %s 是 %s。\n"
 "这意味着第一个 '%s' 提交位于 %s 和 [%s] 之间。\n"
 
-#: bisect.c:764
+#: bisect.c:765
 #, c-format
 msgid ""
 "Some %s revs are not ancestors of the %s rev.\n"
@@ -1026,7 +1026,7 @@ msgstr ""
 "这种情况下 git 二分查找无法正常工作。\n"
 "您可能弄错了 %s 和 %s 版本?\n"
 
-#: bisect.c:777
+#: bisect.c:778
 #, c-format
 msgid ""
 "the merge base between %s and [%s] must be skipped.\n"
@@ -1037,36 +1037,36 @@ msgstr ""
 "所以我们无法确认第一个 %s 提交是否介于 %s 和 %s 之间。\n"
 "我们仍旧继续。"
 
-#: bisect.c:810
+#: bisect.c:811
 #, c-format
 msgid "Bisecting: a merge base must be tested\n"
 msgstr "二分查找中:合并基线必须是经过测试的\n"
 
-#: bisect.c:850
+#: bisect.c:851
 #, c-format
 msgid "a %s revision is needed"
 msgstr "需要一个 %s 版本"
 
-#: bisect.c:869 builtin/notes.c:175 builtin/tag.c:235
+#: bisect.c:870 builtin/notes.c:175 builtin/tag.c:236
 #, c-format
 msgid "could not create file '%s'"
 msgstr "不能创建文件 '%s'"
 
-#: bisect.c:920
+#: bisect.c:921
 #, c-format
 msgid "could not read file '%s'"
 msgstr "不能读取文件 '%s'"
 
-#: bisect.c:950
+#: bisect.c:951
 msgid "reading bisect refs failed"
 msgstr "读取二分查找引用失败"
 
-#: bisect.c:969
+#: bisect.c:970
 #, c-format
 msgid "%s was both %s and %s\n"
 msgstr "%s 同时为 %s 和 %s\n"
 
-#: bisect.c:977
+#: bisect.c:978
 #, c-format
 msgid ""
 "No testable commit found.\n"
@@ -1075,7 +1075,7 @@ msgstr ""
 "没有发现可测试的提交。\n"
 "可能您在运行时使用了错误的路径参数?\n"
 
-#: bisect.c:996
+#: bisect.c:997
 #, c-format
 msgid "(roughly %d step)"
 msgid_plural "(roughly %d steps)"
@@ -1085,48 +1085,48 @@ msgstr[1] "(大概 %d 步)"
 #. TRANSLATORS: the last %s will be replaced with "(roughly %d
 #. steps)" translation.
 #.
-#: bisect.c:1002
+#: bisect.c:1003
 #, c-format
 msgid "Bisecting: %d revision left to test after this %s\n"
 msgid_plural "Bisecting: %d revisions left to test after this %s\n"
 msgstr[0] "二分查找中:在此之后,还剩 %d 个版本待测试 %s\n"
 msgstr[1] "二分查找中:在此之后,还剩 %d 个版本待测试 %s\n"
 
-#: blame.c:1758
+#: blame.c:1756
 msgid "--contents and --reverse do not blend well."
 msgstr "--contents 和 --reverse 不能混用。"
 
-#: blame.c:1769
+#: blame.c:1767
 msgid "cannot use --contents with final commit object name"
 msgstr "不能将 --contents 和最终的提交对象名共用"
 
-#: blame.c:1789
+#: blame.c:1787
 msgid "--reverse and --first-parent together require specified latest commit"
 msgstr "--reverse 和 --first-parent 共用,需要指定最新的提交"
 
-#: blame.c:1798 bundle.c:160 ref-filter.c:1978 sequencer.c:1699
-#: sequencer.c:2901 builtin/commit.c:976 builtin/log.c:366 builtin/log.c:920
-#: builtin/log.c:1371 builtin/log.c:1702 builtin/log.c:1950 builtin/merge.c:370
-#: builtin/shortlog.c:191
+#: blame.c:1796 bundle.c:160 ref-filter.c:2075 sequencer.c:1861
+#: sequencer.c:3632 builtin/commit.c:981 builtin/log.c:366 builtin/log.c:920
+#: builtin/log.c:1371 builtin/log.c:1702 builtin/log.c:1950 builtin/merge.c:372
+#: builtin/shortlog.c:192
 msgid "revision walk setup failed"
 msgstr "版本遍历设置失败"
 
-#: blame.c:1816
+#: blame.c:1814
 msgid ""
 "--reverse --first-parent together require range along first-parent chain"
 msgstr "--reverse 和 --first-parent 共用,需要第一祖先链上的提交范围"
 
-#: blame.c:1827
+#: blame.c:1825
 #, c-format
 msgid "no such path %s in %s"
 msgstr "在 %2$s 中无此路径 %1$s"
 
-#: blame.c:1838
+#: blame.c:1836
 #, c-format
 msgid "cannot read blob %s for path %s"
 msgstr "不能为路径 %2$s 读取数据对象 %1$s"
 
-#: branch.c:53
+#: branch.c:54
 #, c-format
 msgid ""
 "\n"
@@ -1138,85 +1138,85 @@ msgstr ""
 "在修复错误后,您可以尝试修改远程跟踪分支,通过执行命令\n"
 "\"git branch --set-upstream-to=%s%s%s\" 。"
 
-#: branch.c:67
+#: branch.c:68
 #, c-format
 msgid "Not setting branch %s as its own upstream."
 msgstr "未设置分支 %s 作为它自己的上游。"
 
-#: branch.c:93
+#: branch.c:94
 #, c-format
 msgid "Branch '%s' set up to track remote branch '%s' from '%s' by rebasing."
 msgstr "分支 '%1$s' 设置为使用变基来跟踪来自 '%3$s' 的远程分支 '%2$s'。"
 
-#: branch.c:94
+#: branch.c:95
 #, c-format
 msgid "Branch '%s' set up to track remote branch '%s' from '%s'."
 msgstr "分支 '%1$s' 设置为跟踪来自 '%3$s' 的远程分支 '%2$s'。"
 
-#: branch.c:98
+#: branch.c:99
 #, c-format
 msgid "Branch '%s' set up to track local branch '%s' by rebasing."
 msgstr "分支 '%s' 设置为使用变基来跟踪本地分支 '%s'。"
 
-#: branch.c:99
+#: branch.c:100
 #, c-format
 msgid "Branch '%s' set up to track local branch '%s'."
 msgstr "分支 '%s' 设置为跟踪本地分支 '%s'。"
 
-#: branch.c:104
+#: branch.c:105
 #, c-format
 msgid "Branch '%s' set up to track remote ref '%s' by rebasing."
 msgstr "分支 '%s' 设置为使用变基来跟踪远程引用 '%s'。"
 
-#: branch.c:105
+#: branch.c:106
 #, c-format
 msgid "Branch '%s' set up to track remote ref '%s'."
 msgstr "分支 '%s' 设置为跟踪远程引用 '%s'。"
 
-#: branch.c:109
+#: branch.c:110
 #, c-format
 msgid "Branch '%s' set up to track local ref '%s' by rebasing."
 msgstr "分支 '%s' 设置为使用变基来跟踪本地引用 '%s'。"
 
-#: branch.c:110
+#: branch.c:111
 #, c-format
 msgid "Branch '%s' set up to track local ref '%s'."
 msgstr "分支 '%s' 设置为跟踪本地引用 '%s'。"
 
-#: branch.c:119
+#: branch.c:120
 msgid "Unable to write upstream branch configuration"
 msgstr "无法写入上游分支配置"
 
-#: branch.c:156
+#: branch.c:157
 #, c-format
 msgid "Not tracking: ambiguous information for ref %s"
 msgstr "未跟踪:引用 %s 有歧义"
 
-#: branch.c:189
+#: branch.c:190
 #, c-format
 msgid "'%s' is not a valid branch name."
 msgstr "'%s' 不是一个有效的分支名称。"
 
-#: branch.c:208
+#: branch.c:209
 #, c-format
 msgid "A branch named '%s' already exists."
 msgstr "一个分支名 '%s' 已经存在。"
 
-#: branch.c:213
+#: branch.c:214
 msgid "Cannot force update the current branch."
 msgstr "无法强制更新当前分支。"
 
-#: branch.c:233
+#: branch.c:234
 #, c-format
 msgid "Cannot setup tracking information; starting point '%s' is not a branch."
 msgstr "无法设置跟踪信息;起始点 '%s' 不是一个分支。"
 
-#: branch.c:235
+#: branch.c:236
 #, c-format
 msgid "the requested upstream branch '%s' does not exist"
 msgstr "请求的上游分支 '%s' 不存在"
 
-#: branch.c:237
+#: branch.c:238
 msgid ""
 "\n"
 "If you are planning on basing your work on an upstream\n"
@@ -1234,27 +1234,27 @@ msgstr ""
 "如果您正计划推送一个能与对应远程分支建立跟踪的新的本地分支,\n"
 "您可能需要使用 \"git push -u\" 推送分支并配置和上游的关联。"
 
-#: branch.c:280
+#: branch.c:281
 #, c-format
 msgid "Not a valid object name: '%s'."
 msgstr "不是一个有效的对象名:'%s'。"
 
-#: branch.c:300
+#: branch.c:301
 #, c-format
 msgid "Ambiguous object name: '%s'."
 msgstr "歧义的对象名:'%s'。"
 
-#: branch.c:305
+#: branch.c:306
 #, c-format
 msgid "Not a valid branch point: '%s'."
 msgstr "无效的分支点:'%s'。"
 
-#: branch.c:359
+#: branch.c:360
 #, c-format
 msgid "'%s' is already checked out at '%s'"
 msgstr "'%s' 已经检出到 '%s'"
 
-#: branch.c:382
+#: branch.c:383
 #, c-format
 msgid "HEAD of working tree %s is not updated"
 msgstr "工作区 %s 的 HEAD 指向没有被更新"
@@ -1269,7 +1269,7 @@ msgstr "'%s' 不像是一个 v2 版本的包文件"
 msgid "unrecognized header: %s%s (%d)"
 msgstr "未能识别的包头:%s%s (%d)"
 
-#: bundle.c:88 sequencer.c:1879 sequencer.c:2337 builtin/commit.c:750
+#: bundle.c:88 sequencer.c:2081 sequencer.c:2558 builtin/commit.c:755
 #, c-format
 msgid "could not open '%s'"
 msgstr "不能打开 '%s'"
@@ -1313,7 +1313,7 @@ msgstr "rev-list 终止"
 msgid "ref '%s' is excluded by the rev-list options"
 msgstr "引用 '%s' 被 rev-list 选项排除"
 
-#: bundle.c:450 builtin/log.c:183 builtin/log.c:1607 builtin/shortlog.c:296
+#: bundle.c:450 builtin/log.c:183 builtin/log.c:1607 builtin/shortlog.c:303
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "未能识别的参数:%s"
@@ -1336,18 +1336,39 @@ msgstr "index-pack 终止"
 msgid "invalid color value: %.*s"
 msgstr "无效的颜色值:%.*s"
 
-#: commit.c:41 sequencer.c:2141 builtin/am.c:421 builtin/am.c:465
-#: builtin/am.c:1436 builtin/am.c:2072
+#: commit.c:43 sequencer.c:2364 builtin/am.c:421 builtin/am.c:465
+#: builtin/am.c:1436 builtin/am.c:2072 builtin/replace.c:376
+#: builtin/replace.c:448
 #, c-format
 msgid "could not parse %s"
 msgstr "不能解析 %s"
 
-#: commit.c:43
+#: commit.c:45
 #, c-format
 msgid "%s %s is not a commit!"
 msgstr "%s %s 不是一个提交!"
 
-#: commit.c:1506
+#: commit.c:182
+msgid ""
+"Support for <GIT_DIR>/info/grafts is deprecated\n"
+"and will be removed in a future Git version.\n"
+"\n"
+"Please use \"git replace --convert-graft-file\"\n"
+"to convert the grafts into replace refs.\n"
+"\n"
+"Turn this message off by running\n"
+"\"git config advice.graftFileDeprecated false\""
+msgstr ""
+"对 <GIT_DIR>/info/grafts 的支持已被弃用,并将在\n"
+"未来的Git版本中被移除。\n"
+"\n"
+"请使用 \"git replace --convert-graft-file\" 将\n"
+"grafts 转换为替换引用。\n"
+"\n"
+"设置 \"git config advice.graftFileDeprecated false\"\n"
+"可关闭本消息"
+
+#: commit.c:1540
 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"
@@ -1357,170 +1378,184 @@ msgstr ""
 "您可以通过修补提交来改正提交说明,或者将配置变量 i18n.commitencoding\n"
 "设置为您项目所用的字符编码。\n"
 
+#: commit-graph.c:669
+#, c-format
+msgid "the commit graph format cannot write %d commits"
+msgstr "提交图形格式不能写入 %d 个提交"
+
+#: commit-graph.c:696
+msgid "too many commits to write graph"
+msgstr "提交太多不能画图"
+
+#: commit-graph.c:707 builtin/init-db.c:516 builtin/init-db.c:521
+#, c-format
+msgid "cannot mkdir %s"
+msgstr "不能创建目录 %s"
+
 #: compat/obstack.c:405 compat/obstack.c:407
 msgid "memory exhausted"
 msgstr "内存耗尽"
 
-#: config.c:186
+#: config.c:187
 msgid "relative config include conditionals must come from files"
 msgstr "包含相对路径的条件引用必须来自于文件"
 
-#: config.c:720
+#: config.c:788
 #, c-format
 msgid "bad config line %d in blob %s"
 msgstr "数据对象 %2$s 中错误的配置行 %1$d"
 
-#: config.c:724
+#: config.c:792
 #, c-format
 msgid "bad config line %d in file %s"
 msgstr "文件 %2$s 中错误的配置行 %1$d"
 
-#: config.c:728
+#: config.c:796
 #, c-format
 msgid "bad config line %d in standard input"
 msgstr "标准输入中错误的配置行 %d"
 
-#: config.c:732
+#: config.c:800
 #, c-format
 msgid "bad config line %d in submodule-blob %s"
 msgstr "子模组数据对象 %2$s 中错误的配置行 %1$d"
 
-#: config.c:736
+#: config.c:804
 #, c-format
 msgid "bad config line %d in command line %s"
 msgstr "命令行 %2$s 中错误的配置行 %1$d"
 
-#: config.c:740
+#: config.c:808
 #, c-format
 msgid "bad config line %d in %s"
 msgstr "在 %2$s 中错误的配置行 %1$d"
 
-#: config.c:868
+#: config.c:936
 msgid "out of range"
 msgstr "超出范围"
 
-#: config.c:868
+#: config.c:936
 msgid "invalid unit"
 msgstr "无效的单位"
 
-#: config.c:874
+#: config.c:942
 #, c-format
 msgid "bad numeric config value '%s' for '%s': %s"
 msgstr "配置变量 '%2$s' 的数字取值 '%1$s' 设置错误:%3$s"
 
-#: config.c:879
+#: config.c:947
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
 msgstr "数据对象 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s':%4$s"
 
-#: config.c:882
+#: config.c:950
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in file %s: %s"
 msgstr "文件 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s':%4$s"
 
-#: config.c:885
+#: config.c:953
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in standard input: %s"
 msgstr "标准输入中配置变量 '%2$s' 错误的取值 '%1$s':%3$s"
 
-#: config.c:888
+#: config.c:956
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
 msgstr "子模组数据 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s':%4$s"
 
-#: config.c:891
+#: config.c:959
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
 msgstr "命令行 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s':%4$s"
 
-#: config.c:894
+#: config.c:962
 #, c-format
 msgid "bad numeric config value '%s' for '%s' in %s: %s"
 msgstr "在 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s':%4$s"
 
-#: config.c:989
+#: config.c:1057
 #, c-format
 msgid "failed to expand user dir in: '%s'"
 msgstr "无法扩展 '%s' 中的用户目录"
 
-#: config.c:998
+#: config.c:1066
 #, c-format
 msgid "'%s' for '%s' is not a valid timestamp"
 msgstr "'%2$s' 的值 '%1$s' 不是一个有效的时间戳"
 
-#: config.c:1094 config.c:1105
+#: config.c:1171 config.c:1182
 #, c-format
 msgid "bad zlib compression level %d"
 msgstr "错误的 zlib 压缩级别 %d"
 
-#: config.c:1225
+#: config.c:1307
 #, c-format
 msgid "invalid mode for object creation: %s"
 msgstr "无效的对象创建模式:%s"
 
-#: config.c:1386
+#: config.c:1473
 #, c-format
 msgid "bad pack compression level %d"
 msgstr "错误的打包压缩级别 %d"
 
-#: config.c:1582
+#: config.c:1681
 msgid "unable to parse command-line config"
 msgstr "无法解析命令行中的配置"
 
-#: config.c:1914
+#: config.c:2013
 msgid "unknown error occurred while reading the configuration files"
 msgstr "在读取配置文件时遇到未知错误"
 
-#: config.c:2101
+#: config.c:2200
 #, c-format
 msgid "Invalid %s: '%s'"
 msgstr "无效 %s:'%s'"
 
-#: config.c:2144
+#: config.c:2243
 #, c-format
 msgid "unknown core.untrackedCache value '%s'; using 'keep' default value"
 msgstr "未知的 core.untrackedCache 取值 '%s',使用默认值 'keep'"
 
-#: config.c:2170
+#: config.c:2269
 #, c-format
 msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
 msgstr "splitIndex.maxPercentChange 的取值 '%d' 应该介于 0 和 100 之间"
 
-#: config.c:2195
+#: config.c:2294
 #, c-format
 msgid "unable to parse '%s' from command-line config"
 msgstr "无法解析命令行配置中的 '%s'"
 
-#: config.c:2197
+#: config.c:2296
 #, c-format
 msgid "bad config variable '%s' in file '%s' at line %d"
 msgstr "在文件 '%2$s' 的第 %3$d 行发现错误的配置变量 '%1$s'"
 
-#: config.c:2256
+#: config.c:2402
 #, c-format
 msgid "%s has multiple values"
 msgstr "%s 有多个取值"
 
-#: config.c:2599 config.c:2816
+#: config.c:2766 config.c:3019
 #, c-format
 msgid "fstat on %s failed"
 msgstr "对 %s 调用 fstat 失败"
 
-#: config.c:2706
+#: config.c:2905
 #, c-format
 msgid "could not set '%s' to '%s'"
 msgstr "不能设置 '%s' 为 '%s'"
 
-#: config.c:2708 builtin/remote.c:776
+#: config.c:2907 builtin/remote.c:779
 #, c-format
 msgid "could not unset '%s'"
 msgstr "不能取消设置 '%s'"
 
-#: connect.c:52
+#: connect.c:61
 msgid "The remote end hung up upon initial contact"
 msgstr "远端在连接发起时即挂断"
 
-#: connect.c:54
+#: connect.c:63
 msgid ""
 "Could not read from remote repository.\n"
 "\n"
@@ -1531,7 +1566,7 @@ msgstr ""
 "\n"
 "请确认您有正确的访问权限并且仓库存在。"
 
-#: connected.c:66 builtin/fsck.c:198 builtin/prune.c:144
+#: connected.c:66 builtin/fsck.c:201 builtin/prune.c:145
 msgid "Checking connectivity"
 msgstr "检查连接中"
 
@@ -1547,12 +1582,12 @@ msgstr "无法写入 rev-list"
 msgid "failed to close rev-list's stdin"
 msgstr "无法关闭 rev-list 的标准输入"
 
-#: convert.c:205
+#: convert.c:206
 #, c-format
 msgid "CRLF would be replaced by LF in %s."
 msgstr "文件 %s 中的 CRLF 将被 LF 替换。"
 
-#: convert.c:207
+#: convert.c:208
 #, c-format
 msgid ""
 "CRLF will be replaced by LF in %s.\n"
@@ -1561,12 +1596,12 @@ msgstr ""
 "文件 %s 中的 CRLF 将被 LF 替换。\n"
 "在工作区中该文件仍保持原有的换行符。"
 
-#: convert.c:215
+#: convert.c:216
 #, c-format
 msgid "LF would be replaced by CRLF in %s"
 msgstr "文件 %s 中的 LF 将被 CRLF 替换"
 
-#: convert.c:217
+#: convert.c:218
 #, c-format
 msgid ""
 "LF will be replaced by CRLF in %s.\n"
@@ -1575,6 +1610,46 @@ msgstr ""
 "文件 %s 中的 LF 将被 CRLF 替换。\n"
 "在工作区中该文件仍保持原有的换行符。"
 
+#: convert.c:279
+#, c-format
+msgid "BOM is prohibited in '%s' if encoded as %s"
+msgstr "如果使用 %2$s 编码,禁止在 '%1$s' 中使用 BOM"
+
+#: convert.c:286
+#, c-format
+msgid ""
+"The file '%s' contains a byte order mark (BOM). Please use UTF-%s as working-"
+"tree-encoding."
+msgstr "文件 '%s' 包含一个字节顺序标记(BOM)。请使用 UTF-%s 作为工作区编码。"
+
+#: convert.c:304
+#, c-format
+msgid "BOM is required in '%s' if encoded as %s"
+msgstr "如果编码为 %2$s,需要在 '%1$s' 中使用 BOM"
+
+#: convert.c:306
+#, c-format
+msgid ""
+"The file '%s' is missing a byte order mark (BOM). Please use UTF-%sBE or UTF-"
+"%sLE (depending on the byte order) as working-tree-encoding."
+msgstr ""
+"文件 '%s' 缺失一个字节顺序标记(BOM)。请使用 UTF-%sBE or UTF-%sLE(取决于字"
+"节序)作为工作区编码。"
+
+#: convert.c:424
+#, c-format
+msgid "failed to encode '%s' from %s to %s"
+msgstr "无法对 '%s' 进行从 %s 到 %s 的编码"
+
+#: convert.c:467
+#, c-format
+msgid "encoding '%s' from %s to %s and back is not the same"
+msgstr "将'%s' 的编码从 %s 到 %s 来回转换不一致"
+
+#: convert.c:1225
+msgid "true/false are no valid working-tree-encodings"
+msgstr "true/false 不是有效的工作区编码"
+
 #: date.c:116
 msgid "in the future"
 msgstr "在将来"
@@ -1690,24 +1765,24 @@ msgstr ""
 "发现配置变量 'diff.dirstat' 中的错误:\n"
 "%s"
 
-#: diff.c:3822
+#: diff.c:3823
 #, c-format
 msgid "external diff died, stopping at %s"
 msgstr "外部 diff 退出,停止在 %s"
 
-#: diff.c:4146
+#: diff.c:4153
 msgid "--name-only, --name-status, --check and -s are mutually exclusive"
 msgstr "--name-only、--name-status、--check 和 -s 是互斥的"
 
-#: diff.c:4149
+#: diff.c:4156
 msgid "-G, -S and --find-object are mutually exclusive"
 msgstr "-G、-S 和 --find-object 是互斥的"
 
-#: diff.c:4237
+#: diff.c:4244
 msgid "--follow requires exactly one pathspec"
 msgstr "--follow 明确要求只跟一个路径规格"
 
-#: diff.c:4403
+#: diff.c:4410
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -1716,44 +1791,44 @@ msgstr ""
 "无法解析 --dirstat/-X 选项的参数:\n"
 "%s"
 
-#: diff.c:4417
+#: diff.c:4424
 #, c-format
 msgid "Failed to parse --submodule option parameter: '%s'"
 msgstr "无法解析 --submodule 选项的参数:'%s'"
 
-#: diff.c:5493
+#: diff.c:5500
 msgid "inexact rename detection was skipped due to too many files."
 msgstr "因为文件太多,略过不严格的重命名检查。"
 
-#: diff.c:5496
+#: diff.c:5503
 msgid "only found copies from modified paths due to too many files."
 msgstr "因为文件太多,只在修改的路径中查找拷贝。"
 
-#: diff.c:5499
+#: diff.c:5506
 #, c-format
 msgid ""
 "you may want to set your %s variable to at least %d and retry the command."
 msgstr "您可能想要将变量 %s 设置为至少 %d 并再次执行此命令。"
 
-#: dir.c:1866
+#: dir.c:1867
 #, c-format
 msgid "could not open directory '%s'"
 msgstr "不能打开目录 '%s'"
 
-#: dir.c:2108
+#: dir.c:2109
 msgid "failed to get kernel name and information"
 msgstr "无法获得内核名称和信息"
 
-#: dir.c:2232
+#: dir.c:2233
 msgid "Untracked cache is disabled on this system or location."
 msgstr "缓存未跟踪文件在本系统或位置中被禁用。"
 
-#: dir.c:3024 dir.c:3029
+#: dir.c:3075 dir.c:3080
 #, c-format
 msgid "could not create directories for %s"
 msgstr "不能为 %s 创建目录"
 
-#: dir.c:3054
+#: dir.c:3109
 #, c-format
 msgid "could not migrate git directory from '%s' to '%s'"
 msgstr "不能从 '%s' 迁移 git 目录到 '%s'"
@@ -1776,201 +1851,205 @@ msgstr "不能对文件 '%s' 调用 stat"
 msgid "Remote with no URL"
 msgstr "远程未设置 URL"
 
-#: fetch-pack.c:253
+#: fetch-pack.c:254
 msgid "git fetch-pack: expected shallow list"
 msgstr "git fetch-pack:应为 shallow 列表"
 
-#: fetch-pack.c:265
+#: fetch-pack.c:266
 msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
 msgstr "git fetch-pack:期望 ACK/NAK,却得到 flush 包"
 
-#: fetch-pack.c:284 builtin/archive.c:63
+#: fetch-pack.c:285 builtin/archive.c:63
 #, c-format
 msgid "remote error: %s"
 msgstr "远程错误:%s"
 
-#: fetch-pack.c:285
+#: fetch-pack.c:286
 #, c-format
 msgid "git fetch-pack: expected ACK/NAK, got '%s'"
 msgstr "git fetch-pack:应为 ACK/NAK,却得到 '%s'"
 
-#: fetch-pack.c:337
+#: fetch-pack.c:338
 msgid "--stateless-rpc requires multi_ack_detailed"
 msgstr "--stateless-rpc 需要 multi_ack_detailed"
 
-#: fetch-pack.c:428
+#: fetch-pack.c:429 fetch-pack.c:1310
 #, c-format
 msgid "invalid shallow line: %s"
 msgstr "无效的 shallow 信息:%s"
 
-#: fetch-pack.c:434
+#: fetch-pack.c:435 fetch-pack.c:1316
 #, c-format
 msgid "invalid unshallow line: %s"
 msgstr "无效的 unshallow 信息:%s"
 
-#: fetch-pack.c:436
+#: fetch-pack.c:437 fetch-pack.c:1318
 #, c-format
 msgid "object not found: %s"
 msgstr "对象未找到:%s"
 
-#: fetch-pack.c:439
+#: fetch-pack.c:440 fetch-pack.c:1321
 #, c-format
 msgid "error in object: %s"
 msgstr "对象中出错:%s"
 
-#: fetch-pack.c:441
+#: fetch-pack.c:442 fetch-pack.c:1323
 #, c-format
 msgid "no shallow found: %s"
 msgstr "未发现 shallow:%s"
 
-#: fetch-pack.c:444
+#: fetch-pack.c:445 fetch-pack.c:1326
 #, c-format
 msgid "expected shallow/unshallow, got %s"
 msgstr "应为 shallow/unshallow,却得到 %s"
 
-#: fetch-pack.c:485
+#: fetch-pack.c:486
 #, c-format
 msgid "got %s %d %s"
 msgstr "得到 %s %d %s"
 
-#: fetch-pack.c:499
+#: fetch-pack.c:500
 #, c-format
 msgid "invalid commit %s"
 msgstr "无效提交 %s"
 
-#: fetch-pack.c:532
+#: fetch-pack.c:533
 msgid "giving up"
 msgstr "放弃"
 
-#: fetch-pack.c:542 progress.c:229
+#: fetch-pack.c:543 progress.c:229
 msgid "done"
 msgstr "完成"
 
-#: fetch-pack.c:554
+#: fetch-pack.c:555
 #, c-format
 msgid "got %s (%d) %s"
 msgstr "得到 %s (%d) %s"
 
-#: fetch-pack.c:600
+#: fetch-pack.c:601
 #, c-format
 msgid "Marking %s as complete"
 msgstr "标记 %s 为完成"
 
-#: fetch-pack.c:788
+#: fetch-pack.c:828
 #, c-format
 msgid "already have %s (%s)"
 msgstr "已经有 %s(%s)"
 
-#: fetch-pack.c:829
+#: fetch-pack.c:869
 msgid "fetch-pack: unable to fork off sideband demultiplexer"
 msgstr "fetch-pack:无法派生 sideband 多路输出"
 
-#: fetch-pack.c:837
+#: fetch-pack.c:877
 msgid "protocol error: bad pack header"
 msgstr "协议错误:坏的包头"
 
-#: fetch-pack.c:895
+#: fetch-pack.c:944
 #, c-format
 msgid "fetch-pack: unable to fork off %s"
 msgstr "fetch-pack:无法派生进程 %s"
 
-#: fetch-pack.c:911
+#: fetch-pack.c:960
 #, c-format
 msgid "%s failed"
 msgstr "%s 失败"
 
-#: fetch-pack.c:913
+#: fetch-pack.c:962
 msgid "error in sideband demultiplexer"
 msgstr "sideband 多路输出出错"
 
-#: fetch-pack.c:940
+#: fetch-pack.c:989
 msgid "Server does not support shallow clients"
 msgstr "服务器不支持 shalllow 客户端"
 
-#: fetch-pack.c:944
+#: fetch-pack.c:993
 msgid "Server supports multi_ack_detailed"
 msgstr "服务器支持 multi_ack_detailed"
 
-#: fetch-pack.c:947
+#: fetch-pack.c:996
 msgid "Server supports no-done"
 msgstr "服务器支持 no-done"
 
-#: fetch-pack.c:953
+#: fetch-pack.c:1002
 msgid "Server supports multi_ack"
 msgstr "服务器支持 multi_ack"
 
-#: fetch-pack.c:957
+#: fetch-pack.c:1006
 msgid "Server supports side-band-64k"
 msgstr "服务器支持 side-band-64k"
 
-#: fetch-pack.c:961
+#: fetch-pack.c:1010
 msgid "Server supports side-band"
 msgstr "服务器支持 side-band"
 
-#: fetch-pack.c:965
+#: fetch-pack.c:1014
 msgid "Server supports allow-tip-sha1-in-want"
 msgstr "服务器支持 allow-tip-sha1-in-want"
 
-#: fetch-pack.c:969
+#: fetch-pack.c:1018
 msgid "Server supports allow-reachable-sha1-in-want"
 msgstr "服务器支持 allow-reachable-sha1-in-want"
 
-#: fetch-pack.c:979
+#: fetch-pack.c:1028
 msgid "Server supports ofs-delta"
 msgstr "服务器支持 ofs-delta"
 
-#: fetch-pack.c:985
+#: fetch-pack.c:1034 fetch-pack.c:1204
 msgid "Server supports filter"
 msgstr "服务器支持 filter"
 
-#: fetch-pack.c:993
+#: fetch-pack.c:1042
 #, c-format
 msgid "Server version is %.*s"
 msgstr "服务器版本 %.*s"
 
-#: fetch-pack.c:999
+#: fetch-pack.c:1048
 msgid "Server does not support --shallow-since"
 msgstr "服务器不支持 --shallow-since"
 
-#: fetch-pack.c:1003
+#: fetch-pack.c:1052
 msgid "Server does not support --shallow-exclude"
 msgstr "服务器不支持 --shallow-exclude"
 
-#: fetch-pack.c:1005
+#: fetch-pack.c:1054
 msgid "Server does not support --deepen"
 msgstr "服务器不支持 --deepen"
 
-#: fetch-pack.c:1016
+#: fetch-pack.c:1065
 msgid "no common commits"
 msgstr "没有共同的提交"
 
-#: fetch-pack.c:1028
+#: fetch-pack.c:1077 fetch-pack.c:1414
 msgid "git fetch-pack: fetch failed."
 msgstr "git fetch-pack:获取失败。"
 
-#: fetch-pack.c:1190
+#: fetch-pack.c:1199
+msgid "Server does not support shallow requests"
+msgstr "服务器不支持 shalllow 请求"
+
+#: fetch-pack.c:1584
 msgid "no matching remote head"
 msgstr "没有匹配的远程分支"
 
-#: fetch-pack.c:1212
+#: fetch-pack.c:1610
 #, c-format
 msgid "no such remote ref %s"
 msgstr "没有这样的远程引用 %s"
 
-#: fetch-pack.c:1215
+#: fetch-pack.c:1613
 #, c-format
 msgid "Server does not allow request for unadvertised object %s"
 msgstr "服务器不允许请求未公开的对象 %s"
 
-#: gpg-interface.c:181
+#: gpg-interface.c:185
 msgid "gpg failed to sign the data"
 msgstr "gpg 无法为数据签名"
 
-#: gpg-interface.c:211
+#: gpg-interface.c:210
 msgid "could not create temporary file"
 msgstr "不能创建临时文件"
 
-#: gpg-interface.c:214
+#: gpg-interface.c:213
 #, c-format
 msgid "failed writing detached signature to '%s'"
 msgstr "无法将分离式签名写入 '%s'"
@@ -1980,36 +2059,97 @@ msgstr "无法将分离式签名写入 '%s'"
 msgid "ignore invalid color '%.*s' in log.graphColors"
 msgstr "忽略 log.graphColors 中无效的颜色 '%.*s'"
 
-#: grep.c:2022
+#: grep.c:2020
 #, c-format
 msgid "'%s': unable to read %s"
 msgstr "'%s':无法读取 %s"
 
-#: grep.c:2039 setup.c:163 builtin/clone.c:407 builtin/diff.c:81
+#: grep.c:2037 setup.c:164 builtin/clone.c:409 builtin/diff.c:81
 #: builtin/rm.c:134
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "对 '%s' 调用 stat 失败"
 
-#: grep.c:2050
+#: grep.c:2048
 #, c-format
 msgid "'%s': short read"
 msgstr "'%s':读取不完整"
 
-#: help.c:179
+#: help.c:23
+msgid "start a working area (see also: git help tutorial)"
+msgstr "开始一个工作区(参见:git help tutorial)"
+
+#: help.c:24
+msgid "work on the current change (see also: git help everyday)"
+msgstr "在当前变更上工作(参见:git help everyday)"
+
+#: help.c:25
+msgid "examine the history and state (see also: git help revisions)"
+msgstr "检查历史和状态(参见:git help revisions)"
+
+#: help.c:26
+msgid "grow, mark and tweak your common history"
+msgstr "扩展、标记和调校您的历史记录"
+
+#: help.c:27
+msgid "collaborate (see also: git help workflows)"
+msgstr "协同(参见:git help workflows)"
+
+#: help.c:31
+msgid "Main Porcelain Commands"
+msgstr "主要的上层命令"
+
+#: help.c:32
+msgid "Ancillary Commands / Manipulators"
+msgstr "辅助命令/操作者"
+
+#: help.c:33
+msgid "Ancillary Commands / Interrogators"
+msgstr "辅助命令/询问者"
+
+#: help.c:34
+msgid "Interacting with Others"
+msgstr "与其它系统交互"
+
+#: help.c:35
+msgid "Low-level Commands / Manipulators"
+msgstr "低级命令/操作者"
+
+#: help.c:36
+msgid "Low-level Commands / Interrogators"
+msgstr "低级命令/询问者"
+
+#: help.c:37
+msgid "Low-level Commands / Synching Repositories"
+msgstr "低级命令/同步仓库"
+
+#: help.c:38
+msgid "Low-level Commands / Internal Helpers"
+msgstr "低级命令/内部助手"
+
+#: help.c:293
 #, c-format
 msgid "available git commands in '%s'"
 msgstr "在 '%s' 下可用的 git 命令"
 
-#: help.c:186
+#: help.c:300
 msgid "git commands available from elsewhere on your $PATH"
 msgstr "在 $PATH 路径中的其他地方可用的 git 命令"
 
-#: help.c:217
+#: help.c:309
 msgid "These are common Git commands used in various situations:"
 msgstr "这些是各种场合常见的 Git 命令:"
 
-#: help.c:281
+#: help.c:358 git.c:90
+#, c-format
+msgid "unsupported command listing type '%s'"
+msgstr "不支持的命令列表类型 '%s'"
+
+#: help.c:405
+msgid "The common Git guides are:"
+msgstr "最常用的 Git 向导有:"
+
+#: help.c:467
 #, c-format
 msgid ""
 "'%s' appears to be a git command, but we were not\n"
@@ -2018,31 +2158,31 @@ msgstr ""
 "'%s' 像是一个 git 命令,但却无法运行。\n"
 "可能是 git-%s 受损?"
 
-#: help.c:336
+#: help.c:526
 msgid "Uh oh. Your system reports no Git commands at all."
 msgstr "唉呀,您的系统中未发现 Git 命令。"
 
-#: help.c:358
+#: help.c:548
 #, c-format
 msgid "WARNING: You called a Git command named '%s', which does not exist."
 msgstr "警告:您运行了一个并不存在的 Git 命令 '%s'。"
 
-#: help.c:363
+#: help.c:553
 #, c-format
 msgid "Continuing under the assumption that you meant '%s'."
 msgstr "假定你想要的是 '%s' 并继续。"
 
-#: help.c:368
+#: help.c:558
 #, c-format
 msgid "Continuing in %0.1f seconds, assuming that you meant '%s'."
 msgstr "假定你想要的是 '%2$s',在 %1$0.1f 秒钟后继续。"
 
-#: help.c:376
+#: help.c:566
 #, c-format
 msgid "git: '%s' is not a git command. See 'git --help'."
 msgstr "git:'%s' 不是一个 git 命令。参见 'git --help'。"
 
-#: help.c:380
+#: help.c:570
 msgid ""
 "\n"
 "The most similar command is"
@@ -2056,16 +2196,16 @@ msgstr[1] ""
 "\n"
 "最相似的命令是"
 
-#: help.c:395
+#: help.c:585
 msgid "git version [<options>]"
 msgstr "git version [<选项>]"
 
-#: help.c:462
+#: help.c:652
 #, c-format
 msgid "%s: %s - %s"
 msgstr "%s:%s - %s"
 
-#: help.c:466
+#: help.c:656
 msgid ""
 "\n"
 "Did you mean this?"
@@ -2132,7 +2272,7 @@ msgstr "不允许空的姓名(对于 <%s>)"
 msgid "name consists only of disallowed characters: %s"
 msgstr "姓名中仅包含禁用字符:%s"
 
-#: ident.c:416 builtin/commit.c:582
+#: ident.c:416 builtin/commit.c:587
 #, c-format
 msgid "invalid date format: %s"
 msgstr "无效的日期格式:%s"
@@ -2168,82 +2308,157 @@ msgstr ""
 msgid "Unable to create '%s.lock': %s"
 msgstr "不能创建 '%s.lock':%s"
 
-#: merge.c:74
+#: merge.c:71
 msgid "failed to read the cache"
 msgstr "无法读取缓存"
 
-#: merge.c:134 builtin/am.c:1946 builtin/am.c:1980 builtin/checkout.c:378
-#: builtin/checkout.c:599 builtin/clone.c:759
+#: merge.c:136 builtin/am.c:1946 builtin/am.c:1980 builtin/checkout.c:378
+#: builtin/checkout.c:606 builtin/clone.c:761
 msgid "unable to write new index file"
 msgstr "无法写新的索引文件"
 
-#: merge-recursive.c:235
+#: merge-recursive.c:298
 msgid "(bad commit)\n"
 msgstr "(坏提交)\n"
 
-#: merge-recursive.c:257 merge-recursive.c:265
+#: merge-recursive.c:320
 #, c-format
-msgid "addinfo_cache failed for path '%s'"
-msgstr "为路径 '%s' addinfo_cache 失败"
+msgid "add_cacheinfo failed for path '%s'; merge aborting."
+msgstr "addinfo_cache 对路径 '%s' 执行失败,合并终止。"
 
-#: merge-recursive.c:329
+#: merge-recursive.c:328
+#, c-format
+msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+msgstr "addinfo_cache 无法刷新路径 '%s',合并终止。"
+
+#: merge-recursive.c:410
 msgid "error building trees"
 msgstr "无法创建树"
 
-#: merge-recursive.c:771
+#: merge-recursive.c:881
 #, c-format
 msgid "failed to create path '%s'%s"
 msgstr "无法创建路径 '%s'%s"
 
-#: merge-recursive.c:782
+#: merge-recursive.c:892
 #, c-format
 msgid "Removing %s to make room for subdirectory\n"
 msgstr "删除 %s 以便为子目录留出空间\n"
 
-#: merge-recursive.c:796 merge-recursive.c:815
+#: merge-recursive.c:906 merge-recursive.c:925
 msgid ": perhaps a D/F conflict?"
 msgstr ":可能是一个目录/文件冲突?"
 
-#: merge-recursive.c:805
+#: merge-recursive.c:915
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
 msgstr "拒绝丢弃 '%s' 中的未跟踪文件"
 
-#: merge-recursive.c:847 builtin/cat-file.c:37
+#: merge-recursive.c:957 builtin/cat-file.c:37
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr "不能读取对象 %s '%s'"
 
-#: merge-recursive.c:849
+#: merge-recursive.c:959
 #, c-format
 msgid "blob expected for %s '%s'"
 msgstr "%s '%s' 应为数据对象"
 
-#: merge-recursive.c:873
+#: merge-recursive.c:983
 #, c-format
 msgid "failed to open '%s': %s"
 msgstr "无法打开 '%s':%s"
 
-#: merge-recursive.c:884
+#: merge-recursive.c:994
 #, c-format
 msgid "failed to symlink '%s': %s"
 msgstr "无法创建符号链接 '%s':%s"
 
-#: merge-recursive.c:889
+#: merge-recursive.c:999
 #, c-format
 msgid "do not know what to do with %06o %s '%s'"
 msgstr "不知道如何处理 %06o %s '%s'"
 
-#: merge-recursive.c:1029
+#: merge-recursive.c:1186
+#, c-format
+msgid "Failed to merge submodule %s (not checked out)"
+msgstr "无法合并子模组 %s (没有检出)"
+
+#: merge-recursive.c:1193
+#, c-format
+msgid "Failed to merge submodule %s (commits not present)"
+msgstr "无法合并子模组 %s(提交不存在)"
+
+#: merge-recursive.c:1200
+#, c-format
+msgid "Failed to merge submodule %s (commits don't follow merge-base)"
+msgstr "无法合并子模组 %s (提交未跟随合并基线)"
+
+#: merge-recursive.c:1208 merge-recursive.c:1220
+#, c-format
+msgid "Fast-forwarding submodule %s to the following commit:"
+msgstr "子模组 %s 快进到如下提交:"
+
+#: merge-recursive.c:1211 merge-recursive.c:1223
+#, c-format
+msgid "Fast-forwarding submodule %s"
+msgstr "快进子模组 %s"
+
+#: merge-recursive.c:1245
+#, c-format
+msgid "Failed to merge submodule %s (merge following commits not found)"
+msgstr "无法合并子模组 %s (没发现合并跟随的提交)"
+
+#: merge-recursive.c:1249
+#, c-format
+msgid "Failed to merge submodule %s (not fast-forward)"
+msgstr "无法合并子模组 %s(非快进)"
+
+#: merge-recursive.c:1250
+msgid "Found a possible merge resolution for the submodule:\n"
+msgstr "找到子模组的一个可能的合并方案:\n"
+
+#: merge-recursive.c:1253
+#, c-format
+msgid ""
+"If this is correct simply add it to the index for example\n"
+"by using:\n"
+"\n"
+"  git update-index --cacheinfo 160000 %s \"%s\"\n"
+"\n"
+"which will accept this suggestion.\n"
+msgstr ""
+"如果这个正确,将其添加到索引,例如使用命令:\n"
+"\n"
+"  git update-index --cacheinfo 160000 %s \"%s\"\n"
+"\n"
+"以接受此建议。\n"
+
+#: merge-recursive.c:1262
+#, c-format
+msgid "Failed to merge submodule %s (multiple merges found)"
+msgstr "无法合并子模组 %s (发现多个合并)"
+
+#: merge-recursive.c:1321
 msgid "Failed to execute internal merge"
 msgstr "无法执行内部合并"
 
-#: merge-recursive.c:1034
+#: merge-recursive.c:1326
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "不能添加 %s 至对象库"
 
-#: merge-recursive.c:1146
+#: merge-recursive.c:1358
+#, c-format
+msgid "Auto-merging %s"
+msgstr "自动合并 %s"
+
+#: merge-recursive.c:1423
+#, c-format
+msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+msgstr "错误:拒绝丢失未跟踪文件 '%s',而是写入 %s。"
+
+#: merge-recursive.c:1475
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -2252,7 +2467,7 @@ msgstr ""
 "冲突(%1$s/删除):%2$s 在 %3$s 中被删除,在 %5$s 中被 %4$s。%7$s 的 %6$s 版"
 "本被保留。"
 
-#: merge-recursive.c:1151
+#: merge-recursive.c:1480
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -2261,7 +2476,7 @@ msgstr ""
 "冲突(%1$s/删除):%2$s 在 %3$s 中被删除,在 %6$s 中的 %5$s 被 %4$s。%8$s 的 "
 "%7$s 版本被保留。"
 
-#: merge-recursive.c:1158
+#: merge-recursive.c:1487
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -2270,7 +2485,7 @@ msgstr ""
 "冲突(%1$s/删除):%2$s 在 %3$s 中被删除,在 %5$s 中被 %4$s。%7$s 的 %6$s 版"
 "本保留在 %8$s 中。"
 
-#: merge-recursive.c:1163
+#: merge-recursive.c:1492
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -2279,20 +2494,31 @@ msgstr ""
 "冲突(%1$s/删除):%2$s 在 %3$s 中被删除,在 %6$s 中的 %5$s 被 %4$s。%8$s 的 "
 "%7$s 版本保留在 %9$s 中。"
 
-#: merge-recursive.c:1197
+#: merge-recursive.c:1526
 msgid "rename"
 msgstr "重命名"
 
-#: merge-recursive.c:1197
+#: merge-recursive.c:1526
 msgid "renamed"
 msgstr "重命名"
 
-#: merge-recursive.c:1254
+#: merge-recursive.c:1580 merge-recursive.c:1736 merge-recursive.c:2368
+#: merge-recursive.c:3086
+#, c-format
+msgid "Refusing to lose dirty file at %s"
+msgstr "拒绝丢失脏文件 '%s'"
+
+#: merge-recursive.c:1594
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr "%s 是 %s 中的一个目录而以 %s 为名被添加"
 
-#: merge-recursive.c:1279
+#: merge-recursive.c:1599
+#, c-format
+msgid "Refusing to lose untracked file at %s; adding as %s instead"
+msgstr "拒绝丢失未跟踪文件 '%s',而是添加为 %s"
+
+#: merge-recursive.c:1625
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
@@ -2301,140 +2527,184 @@ msgstr ""
 "冲突(重命名/重命名):在分支 \"%3$s\" 中重命名 \"%1$s\"->\"%2$s\",在分支 "
 "\"%6$s\" 中重命名 \"%4$s\"->\"%5$s\"%7$s"
 
-#: merge-recursive.c:1284
+#: merge-recursive.c:1630
 msgid " (left unresolved)"
 msgstr "(留下未解决)"
 
-#: merge-recursive.c:1346
+#: merge-recursive.c:1694
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
 msgstr ""
 "冲突(重命名/重命名):在 %3$s 中重命名 %1$s->%2$s,在 %6$s 中重命名 %4$s->"
 "%5$s"
 
-#: merge-recursive.c:1379
+#: merge-recursive.c:1733
 #, c-format
 msgid "Renaming %s to %s and %s to %s instead"
 msgstr "而是重命名 %s 至 %s,以及 %s 至 %s"
 
-#: merge-recursive.c:1582
+#: merge-recursive.c:1745
+#, c-format
+msgid "Refusing to lose untracked file at %s, even though it's in the way."
+msgstr "拒绝丢失未跟踪文件 '%s',即使它妨碍了。"
+
+#: merge-recursive.c:1951
+#, c-format
+msgid ""
+"CONFLICT (directory rename split): Unclear where to place %s because "
+"directory %s was renamed to multiple other directories, with no destination "
+"getting a majority of the files."
+msgstr ""
+"冲突(分割的目录重命名):不清楚 %s 应该放在哪里,因为目录 %s 被重命名到多个"
+"其它目录,没有一个目录包含主要的文件。"
+
+#: merge-recursive.c:1983
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
+"implicit directory rename(s) putting the following path(s) there: %s."
+msgstr ""
+"冲突(隐式目录重命名):处于隐式目录重命名的现存文件/目录 %s,将以下路径放"
+"在:%s。"
+
+#: merge-recursive.c:1993
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
+"implicit directory renames tried to put these paths there: %s"
+msgstr ""
+"冲突(隐式目录重命名):无法映射一个以上路径到 %s,隐式目录重命名尝试将这些路"
+"径放置于此:%s"
+
+#: merge-recursive.c:2085
+#, c-format
+msgid ""
+"CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
+">%s in %s"
+msgstr ""
+"冲突(重命名/重命名):在 %3$s 中重命名目录 %1$s->%2$s,在 %6$s 中重命名目录 "
+"%4$s->%5$s"
+
+#: merge-recursive.c:2330
+#, c-format
+msgid ""
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
+msgstr "警告:避免应用 %s -> %s 的重命名到 %s,因为 %s 本身已被重命名。"
+
+#: merge-recursive.c:2736
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s. %s added in %s"
 msgstr "冲突(重命名/添加):在 %3$s 中重命名 %1$s->%2$s。在 %5$s 中添加 %4$s"
 
-#: merge-recursive.c:1597
+#: merge-recursive.c:2751
 #, c-format
 msgid "Adding merged %s"
 msgstr "添加合并后的 %s"
 
-#: merge-recursive.c:1604 merge-recursive.c:1834
+#: merge-recursive.c:2758 merge-recursive.c:3089
 #, c-format
 msgid "Adding as %s instead"
 msgstr "而是以 %s 为名添加"
 
-#: merge-recursive.c:1661
+#: merge-recursive.c:2914
 #, c-format
 msgid "cannot read object %s"
 msgstr "不能读取对象 %s"
 
-#: merge-recursive.c:1664
+#: merge-recursive.c:2917
 #, c-format
 msgid "object %s is not a blob"
 msgstr "对象 %s 不是一个数据对象"
 
-#: merge-recursive.c:1733
+#: merge-recursive.c:2986
 msgid "modify"
 msgstr "修改"
 
-#: merge-recursive.c:1733
+#: merge-recursive.c:2986
 msgid "modified"
 msgstr "修改"
 
-#: merge-recursive.c:1743
+#: merge-recursive.c:2997
 msgid "content"
 msgstr "内容"
 
-#: merge-recursive.c:1750
+#: merge-recursive.c:3004
 msgid "add/add"
 msgstr "添加/添加"
 
-#: merge-recursive.c:1786
+#: merge-recursive.c:3046
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "略过 %s(已经做过相同合并)"
 
-#: merge-recursive.c:1800
-#, c-format
-msgid "Auto-merging %s"
-msgstr "自动合并 %s"
-
-#: merge-recursive.c:1804 git-submodule.sh:879
+#: merge-recursive.c:3055 git-submodule.sh:895
 msgid "submodule"
 msgstr "子模组"
 
-#: merge-recursive.c:1805
+#: merge-recursive.c:3056
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr "冲突(%s):合并冲突于 %s"
 
-#: merge-recursive.c:1899
+#: merge-recursive.c:3178
 #, c-format
 msgid "Removing %s"
 msgstr "删除 %s"
 
-#: merge-recursive.c:1925
+#: merge-recursive.c:3204
 msgid "file/directory"
 msgstr "文件/目录"
 
-#: merge-recursive.c:1931
+#: merge-recursive.c:3210
 msgid "directory/file"
 msgstr "目录/文件"
 
-#: merge-recursive.c:1938
+#: merge-recursive.c:3217
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
 msgstr "冲突(%1$s):在 %3$s 中有一个名为 %2$s 的目录。以 %5$s 为名添加 %4$s"
 
-#: merge-recursive.c:1947
+#: merge-recursive.c:3226
 #, c-format
 msgid "Adding %s"
 msgstr "添加 %s"
 
-#: merge-recursive.c:1987
+#: merge-recursive.c:3267
 #, c-format
 msgid "Dirty index: cannot merge (dirty: %s)"
 msgstr "脏索引:不能合并(脏文件:%s)"
 
-#: merge-recursive.c:1991
+#: merge-recursive.c:3271
 msgid "Already up to date!"
 msgstr "已经是最新的!"
 
-#: merge-recursive.c:2000
+#: merge-recursive.c:3280
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr "无法合并树 %s 和 %s"
 
-#: merge-recursive.c:2097
+#: merge-recursive.c:3379
 msgid "Merging:"
 msgstr "合并:"
 
-#: merge-recursive.c:2110
+#: merge-recursive.c:3392
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
 msgstr[0] "发现 %u 个共同祖先:"
 msgstr[1] "发现 %u 个共同祖先:"
 
-#: merge-recursive.c:2149
+#: merge-recursive.c:3431
 msgid "merge returned no commit"
 msgstr "合并未返回提交"
 
-#: merge-recursive.c:2212
+#: merge-recursive.c:3495
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "不能解析对象 '%s'"
 
-#: merge-recursive.c:2228 builtin/merge.c:657 builtin/merge.c:816
+#: merge-recursive.c:3511 builtin/merge.c:659 builtin/merge.c:816
 msgid "Unable to write index."
 msgstr "不能写入索引。"
 
@@ -2477,30 +2747,30 @@ msgstr "拒绝向 %s(在 refs/notes/ 之外)写入注解"
 msgid "Bad %s value: '%s'"
 msgstr "坏的 %s 值:'%s'"
 
-#: object.c:239
+#: object.c:242
 #, c-format
 msgid "unable to parse object: %s"
 msgstr "不能解析对象:%s"
 
-#: packfile.c:561
+#: packfile.c:563
 msgid "offset before end of packfile (broken .idx?)"
 msgstr "偏移量在包文件结束之前(损坏的 .idx?)"
 
-#: packfile.c:1694
+#: packfile.c:1742
 #, c-format
 msgid "offset before start of pack index for %s (corrupt index?)"
 msgstr "偏移量在 %s 的包索引开始之前(损坏的索引?)"
 
-#: packfile.c:1698
+#: packfile.c:1746
 #, c-format
 msgid "offset beyond end of pack index for %s (truncated index?)"
 msgstr "偏移量越过了 %s 的包索引的结尾(被截断的索引?)"
 
-#: parse-options.c:619
+#: parse-options.c:621
 msgid "..."
 msgstr "..."
 
-#: parse-options.c:638
+#: parse-options.c:640
 #, c-format
 msgid "usage: %s"
 msgstr "用法:%s"
@@ -2508,27 +2778,32 @@ msgstr "用法:%s"
 #. TRANSLATORS: the colon here should align with the
 #. one in "usage: %s" translation.
 #.
-#: parse-options.c:644
+#: parse-options.c:646
 #, c-format
 msgid "   or: %s"
 msgstr "  或:%s"
 
 #  译者:为保证在输出中对齐,注意调整句中空格!
-#: parse-options.c:647
+#: parse-options.c:649
 #, c-format
 msgid "    %s"
 msgstr "    %s"
 
-#: parse-options.c:686
+#: parse-options.c:688
 msgid "-NUM"
 msgstr "-数字"
 
-#: parse-options-cb.c:108
+#: parse-options-cb.c:44
+#, c-format
+msgid "malformed expiration date '%s'"
+msgstr "格式错误的到期时间:'%s'"
+
+#: parse-options-cb.c:112
 #, c-format
 msgid "malformed object name '%s'"
-msgstr "非法的对象名 '%s'"
+msgstr "格式错误的对象名 '%s'"
 
-#: path.c:891
+#: path.c:892
 #, c-format
 msgid "Could not make %s writable by group"
 msgstr "不能设置 %s 为组可写"
@@ -2608,7 +2883,7 @@ msgstr "路径规格 '%s' 位于符号链接中"
 msgid "unable to parse --pretty format"
 msgstr "不能解析 --pretty 格式"
 
-#: read-cache.c:1473
+#: read-cache.c:1500
 #, c-format
 msgid ""
 "index.version set, but the value is invalid.\n"
@@ -2617,7 +2892,7 @@ msgstr ""
 "设置了 index.version,但是取值无效。\n"
 "使用版本 %i"
 
-#: read-cache.c:1483
+#: read-cache.c:1510
 #, c-format
 msgid ""
 "GIT_INDEX_VERSION set, but the value is invalid.\n"
@@ -2626,52 +2901,53 @@ msgstr ""
 "设置了 GIT_INDEX_VERSION,但是取值无效。\n"
 "使用版本 %i"
 
-#: read-cache.c:2375 sequencer.c:3248 wrapper.c:658 builtin/merge.c:1049
+#: read-cache.c:2404 sequencer.c:4338 wrapper.c:658 builtin/merge.c:1048
 #, c-format
 msgid "could not close '%s'"
 msgstr "不能关闭 '%s'"
 
-#: read-cache.c:2448 sequencer.c:1900 sequencer.c:2627
+#: read-cache.c:2477 sequencer.c:2102 sequencer.c:3234
 #, c-format
 msgid "could not stat '%s'"
 msgstr "不能对 '%s' 调用 stat"
 
-#: read-cache.c:2461
+#: read-cache.c:2490
 #, c-format
 msgid "unable to open git dir: %s"
 msgstr "不能打开 git 目录:%s"
 
-#: read-cache.c:2473
+#: read-cache.c:2502
 #, c-format
 msgid "unable to unlink: %s"
 msgstr "无法删除:%s"
 
-#: refs.c:706
+#: refs.c:732 sequencer.c:4334 sequencer.c:4393 wrapper.c:225 wrapper.c:395
+#: builtin/am.c:779
 #, c-format
-msgid "Could not open '%s' for writing"
+msgid "could not open '%s' for writing"
 msgstr "无法打开 '%s' 进行写入"
 
-#: refs.c:1850
+#: refs.c:1880
 msgid "ref updates forbidden inside quarantine environment"
 msgstr "在隔离环境中禁止更新引用"
 
-#: refs/files-backend.c:1189
+#: refs/files-backend.c:1191
 #, c-format
 msgid "could not remove reference %s"
 msgstr "无法删除引用 %s"
 
-#: refs/files-backend.c:1203 refs/packed-backend.c:1528
-#: refs/packed-backend.c:1538
+#: refs/files-backend.c:1205 refs/packed-backend.c:1531
+#: refs/packed-backend.c:1541
 #, c-format
 msgid "could not delete reference %s: %s"
 msgstr "无法删除引用 %s:%s"
 
-#: refs/files-backend.c:1206 refs/packed-backend.c:1541
+#: refs/files-backend.c:1208 refs/packed-backend.c:1544
 #, c-format
 msgid "could not delete references: %s"
 msgstr "无法删除引用:%s"
 
-#: ref-filter.c:35 wt-status.c:1842
+#: ref-filter.c:35 wt-status.c:1850
 msgid "gone"
 msgstr "丢失"
 
@@ -2690,157 +2966,162 @@ msgstr "落后 %d"
 msgid "ahead %d, behind %d"
 msgstr "领先 %d,落后 %d"
 
-#: ref-filter.c:107
+#: ref-filter.c:121
 #, c-format
 msgid "expected format: %%(color:<color>)"
 msgstr "期望的格式:%%(color:<颜色>)"
 
-#: ref-filter.c:109
+#: ref-filter.c:123
 #, c-format
 msgid "unrecognized color: %%(color:%s)"
 msgstr "未能识别的颜色:%%(color:%s)"
 
-#: ref-filter.c:129
+#: ref-filter.c:145
 #, c-format
 msgid "Integer value expected refname:lstrip=%s"
 msgstr "期望整数值 refname:lstrip=%s"
 
-#: ref-filter.c:133
+#: ref-filter.c:149
 #, c-format
 msgid "Integer value expected refname:rstrip=%s"
 msgstr "期望整数值 refname:rstrip=%s"
 
-#: ref-filter.c:135
+#: ref-filter.c:151
 #, c-format
 msgid "unrecognized %%(%s) argument: %s"
 msgstr "未能识别的 %%(%s) 参数:%s"
 
-#: ref-filter.c:184
+#: ref-filter.c:206
 #, c-format
 msgid "%%(body) does not take arguments"
 msgstr "%%(body) 不带参数"
 
-#: ref-filter.c:191
+#: ref-filter.c:215
 #, c-format
 msgid "%%(subject) does not take arguments"
 msgstr "%%(subject) 不带参数"
 
-#: ref-filter.c:209
+#: ref-filter.c:235
 #, c-format
 msgid "unknown %%(trailers) argument: %s"
 msgstr "未知的 %%(trailers) 参数:%s"
 
-#: ref-filter.c:232
+#: ref-filter.c:264
 #, c-format
 msgid "positive value expected contents:lines=%s"
 msgstr "期望一个正数 contents:lines=%s"
 
-#: ref-filter.c:234
+#: ref-filter.c:266
 #, c-format
 msgid "unrecognized %%(contents) argument: %s"
 msgstr "未能识别的 %%(contents) 参数:%s"
 
-#: ref-filter.c:247
+#: ref-filter.c:281
 #, c-format
 msgid "positive value expected objectname:short=%s"
 msgstr "期望一个正数 objectname:short=%s"
 
-#: ref-filter.c:251
+#: ref-filter.c:285
 #, c-format
 msgid "unrecognized %%(objectname) argument: %s"
 msgstr "未能识别的 %%(objectname) 参数:%s"
 
-#: ref-filter.c:278
+#: ref-filter.c:315
 #, c-format
 msgid "expected format: %%(align:<width>,<position>)"
 msgstr "期望的格式:%%(align:<宽度>,<位置>)"
 
-#: ref-filter.c:290
+#: ref-filter.c:327
 #, c-format
 msgid "unrecognized position:%s"
 msgstr "未能识别的位置:%s"
 
-#: ref-filter.c:294
+#: ref-filter.c:334
 #, c-format
 msgid "unrecognized width:%s"
 msgstr "未能识别的宽度:%s"
 
-#: ref-filter.c:300
+#: ref-filter.c:343
 #, c-format
 msgid "unrecognized %%(align) argument: %s"
 msgstr "未能识别的 %%(align) 参数:%s"
 
-#: ref-filter.c:304
+#: ref-filter.c:351
 #, c-format
 msgid "positive width expected with the %%(align) atom"
 msgstr "元素 %%(align) 需要一个正数的宽度"
 
-#: ref-filter.c:319
+#: ref-filter.c:369
 #, c-format
 msgid "unrecognized %%(if) argument: %s"
 msgstr "未能识别的 %%(if) 参数:%s"
 
-#: ref-filter.c:409
+#: ref-filter.c:464
 #, c-format
 msgid "malformed field name: %.*s"
-msgstr "非法的字段名:%.*s"
+msgstr "格式错误的字段名:%.*s"
 
-#: ref-filter.c:435
+#: ref-filter.c:491
 #, c-format
 msgid "unknown field name: %.*s"
 msgstr "未知的字段名:%.*s"
 
-#: ref-filter.c:547
+#: ref-filter.c:608
 #, c-format
 msgid "format: %%(if) atom used without a %%(then) atom"
 msgstr "格式:使用了 %%(if) 元素而没有 %%(then) 元素"
 
-#: ref-filter.c:607
+#: ref-filter.c:671
 #, c-format
 msgid "format: %%(then) atom used without an %%(if) atom"
 msgstr "格式:使用了 %%(then) 元素而没有 %%(if) 元素"
 
-#: ref-filter.c:609
+#: ref-filter.c:673
 #, c-format
 msgid "format: %%(then) atom used more than once"
 msgstr "格式:%%(then) 元素用了多次"
 
-#: ref-filter.c:611
+#: ref-filter.c:675
 #, c-format
 msgid "format: %%(then) atom used after %%(else)"
 msgstr "格式:%%(then) 元素用在了 %%(else) 之后"
 
-#: ref-filter.c:637
+#: ref-filter.c:703
 #, c-format
 msgid "format: %%(else) atom used without an %%(if) atom"
 msgstr "格式:使用了 %%(else) 元素而没有 %%(if) 元素"
 
-#: ref-filter.c:639
+#: ref-filter.c:705
 #, c-format
 msgid "format: %%(else) atom used without a %%(then) atom"
 msgstr "格式:使用了 %%(else) 元素而没有 %%(then) 元素"
 
-#: ref-filter.c:641
+#: ref-filter.c:707
 #, c-format
 msgid "format: %%(else) atom used more than once"
 msgstr "格式:%%(else) 元素用了多次"
 
-#: ref-filter.c:654
+#: ref-filter.c:722
 #, c-format
 msgid "format: %%(end) atom used without corresponding atom"
 msgstr "格式:使用了 %%(end) 元素却没有它的对应元素"
 
-#: ref-filter.c:709
+#: ref-filter.c:779
 #, c-format
 msgid "malformed format string %s"
-msgstr "é\9d\9eæ³\95的格式化字符串 %s"
+msgstr "é\94\99误的格式化字符串 %s"
 
-#: ref-filter.c:1313
+#: ref-filter.c:1387
 #, c-format
 msgid "(no branch, rebasing %s)"
 msgstr "(非分支,正变基 %s)"
 
-#: ref-filter.c:1316
+#: ref-filter.c:1390
+#, c-format
+msgid "(no branch, rebasing detached HEAD %s)"
+msgstr "(非分支,正变基分离头指针 %s)"
+
+#: ref-filter.c:1393
 #, c-format
 msgid "(no branch, bisect started on %s)"
 msgstr "(非分支,二分查找开始于 %s)"
@@ -2848,7 +3129,7 @@ msgstr "(非分支,二分查找开始于 %s)"
 #. TRANSLATORS: make sure this matches "HEAD
 #. detached at " in wt-status.c
 #.
-#: ref-filter.c:1324
+#: ref-filter.c:1401
 #, c-format
 msgid "(HEAD detached at %s)"
 msgstr "(头指针分离于 %s)"
@@ -2856,147 +3137,147 @@ msgstr "(头指针分离于 %s)"
 #. TRANSLATORS: make sure this matches "HEAD
 #. detached from " in wt-status.c
 #.
-#: ref-filter.c:1331
+#: ref-filter.c:1408
 #, c-format
 msgid "(HEAD detached from %s)"
 msgstr "(头指针分离自 %s)"
 
-#: ref-filter.c:1335
+#: ref-filter.c:1412
 msgid "(no branch)"
 msgstr "(非分支)"
 
-#: ref-filter.c:1364
+#: ref-filter.c:1442
 #, c-format
 msgid "missing object %s for %s"
 msgstr "缺失 %2$s 的对象 %1$s"
 
-#: ref-filter.c:1367
+#: ref-filter.c:1445
 #, c-format
 msgid "parse_object_buffer failed on %s for %s"
 msgstr "parse_object_buffer 失败于 %2$s 的 %1$s"
 
-#: ref-filter.c:1819
+#: ref-filter.c:1902
 #, c-format
 msgid "malformed object at '%s'"
-msgstr "非法的对象于 '%s'"
+msgstr "格式错误的对象 '%s'"
 
-#: ref-filter.c:1886
+#: ref-filter.c:1984
 #, c-format
 msgid "ignoring ref with broken name %s"
 msgstr "忽略带有错误名称 %s 的引用"
 
-#: ref-filter.c:1891
+#: ref-filter.c:1989
 #, c-format
 msgid "ignoring broken ref %s"
 msgstr "忽略损坏的引用 %s"
 
-#: ref-filter.c:2152
+#: ref-filter.c:2261
 #, c-format
 msgid "format: %%(end) atom missing"
 msgstr "格式:缺少 %%(end) 元素"
 
-#: ref-filter.c:2246
+#: ref-filter.c:2365
 #, c-format
 msgid "malformed object name %s"
-msgstr "非法的对象名 %s"
+msgstr "格式错误的对象名 %s"
 
-#: remote.c:795
+#: remote.c:605
 #, c-format
 msgid "Cannot fetch both %s and %s to %s"
 msgstr "不能同时获取 %s 和 %s 至 %s"
 
-#: remote.c:799
+#: remote.c:609
 #, c-format
 msgid "%s usually tracks %s, not %s"
 msgstr "%s 通常跟踪 %s,而非 %s"
 
-#: remote.c:803
+#: remote.c:613
 #, c-format
 msgid "%s tracks both %s and %s"
 msgstr "%s 同时跟踪 %s 和 %s"
 
-#: remote.c:811
+#: remote.c:621
 msgid "Internal error"
 msgstr "内部错误"
 
-#: remote.c:1726 remote.c:1828
+#: remote.c:1534 remote.c:1635
 msgid "HEAD does not point to a branch"
 msgstr "HEAD 没有指向一个分支"
 
-#: remote.c:1735
+#: remote.c:1543
 #, c-format
 msgid "no such branch: '%s'"
 msgstr "没有此分支:'%s'"
 
-#: remote.c:1738
+#: remote.c:1546
 #, c-format
 msgid "no upstream configured for branch '%s'"
 msgstr "尚未给分支 '%s' 设置上游"
 
-#: remote.c:1744
+#: remote.c:1552
 #, c-format
 msgid "upstream branch '%s' not stored as a remote-tracking branch"
 msgstr "上游分支 '%s' 没有存储为一个远程跟踪分支"
 
-#: remote.c:1759
+#: remote.c:1567
 #, c-format
 msgid "push destination '%s' on remote '%s' has no local tracking branch"
 msgstr "推送目标 '%s' 至远程 '%s' 没有本地跟踪分支"
 
-#: remote.c:1771
+#: remote.c:1579
 #, c-format
 msgid "branch '%s' has no remote for pushing"
 msgstr "分支 '%s' 没有设置要推送的远程服务器"
 
-#: remote.c:1782
+#: remote.c:1589
 #, c-format
 msgid "push refspecs for '%s' do not include '%s'"
 msgstr "向 '%s' 推送引用规格未包含 '%s'"
 
-#: remote.c:1795
+#: remote.c:1602
 msgid "push has no destination (push.default is 'nothing')"
 msgstr "推送无目标(push.default 是 'nothing')"
 
-#: remote.c:1817
+#: remote.c:1624
 msgid "cannot resolve 'simple' push to a single destination"
 msgstr "无法解析 'simple' 推送至一个单独的目标"
 
-#: remote.c:2132
+#: remote.c:1939
 #, c-format
 msgid "Your branch is based on '%s', but the upstream is gone.\n"
 msgstr "您的分支基于 '%s',但此上游分支已经不存在。\n"
 
-#: remote.c:2136
+#: remote.c:1943
 msgid "  (use \"git branch --unset-upstream\" to fixup)\n"
 msgstr "  (使用 \"git branch --unset-upstream\" 来修复)\n"
 
-#: remote.c:2139
+#: remote.c:1946
 #, c-format
 msgid "Your branch is up to date with '%s'.\n"
 msgstr "您的分支与上游分支 '%s' 一致。\n"
 
-#: remote.c:2143
+#: remote.c:1950
 #, c-format
 msgid "Your branch and '%s' refer to different commits.\n"
 msgstr "您的分支和 '%s' 指向不同的提交。\n"
 
-#: remote.c:2146
+#: remote.c:1953
 #, c-format
 msgid "  (use \"%s\" for details)\n"
 msgstr "  (使用 \"%s\" 查看详情)\n"
 
-#: remote.c:2150
+#: remote.c:1957
 #, c-format
 msgid "Your branch is ahead of '%s' by %d commit.\n"
 msgid_plural "Your branch is ahead of '%s' by %d commits.\n"
 msgstr[0] "您的分支领先 '%s' 共 %d 个提交。\n"
 msgstr[1] "您的分支领先 '%s' 共 %d 个提交。\n"
 
-#: remote.c:2156
+#: remote.c:1963
 msgid "  (use \"git push\" to publish your local commits)\n"
 msgstr "  (使用 \"git push\" 来发布您的本地提交)\n"
 
-#: remote.c:2159
+#: remote.c:1966
 #, c-format
 msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
 msgid_plural ""
@@ -3005,11 +3286,11 @@ msgstr[0] "您的分支落后 '%s' 共 %d 个提交,并且可以快进。\n"
 msgstr[1] "您的分支落后 '%s' 共 %d 个提交,并且可以快进。\n"
 
 #  译者:注意保持前导空格
-#: remote.c:2167
+#: remote.c:1974
 msgid "  (use \"git pull\" to update your local branch)\n"
 msgstr "  (使用 \"git pull\" 来更新您的本地分支)\n"
 
-#: remote.c:2170
+#: remote.c:1977
 #, c-format
 msgid ""
 "Your branch and '%s' have diverged,\n"
@@ -3025,28 +3306,28 @@ msgstr[1] ""
 "并且分别有 %d 和 %d 处不同的提交。\n"
 
 #  译者:注意保持前导空格
-#: remote.c:2180
+#: remote.c:1987
 msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
 msgstr "  (使用 \"git pull\" 来合并远程分支)\n"
 
-#: revision.c:2277
+#: revision.c:2289
 msgid "your current branch appears to be broken"
 msgstr "您的当前分支好像被损坏"
 
-#: revision.c:2280
+#: revision.c:2292
 #, c-format
 msgid "your current branch '%s' does not have any commits yet"
 msgstr "您的当前分支 '%s' 尚无任何提交"
 
-#: revision.c:2477
+#: revision.c:2489
 msgid "--first-parent is incompatible with --bisect"
 msgstr "--first-parent 与 --bisect 不兼容"
 
-#: run-command.c:731
+#: run-command.c:728
 msgid "open /dev/null failed"
 msgstr "不能打开 /dev/null"
 
-#: run-command.c:1274
+#: run-command.c:1271
 #, c-format
 msgid ""
 "The '%s' hook was ignored because it's not set as executable.\n"
@@ -3091,29 +3372,34 @@ msgstr "接收端不支持原子推送"
 msgid "the receiving end does not support push options"
 msgstr "接收端不支持推送选项"
 
-#: sequencer.c:158
+#: sequencer.c:175
 #, c-format
 msgid "invalid commit message cleanup mode '%s'"
 msgstr "无效的提交信息清理模式 '%s'"
 
-#: sequencer.c:267
+#: sequencer.c:275
+#, c-format
+msgid "could not delete '%s'"
+msgstr "无法删除 '%s'"
+
+#: sequencer.c:301
 msgid "revert"
 msgstr "还原"
 
-#: sequencer.c:269
+#: sequencer.c:303
 msgid "cherry-pick"
 msgstr "拣选"
 
-#: sequencer.c:271
+#: sequencer.c:305
 msgid "rebase -i"
 msgstr "rebase -i"
 
-#: sequencer.c:273
+#: sequencer.c:307
 #, c-format
 msgid "Unknown action: %d"
 msgstr "未知动作:%d"
 
-#: sequencer.c:330
+#: sequencer.c:364
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'"
@@ -3121,7 +3407,7 @@ msgstr ""
 "冲突解决完毕后,用 'git add <路径>' 或 'git rm <路径>'\n"
 "命令标记修正后的文件"
 
-#: sequencer.c:333
+#: sequencer.c:367
 msgid ""
 "after resolving the conflicts, mark the corrected paths\n"
 "with 'git add <paths>' or 'git rm <paths>'\n"
@@ -3130,43 +3416,45 @@ msgstr ""
 "冲突解决完毕后,用 'git add <路径>' 或 'git rm <路径>'\n"
 "对修正后的文件做标记,然后用 'git commit' 提交"
 
-#: sequencer.c:346 sequencer.c:2245
+#: sequencer.c:380 sequencer.c:2468
 #, c-format
 msgid "could not lock '%s'"
 msgstr "不能锁定 '%s'"
 
-#: sequencer.c:349 sequencer.c:2124 sequencer.c:2250 sequencer.c:2264
-#: sequencer.c:3246 sequencer.c:3310 wrapper.c:656
+#: sequencer.c:382 sequencer.c:2346 sequencer.c:2472 sequencer.c:2486
+#: sequencer.c:2694 sequencer.c:4336 sequencer.c:4399 wrapper.c:656
 #, c-format
 msgid "could not write to '%s'"
 msgstr "不能写入 '%s'"
 
-#: sequencer.c:353
+#: sequencer.c:387
 #, c-format
 msgid "could not write eol to '%s'"
 msgstr "不能将换行符写入 '%s'"
 
-#: sequencer.c:356 sequencer.c:2128 sequencer.c:2252
+#: sequencer.c:392 sequencer.c:2351 sequencer.c:2474 sequencer.c:2488
+#: sequencer.c:2702
 #, c-format
 msgid "failed to finalize '%s'"
 msgstr "无法完成 '%s'"
 
-#: sequencer.c:379 sequencer.c:1340 sequencer.c:2148 builtin/am.c:259
-#: builtin/commit.c:722 builtin/merge.c:1047
+#: sequencer.c:415 sequencer.c:804 sequencer.c:1493 sequencer.c:2371
+#: sequencer.c:2684 sequencer.c:2788 builtin/am.c:259 builtin/commit.c:727
+#: builtin/merge.c:1046
 #, c-format
 msgid "could not read '%s'"
 msgstr "不能读取 '%s'"
 
-#: sequencer.c:405
+#: sequencer.c:441
 #, c-format
 msgid "your local changes would be overwritten by %s."
 msgstr "您的本地修改将被%s覆盖。"
 
-#: sequencer.c:409
+#: sequencer.c:445
 msgid "commit your changes or stash them to proceed."
 msgstr "提交您的修改或贮藏后再继续。"
 
-#: sequencer.c:438
+#: sequencer.c:474
 #, c-format
 msgid "%s: fast-forward"
 msgstr "%s:快进"
@@ -3174,20 +3462,20 @@ msgstr "%s:快进"
 #. TRANSLATORS: %s will be "revert", "cherry-pick" or
 #. "rebase -i".
 #.
-#: sequencer.c:526
+#: sequencer.c:563
 #, c-format
 msgid "%s: Unable to write new index file"
 msgstr "%s:无法写入新索引文件"
 
-#: sequencer.c:542
-msgid "could not resolve HEAD commit"
-msgstr "不能解析 HEAD 提交"
-
-#: sequencer.c:562
+#: sequencer.c:579
 msgid "unable to update cache tree"
 msgstr "不能更新缓存树"
 
-#: sequencer.c:658
+#: sequencer.c:592
+msgid "could not resolve HEAD commit"
+msgstr "不能解析 HEAD 提交"
+
+#: sequencer.c:749
 #, c-format
 msgid ""
 "you have staged changes in your working tree\n"
@@ -3216,11 +3504,15 @@ msgstr ""
 "\n"
 "  git rebase --continue\n"
 
-#: sequencer.c:915
+#: sequencer.c:818
+msgid "writing root commit"
+msgstr "写根提交"
+
+#: sequencer.c:1043
 msgid "'prepare-commit-msg' hook failed"
 msgstr "'prepare-commit-msg' 钩子失败"
 
-#: sequencer.c:922
+#: sequencer.c:1050
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -3244,7 +3536,7 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:935
+#: sequencer.c:1063
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -3267,329 +3559,315 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: sequencer.c:975
+#: sequencer.c:1103
 msgid "couldn't look up newly created commit"
 msgstr "无法找到新创建的提交"
 
-#: sequencer.c:977
+#: sequencer.c:1105
 msgid "could not parse newly created commit"
 msgstr "不能解析新创建的提交"
 
-#: sequencer.c:1023
+#: sequencer.c:1151
 msgid "unable to resolve HEAD after creating commit"
 msgstr "创建提交后,不能解析 HEAD"
 
-#: sequencer.c:1025
+#: sequencer.c:1153
 msgid "detached HEAD"
 msgstr "分离头指针"
 
 #  译者:中文字符串拼接,可删除前导空格
-#: sequencer.c:1029
+#: sequencer.c:1157
 msgid " (root-commit)"
 msgstr "(根提交)"
 
-#: sequencer.c:1050
+#: sequencer.c:1178
 msgid "could not parse HEAD"
 msgstr "不能解析 HEAD"
 
-#: sequencer.c:1052
+#: sequencer.c:1180
 #, c-format
 msgid "HEAD %s is not a commit!"
 msgstr "HEAD %s 不是一个提交!"
 
-#: sequencer.c:1056 builtin/commit.c:1491
+#: sequencer.c:1184 builtin/commit.c:1528
 msgid "could not parse HEAD commit"
 msgstr "不能解析 HEAD 提交"
 
-#: sequencer.c:1107 sequencer.c:1673
+#: sequencer.c:1235 sequencer.c:1832
 msgid "unable to parse commit author"
 msgstr "不能解析提交作者"
 
-#: sequencer.c:1117 builtin/am.c:1630 builtin/merge.c:643
+#: sequencer.c:1245 builtin/am.c:1630 builtin/merge.c:645
 msgid "git write-tree failed to write a tree"
 msgstr "git write-tree 无法写入树对象"
 
-#: sequencer.c:1134 sequencer.c:1186
+#: sequencer.c:1262 sequencer.c:1317
 #, c-format
 msgid "unable to read commit message from '%s'"
 msgstr "不能从 '%s' 读取提交说明"
 
-#: sequencer.c:1154 builtin/am.c:1650 builtin/commit.c:1594 builtin/merge.c:826
-#: builtin/merge.c:851
+#: sequencer.c:1284 builtin/am.c:1650 builtin/commit.c:1631 builtin/merge.c:825
+#: builtin/merge.c:850
 msgid "failed to write commit object"
 msgstr "无法写提交对象"
 
-#: sequencer.c:1213
+#: sequencer.c:1344
 #, c-format
 msgid "could not parse commit %s"
 msgstr "不能解析提交 %s"
 
-#: sequencer.c:1218
+#: sequencer.c:1349
 #, c-format
 msgid "could not parse parent commit %s"
 msgstr "不能解析父提交 %s"
 
-#: sequencer.c:1347
-#, c-format
-msgid ""
-"unexpected 1st line of squash message:\n"
-"\n"
-"\t%.*s"
-msgstr ""
-"意外的压缩提交首行提交信息:\n"
-"\n"
-"\t%.*s"
-
-#: sequencer.c:1353
-#, c-format
-msgid ""
-"invalid 1st line of squash message:\n"
-"\n"
-"\t%.*s"
-msgstr ""
-"压缩提交的首行提交信息无效:\n"
-"\n"
-"\t%.*s"
-
-#: sequencer.c:1359 sequencer.c:1384
+#: sequencer.c:1500 sequencer.c:1525
 #, c-format
 msgid "This is a combination of %d commits."
 msgstr "这是一个 %d 个提交的组合。"
 
-#: sequencer.c:1368 sequencer.c:3265
+#: sequencer.c:1510 sequencer.c:4355
 msgid "need a HEAD to fixup"
 msgstr "需要一个 HEAD 来修复"
 
-#: sequencer.c:1370
+#: sequencer.c:1512 sequencer.c:2729
 msgid "could not read HEAD"
 msgstr "不能读取 HEAD"
 
-#: sequencer.c:1372
+#: sequencer.c:1514
 msgid "could not read HEAD's commit message"
 msgstr "不能读取 HEAD 的提交说明"
 
-#: sequencer.c:1378
+#: sequencer.c:1520
 #, c-format
 msgid "cannot write '%s'"
 msgstr "不能写 '%s'"
 
-#: sequencer.c:1387 git-rebase--interactive.sh:452
+#: sequencer.c:1527 git-rebase--interactive.sh:457
 msgid "This is the 1st commit message:"
 msgstr "这是第一个提交说明:"
 
-#: sequencer.c:1395
+#: sequencer.c:1535
 #, c-format
 msgid "could not read commit message of %s"
 msgstr "不能读取 %s 的提交说明"
 
-#: sequencer.c:1402
+#: sequencer.c:1542
 #, c-format
 msgid "This is the commit message #%d:"
 msgstr "这是提交说明 #%d:"
 
-#: sequencer.c:1407
+#: sequencer.c:1548
 #, c-format
 msgid "The commit message #%d will be skipped:"
 msgstr "提交说明 #%d 将被跳过:"
 
-#: sequencer.c:1412
+#: sequencer.c:1553
 #, c-format
 msgid "unknown command: %d"
 msgstr "未知命令:%d"
 
-#: sequencer.c:1479
+#: sequencer.c:1631
 msgid "your index file is unmerged."
 msgstr "您的索引文件未完成合并。"
 
-#: sequencer.c:1498
+#: sequencer.c:1638
+msgid "cannot fixup root commit"
+msgstr "不能修复根提交"
+
+#: sequencer.c:1657
 #, c-format
 msgid "commit %s is a merge but no -m option was given."
 msgstr "提交 %s 是一个合并提交但未提供 -m 选项。"
 
-#: sequencer.c:1506
+#: sequencer.c:1665
 #, c-format
 msgid "commit %s does not have parent %d"
 msgstr "提交 %s 没有第 %d 个父提交"
 
-#: sequencer.c:1510
+#: sequencer.c:1669
 #, c-format
 msgid "mainline was specified but commit %s is not a merge."
 msgstr "指定了主线,但是提交 %s 不是一个合并提交。"
 
-#: sequencer.c:1516
+#: sequencer.c:1675
 #, c-format
 msgid "cannot get commit message for %s"
 msgstr "不能得到 %s 的提交说明"
 
 #. TRANSLATORS: The first %s will be a "todo" command like
 #. "revert" or "pick", the second %s a SHA1.
-#: sequencer.c:1535
+#: sequencer.c:1694
 #, c-format
 msgid "%s: cannot parse parent commit %s"
 msgstr "%s:不能解析父提交 %s"
 
-#: sequencer.c:1600 sequencer.c:2397
+#: sequencer.c:1759
 #, c-format
 msgid "could not rename '%s' to '%s'"
 msgstr "不能将 '%s' 重命名为 '%s'"
 
-#: sequencer.c:1654
+#: sequencer.c:1813
 #, c-format
 msgid "could not revert %s... %s"
 msgstr "不能还原 %s... %s"
 
-#: sequencer.c:1655
+#: sequencer.c:1814
 #, c-format
 msgid "could not apply %s... %s"
 msgstr "不能应用 %s... %s"
 
-#: sequencer.c:1702
+#: sequencer.c:1864
 msgid "empty commit set passed"
 msgstr "提供了空的提交集"
 
-#: sequencer.c:1712
+#: sequencer.c:1874
 #, c-format
 msgid "git %s: failed to read the index"
 msgstr "git %s:无法读取索引"
 
-#: sequencer.c:1718
+#: sequencer.c:1881
 #, c-format
 msgid "git %s: failed to refresh the index"
 msgstr "git %s:无法刷新索引"
 
-#: sequencer.c:1792
+#: sequencer.c:1961
 #, c-format
 msgid "%s does not accept arguments: '%s'"
 msgstr "%s 不接受参数:'%s'"
 
-#: sequencer.c:1801
+#: sequencer.c:1970
 #, c-format
 msgid "missing arguments for %s"
 msgstr "缺少 %s 的参数"
 
-#: sequencer.c:1844
+#: sequencer.c:2029
 #, c-format
 msgid "invalid line %d: %.*s"
 msgstr "无效行 %d:%.*s"
 
-#: sequencer.c:1852
+#: sequencer.c:2037
 #, c-format
 msgid "cannot '%s' without a previous commit"
 msgstr "没有父提交的情况下不能 '%s'"
 
-#: sequencer.c:1883 sequencer.c:3056 sequencer.c:3091
+#: sequencer.c:2085 sequencer.c:4138 sequencer.c:4173
 #, c-format
 msgid "could not read '%s'."
 msgstr "不能读取 '%s'。"
 
-#: sequencer.c:1906
+#: sequencer.c:2108
 msgid "please fix this using 'git rebase --edit-todo'."
 msgstr "请用 'git rebase --edit-todo' 来修改。"
 
-#: sequencer.c:1908
+#: sequencer.c:2110
 #, c-format
 msgid "unusable instruction sheet: '%s'"
 msgstr "不可用的指令清单:'%s'"
 
-#: sequencer.c:1913
+#: sequencer.c:2115
 msgid "no commits parsed."
 msgstr "没有解析提交。"
 
-#: sequencer.c:1924
+#: sequencer.c:2126
 msgid "cannot cherry-pick during a revert."
 msgstr "不能在回退中执行拣选。"
 
-#: sequencer.c:1926
+#: sequencer.c:2128
 msgid "cannot revert during a cherry-pick."
 msgstr "不能在拣选中执行回退。"
 
-#: sequencer.c:1993
+#: sequencer.c:2195
 #, c-format
 msgid "invalid key: %s"
 msgstr "无效键名:%s"
 
-#: sequencer.c:1996
+#: sequencer.c:2198
 #, c-format
 msgid "invalid value for %s: %s"
 msgstr "%s 的值无效:%s"
 
-#: sequencer.c:2062
+#: sequencer.c:2269
+msgid "unusable squash-onto"
+msgstr "不可用的 squash-onto"
+
+#: sequencer.c:2285
 #, c-format
 msgid "malformed options sheet: '%s'"
-msgstr "非法的选项清单:'%s'"
+msgstr "格式错误的选项清单:'%s'"
 
-#: sequencer.c:2100
+#: sequencer.c:2323
 msgid "a cherry-pick or revert is already in progress"
 msgstr "一个拣选或还原操作已在进行"
 
-#: sequencer.c:2101
+#: sequencer.c:2324
 msgid "try \"git cherry-pick (--continue | --quit | --abort)\""
 msgstr "尝试 \"git cherry-pick (--continue | --quit | --abort)\""
 
-#: sequencer.c:2104
+#: sequencer.c:2327
 #, c-format
 msgid "could not create sequencer directory '%s'"
 msgstr "不能创建序列目录 '%s'"
 
-#: sequencer.c:2118
+#: sequencer.c:2341
 msgid "could not lock HEAD"
 msgstr "不能锁定 HEAD"
 
-#: sequencer.c:2173 sequencer.c:2761
+#: sequencer.c:2396 sequencer.c:3403
 msgid "no cherry-pick or revert in progress"
 msgstr "拣选或还原操作并未进行"
 
-#: sequencer.c:2175
+#: sequencer.c:2398
 msgid "cannot resolve HEAD"
 msgstr "不能解析 HEAD"
 
-#: sequencer.c:2177 sequencer.c:2212
+#: sequencer.c:2400 sequencer.c:2435
 msgid "cannot abort from a branch yet to be born"
 msgstr "不能从尚未建立的分支终止"
 
-#: sequencer.c:2198 builtin/grep.c:720
+#: sequencer.c:2421 builtin/grep.c:720
 #, c-format
 msgid "cannot open '%s'"
 msgstr "不能打开 '%s'"
 
-#: sequencer.c:2200
+#: sequencer.c:2423
 #, c-format
 msgid "cannot read '%s': %s"
 msgstr "不能读取 '%s':%s"
 
-#: sequencer.c:2201
+#: sequencer.c:2424
 msgid "unexpected end of file"
 msgstr "意外的文件结束"
 
-#: sequencer.c:2207
+#: sequencer.c:2430
 #, c-format
 msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
 msgstr "保存拣选提交前的 HEAD 文件 '%s' 损坏"
 
-#: sequencer.c:2218
+#: sequencer.c:2441
 msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
 msgstr "您好像移动了 HEAD。未能回退,检查您的 HEAD!"
 
-#: sequencer.c:2324 sequencer.c:2679
+#: sequencer.c:2545 sequencer.c:3321
 #, c-format
 msgid "could not update %s"
 msgstr "不能更新 %s"
 
-#: sequencer.c:2362 sequencer.c:2659
+#: sequencer.c:2583 sequencer.c:3301
 msgid "cannot read HEAD"
 msgstr "不能读取 HEAD"
 
-#: sequencer.c:2402 builtin/difftool.c:639
+#: sequencer.c:2618 sequencer.c:2622 builtin/difftool.c:639
 #, c-format
 msgid "could not copy '%s' to '%s'"
 msgstr "不能拷贝 '%s' 至 '%s'"
 
-#: sequencer.c:2421
+#: sequencer.c:2641
 msgid "could not read index"
 msgstr "不能读取索引"
 
 #  译者:注意保持前导空格
-#: sequencer.c:2426
+#: sequencer.c:2646
 #, c-format
 msgid ""
 "execution failed: %s\n"
@@ -3604,11 +3882,11 @@ msgstr ""
 "  git rebase --continue\n"
 "\n"
 
-#: sequencer.c:2432
+#: sequencer.c:2652
 msgid "and made changes to the index and/or the working tree\n"
 msgstr "并且修改索引和/或工作区\n"
 
-#: sequencer.c:2438
+#: sequencer.c:2658
 #, c-format
 msgid ""
 "execution succeeded: %s\n"
@@ -3625,17 +3903,62 @@ msgstr ""
 "  git rebase --continue\n"
 "\n"
 
-#: sequencer.c:2497
+#: sequencer.c:2771
+msgid "writing fake root commit"
+msgstr "写伪根提交"
+
+#: sequencer.c:2776
+msgid "writing squash-onto"
+msgstr "写入 squash-onto"
+
+#: sequencer.c:2811
+#, c-format
+msgid "failed to find tree of %s"
+msgstr "无法找到 %s 指向的树。"
+
+#: sequencer.c:2829
+msgid "could not write index"
+msgstr "不能写入索引"
+
+#: sequencer.c:2861
+msgid "cannot merge without a current revision"
+msgstr "没有当前版本不能合并"
+
+#: sequencer.c:2884
+#, c-format
+msgid "could not resolve '%s'"
+msgstr "无法解析 '%s'"
+
+#: sequencer.c:2906
+#, c-format
+msgid "could not get commit message of '%s'"
+msgstr "不能获取 '%s' 的提交说明"
+
+#: sequencer.c:2916 sequencer.c:2941
+#, c-format
+msgid "could not write '%s'"
+msgstr "不能写入 '%s'"
+
+#: sequencer.c:3005
+#, c-format
+msgid "could not even attempt to merge '%.*s'"
+msgstr "甚至不能尝试合并 '%.*s'"
+
+#: sequencer.c:3021
+msgid "merge: Unable to write new index file"
+msgstr "合并:无法写入新索引文件"
+
+#: sequencer.c:3088
 #, c-format
 msgid "Applied autostash.\n"
 msgstr "已应用 autostash。\n"
 
-#: sequencer.c:2509
+#: sequencer.c:3100
 #, c-format
 msgid "cannot store %s"
 msgstr "不能存储 %s"
 
-#: sequencer.c:2512 git-rebase.sh:178
+#: sequencer.c:3103 git-rebase.sh:188
 #, c-format
 msgid ""
 "Applying autostash resulted in conflicts.\n"
@@ -3646,52 +3969,68 @@ msgstr ""
 "您的修改安全地保存在贮藏区中。\n"
 "您可以在任何时候运行 \"git stash pop\" 或 \"git stash drop\"。\n"
 
-#: sequencer.c:2595
+#: sequencer.c:3134
+#, c-format
+msgid ""
+"Could not execute the todo command\n"
+"\n"
+"    %.*s\n"
+"It has been rescheduled; To edit the command before continuing, please\n"
+"edit the todo list first:\n"
+"\n"
+"    git rebase --edit-todo\n"
+"    git rebase --continue\n"
+msgstr ""
+"无法执行待办命令\n"
+"\n"
+"    %.*s\n"
+"已被重新安排,在继续之前编辑命令,请先编辑待办列表:\n"
+"\n"
+"    git rebase --edit-todo\n"
+"    git rebase --continue\n"
+
+#: sequencer.c:3202
 #, c-format
 msgid "Stopped at %s...  %.*s\n"
 msgstr "停止在 %s... %.*s\n"
 
-#: sequencer.c:2637
+#: sequencer.c:3264
 #, c-format
 msgid "unknown command %d"
 msgstr "未知命令 %d"
 
-#: sequencer.c:2667
+#: sequencer.c:3309
 msgid "could not read orig-head"
 msgstr "不能读取 orig-head"
 
-#: sequencer.c:2672 sequencer.c:3262
+#: sequencer.c:3314 sequencer.c:4352
 msgid "could not read 'onto'"
 msgstr "不能读取 'onto'"
 
-#: sequencer.c:2686
+#: sequencer.c:3328
 #, c-format
 msgid "could not update HEAD to %s"
 msgstr "不能更新 HEAD 为 %s"
 
-#: sequencer.c:2770
+#: sequencer.c:3414
 msgid "cannot rebase: You have unstaged changes."
 msgstr "不能变基:您有未暂存的变更。"
 
-#: sequencer.c:2775
-msgid "could not remove CHERRY_PICK_HEAD"
-msgstr "不能删除 CHERRY_PICK_HEAD"
-
-#: sequencer.c:2784
+#: sequencer.c:3423
 msgid "cannot amend non-existing commit"
 msgstr "不能修补不存在的提交"
 
-#: sequencer.c:2786
+#: sequencer.c:3425
 #, c-format
 msgid "invalid file: '%s'"
 msgstr "无效文件:'%s'"
 
-#: sequencer.c:2788
+#: sequencer.c:3427
 #, c-format
 msgid "invalid contents: '%s'"
 msgstr "无效内容:'%s'"
 
-#: sequencer.c:2791
+#: sequencer.c:3430
 msgid ""
 "\n"
 "You have uncommitted changes in your working tree. Please, commit them\n"
@@ -3700,44 +4039,53 @@ msgstr ""
 "\n"
 "您的工作区中有未提交的变更。请先提交然后再次运行 'git rebase --continue'。"
 
-#: sequencer.c:2801
+#: sequencer.c:3455 sequencer.c:3493
+#, c-format
+msgid "could not write file: '%s'"
+msgstr "不能写入文件:'%s'"
+
+#: sequencer.c:3508
+msgid "could not remove CHERRY_PICK_HEAD"
+msgstr "不能删除 CHERRY_PICK_HEAD"
+
+#: sequencer.c:3515
 msgid "could not commit staged changes."
 msgstr "不能提交暂存的修改。"
 
-#: sequencer.c:2881
+#: sequencer.c:3612
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr "%s:不能拣选一个%s"
 
-#: sequencer.c:2885
+#: sequencer.c:3616
 #, c-format
 msgid "%s: bad revision"
 msgstr "%s:错误的版本"
 
-#: sequencer.c:2918
+#: sequencer.c:3649
 msgid "can't revert as initial commit"
 msgstr "不能作为初始提交回退"
 
-#: sequencer.c:3023
+#: sequencer.c:4098
 msgid "make_script: unhandled options"
 msgstr "make_script:有未能处理的选项"
 
-#: sequencer.c:3026
+#: sequencer.c:4101
 msgid "make_script: error preparing revisions"
 msgstr "make_script:准备版本时错误"
 
-#: sequencer.c:3060 sequencer.c:3095
+#: sequencer.c:4142 sequencer.c:4177
 #, c-format
 msgid "unusable todo list: '%s'"
 msgstr "不可用的待办列表:'%s'"
 
-#: sequencer.c:3146
+#: sequencer.c:4236
 #, c-format
 msgid ""
 "unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
 msgstr "选项 rebase.missingCommitsCheck 的值 %s 无法识别。已忽略。"
 
-#: sequencer.c:3212
+#: sequencer.c:4302
 #, c-format
 msgid ""
 "Warning: some commits may have been dropped accidentally.\n"
@@ -3746,7 +4094,7 @@ msgstr ""
 "警告:一些提交可能被意外丢弃。\n"
 "丢弃的提交(从新到旧):\n"
 
-#: sequencer.c:3219
+#: sequencer.c:4309
 #, c-format
 msgid ""
 "To avoid this message, use \"drop\" to explicitly remove a commit.\n"
@@ -3762,7 +4110,7 @@ msgstr ""
 "可选值有:ignore、warn、error。\n"
 "\n"
 
-#: sequencer.c:3231
+#: sequencer.c:4321
 #, c-format
 msgid ""
 "You can fix this with 'git rebase --edit-todo' and then run 'git rebase --"
@@ -3772,27 +4120,21 @@ msgstr ""
 "您可以用 'git rebase --edit-todo' 修正,然后执行 'git rebase --continue'。\n"
 "或者您可以用 'git rebase --abort' 终止变基。\n"
 
-#: sequencer.c:3244 sequencer.c:3304 wrapper.c:225 wrapper.c:395
-#: builtin/am.c:779
-#, c-format
-msgid "could not open '%s' for writing"
-msgstr "无法打开 '%s' 进行写入"
-
-#: sequencer.c:3285
+#: sequencer.c:4375
 #, c-format
 msgid "could not parse commit '%s'"
 msgstr "不能解析提交 '%s'"
 
-#: sequencer.c:3401
+#: sequencer.c:4490
 msgid "the script was already rearranged."
 msgstr "脚本已经重新编排。"
 
-#: setup.c:122
+#: setup.c:123
 #, c-format
 msgid "'%s' is outside repository"
 msgstr "'%s' 在仓库之外"
 
-#: setup.c:171
+#: setup.c:172
 #, c-format
 msgid ""
 "%s: no such path in the working tree.\n"
@@ -3801,7 +4143,7 @@ msgstr ""
 "%s:工作区中无此路径。\n"
 "使用命令 'git <命令> -- <路径>...' 来指定本地不存在的路径。"
 
-#: setup.c:184
+#: setup.c:185
 #, c-format
 msgid ""
 "ambiguous argument '%s': unknown revision or path not in the working tree.\n"
@@ -3812,12 +4154,12 @@ msgstr ""
 "使用 '--' 来分隔版本和路径,例如:\n"
 "'git <命令> [<版本>...] -- [<文件>...]'"
 
-#: setup.c:233
+#: setup.c:234
 #, c-format
 msgid "option '%s' must come before non-option arguments"
 msgstr "选项 '%s' 必须在其他非选项参数之前"
 
-#: setup.c:252
+#: setup.c:253
 #, c-format
 msgid ""
 "ambiguous argument '%s': both revision and filename\n"
@@ -3828,92 +4170,92 @@ msgstr ""
 "使用 '--' 来分隔版本和路径,例如:\n"
 "'git <命令> [<版本>...] -- [<文件>...]'"
 
-#: setup.c:388
+#: setup.c:389
 msgid "unable to set up work tree using invalid config"
 msgstr "无法使用无效配置来创建工作区"
 
-#: setup.c:395
+#: setup.c:393
 msgid "this operation must be run in a work tree"
 msgstr "该操作必须在一个工作区中运行"
 
-#: setup.c:506
+#: setup.c:503
 #, c-format
 msgid "Expected git repo version <= %d, found %d"
 msgstr "期望 git 仓库版本 <= %d,却得到 %d"
 
-#: setup.c:514
+#: setup.c:511
 msgid "unknown repository extensions found:"
 msgstr "发现未知的仓库扩展:"
 
-#: setup.c:533
+#: setup.c:530
 #, c-format
 msgid "error opening '%s'"
 msgstr "无法打开 '%s'"
 
-#: setup.c:535
+#: setup.c:532
 #, c-format
 msgid "too large to be a .git file: '%s'"
 msgstr "文件太大,无法作为 .git 文件:'%s'"
 
-#: setup.c:537
+#: setup.c:534
 #, c-format
 msgid "error reading %s"
 msgstr "无法读取 %s"
 
-#: setup.c:539
+#: setup.c:536
 #, c-format
 msgid "invalid gitfile format: %s"
 msgstr "无效的 gitfile 格式:%s"
 
-#: setup.c:541
+#: setup.c:538
 #, c-format
 msgid "no path in gitfile: %s"
 msgstr "在 gitfile 中没有路径:%s"
 
-#: setup.c:543
+#: setup.c:540
 #, c-format
 msgid "not a git repository: %s"
 msgstr "不是一个 git 仓库:%s"
 
-#: setup.c:642
+#: setup.c:639
 #, c-format
 msgid "'$%s' too big"
 msgstr "'$%s' 太大"
 
-#: setup.c:656
+#: setup.c:653
 #, c-format
 msgid "not a git repository: '%s'"
 msgstr "不是一个 git 仓库:'%s'"
 
-#: setup.c:685 setup.c:687 setup.c:718
+#: setup.c:682 setup.c:684 setup.c:715
 #, c-format
 msgid "cannot chdir to '%s'"
 msgstr "不能切换目录到 '%s'"
 
-#: setup.c:690 setup.c:746 setup.c:756 setup.c:795 setup.c:803 setup.c:818
+#: setup.c:687 setup.c:743 setup.c:753 setup.c:792 setup.c:800 setup.c:815
 msgid "cannot come back to cwd"
 msgstr "无法返回当前工作目录"
 
-#: setup.c:816
+#: setup.c:813
 #, c-format
 msgid "not a git repository (or any of the parent directories): %s"
 msgstr "不是一个 git 仓库(或者任何父目录):%s"
 
-#: setup.c:827
+#: setup.c:824
 #, c-format
 msgid "failed to stat '%*s%s%s'"
 msgstr "无法获取 '%*s%s%s' 状态(stat)"
 
-#: setup.c:1057
+#: setup.c:1054
 msgid "Unable to read current working directory"
 msgstr "不能读取当前工作目录"
 
-#: setup.c:1069 setup.c:1075
+#: setup.c:1066 setup.c:1072
 #, c-format
 msgid "cannot change to '%s'"
 msgstr "不能切换到 '%s'"
 
-#: setup.c:1088
+#: setup.c:1085
 #, c-format
 msgid ""
 "not a git repository (or any parent up to mount point %s)\n"
@@ -3922,7 +4264,7 @@ msgstr ""
 "不是一个 git 仓库(或者直至挂载点 %s 的任何父目录)\n"
 "停止在文件系统边界(未设置 GIT_DISCOVERY_ACROSS_FILESYSTEM)。"
 
-#: setup.c:1172
+#: setup.c:1168
 #, c-format
 msgid ""
 "problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -3931,53 +4273,53 @@ msgstr ""
 "参数 core.sharedRepository 的文件属性值有问题(0%.3o)。\n"
 "文件属主必须始终拥有读写权限。"
 
-#: setup.c:1215
+#: setup.c:1211
 msgid "open /dev/null or dup failed"
 msgstr "不能打开或者复制 /dev/null"
 
-#: setup.c:1230
+#: setup.c:1226
 msgid "fork failed"
 msgstr "fork 失败"
 
-#: setup.c:1235
+#: setup.c:1231
 msgid "setsid failed"
 msgstr "setsid 失败"
 
-#: sha1_file.c:592
+#: sha1-file.c:625
 #, c-format
 msgid "path '%s' does not exist"
 msgstr "路径 '%s' 不存在"
 
-#: sha1_file.c:618
+#: sha1-file.c:651
 #, c-format
 msgid "reference repository '%s' as a linked checkout is not supported yet."
 msgstr "尚不支持将参考仓库 '%s' 作为一个链接检出。"
 
-#: sha1_file.c:624
+#: sha1-file.c:657
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr "参考仓库 '%s' 不是一个本地仓库。"
 
-#: sha1_file.c:630
+#: sha1-file.c:663
 #, c-format
 msgid "reference repository '%s' is shallow"
 msgstr "参考仓库 '%s' 是一个浅克隆"
 
-#: sha1_file.c:638
+#: sha1-file.c:671
 #, c-format
 msgid "reference repository '%s' is grafted"
-msgstr "参考仓库 '%s' 已被嫁接"
+msgstr "参考仓库 '%s' 已被移植"
 
-#: sha1_name.c:422
+#: sha1-name.c:442
 #, c-format
 msgid "short SHA1 %s is ambiguous"
 msgstr "短 SHA1 %s 存在歧义"
 
-#: sha1_name.c:433
+#: sha1-name.c:453
 msgid "The candidates are:"
 msgstr "候选者有:"
 
-#: sha1_name.c:693
+#: sha1-name.c:695
 msgid ""
 "Git normally never creates a ref that ends with 40 hex characters\n"
 "because it will be ignored when you just specify 40-hex. These refs\n"
@@ -3998,86 +4340,86 @@ msgstr ""
 "可能需要删除它们。用 \"git config advice.objectNameWarning false\"\n"
 "命令关闭本消息通知。"
 
-#: submodule.c:96 submodule.c:130
+#: submodule.c:97 submodule.c:131
 msgid "Cannot change unmerged .gitmodules, resolve merge conflicts first"
 msgstr "无法修改未合并的 .gitmodules,先解决合并冲突"
 
-#: submodule.c:100 submodule.c:134
+#: submodule.c:101 submodule.c:135
 #, c-format
 msgid "Could not find section in .gitmodules where path=%s"
 msgstr "无法在 .gitmodules 中找到 path=%s 的小节"
 
-#: submodule.c:108
+#: submodule.c:109
 #, c-format
 msgid "Could not update .gitmodules entry %s"
 msgstr "不能更新 .gitmodules 条目 %s"
 
-#: submodule.c:141
+#: submodule.c:142
 #, c-format
 msgid "Could not remove .gitmodules entry for %s"
 msgstr "无法移除 %s 的 .gitmodules 条目"
 
-#: submodule.c:152
+#: submodule.c:153
 msgid "staging updated .gitmodules failed"
 msgstr "将更新后 .gitmodules 添加暂存区失败"
 
-#: submodule.c:312
+#: submodule.c:315
 #, c-format
 msgid "in unpopulated submodule '%s'"
 msgstr "位于未检出的子模组 '%s'"
 
-#: submodule.c:343
+#: submodule.c:346
 #, c-format
 msgid "Pathspec '%s' is in submodule '%.*s'"
 msgstr "路径规格 '%s' 在子模组 '%.*s' 中"
 
-#: submodule.c:833
+#: submodule.c:837
 #, c-format
 msgid "submodule entry '%s' (%s) is a %s, not a commit"
 msgstr "子模组条目 '%s'(%s)是一个 %s,不是一个提交"
 
-#: submodule.c:1065 builtin/branch.c:648 builtin/submodule--helper.c:1724
+#: submodule.c:1069 builtin/branch.c:651 builtin/submodule--helper.c:1743
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "无法将 HEAD 解析为有效引用。"
 
-#: submodule.c:1370
+#: submodule.c:1375
 #, c-format
 msgid "'%s' not recognized as a git repository"
 msgstr "无法将 '%s' 识别为一个 git 仓库"
 
-#: submodule.c:1508
+#: submodule.c:1513
 #, c-format
 msgid "could not start 'git status' in submodule '%s'"
 msgstr "无法在子模组 '%s' 中启动 'git status'"
 
-#: submodule.c:1521
+#: submodule.c:1526
 #, c-format
 msgid "could not run 'git status' in submodule '%s'"
 msgstr "无法在子模组 '%s' 中执行 'git status'"
 
-#: submodule.c:1614
+#: submodule.c:1619
 #, c-format
 msgid "submodule '%s' has dirty index"
 msgstr "子模组 '%s' 中有脏索引"
 
-#: submodule.c:1878
+#: submodule.c:1718
 #, c-format
 msgid ""
 "relocate_gitdir for submodule '%s' with more than one worktree not supported"
 msgstr "不支持对有多个工作区的子模组 '%s' 执行 relocate_gitdir"
 
-#: submodule.c:1890 submodule.c:1946
+#: submodule.c:1730 submodule.c:1786
 #, c-format
 msgid "could not lookup name for submodule '%s'"
 msgstr "不能查询子模组 '%s' 的名称"
 
-#: submodule.c:1894 builtin/submodule--helper.c:1246
-#: builtin/submodule--helper.c:1256
+#: submodule.c:1734 builtin/submodule--helper.c:1261
+#: builtin/submodule--helper.c:1271
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "不能创建目录 '%s'"
 
-#: submodule.c:1897
+#: submodule.c:1737
 #, c-format
 msgid ""
 "Migrating git directory of '%s%s' from\n"
@@ -4088,29 +4430,30 @@ msgstr ""
 "'%s' 迁移至\n"
 "'%s'\n"
 
-#: submodule.c:1981
+#: submodule.c:1821
 #, c-format
 msgid "could not recurse into submodule '%s'"
 msgstr "无法递归进子模组路径 '%s'"
 
-#: submodule.c:2025
+#: submodule.c:1865
 msgid "could not start ls-files in .."
 msgstr "无法在 .. 中启动 ls-files"
 
-#: submodule.c:2045
-msgid "BUG: returned path string doesn't match cwd?"
-msgstr "BUG:返回的路径和当前路径不匹配?"
-
-#: submodule.c:2064
+#: submodule.c:1904
 #, c-format
 msgid "ls-tree returned unexpected return code %d"
 msgstr "ls-tree 返回未知返回值 %d"
 
-#: submodule-config.c:263
+#: submodule-config.c:230
+#, c-format
+msgid "ignoring suspicious submodule name: %s"
+msgstr "忽略可疑的子模组名称:%s"
+
+#: submodule-config.c:294
 msgid "negative values not allowed for submodule.fetchjobs"
 msgstr "submodule.fetchjobs 不允许为负值"
 
-#: submodule-config.c:436
+#: submodule-config.c:467
 #, c-format
 msgid "invalid value for %s"
 msgstr "%s 的值无效"
@@ -4126,7 +4469,7 @@ msgstr "执行 trailer 命令 '%s' 失败"
 msgid "unknown value '%s' for key '%s'"
 msgstr "键 '%2$s' 的未知取值 '%1$s'"
 
-#: trailer.c:539 trailer.c:544 builtin/remote.c:290
+#: trailer.c:539 trailer.c:544 builtin/remote.c:293
 #, c-format
 msgid "more than one %s"
 msgstr "多于一个 %s"
@@ -4169,24 +4512,28 @@ msgstr "不能打开临时文件"
 msgid "could not rename temporary file to %s"
 msgstr "不能重命名临时文件为 %s"
 
-#: transport.c:63
+#: transport.c:116
 #, c-format
 msgid "Would set upstream of '%s' to '%s' of '%s'\n"
 msgstr "将要设置 '%1$s' 的上游为 '%3$s' 的 '%2$s'\n"
 
-#: transport.c:152
+#: transport.c:208
 #, c-format
 msgid "transport: invalid depth option '%s'"
 msgstr "传输:无效的深度选项 '%s'"
 
-#: transport.c:916
+#: transport.c:584
+msgid "could not parse transport.color.* config"
+msgstr "不能解析 transport.color.* 配置"
+
+#: transport.c:996
 #, c-format
 msgid ""
 "The following submodule paths contain changes that can\n"
 "not be found on any remote:\n"
 msgstr "下列子模组路径所包含的修改在任何远程源中都找不到:\n"
 
-#: transport.c:920
+#: transport.c:1000
 #, c-format
 msgid ""
 "\n"
@@ -4213,11 +4560,11 @@ msgstr ""
 "以推送至远程。\n"
 "\n"
 
-#: transport.c:928
+#: transport.c:1008
 msgid "Aborting."
 msgstr "正在终止。"
 
-#: transport-helper.c:1079
+#: transport-helper.c:1087
 #, c-format
 msgid "Could not read ref %s"
 msgstr "不能读取引用 %s"
@@ -4234,11 +4581,11 @@ msgstr "树对象中的条目模式错误"
 msgid "empty filename in tree entry"
 msgstr "树对象条目中空的文件名"
 
-#: tree-walk.c:114
+#: tree-walk.c:113
 msgid "too-short tree file"
 msgstr "太短的树文件"
 
-#: unpack-trees.c:108
+#: unpack-trees.c:111
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by checkout:\n"
@@ -4247,7 +4594,7 @@ msgstr ""
 "您对下列文件的本地修改将被检出操作覆盖:\n"
 "%%s请在切换分支前提交或贮藏您的修改。"
 
-#: unpack-trees.c:110
+#: unpack-trees.c:113
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by checkout:\n"
@@ -4256,7 +4603,7 @@ msgstr ""
 "您对下列文件的本地修改将被检出操作覆盖:\n"
 "%%s"
 
-#: unpack-trees.c:113
+#: unpack-trees.c:116
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -4265,7 +4612,7 @@ msgstr ""
 "您对下列文件的本地修改将被合并操作覆盖:\n"
 "%%s请在合并前提交或贮藏您的修改。"
 
-#: unpack-trees.c:115
+#: unpack-trees.c:118
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by merge:\n"
@@ -4274,7 +4621,7 @@ msgstr ""
 "您对下列文件的本地修改将被合并操作覆盖:\n"
 "%%s"
 
-#: unpack-trees.c:118
+#: unpack-trees.c:121
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by %s:\n"
@@ -4283,7 +4630,7 @@ msgstr ""
 "您对下列文件的本地修改将被 %s 覆盖:\n"
 "%%s请在 %s 之前提交或贮藏您的修改。"
 
-#: unpack-trees.c:120
+#: unpack-trees.c:123
 #, c-format
 msgid ""
 "Your local changes to the following files would be overwritten by %s:\n"
@@ -4292,7 +4639,7 @@ msgstr ""
 "您对下列文件的本地修改将被 %s 覆盖:\n"
 "%%s"
 
-#: unpack-trees.c:125
+#: unpack-trees.c:128
 #, c-format
 msgid ""
 "Updating the following directories would lose untracked files in them:\n"
@@ -4301,7 +4648,7 @@ msgstr ""
 "更新如下目录将会丢失其中未跟踪的文件:\n"
 "%s"
 
-#: unpack-trees.c:129
+#: unpack-trees.c:132
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by checkout:\n"
@@ -4310,7 +4657,7 @@ msgstr ""
 "工作区中下列未跟踪的文件将会因为检出操作而被删除:\n"
 "%%s请在切换分支之前移动或删除。"
 
-#: unpack-trees.c:131
+#: unpack-trees.c:134
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by checkout:\n"
@@ -4319,7 +4666,7 @@ msgstr ""
 "工作区中下列未跟踪的文件将会因为检出操作而被删除:\n"
 "%%s"
 
-#: unpack-trees.c:134
+#: unpack-trees.c:137
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by merge:\n"
@@ -4328,7 +4675,7 @@ msgstr ""
 "工作区中下列未跟踪的文件将会因为合并操作而被删除:\n"
 "%%s请在合并前移动或删除。"
 
-#: unpack-trees.c:136
+#: unpack-trees.c:139
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by merge:\n"
@@ -4337,7 +4684,7 @@ msgstr ""
 "工作区中下列未跟踪的文件将会因为合并操作而被删除:\n"
 "%%s"
 
-#: unpack-trees.c:139
+#: unpack-trees.c:142
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by %s:\n"
@@ -4346,7 +4693,7 @@ msgstr ""
 "工作区中下列未跟踪的文件将会因为 %s 操作而被删除:\n"
 "%%s请在 %s 前移动或删除。"
 
-#: unpack-trees.c:141
+#: unpack-trees.c:144
 #, c-format
 msgid ""
 "The following untracked working tree files would be removed by %s:\n"
@@ -4355,7 +4702,7 @@ msgstr ""
 "工作区中下列未跟踪的文件将会因为 %s 操作而被删除:\n"
 "%%s"
 
-#: unpack-trees.c:146
+#: unpack-trees.c:150
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by "
@@ -4365,7 +4712,7 @@ msgstr ""
 "工作区中下列未跟踪的文件将会因为检出操作而被覆盖:\n"
 "%%s请在切换分支前移动或删除。"
 
-#: unpack-trees.c:148
+#: unpack-trees.c:152
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by "
@@ -4375,7 +4722,7 @@ msgstr ""
 "工作区中下列未跟踪的文件将会因为检出操作而被覆盖:\n"
 "%%s"
 
-#: unpack-trees.c:151
+#: unpack-trees.c:155
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by merge:\n"
@@ -4384,7 +4731,7 @@ msgstr ""
 "工作区中下列未跟踪的文件将会因为合并操作而被覆盖:\n"
 "%%s请在合并前移动或删除。"
 
-#: unpack-trees.c:153
+#: unpack-trees.c:157
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by merge:\n"
@@ -4393,7 +4740,7 @@ msgstr ""
 "工作区中下列未跟踪的文件将会因为合并操作而被覆盖:\n"
 "%%s"
 
-#: unpack-trees.c:156
+#: unpack-trees.c:160
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by %s:\n"
@@ -4402,7 +4749,7 @@ msgstr ""
 "工作区中下列未跟踪的文件将会因为 %s 操作而被覆盖:\n"
 "%%s请在 %s 前移动或删除。"
 
-#: unpack-trees.c:158
+#: unpack-trees.c:162
 #, c-format
 msgid ""
 "The following untracked working tree files would be overwritten by %s:\n"
@@ -4411,12 +4758,12 @@ msgstr ""
 "工作区中下列未跟踪的文件将会因为 %s 操作而被覆盖:\n"
 "%%s"
 
-#: unpack-trees.c:165
+#: unpack-trees.c:170
 #, c-format
 msgid "Entry '%s' overlaps with '%s'.  Cannot bind."
 msgstr "条目 '%s' 和 '%s' 重叠。无法合并。"
 
-#: unpack-trees.c:168
+#: unpack-trees.c:173
 #, c-format
 msgid ""
 "Cannot update sparse checkout: the following entries are not up to date:\n"
@@ -4425,7 +4772,7 @@ msgstr ""
 "无法更新稀疏检出:如下条目不是最新:\n"
 "%s"
 
-#: unpack-trees.c:170
+#: unpack-trees.c:175
 #, c-format
 msgid ""
 "The following working tree files would be overwritten by sparse checkout "
@@ -4435,7 +4782,7 @@ msgstr ""
 "工作区中下列文件将被稀疏检出更新所覆盖:\n"
 "%s"
 
-#: unpack-trees.c:172
+#: unpack-trees.c:177
 #, c-format
 msgid ""
 "The following working tree files would be removed by sparse checkout "
@@ -4445,7 +4792,7 @@ msgstr ""
 "工作区中下列文件将被稀疏检出更新所删除:\n"
 "%s"
 
-#: unpack-trees.c:174
+#: unpack-trees.c:179
 #, c-format
 msgid ""
 "Cannot update submodule:\n"
@@ -4454,12 +4801,12 @@ msgstr ""
 "无法更新子模组:\n"
 "%s"
 
-#: unpack-trees.c:251
+#: unpack-trees.c:262
 #, c-format
 msgid "Aborting\n"
 msgstr "终止中\n"
 
-#: unpack-trees.c:333
+#: unpack-trees.c:344
 msgid "Checking out files"
 msgstr "正在检出文件"
 
@@ -4528,7 +4875,7 @@ msgid "could not open '%s' for reading and writing"
 msgstr "无法打开 '%s' 进行读写"
 
 #: wrapper.c:227 wrapper.c:397 builtin/am.c:320 builtin/am.c:770
-#: builtin/am.c:862 builtin/merge.c:1044
+#: builtin/am.c:862 builtin/merge.c:1043
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "无法打开 '%s' 进行读取"
@@ -4542,162 +4889,162 @@ msgstr "不能访问 '%s'"
 msgid "unable to get current working directory"
 msgstr "不能获取当前工作目录"
 
-#: wt-status.c:151
+#: wt-status.c:154
 msgid "Unmerged paths:"
 msgstr "未合并的路径:"
 
 #  译者:注意保持前导空格
-#: wt-status.c:178 wt-status.c:205
+#: wt-status.c:181 wt-status.c:208
 #, c-format
 msgid "  (use \"git reset %s <file>...\" to unstage)"
 msgstr "  (使用 \"git reset %s <文件>...\" 以取消暂存)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:180 wt-status.c:207
+#: wt-status.c:183 wt-status.c:210
 msgid "  (use \"git rm --cached <file>...\" to unstage)"
 msgstr "  (使用 \"git rm --cached <文件>...\" 以取消暂存)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:184
+#: wt-status.c:187
 msgid "  (use \"git add <file>...\" to mark resolution)"
 msgstr "  (使用 \"git add <文件>...\" 标记解决方案)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:186 wt-status.c:190
+#: wt-status.c:189 wt-status.c:193
 msgid "  (use \"git add/rm <file>...\" as appropriate to mark resolution)"
 msgstr "  (酌情使用 \"git add/rm <文件>...\" 标记解决方案)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:188
+#: wt-status.c:191
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (使用 \"git rm <文件>...\" 标记解决方案)"
 
-#: wt-status.c:199 wt-status.c:1007
+#: wt-status.c:202 wt-status.c:1015
 msgid "Changes to be committed:"
 msgstr "要提交的变更:"
 
-#: wt-status.c:217 wt-status.c:1016
+#: wt-status.c:220 wt-status.c:1024
 msgid "Changes not staged for commit:"
 msgstr "尚未暂存以备提交的变更:"
 
 #  译者:注意保持前导空格
-#: wt-status.c:221
+#: wt-status.c:224
 msgid "  (use \"git add <file>...\" to update what will be committed)"
 msgstr "  (使用 \"git add <文件>...\" 更新要提交的内容)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:223
+#: wt-status.c:226
 msgid "  (use \"git add/rm <file>...\" to update what will be committed)"
 msgstr "  (使用 \"git add/rm <文件>...\" 更新要提交的内容)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:224
+#: wt-status.c:227
 msgid ""
 "  (use \"git checkout -- <file>...\" to discard changes in working directory)"
 msgstr "  (使用 \"git checkout -- <文件>...\" 丢弃工作区的改动)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:226
+#: wt-status.c:229
 msgid "  (commit or discard the untracked or modified content in submodules)"
 msgstr "  (提交或丢弃子模组中未跟踪或修改的内容)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:238
+#: wt-status.c:241
 #, c-format
 msgid "  (use \"git %s <file>...\" to include in what will be committed)"
 msgstr "  (使用 \"git %s <文件>...\" 以包含要提交的内容)"
 
-#: wt-status.c:253
+#: wt-status.c:256
 msgid "both deleted:"
 msgstr "双方删除:"
 
-#: wt-status.c:255
+#: wt-status.c:258
 msgid "added by us:"
 msgstr "由我们添加:"
 
-#: wt-status.c:257
+#: wt-status.c:260
 msgid "deleted by them:"
 msgstr "由他们删除:"
 
-#: wt-status.c:259
+#: wt-status.c:262
 msgid "added by them:"
 msgstr "由他们添加:"
 
-#: wt-status.c:261
+#: wt-status.c:264
 msgid "deleted by us:"
 msgstr "由我们删除:"
 
-#: wt-status.c:263
+#: wt-status.c:266
 msgid "both added:"
 msgstr "双方添加:"
 
-#: wt-status.c:265
+#: wt-status.c:268
 msgid "both modified:"
 msgstr "双方修改:"
 
-#: wt-status.c:275
+#: wt-status.c:278
 msgid "new file:"
 msgstr "新文件:"
 
-#: wt-status.c:277
+#: wt-status.c:280
 msgid "copied:"
 msgstr "拷贝:"
 
-#: wt-status.c:279
+#: wt-status.c:282
 msgid "deleted:"
 msgstr "删除:"
 
-#: wt-status.c:281
+#: wt-status.c:284
 msgid "modified:"
 msgstr "修改:"
 
-#: wt-status.c:283
+#: wt-status.c:286
 msgid "renamed:"
 msgstr "重命名:"
 
-#: wt-status.c:285
+#: wt-status.c:288
 msgid "typechange:"
 msgstr "类型变更:"
 
-#: wt-status.c:287
+#: wt-status.c:290
 msgid "unknown:"
 msgstr "未知:"
 
-#: wt-status.c:289
+#: wt-status.c:292
 msgid "unmerged:"
 msgstr "未合并:"
 
 #  译者:末尾两个字节可能被删减,如果翻译为中文标点会出现半个汉字
-#: wt-status.c:369
+#: wt-status.c:372
 msgid "new commits, "
 msgstr "新提交, "
 
 #  译者:末尾两个字节可能被删减,如果翻译为中文标点会出现半个汉字
-#: wt-status.c:371
+#: wt-status.c:374
 msgid "modified content, "
 msgstr "修改的内容, "
 
 #  译者:末尾两个字节可能被删减,如果翻译为中文标点会出现半个汉字
-#: wt-status.c:373
+#: wt-status.c:376
 msgid "untracked content, "
 msgstr "未跟踪的内容, "
 
-#: wt-status.c:847
+#: wt-status.c:853
 #, c-format
 msgid "Your stash currently has %d entry"
 msgid_plural "Your stash currently has %d entries"
 msgstr[0] "您的贮藏区当前有 %d 条记录"
 msgstr[1] "您的贮藏区当前有 %d 条记录"
 
-#: wt-status.c:879
+#: wt-status.c:885
 msgid "Submodules changed but not updated:"
 msgstr "子模组已修改但尚未更新:"
 
-#: wt-status.c:881
+#: wt-status.c:887
 msgid "Submodule changes to be committed:"
 msgstr "要提交的子模组变更:"
 
-#: wt-status.c:963
+#: wt-status.c:969
 msgid ""
 "Do not modify or remove the line above.\n"
 "Everything below it will be ignored."
@@ -4705,77 +5052,77 @@ msgstr ""
 "不要改动或删除上面的一行。\n"
 "其下所有内容都将被忽略。"
 
-#: wt-status.c:1076
+#: wt-status.c:1084
 msgid "You have unmerged paths."
 msgstr "您有尚未合并的路径。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1079
+#: wt-status.c:1087
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (解决冲突并运行 \"git commit\")"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1081
+#: wt-status.c:1089
 msgid "  (use \"git merge --abort\" to abort the merge)"
 msgstr "  (使用 \"git merge --abort\" 终止合并)"
 
-#: wt-status.c:1086
+#: wt-status.c:1094
 msgid "All conflicts fixed but you are still merging."
 msgstr "所有冲突已解决但您仍处于合并中。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1089
+#: wt-status.c:1097
 msgid "  (use \"git commit\" to conclude merge)"
 msgstr "  (使用 \"git commit\" 结束合并)"
 
-#: wt-status.c:1099
+#: wt-status.c:1107
 msgid "You are in the middle of an am session."
 msgstr "您正处于 am 操作过程中。"
 
-#: wt-status.c:1102
+#: wt-status.c:1110
 msgid "The current patch is empty."
 msgstr "当前的补丁为空。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1106
+#: wt-status.c:1114
 msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr "  (解决冲突,然后运行 \"git am --continue\")"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1108
+#: wt-status.c:1116
 msgid "  (use \"git am --skip\" to skip this patch)"
 msgstr "  (使用 \"git am --skip\" 跳过此补丁)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1110
+#: wt-status.c:1118
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr "  (使用 \"git am --abort\" 恢复原有分支)"
 
-#: wt-status.c:1242
+#: wt-status.c:1250
 msgid "git-rebase-todo is missing."
 msgstr "git-rebase-todo 丢失。"
 
-#: wt-status.c:1244
+#: wt-status.c:1252
 msgid "No commands done."
 msgstr "没有命令被执行。"
 
-#: wt-status.c:1247
+#: wt-status.c:1255
 #, c-format
 msgid "Last command done (%d command done):"
 msgid_plural "Last commands done (%d commands done):"
 msgstr[0] "最后一条命令已完成(%d 条命令被执行):"
 msgstr[1] "最后的命令已完成(%d 条命令被执行):"
 
-#: wt-status.c:1258
+#: wt-status.c:1266
 #, c-format
 msgid "  (see more in file %s)"
 msgstr "  (更多参见文件 %s)"
 
-#: wt-status.c:1263
+#: wt-status.c:1271
 msgid "No commands remaining."
 msgstr "未剩下任何命令。"
 
-#: wt-status.c:1266
+#: wt-status.c:1274
 #, c-format
 msgid "Next command to do (%d remaining command):"
 msgid_plural "Next commands to do (%d remaining commands):"
@@ -4783,169 +5130,169 @@ msgstr[0] "接下来要执行的命令(剩余 %d 条命令):"
 msgstr[1] "接下来要执行的命令(剩余 %d 条命令):"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1274
+#: wt-status.c:1282
 msgid "  (use \"git rebase --edit-todo\" to view and edit)"
 msgstr "  (使用 \"git rebase --edit-todo\" 来查看和编辑)"
 
-#: wt-status.c:1287
+#: wt-status.c:1295
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
 msgstr "您在执行将分支 '%s' 变基到 '%s' 的操作。"
 
-#: wt-status.c:1292
+#: wt-status.c:1300
 msgid "You are currently rebasing."
 msgstr "您在执行变基操作。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1306
+#: wt-status.c:1314
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
 msgstr "  (解决冲突,然后运行 \"git rebase --continue\")"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1308
+#: wt-status.c:1316
 msgid "  (use \"git rebase --skip\" to skip this patch)"
 msgstr "  (使用 \"git rebase --skip\" 跳过此补丁)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1310
+#: wt-status.c:1318
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr "  (使用 \"git rebase --abort\" 以检出原有分支)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1316
+#: wt-status.c:1324
 msgid "  (all conflicts fixed: run \"git rebase --continue\")"
 msgstr "  (所有冲突已解决:运行 \"git rebase --continue\")"
 
-#: wt-status.c:1320
+#: wt-status.c:1328
 #, c-format
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
 msgstr "您在执行将分支 '%s' 变基到 '%s' 的操作时拆分提交。"
 
-#: wt-status.c:1325
+#: wt-status.c:1333
 msgid "You are currently splitting a commit during a rebase."
 msgstr "您在执行变基操作时拆分提交。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1328
+#: wt-status.c:1336
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr "  (一旦您工作目录提交干净后,运行 \"git rebase --continue\")"
 
-#: wt-status.c:1332
+#: wt-status.c:1340
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr "您在执行将分支 '%s' 变基到 '%s' 的操作时编辑提交。"
 
-#: wt-status.c:1337
+#: wt-status.c:1345
 msgid "You are currently editing a commit during a rebase."
 msgstr "您在执行变基操作时编辑提交。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1340
+#: wt-status.c:1348
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr "  (使用 \"git commit --amend\" 修补当前提交)"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1342
+#: wt-status.c:1350
 msgid ""
 "  (use \"git rebase --continue\" once you are satisfied with your changes)"
 msgstr "  (当您对您的修改满意后执行 \"git rebase --continue\")"
 
-#: wt-status.c:1352
+#: wt-status.c:1360
 #, c-format
 msgid "You are currently cherry-picking commit %s."
 msgstr "您在执行拣选提交 %s 的操作。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1357
+#: wt-status.c:1365
 msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
 msgstr "  (解决冲突并运行 \"git cherry-pick --continue\")"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1360
+#: wt-status.c:1368
 msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
 msgstr "  (所有冲突已解决:运行 \"git cherry-pick --continue\")"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1362
+#: wt-status.c:1370
 msgid "  (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
 msgstr "  (使用 \"git cherry-pick --abort\" 以取消拣选操作)"
 
-#: wt-status.c:1371
+#: wt-status.c:1379
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "您在执行反转提交 %s 的操作。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1376
+#: wt-status.c:1384
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (解决冲突并运行 \"git revert --continue\")"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1379
+#: wt-status.c:1387
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (所有冲突已解决:运行 \"git revert --continue\")"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1381
+#: wt-status.c:1389
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (使用 \"git revert --abort\" 以取消反转提交操作)"
 
-#: wt-status.c:1392
+#: wt-status.c:1400
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
 msgstr "您在执行从分支 '%s' 开始的二分查找操作。"
 
-#: wt-status.c:1396
+#: wt-status.c:1404
 msgid "You are currently bisecting."
 msgstr "您在执行二分查找操作。"
 
 #  译者:注意保持前导空格
-#: wt-status.c:1399
+#: wt-status.c:1407
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr "  (使用 \"git bisect reset\" 以回到原有分支)"
 
-#: wt-status.c:1596
+#: wt-status.c:1604
 msgid "On branch "
 msgstr "位于分支 "
 
-#: wt-status.c:1602
+#: wt-status.c:1610
 msgid "interactive rebase in progress; onto "
 msgstr "交互式变基操作正在进行中;至 "
 
-#: wt-status.c:1604
+#: wt-status.c:1612
 msgid "rebase in progress; onto "
 msgstr "变基操作正在进行中;至 "
 
-#: wt-status.c:1609
+#: wt-status.c:1617
 msgid "HEAD detached at "
 msgstr "头指针分离于 "
 
-#: wt-status.c:1611
+#: wt-status.c:1619
 msgid "HEAD detached from "
 msgstr "头指针分离自 "
 
-#: wt-status.c:1614
+#: wt-status.c:1622
 msgid "Not currently on any branch."
 msgstr "当前不在任何分支上。"
 
-#: wt-status.c:1634
+#: wt-status.c:1642
 msgid "Initial commit"
 msgstr "初始提交"
 
-#: wt-status.c:1635
+#: wt-status.c:1643
 msgid "No commits yet"
 msgstr "尚无提交"
 
-#: wt-status.c:1649
+#: wt-status.c:1657
 msgid "Untracked files"
 msgstr "未跟踪的文件"
 
-#: wt-status.c:1651
+#: wt-status.c:1659
 msgid "Ignored files"
 msgstr "忽略的文件"
 
-#: wt-status.c:1655
+#: wt-status.c:1663
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -4955,102 +5302,102 @@ msgstr ""
 "耗费了 %.2f 秒以枚举未跟踪的文件。'status -uno' 也许能提高速度,\n"
 "但您需要小心不要忘了添加新文件(参见 'git help status')。"
 
-#: wt-status.c:1661
+#: wt-status.c:1669
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "未跟踪的文件没有列出%s"
 
 #  译者:中文字符串拼接,可删除前导空格
-#: wt-status.c:1663
+#: wt-status.c:1671
 msgid " (use -u option to show untracked files)"
 msgstr "(使用 -u 参数显示未跟踪的文件)"
 
-#: wt-status.c:1669
+#: wt-status.c:1677
 msgid "No changes"
 msgstr "没有修改"
 
-#: wt-status.c:1674
+#: wt-status.c:1682
 #, 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:1677
+#: wt-status.c:1685
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "修改尚未加入提交\n"
 
-#: wt-status.c:1680
+#: wt-status.c:1688
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
 "track)\n"
 msgstr "提交为空,但是存在尚未跟踪的文件(使用 \"git add\" 建立跟踪)\n"
 
-#: wt-status.c:1683
+#: wt-status.c:1691
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
 msgstr "提交为空,但是存在尚未跟踪的文件\n"
 
 #  译者:中文字符串拼接,可删除前导空格
-#: wt-status.c:1686
+#: wt-status.c:1694
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr "无文件要提交(创建/拷贝文件并使用 \"git add\" 建立跟踪)\n"
 
-#: wt-status.c:1689 wt-status.c:1694
+#: wt-status.c:1697 wt-status.c:1702
 #, c-format
 msgid "nothing to commit\n"
 msgstr "无文件要提交\n"
 
 #  译者:中文字符串拼接,可删除前导空格
-#: wt-status.c:1692
+#: wt-status.c:1700
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr "无文件要提交(使用 -u 显示未跟踪的文件)\n"
 
 #  译者:中文字符串拼接,可删除前导空格
-#: wt-status.c:1696
+#: wt-status.c:1704
 #, c-format
 msgid "nothing to commit, working tree clean\n"
 msgstr "无文件要提交,干净的工作区\n"
 
-#: wt-status.c:1809
+#: wt-status.c:1817
 msgid "No commits yet on "
 msgstr "尚无提交在 "
 
-#: wt-status.c:1813
+#: wt-status.c:1821
 msgid "HEAD (no branch)"
 msgstr "HEAD(非分支)"
 
-#: wt-status.c:1844
+#: wt-status.c:1852
 msgid "different"
 msgstr "不同"
 
 #  译者:注意保持句尾空格
-#: wt-status.c:1846 wt-status.c:1854
+#: wt-status.c:1854 wt-status.c:1862
 msgid "behind "
 msgstr "落后 "
 
-#: wt-status.c:1849 wt-status.c:1852
+#: wt-status.c:1857 wt-status.c:1860
 msgid "ahead "
 msgstr "领先 "
 
 #. TRANSLATORS: the action is e.g. "pull with rebase"
-#: wt-status.c:2358
+#: wt-status.c:2366
 #, c-format
 msgid "cannot %s: You have unstaged changes."
 msgstr "不能%s:您有未暂存的变更。"
 
-#: wt-status.c:2364
+#: wt-status.c:2372
 msgid "additionally, your index contains uncommitted changes."
 msgstr "另外,您的索引中包含未提交的变更。"
 
-#: wt-status.c:2366
+#: wt-status.c:2374
 #, c-format
 msgid "cannot %s: Your index contains uncommitted changes."
 msgstr "不能%s:您的索引中包含未提交的变更。"
 
-#: compat/precompose_utf8.c:58 builtin/clone.c:440
+#: compat/precompose_utf8.c:58 builtin/clone.c:442
 #, c-format
 msgid "failed to unlink '%s'"
 msgstr "无法删除 '%s'"
@@ -5064,7 +5411,7 @@ msgstr "git add [<选项>] [--] <路径规格>..."
 msgid "unexpected diff status %c"
 msgstr "意外的差异状态 %c"
 
-#: builtin/add.c:88 builtin/commit.c:257
+#: builtin/add.c:88 builtin/commit.c:266
 msgid "updating files failed"
 msgstr "更新文件失败"
 
@@ -5077,7 +5424,7 @@ msgstr "删除 '%s'\n"
 msgid "Unstaged changes after refreshing the index:"
 msgstr "刷新索引之后尚未被暂存的变更:"
 
-#: builtin/add.c:233 builtin/rev-parse.c:888
+#: builtin/add.c:233 builtin/rev-parse.c:892
 msgid "Could not read the index"
 msgstr "不能读取索引"
 
@@ -5108,77 +5455,77 @@ msgstr "空补丁。异常终止。"
 msgid "Could not apply '%s'"
 msgstr "不能应用 '%s'"
 
-#: builtin/add.c:271
+#: builtin/add.c:269
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr "下列路径根据您的一个 .gitignore 文件而被忽略:\n"
 
-#: builtin/add.c:291 builtin/clean.c:911 builtin/fetch.c:146 builtin/mv.c:124
-#: builtin/prune-packed.c:55 builtin/pull.c:207 builtin/push.c:541
-#: builtin/remote.c:1333 builtin/rm.c:242 builtin/send-pack.c:164
+#: builtin/add.c:289 builtin/clean.c:911 builtin/fetch.c:145 builtin/mv.c:123
+#: builtin/prune-packed.c:55 builtin/pull.c:212 builtin/push.c:557
+#: builtin/remote.c:1342 builtin/rm.c:240 builtin/send-pack.c:165
 msgid "dry run"
 msgstr "演习"
 
-#: builtin/add.c:294
+#: builtin/add.c:292
 msgid "interactive picking"
 msgstr "交互式拣选"
 
-#: builtin/add.c:295 builtin/checkout.c:1128 builtin/reset.c:302
+#: builtin/add.c:293 builtin/checkout.c:1135 builtin/reset.c:302
 msgid "select hunks interactively"
 msgstr "交互式挑选数据块"
 
-#: builtin/add.c:296
+#: builtin/add.c:294
 msgid "edit current diff and apply"
 msgstr "编辑当前差异并应用"
 
-#: builtin/add.c:297
+#: builtin/add.c:295
 msgid "allow adding otherwise ignored files"
 msgstr "允许添加忽略的文件"
 
-#: builtin/add.c:298
+#: builtin/add.c:296
 msgid "update tracked files"
 msgstr "更新已跟踪的文件"
 
-#: builtin/add.c:299
+#: builtin/add.c:297
 msgid "renormalize EOL of tracked files (implies -u)"
 msgstr "对已跟踪文件(暗含 -u)重新归一换行符"
 
-#: builtin/add.c:300
+#: builtin/add.c:298
 msgid "record only the fact that the path will be added later"
 msgstr "只记录,该路径稍后再添加"
 
-#: builtin/add.c:301
+#: builtin/add.c:299
 msgid "add changes from all tracked and untracked files"
 msgstr "添加所有改变的已跟踪文件和未跟踪文件"
 
-#: builtin/add.c:304
+#: builtin/add.c:302
 msgid "ignore paths removed in the working tree (same as --no-all)"
 msgstr "忽略工作区中移除的路径(和 --no-all 相同)"
 
-#: builtin/add.c:306
+#: builtin/add.c:304
 msgid "don't add, only refresh the index"
 msgstr "不添加,只刷新索引"
 
-#: builtin/add.c:307
+#: builtin/add.c:305
 msgid "just skip files which cannot be added because of errors"
 msgstr "跳过因出错不能添加的文件"
 
-#: builtin/add.c:308
+#: builtin/add.c:306
 msgid "check if - even missing - files are ignored in dry run"
 msgstr "检查在演习模式下文件(即使不存在)是否被忽略"
 
-#: builtin/add.c:309 builtin/update-index.c:964
+#: builtin/add.c:307 builtin/update-index.c:974
 msgid "(+/-)x"
 msgstr "(+/-)x"
 
-#: builtin/add.c:309 builtin/update-index.c:965
+#: builtin/add.c:307 builtin/update-index.c:975
 msgid "override the executable bit of the listed files"
 msgstr "覆盖列表里文件的可执行位"
 
-#: builtin/add.c:311
+#: builtin/add.c:309
 msgid "warn when adding an embedded repository"
 msgstr "创建一个嵌入式仓库时给予警告"
 
-#: builtin/add.c:326
+#: builtin/add.c:324
 #, c-format
 msgid ""
 "You've added another git repository inside your current repository.\n"
@@ -5207,47 +5554,47 @@ msgstr ""
 "\n"
 "参见 \"git help submodule\" 获取更多信息。"
 
-#: builtin/add.c:354
+#: builtin/add.c:352
 #, c-format
 msgid "adding embedded git repository: %s"
 msgstr "正在添加嵌入式 git 仓库:%s"
 
-#: builtin/add.c:372
+#: builtin/add.c:370
 #, c-format
 msgid "Use -f if you really want to add them.\n"
 msgstr "使用 -f 参数如果您确实要添加它们。\n"
 
-#: builtin/add.c:380
+#: builtin/add.c:378
 msgid "adding files failed"
 msgstr "添加文件失败"
 
-#: builtin/add.c:417
+#: builtin/add.c:416
 msgid "-A and -u are mutually incompatible"
 msgstr "-A 和 -u 选项互斥"
 
-#: builtin/add.c:424
+#: builtin/add.c:423
 msgid "Option --ignore-missing can only be used together with --dry-run"
 msgstr "选项 --ignore-missing 只能和 --dry-run 同时使用"
 
-#: builtin/add.c:428
+#: builtin/add.c:427
 #, c-format
 msgid "--chmod param '%s' must be either -x or +x"
 msgstr "参数 --chmod 取值 '%s' 必须是 -x 或 +x"
 
-#: builtin/add.c:443
+#: builtin/add.c:442
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr "没有指定文件,也没有文件被添加。\n"
 
-#: builtin/add.c:444
+#: builtin/add.c:443
 #, c-format
 msgid "Maybe you wanted to say 'git add .'?\n"
 msgstr "也许您想要执行 'git add .'?\n"
 
-#: builtin/add.c:449 builtin/check-ignore.c:177 builtin/checkout.c:280
-#: builtin/checkout.c:483 builtin/clean.c:958 builtin/commit.c:316
+#: builtin/add.c:448 builtin/check-ignore.c:177 builtin/checkout.c:280
+#: builtin/checkout.c:483 builtin/clean.c:958 builtin/commit.c:325
 #: builtin/diff-tree.c:114 builtin/mv.c:144 builtin/reset.c:241
-#: builtin/rm.c:271 builtin/submodule--helper.c:326
+#: builtin/rm.c:270 builtin/submodule--helper.c:328
 msgid "index file corrupt"
 msgstr "索引文件损坏"
 
@@ -5299,7 +5646,7 @@ msgstr "无效的时区偏移值"
 msgid "Patch format detection failed."
 msgstr "补丁格式探测失败。"
 
-#: builtin/am.c:1013 builtin/clone.c:405
+#: builtin/am.c:1013 builtin/clone.c:407
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr "无法创建目录 '%s'"
@@ -5308,7 +5655,7 @@ msgstr "无法创建目录 '%s'"
 msgid "Failed to split patches."
 msgstr "无法拆分补丁。"
 
-#: builtin/am.c:1148 builtin/commit.c:342
+#: builtin/am.c:1148 builtin/commit.c:351
 msgid "unable to write index file"
 msgstr "无法写入索引文件"
 
@@ -5477,7 +5824,7 @@ msgid "allow fall back on 3way merging if needed"
 msgstr "如果必要,允许使用三方合并。"
 
 #: builtin/am.c:2222 builtin/init-db.c:484 builtin/prune-packed.c:57
-#: builtin/repack.c:182
+#: builtin/repack.c:192
 msgid "be quiet"
 msgstr "静默模式"
 
@@ -5519,16 +5866,17 @@ msgstr "丢弃裁切线前的所有内容"
 msgid "pass it through git-apply"
 msgstr "传递给 git-apply"
 
-#: builtin/am.c:2260 builtin/fmt-merge-msg.c:665 builtin/fmt-merge-msg.c:668
-#: builtin/grep.c:853 builtin/merge.c:206 builtin/pull.c:145 builtin/pull.c:203
-#: builtin/repack.c:191 builtin/repack.c:195 builtin/repack.c:197
-#: builtin/show-branch.c:631 builtin/show-ref.c:169 builtin/tag.c:382
-#: parse-options.h:144 parse-options.h:146 parse-options.h:257
+#: builtin/am.c:2260 builtin/commit.c:1332 builtin/fmt-merge-msg.c:665
+#: builtin/fmt-merge-msg.c:668 builtin/grep.c:853 builtin/merge.c:208
+#: builtin/pull.c:150 builtin/pull.c:208 builtin/repack.c:201
+#: builtin/repack.c:205 builtin/repack.c:207 builtin/show-branch.c:631
+#: builtin/show-ref.c:169 builtin/tag.c:383 parse-options.h:144
+#: parse-options.h:146 parse-options.h:258
 msgid "n"
 msgstr "n"
 
-#: builtin/am.c:2266 builtin/branch.c:629 builtin/for-each-ref.c:38
-#: builtin/replace.c:445 builtin/tag.c:418 builtin/verify-tag.c:39
+#: builtin/am.c:2266 builtin/branch.c:632 builtin/for-each-ref.c:38
+#: builtin/replace.c:543 builtin/tag.c:419 builtin/verify-tag.c:39
 msgid "format"
 msgstr "格式"
 
@@ -5572,8 +5920,8 @@ msgstr "将作者日期作为提交日期"
 msgid "use current timestamp for author date"
 msgstr "用当前时间作为作者日期"
 
-#: builtin/am.c:2298 builtin/commit.c:1431 builtin/merge.c:237
-#: builtin/pull.c:178 builtin/revert.c:112 builtin/tag.c:398
+#: builtin/am.c:2298 builtin/commit.c:1468 builtin/merge.c:239
+#: builtin/pull.c:183 builtin/revert.c:112 builtin/tag.c:399
 msgid "key-id"
 msgstr "key-id"
 
@@ -5712,115 +6060,141 @@ msgstr "--write-terms 需要两个参数"
 msgid "--bisect-clean-state requires no arguments"
 msgstr "--bisect-clean-state 不需要参数"
 
-#: builtin/blame.c:27
+#: builtin/blame.c:29
 msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
 msgstr "git blame [<选项>] [<版本选项>] [<版本>] [--] <文件>"
 
-#: builtin/blame.c:32
+#: builtin/blame.c:34
 msgid "<rev-opts> are documented in git-rev-list(1)"
 msgstr "<版本选项> 的文档记录在 git-rev-list(1) 中"
 
-#: builtin/blame.c:677
+#: builtin/blame.c:404
+#, c-format
+msgid "expecting a color: %s"
+msgstr "期望一个颜色:%s"
+
+#: builtin/blame.c:411
+msgid "must end with a color"
+msgstr "必须以一个颜色结尾"
+
+#: builtin/blame.c:697
+#, c-format
+msgid "invalid color '%s' in color.blame.repeatedLines"
+msgstr "设置 color.blame.repeatedLines 中的无效颜色 '%s'"
+
+#: builtin/blame.c:715
+msgid "invalid value for blame.coloring"
+msgstr "设置 blame.coloring 中的无效取值"
+
+#: builtin/blame.c:786
 msgid "Show blame entries as we find them, incrementally"
 msgstr "增量式地显示发现的 blame 条目"
 
-#: builtin/blame.c:678
+#: builtin/blame.c:787
 msgid "Show blank SHA-1 for boundary commits (Default: off)"
 msgstr "边界提交显示空的 SHA-1(默认:关闭)"
 
-#: builtin/blame.c:679
+#: builtin/blame.c:788
 msgid "Do not treat root commits as boundaries (Default: off)"
 msgstr "不把根提交作为边界(默认:关闭)"
 
-#: builtin/blame.c:680
+#: builtin/blame.c:789
 msgid "Show work cost statistics"
 msgstr "显示命令消耗统计"
 
-#: builtin/blame.c:681
+#: builtin/blame.c:790
 msgid "Force progress reporting"
 msgstr "强制进度显示"
 
-#: builtin/blame.c:682
+#: builtin/blame.c:791
 msgid "Show output score for blame entries"
 msgstr "显示判断 blame 条目位移的得分诊断信息"
 
-#: builtin/blame.c:683
+#: builtin/blame.c:792
 msgid "Show original filename (Default: auto)"
 msgstr "显示原始文件名(默认:自动)"
 
-#: builtin/blame.c:684
+#: builtin/blame.c:793
 msgid "Show original linenumber (Default: off)"
 msgstr "显示原始的行号(默认:关闭)"
 
-#: builtin/blame.c:685
+#: builtin/blame.c:794
 msgid "Show in a format designed for machine consumption"
 msgstr "显示为一个适合机器读取的格式"
 
-#: builtin/blame.c:686
+#: builtin/blame.c:795
 msgid "Show porcelain format with per-line commit information"
 msgstr "为每一行显示机器适用的提交信息"
 
-#: builtin/blame.c:687
+#: builtin/blame.c:796
 msgid "Use the same output mode as git-annotate (Default: off)"
 msgstr "使用和 git-annotate 相同的输出模式(默认:关闭)"
 
-#: builtin/blame.c:688
+#: builtin/blame.c:797
 msgid "Show raw timestamp (Default: off)"
 msgstr "显示原始时间戳(默认:关闭)"
 
-#: builtin/blame.c:689
+#: builtin/blame.c:798
 msgid "Show long commit SHA1 (Default: off)"
 msgstr "显示长的 SHA1 提交号(默认:关闭)"
 
-#: builtin/blame.c:690
+#: builtin/blame.c:799
 msgid "Suppress author name and timestamp (Default: off)"
 msgstr "隐藏作者名字和时间戳(默认:关闭)"
 
-#: builtin/blame.c:691
+#: builtin/blame.c:800
 msgid "Show author email instead of name (Default: off)"
 msgstr "显示作者的邮箱而不是名字(默认:关闭)"
 
-#: builtin/blame.c:692
+#: builtin/blame.c:801
 msgid "Ignore whitespace differences"
 msgstr "忽略空白差异"
 
-#: builtin/blame.c:699
+#: builtin/blame.c:802
+msgid "color redundant metadata from previous line differently"
+msgstr "使用颜色间隔输出与前一行不同的重复元信息"
+
+#: builtin/blame.c:803
+msgid "color lines by age"
+msgstr "依据时间着色"
+
+#: builtin/blame.c:810
 msgid "Use an experimental heuristic to improve diffs"
 msgstr "使用一个试验性的启发式算法改进差异显示"
 
-#: builtin/blame.c:701
+#: builtin/blame.c:812
 msgid "Spend extra cycles to find better match"
 msgstr "花费额外的循环来找到更好的匹配"
 
-#: builtin/blame.c:702
+#: builtin/blame.c:813
 msgid "Use revisions from <file> instead of calling git-rev-list"
 msgstr "使用来自 <文件> 的修订集而不是调用 git-rev-list"
 
-#: builtin/blame.c:703
+#: builtin/blame.c:814
 msgid "Use <file>'s contents as the final image"
 msgstr "使用 <文件> 的内容作为最终的图片"
 
-#: builtin/blame.c:704 builtin/blame.c:705
+#: builtin/blame.c:815 builtin/blame.c:816
 msgid "score"
 msgstr "得分"
 
-#: builtin/blame.c:704
+#: builtin/blame.c:815
 msgid "Find line copies within and across files"
 msgstr "找到文件内及跨文件的行拷贝"
 
-#: builtin/blame.c:705
+#: builtin/blame.c:816
 msgid "Find line movements within and across files"
 msgstr "找到文件内及跨文件的行移动"
 
-#: builtin/blame.c:706
+#: builtin/blame.c:817
 msgid "n,m"
 msgstr "n,m"
 
-#: builtin/blame.c:706
+#: builtin/blame.c:817
 msgid "Process only line range n,m, counting from 1"
 msgstr "只处理行范围在 n 和 m 之间的,从 1 开始"
 
-#: builtin/blame.c:753
+#: builtin/blame.c:866
 msgid "--progress can't be used with --incremental or porcelain formats"
 msgstr "--progress 不能和 --incremental 或 --porcelain 同时使用"
 
@@ -5832,18 +6206,18 @@ msgstr "--progress 不能和 --incremental 或 --porcelain 同时使用"
 #. your language may need more or fewer display
 #. columns.
 #.
-#: builtin/blame.c:804
+#: builtin/blame.c:917
 msgid "4 years, 11 months ago"
 msgstr "4 年 11 个月前"
 
-#: builtin/blame.c:890
+#: builtin/blame.c:1003
 #, c-format
 msgid "file %s has only %lu line"
 msgid_plural "file %s has only %lu lines"
 msgstr[0] "文件 %s 只有 %lu 行"
 msgstr[1] "文件 %s 只有 %lu 行"
 
-#: builtin/blame.c:936
+#: builtin/blame.c:1049
 msgid "Blaming lines"
 msgstr "追踪代码行"
 
@@ -5956,65 +6330,65 @@ msgstr "已删除远程跟踪分支 %s(曾为 %s)。\n"
 msgid "Deleted branch %s (was %s).\n"
 msgstr "已删除分支 %s(曾为 %s)。\n"
 
-#: builtin/branch.c:417 builtin/tag.c:58
+#: builtin/branch.c:416 builtin/tag.c:58
 msgid "unable to parse format string"
 msgstr "不能解析格式化字符串"
 
-#: builtin/branch.c:450
+#: builtin/branch.c:453
 #, c-format
 msgid "Branch %s is being rebased at %s"
 msgstr "分支 %s 正被变基到 %s"
 
-#: builtin/branch.c:454
+#: builtin/branch.c:457
 #, c-format
 msgid "Branch %s is being bisected at %s"
 msgstr "分支 %s 正被二分查找于 %s"
 
-#: builtin/branch.c:471
+#: builtin/branch.c:474
 msgid "cannot copy the current branch while not on any."
 msgstr "无法拷贝当前分支因为不处于任何分支上。"
 
-#: builtin/branch.c:473
+#: builtin/branch.c:476
 msgid "cannot rename the current branch while not on any."
 msgstr "无法重命名当前分支因为不处于任何分支上。"
 
-#: builtin/branch.c:484
+#: builtin/branch.c:487
 #, c-format
 msgid "Invalid branch name: '%s'"
 msgstr "无效的分支名:'%s'"
 
-#: builtin/branch.c:511
+#: builtin/branch.c:514
 msgid "Branch rename failed"
 msgstr "分支重命名失败"
 
-#: builtin/branch.c:513
+#: builtin/branch.c:516
 msgid "Branch copy failed"
 msgstr "分支拷贝失败"
 
-#: builtin/branch.c:517
+#: builtin/branch.c:520
 #, c-format
 msgid "Created a copy of a misnamed branch '%s'"
 msgstr "已为错误命名的分支 '%s' 创建了一个副本"
 
-#: builtin/branch.c:520
+#: builtin/branch.c:523
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
 msgstr "已将错误命名的分支 '%s' 重命名"
 
-#: builtin/branch.c:526
+#: builtin/branch.c:529
 #, c-format
 msgid "Branch renamed to %s, but HEAD is not updated!"
 msgstr "分支重命名为 %s,但 HEAD 没有更新!"
 
-#: builtin/branch.c:535
+#: builtin/branch.c:538
 msgid "Branch is renamed, but update of config-file failed"
 msgstr "分支被重命名,但更新配置文件失败"
 
-#: builtin/branch.c:537
+#: builtin/branch.c:540
 msgid "Branch is copied, but update of config-file failed"
 msgstr "分支已拷贝,但更新配置文件失败"
 
-#: builtin/branch.c:553
+#: builtin/branch.c:556
 #, c-format
 msgid ""
 "Please edit the description for the branch\n"
@@ -6025,217 +6399,219 @@ msgstr ""
 "  %s\n"
 "以 '%c' 开头的行将被过滤。\n"
 
-#: builtin/branch.c:586
+#: builtin/branch.c:589
 msgid "Generic options"
 msgstr "通用选项"
 
-#: builtin/branch.c:588
+#: builtin/branch.c:591
 msgid "show hash and subject, give twice for upstream branch"
 msgstr "显示哈希值和主题,若参数出现两次则显示上游分支"
 
-#: builtin/branch.c:589
+#: builtin/branch.c:592
 msgid "suppress informational messages"
 msgstr "不显示信息"
 
-#: builtin/branch.c:590
+#: builtin/branch.c:593
 msgid "set up tracking mode (see git-pull(1))"
 msgstr "设置跟踪模式(参见 git-pull(1))"
 
-#: builtin/branch.c:592
+#: builtin/branch.c:595
 msgid "do not use"
 msgstr "不要使用"
 
-#: builtin/branch.c:594
+#: builtin/branch.c:597
 msgid "upstream"
 msgstr "上游"
 
-#: builtin/branch.c:594
+#: builtin/branch.c:597
 msgid "change the upstream info"
 msgstr "改变上游信息"
 
-#: builtin/branch.c:595
+#: builtin/branch.c:598
 msgid "Unset the upstream info"
 msgstr "取消上游信息的设置"
 
-#: builtin/branch.c:596
+#: builtin/branch.c:599
 msgid "use colored output"
 msgstr "使用彩色输出"
 
-#: builtin/branch.c:597
+#: builtin/branch.c:600
 msgid "act on remote-tracking branches"
 msgstr "作用于远程跟踪分支"
 
-#: builtin/branch.c:599 builtin/branch.c:601
+#: builtin/branch.c:602 builtin/branch.c:604
 msgid "print only branches that contain the commit"
 msgstr "只打印包含该提交的分支"
 
-#: builtin/branch.c:600 builtin/branch.c:602
+#: builtin/branch.c:603 builtin/branch.c:605
 msgid "print only branches that don't contain the commit"
 msgstr "只打印不包含该提交的分支"
 
-#: builtin/branch.c:605
+#: builtin/branch.c:608
 msgid "Specific git-branch actions:"
 msgstr "具体的 git-branch 动作:"
 
-#: builtin/branch.c:606
+#: builtin/branch.c:609
 msgid "list both remote-tracking and local branches"
 msgstr "列出远程跟踪及本地分支"
 
-#: builtin/branch.c:608
+#: builtin/branch.c:611
 msgid "delete fully merged branch"
 msgstr "删除完全合并的分支"
 
-#: builtin/branch.c:609
+#: builtin/branch.c:612
 msgid "delete branch (even if not merged)"
 msgstr "删除分支(即使没有合并)"
 
-#: builtin/branch.c:610
+#: builtin/branch.c:613
 msgid "move/rename a branch and its reflog"
 msgstr "移动/重命名一个分支,以及它的引用日志"
 
-#: builtin/branch.c:611
+#: builtin/branch.c:614
 msgid "move/rename a branch, even if target exists"
 msgstr "移动/重命名一个分支,即使目标已存在"
 
-#: builtin/branch.c:612
+#: builtin/branch.c:615
 msgid "copy a branch and its reflog"
 msgstr "拷贝一个分支和它的引用日志"
 
-#: builtin/branch.c:613
+#: builtin/branch.c:616
 msgid "copy a branch, even if target exists"
 msgstr "拷贝一个分支,即使目标已存在"
 
-#: builtin/branch.c:614
+#: builtin/branch.c:617
 msgid "list branch names"
 msgstr "列出分支名"
 
-#: builtin/branch.c:615
+#: builtin/branch.c:618
 msgid "create the branch's reflog"
 msgstr "创建分支的引用日志"
 
-#: builtin/branch.c:617
+#: builtin/branch.c:620
 msgid "edit the description for the branch"
 msgstr "标记分支的描述"
 
-#: builtin/branch.c:618
+#: builtin/branch.c:621
 msgid "force creation, move/rename, deletion"
 msgstr "强制创建、移动/重命名、删除"
 
-#: builtin/branch.c:619
+#: builtin/branch.c:622
 msgid "print only branches that are merged"
 msgstr "只打印已经合并的分支"
 
-#: builtin/branch.c:620
+#: builtin/branch.c:623
 msgid "print only branches that are not merged"
 msgstr "只打印尚未合并的分支"
 
-#: builtin/branch.c:621
+#: builtin/branch.c:624
 msgid "list branches in columns"
 msgstr "以列的方式显示分支"
 
-#: builtin/branch.c:622 builtin/for-each-ref.c:40 builtin/tag.c:411
+#: builtin/branch.c:625 builtin/for-each-ref.c:40 builtin/ls-remote.c:70
+#: builtin/tag.c:412
 msgid "key"
 msgstr "key"
 
-#: builtin/branch.c:623 builtin/for-each-ref.c:41 builtin/tag.c:412
+#: builtin/branch.c:626 builtin/for-each-ref.c:41 builtin/ls-remote.c:71
+#: builtin/tag.c:413
 msgid "field name to sort on"
 msgstr "排序的字段名"
 
-#: builtin/branch.c:625 builtin/for-each-ref.c:43 builtin/notes.c:408
+#: builtin/branch.c:628 builtin/for-each-ref.c:43 builtin/notes.c:408
 #: builtin/notes.c:411 builtin/notes.c:571 builtin/notes.c:574
-#: builtin/tag.c:414
+#: builtin/tag.c:415
 msgid "object"
 msgstr "对象"
 
-#: builtin/branch.c:626
+#: builtin/branch.c:629
 msgid "print only branches of the object"
 msgstr "只打印指向该对象的分支"
 
-#: builtin/branch.c:628 builtin/for-each-ref.c:49 builtin/tag.c:421
+#: builtin/branch.c:631 builtin/for-each-ref.c:49 builtin/tag.c:422
 msgid "sorting and filtering are case insensitive"
 msgstr "排序和过滤属于大小写不敏感"
 
-#: builtin/branch.c:629 builtin/for-each-ref.c:38 builtin/tag.c:419
+#: builtin/branch.c:632 builtin/for-each-ref.c:38 builtin/tag.c:420
 #: builtin/verify-tag.c:39
 msgid "format to use for the output"
 msgstr "输出格式"
 
-#: builtin/branch.c:652 builtin/clone.c:735
+#: builtin/branch.c:655 builtin/clone.c:737
 msgid "HEAD not found below refs/heads!"
 msgstr "HEAD 没有位于 /refs/heads 之下!"
 
-#: builtin/branch.c:675
+#: builtin/branch.c:678
 msgid "--column and --verbose are incompatible"
 msgstr "--column 和 --verbose 不兼容"
 
-#: builtin/branch.c:690 builtin/branch.c:742 builtin/branch.c:751
+#: builtin/branch.c:693 builtin/branch.c:745 builtin/branch.c:754
 msgid "branch name required"
 msgstr "必须提供分支名"
 
-#: builtin/branch.c:718
+#: builtin/branch.c:721
 msgid "Cannot give description to detached HEAD"
 msgstr "不能向分离头指针提供描述"
 
-#: builtin/branch.c:723
+#: builtin/branch.c:726
 msgid "cannot edit description of more than one branch"
 msgstr "不能为一个以上的分支编辑描述"
 
-#: builtin/branch.c:730
+#: builtin/branch.c:733
 #, c-format
 msgid "No commit on branch '%s' yet."
 msgstr "分支 '%s' 尚无提交。"
 
-#: builtin/branch.c:733
+#: builtin/branch.c:736
 #, c-format
 msgid "No branch named '%s'."
 msgstr "没有分支 '%s'。"
 
-#: builtin/branch.c:748
+#: builtin/branch.c:751
 msgid "too many branches for a copy operation"
 msgstr "为拷贝操作提供了太多的分支名"
 
-#: builtin/branch.c:757
+#: builtin/branch.c:760
 msgid "too many arguments for a rename operation"
 msgstr "为重命名操作提供了太多的参数"
 
-#: builtin/branch.c:762
+#: builtin/branch.c:765
 msgid "too many arguments to set new upstream"
 msgstr "为设置新上游提供了太多的参数"
 
-#: builtin/branch.c:766
+#: builtin/branch.c:769
 #, c-format
 msgid ""
 "could not set upstream of HEAD to %s when it does not point to any branch."
 msgstr "无法设置 HEAD 的上游为 %s,因为 HEAD 没有指向任何分支。"
 
-#: builtin/branch.c:769 builtin/branch.c:791 builtin/branch.c:807
+#: builtin/branch.c:772 builtin/branch.c:794 builtin/branch.c:810
 #, c-format
 msgid "no such branch '%s'"
 msgstr "没有此分支 '%s'"
 
-#: builtin/branch.c:773
+#: builtin/branch.c:776
 #, c-format
 msgid "branch '%s' does not exist"
 msgstr "分支 '%s' 不存在"
 
-#: builtin/branch.c:785
+#: builtin/branch.c:788
 msgid "too many arguments to unset upstream"
 msgstr "为取消上游设置操作提供了太多的参数"
 
-#: builtin/branch.c:789
+#: builtin/branch.c:792
 msgid "could not unset upstream of HEAD when it does not point to any branch."
 msgstr "无法取消 HEAD 的上游设置因为它没有指向一个分支"
 
-#: builtin/branch.c:795
+#: builtin/branch.c:798
 #, c-format
 msgid "Branch '%s' has no upstream information"
 msgstr "分支 '%s' 没有上游信息"
 
-#: builtin/branch.c:810
+#: builtin/branch.c:813
 msgid "-a and -r options to 'git branch' do not make sense with a branch name"
 msgstr "'git branch' 的 -a 和 -r 选项带一个分支名参数没有意义"
 
-#: builtin/branch.c:813
+#: builtin/branch.c:816
 msgid ""
 "the '--set-upstream' option is no longer supported. Please use '--track' or "
 "'--set-upstream-to' instead."
@@ -6255,7 +6631,7 @@ msgstr "需要一个仓库来创建包。"
 msgid "Need a repository to unbundle."
 msgstr "需要一个仓库来解包。"
 
-#: builtin/cat-file.c:523
+#: builtin/cat-file.c:525
 msgid ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <type> | --textconv | --filters) [--path=<path>] <object>"
@@ -6263,7 +6639,7 @@ msgstr ""
 "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -"
 "p | <类型> | --textconv | --filters) [--path=<路径>] <对象>"
 
-#: builtin/cat-file.c:524
+#: builtin/cat-file.c:526
 msgid ""
 "git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
 "filters]"
@@ -6271,63 +6647,63 @@ msgstr ""
 "git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --"
 "filters]"
 
-#: builtin/cat-file.c:561
+#: builtin/cat-file.c:563
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr "<类型> 可以是其中之一:blob、tree、commit、tag"
 
-#: builtin/cat-file.c:562
+#: builtin/cat-file.c:564
 msgid "show object type"
 msgstr "显示对象类型"
 
-#: builtin/cat-file.c:563
+#: builtin/cat-file.c:565
 msgid "show object size"
 msgstr "显示对象大小"
 
-#: builtin/cat-file.c:565
+#: builtin/cat-file.c:567
 msgid "exit with zero when there's no error"
 msgstr "当没有错误时退出并返回零"
 
-#: builtin/cat-file.c:566
+#: builtin/cat-file.c:568
 msgid "pretty-print object's content"
 msgstr "美观地打印对象的内容"
 
-#: builtin/cat-file.c:568
+#: builtin/cat-file.c:570
 msgid "for blob objects, run textconv on object's content"
 msgstr "对于数据对象,对其内容做文本转换"
 
-#: builtin/cat-file.c:570
+#: builtin/cat-file.c:572
 msgid "for blob objects, run filters on object's content"
 msgstr "对于数据对象,对其内容做过滤"
 
-#: builtin/cat-file.c:571 git-submodule.sh:878
+#: builtin/cat-file.c:573 git-submodule.sh:894
 msgid "blob"
 msgstr "数据对象"
 
-#: builtin/cat-file.c:572
+#: builtin/cat-file.c:574
 msgid "use a specific path for --textconv/--filters"
 msgstr "对于 --textconv/--filters 使用一个特定的路径"
 
-#: builtin/cat-file.c:574
+#: builtin/cat-file.c:576
 msgid "allow -s and -t to work with broken/corrupt objects"
 msgstr "允许 -s 和 -t 对损坏的对象生效"
 
-#: builtin/cat-file.c:575
+#: builtin/cat-file.c:577
 msgid "buffer --batch output"
 msgstr "缓冲 --batch 的输出"
 
-#: builtin/cat-file.c:577
+#: builtin/cat-file.c:579
 msgid "show info and content of objects fed from the standard input"
 msgstr "显示从标准输入提供的对象的信息和内容"
 
-#: builtin/cat-file.c:580
+#: builtin/cat-file.c:582
 msgid "show info about objects fed from the standard input"
 msgstr "显示从标准输入提供的对象的信息"
 
-#: builtin/cat-file.c:583
+#: builtin/cat-file.c:585
 msgid "follow in-tree symlinks (used with --batch or --batch-check)"
 msgstr "跟随树内符号链接(和 --batch 或 --batch-check 共用)"
 
-#: builtin/cat-file.c:585
+#: builtin/cat-file.c:587
 msgid "show all objects with --batch or --batch-check"
 msgstr "使用 --batch 或 --batch-check 参数显示所有对象"
 
@@ -6355,7 +6731,7 @@ msgstr "从标准输入读出文件名"
 msgid "terminate input and output records by a NUL character"
 msgstr "输入和输出的记录使用 NUL 字符终结"
 
-#: builtin/check-ignore.c:20 builtin/checkout.c:1106 builtin/gc.c:358
+#: builtin/check-ignore.c:20 builtin/checkout.c:1113 builtin/gc.c:500
 msgid "suppress progress reporting"
 msgstr "不显示进度报告"
 
@@ -6445,9 +6821,9 @@ msgid "write the content to temporary files"
 msgstr "将内容写入临时文件"
 
 #: builtin/checkout-index.c:173 builtin/column.c:31
-#: builtin/submodule--helper.c:1203 builtin/submodule--helper.c:1206
-#: builtin/submodule--helper.c:1212 builtin/submodule--helper.c:1574
-#: builtin/worktree.c:570
+#: builtin/submodule--helper.c:1216 builtin/submodule--helper.c:1219
+#: builtin/submodule--helper.c:1227 builtin/submodule--helper.c:1591
+#: builtin/worktree.c:610
 msgid "string"
 msgstr "字符串"
 
@@ -6518,55 +6894,55 @@ msgstr "不能同时更新路径并切换到分支'%s'。"
 msgid "path '%s' is unmerged"
 msgstr "路径 '%s' 未合并"
 
-#: builtin/checkout.c:505
+#: builtin/checkout.c:506
 msgid "you need to resolve your current index first"
 msgstr "您需要先解决当前索引的冲突"
 
-#: builtin/checkout.c:636
+#: builtin/checkout.c:643
 #, c-format
 msgid "Can not do reflog for '%s': %s\n"
 msgstr "不能对 '%s' 执行 reflog 操作:%s\n"
 
-#: builtin/checkout.c:677
+#: builtin/checkout.c:684
 msgid "HEAD is now at"
 msgstr "HEAD 目前位于"
 
-#: builtin/checkout.c:681 builtin/clone.c:689
+#: builtin/checkout.c:688 builtin/clone.c:691
 msgid "unable to update HEAD"
 msgstr "不能更新 HEAD"
 
-#: builtin/checkout.c:685
+#: builtin/checkout.c:692
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "重置分支 '%s'\n"
 
-#: builtin/checkout.c:688
+#: builtin/checkout.c:695
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "已经位于 '%s'\n"
 
-#: builtin/checkout.c:692
+#: builtin/checkout.c:699
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "切换并重置分支 '%s'\n"
 
-#: builtin/checkout.c:694 builtin/checkout.c:1039
+#: builtin/checkout.c:701 builtin/checkout.c:1046
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "切换到一个新分支 '%s'\n"
 
-#: builtin/checkout.c:696
+#: builtin/checkout.c:703
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "切换到分支 '%s'\n"
 
 #  译者:注意保持前导空格
-#: builtin/checkout.c:747
+#: builtin/checkout.c:754
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... 及其它 %d 个。\n"
 
-#: builtin/checkout.c:753
+#: builtin/checkout.c:760
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -6587,7 +6963,7 @@ msgstr[1] ""
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:772
+#: builtin/checkout.c:779
 #, c-format
 msgid ""
 "If you want to keep it by creating a new branch, this may be a good time\n"
@@ -6614,160 +6990,160 @@ msgstr[1] ""
 " git branch <新分支名> %s\n"
 "\n"
 
-#: builtin/checkout.c:804
+#: builtin/checkout.c:811
 msgid "internal error in revision walk"
 msgstr "在版本遍历时遇到内部错误"
 
-#: builtin/checkout.c:808
+#: builtin/checkout.c:815
 msgid "Previous HEAD position was"
 msgstr "之前的 HEAD 位置是"
 
-#: builtin/checkout.c:836 builtin/checkout.c:1034
+#: builtin/checkout.c:843 builtin/checkout.c:1041
 msgid "You are on a branch yet to be born"
 msgstr "您位于一个尚未初始化的分支"
 
-#: builtin/checkout.c:940
+#: builtin/checkout.c:947
 #, c-format
 msgid "only one reference expected, %d given."
 msgstr "应只有一个引用,却给出了 %d 个"
 
-#: builtin/checkout.c:980 builtin/worktree.c:249
+#: builtin/checkout.c:987 builtin/worktree.c:240 builtin/worktree.c:389
 #, c-format
 msgid "invalid reference: %s"
 msgstr "无效引用:%s"
 
-#: builtin/checkout.c:1009
+#: builtin/checkout.c:1016
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "引用不是一个树:%s"
 
-#: builtin/checkout.c:1048
+#: builtin/checkout.c:1055
 msgid "paths cannot be used with switching branches"
 msgstr "路径不能和切换分支同时使用"
 
-#: builtin/checkout.c:1051 builtin/checkout.c:1055
+#: builtin/checkout.c:1058 builtin/checkout.c:1062
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "'%s' 不能和切换分支同时使用"
 
-#: builtin/checkout.c:1059 builtin/checkout.c:1062 builtin/checkout.c:1067
-#: builtin/checkout.c:1070
+#: builtin/checkout.c:1066 builtin/checkout.c:1069 builtin/checkout.c:1074
+#: builtin/checkout.c:1077
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' 不能和 '%s' 同时使用"
 
-#: builtin/checkout.c:1075
+#: builtin/checkout.c:1082
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "不能切换分支到一个非提交 '%s'"
 
-#: builtin/checkout.c:1107 builtin/checkout.c:1109 builtin/clone.c:116
-#: builtin/remote.c:166 builtin/remote.c:168 builtin/worktree.c:387
-#: builtin/worktree.c:389
+#: builtin/checkout.c:1114 builtin/checkout.c:1116 builtin/clone.c:118
+#: builtin/remote.c:167 builtin/remote.c:169 builtin/worktree.c:433
+#: builtin/worktree.c:435
 msgid "branch"
 msgstr "分支"
 
-#: builtin/checkout.c:1108
+#: builtin/checkout.c:1115
 msgid "create and checkout a new branch"
 msgstr "创建并检出一个新的分支"
 
-#: builtin/checkout.c:1110
+#: builtin/checkout.c:1117
 msgid "create/reset and checkout a branch"
 msgstr "创建/重置并检出一个分支"
 
-#: builtin/checkout.c:1111
+#: builtin/checkout.c:1118
 msgid "create reflog for new branch"
 msgstr "为新的分支创建引用日志"
 
-#: builtin/checkout.c:1112 builtin/worktree.c:391
+#: builtin/checkout.c:1119 builtin/worktree.c:437
 msgid "detach HEAD at named commit"
 msgstr "HEAD 从指定的提交分离"
 
-#: builtin/checkout.c:1113
+#: builtin/checkout.c:1120
 msgid "set upstream info for new branch"
 msgstr "为新的分支设置上游信息"
 
-#: builtin/checkout.c:1115
+#: builtin/checkout.c:1122
 msgid "new-branch"
 msgstr "新分支"
 
-#: builtin/checkout.c:1115
+#: builtin/checkout.c:1122
 msgid "new unparented branch"
 msgstr "新的没有父提交的分支"
 
-#: builtin/checkout.c:1116
+#: builtin/checkout.c:1123
 msgid "checkout our version for unmerged files"
 msgstr "对尚未合并的文件检出我们的版本"
 
-#: builtin/checkout.c:1118
+#: builtin/checkout.c:1125
 msgid "checkout their version for unmerged files"
 msgstr "对尚未合并的文件检出他们的版本"
 
-#: builtin/checkout.c:1120
+#: builtin/checkout.c:1127
 msgid "force checkout (throw away local modifications)"
 msgstr "强制检出(丢弃本地修改)"
 
-#: builtin/checkout.c:1122
+#: builtin/checkout.c:1129
 msgid "perform a 3-way merge with the new branch"
 msgstr "和新的分支执行三方合并"
 
-#: builtin/checkout.c:1124 builtin/merge.c:239
+#: builtin/checkout.c:1131 builtin/merge.c:241
 msgid "update ignored files (default)"
 msgstr "更新忽略的文件(默认)"
 
-#: builtin/checkout.c:1126 builtin/log.c:1499 parse-options.h:263
+#: builtin/checkout.c:1133 builtin/log.c:1499 parse-options.h:264
 msgid "style"
 msgstr "风格"
 
-#: builtin/checkout.c:1127
+#: builtin/checkout.c:1134
 msgid "conflict style (merge or diff3)"
 msgstr "冲突输出风格(merge 或 diff3)"
 
-#: builtin/checkout.c:1130
+#: builtin/checkout.c:1137
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "对路径不做稀疏检出的限制"
 
-#: builtin/checkout.c:1132
+#: builtin/checkout.c:1139
 msgid "second guess 'git checkout <no-such-branch>'"
 msgstr "二次猜测'git checkout <无此分支>'"
 
-#: builtin/checkout.c:1134
+#: builtin/checkout.c:1141
 msgid "do not check if another worktree is holding the given ref"
 msgstr "不检查指定的引用是否被其他工作区所占用"
 
-#: builtin/checkout.c:1138 builtin/clone.c:83 builtin/fetch.c:150
-#: builtin/merge.c:236 builtin/pull.c:123 builtin/push.c:556
-#: builtin/send-pack.c:173
+#: builtin/checkout.c:1145 builtin/clone.c:85 builtin/fetch.c:149
+#: builtin/merge.c:238 builtin/pull.c:128 builtin/push.c:572
+#: builtin/send-pack.c:174
 msgid "force progress reporting"
 msgstr "强制显示进度报告"
 
-#: builtin/checkout.c:1168
+#: builtin/checkout.c:1175
 msgid "-b, -B and --orphan are mutually exclusive"
 msgstr "-b、-B 和 --orphan 是互斥的"
 
-#: builtin/checkout.c:1185
+#: builtin/checkout.c:1192
 msgid "--track needs a branch name"
 msgstr "--track 需要一个分支名"
 
-#: builtin/checkout.c:1190
+#: builtin/checkout.c:1197
 msgid "Missing branch name; try -b"
 msgstr "缺少分支名;尝试 -b"
 
-#: builtin/checkout.c:1226
+#: builtin/checkout.c:1233
 msgid "invalid path specification"
 msgstr "无效的路径规格"
 
-#: builtin/checkout.c:1233
+#: builtin/checkout.c:1240
 #, c-format
 msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
 msgstr "'%s' 不是一个提交,不能基于它创建分支 '%s'"
 
-#: builtin/checkout.c:1237
+#: builtin/checkout.c:1244
 #, c-format
 msgid "git checkout: --detach does not take a path argument '%s'"
 msgstr "git checkout:--detach 不能接收路径参数 '%s'"
 
-#: builtin/checkout.c:1241
+#: builtin/checkout.c:1248
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -6805,7 +7181,7 @@ msgstr "将忽略仓库 %s\n"
 msgid "failed to remove %s"
 msgstr "无法删除 %s"
 
-#: builtin/clean.c:302 git-add--interactive.perl:572
+#: builtin/clean.c:302 git-add--interactive.perl:579
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -6818,7 +7194,7 @@ msgstr ""
 "foo        - 通过唯一前缀选择一个选项\n"
 "           - (空)什么也不选择\n"
 
-#: builtin/clean.c:306 git-add--interactive.perl:581
+#: builtin/clean.c:306 git-add--interactive.perl:588
 #, c-format
 msgid ""
 "Prompt help:\n"
@@ -6839,8 +7215,8 @@ msgstr ""
 "*          - 选择所有选项\n"
 "           - (空)结束选择\n"
 
-#: builtin/clean.c:522 git-add--interactive.perl:547
-#: git-add--interactive.perl:552
+#: builtin/clean.c:522 git-add--interactive.perl:554
+#: git-add--interactive.perl:559
 #, c-format, perl-format
 msgid "Huh (%s)?\n"
 msgstr "嗯(%s)?\n"
@@ -6865,7 +7241,7 @@ msgstr "选择要删除的条目"
 msgid "Remove %s [y/N]? "
 msgstr "删除 %s [y/N]?"
 
-#: builtin/clean.c:788 git-add--interactive.perl:1710
+#: builtin/clean.c:788 git-add--interactive.perl:1717
 #, c-format
 msgid "Bye.\n"
 msgstr "再见。\n"
@@ -6888,11 +7264,11 @@ msgstr ""
 "help                - 显示本帮助\n"
 "?                   - 显示如何在提示符下选择的帮助"
 
-#: builtin/clean.c:823 git-add--interactive.perl:1786
+#: builtin/clean.c:823 git-add--interactive.perl:1793
 msgid "*** Commands ***"
 msgstr "*** 命令 ***"
 
-#: builtin/clean.c:824 git-add--interactive.perl:1783
+#: builtin/clean.c:824 git-add--interactive.perl:1790
 msgid "What now"
 msgstr "请选择"
 
@@ -6959,144 +7335,146 @@ msgid ""
 msgstr ""
 "clean.requireForce 默认为 true 且未提供 -i、-n 或 -f 选项,拒绝执行清理动作"
 
-#: builtin/clone.c:40
+#: builtin/clone.c:42
 msgid "git clone [<options>] [--] <repo> [<dir>]"
 msgstr "git clone [<选项>] [--] <仓库> [<路径>]"
 
-#: builtin/clone.c:85
+#: builtin/clone.c:87
 msgid "don't create a checkout"
 msgstr "不创建一个检出"
 
-#: builtin/clone.c:86 builtin/clone.c:88 builtin/init-db.c:479
+#: builtin/clone.c:88 builtin/clone.c:90 builtin/init-db.c:479
 msgid "create a bare repository"
 msgstr "创建一个纯仓库"
 
-#: builtin/clone.c:90
+#: builtin/clone.c:92
 msgid "create a mirror repository (implies bare)"
 msgstr "创建一个镜像仓库(也是纯仓库)"
 
-#: builtin/clone.c:92
+#: builtin/clone.c:94
 msgid "to clone from a local repository"
 msgstr "从本地仓库克隆"
 
-#: builtin/clone.c:94
+#: builtin/clone.c:96
 msgid "don't use local hardlinks, always copy"
 msgstr "不使用本地硬链接,始终复制"
 
-#: builtin/clone.c:96
+#: builtin/clone.c:98
 msgid "setup as shared repository"
 msgstr "设置为共享仓库"
 
-#: builtin/clone.c:98 builtin/clone.c:102
+#: builtin/clone.c:100 builtin/clone.c:104
 msgid "pathspec"
 msgstr "路径规格"
 
-#: builtin/clone.c:98 builtin/clone.c:102
+#: builtin/clone.c:100 builtin/clone.c:104
 msgid "initialize submodules in the clone"
 msgstr "在克隆时初始化子模组"
 
-#: builtin/clone.c:105
+#: builtin/clone.c:107
 msgid "number of submodules cloned in parallel"
 msgstr "并发克隆的子模组的数量"
 
-#: builtin/clone.c:106 builtin/init-db.c:476
+#: builtin/clone.c:108 builtin/init-db.c:476
 msgid "template-directory"
 msgstr "模板目录"
 
-#: builtin/clone.c:107 builtin/init-db.c:477
+#: builtin/clone.c:109 builtin/init-db.c:477
 msgid "directory from which templates will be used"
 msgstr "模板目录将被使用"
 
-#: builtin/clone.c:109 builtin/clone.c:111 builtin/submodule--helper.c:1210
-#: builtin/submodule--helper.c:1577
+#: builtin/clone.c:111 builtin/clone.c:113 builtin/submodule--helper.c:1223
+#: builtin/submodule--helper.c:1594
 msgid "reference repository"
 msgstr "参考仓库"
 
-#: builtin/clone.c:113
+#: builtin/clone.c:115 builtin/submodule--helper.c:1225
+#: builtin/submodule--helper.c:1596
 msgid "use --reference only while cloning"
 msgstr "仅在克隆时参考 --reference 指向的本地仓库"
 
-#: builtin/clone.c:114 builtin/column.c:27 builtin/merge-file.c:44
+#: builtin/clone.c:116 builtin/column.c:27 builtin/merge-file.c:44
+#: builtin/pack-objects.c:3166 builtin/repack.c:213
 msgid "name"
 msgstr "名称"
 
-#: builtin/clone.c:115
+#: builtin/clone.c:117
 msgid "use <name> instead of 'origin' to track upstream"
 msgstr "使用 <名称> 而不是 'origin' 去跟踪上游"
 
-#: builtin/clone.c:117
+#: builtin/clone.c:119
 msgid "checkout <branch> instead of the remote's HEAD"
 msgstr "检出 <分支> 而不是远程 HEAD"
 
-#: builtin/clone.c:119
+#: builtin/clone.c:121
 msgid "path to git-upload-pack on the remote"
 msgstr "远程 git-upload-pack 路径"
 
-#: builtin/clone.c:120 builtin/fetch.c:151 builtin/grep.c:813
-#: builtin/pull.c:211
+#: builtin/clone.c:122 builtin/fetch.c:150 builtin/grep.c:813
+#: builtin/pull.c:216
 msgid "depth"
 msgstr "深度"
 
-#: builtin/clone.c:121
+#: builtin/clone.c:123
 msgid "create a shallow clone of that depth"
 msgstr "创建一个指定深度的浅克隆"
 
-#: builtin/clone.c:122 builtin/fetch.c:153 builtin/pack-objects.c:3017
+#: builtin/clone.c:124 builtin/fetch.c:152 builtin/pack-objects.c:3157
 #: parse-options.h:154
 msgid "time"
 msgstr "时间"
 
-#: builtin/clone.c:123
+#: builtin/clone.c:125
 msgid "create a shallow clone since a specific time"
 msgstr "从一个特定时间创建一个浅克隆"
 
-#: builtin/clone.c:124 builtin/fetch.c:155
+#: builtin/clone.c:126 builtin/fetch.c:154
 msgid "revision"
 msgstr "版本"
 
-#: builtin/clone.c:125 builtin/fetch.c:156
+#: builtin/clone.c:127 builtin/fetch.c:155
 msgid "deepen history of shallow clone, excluding rev"
 msgstr "深化浅克隆的历史,除了特定版本"
 
-#: builtin/clone.c:127
+#: builtin/clone.c:129
 msgid "clone only one branch, HEAD or --branch"
 msgstr "只克隆一个分支、HEAD 或 --branch"
 
-#: builtin/clone.c:129
+#: builtin/clone.c:131
 msgid "don't clone any tags, and make later fetches not to follow them"
 msgstr "不要克隆任何标签,并且后续获取操作也不下载它们"
 
-#: builtin/clone.c:131
+#: builtin/clone.c:133
 msgid "any cloned submodules will be shallow"
 msgstr "子模组将以浅下载模式克隆"
 
-#: builtin/clone.c:132 builtin/init-db.c:485
+#: builtin/clone.c:134 builtin/init-db.c:485
 msgid "gitdir"
 msgstr "git目录"
 
-#: builtin/clone.c:133 builtin/init-db.c:486
+#: builtin/clone.c:135 builtin/init-db.c:486
 msgid "separate git dir from working tree"
 msgstr "git目录和工作区分离"
 
-#: builtin/clone.c:134
+#: builtin/clone.c:136
 msgid "key=value"
 msgstr "key=value"
 
-#: builtin/clone.c:135
+#: builtin/clone.c:137
 msgid "set config inside the new repository"
 msgstr "在新仓库中设置配置信息"
 
-#: builtin/clone.c:136 builtin/fetch.c:173 builtin/pull.c:224
-#: builtin/push.c:567
+#: builtin/clone.c:138 builtin/fetch.c:173 builtin/pull.c:229
+#: builtin/push.c:583
 msgid "use IPv4 addresses only"
 msgstr "只使用 IPv4 地址"
 
-#: builtin/clone.c:138 builtin/fetch.c:175 builtin/pull.c:227
-#: builtin/push.c:569
+#: builtin/clone.c:140 builtin/fetch.c:175 builtin/pull.c:232
+#: builtin/push.c:585
 msgid "use IPv6 addresses only"
 msgstr "只使用 IPv6 地址"
 
-#: builtin/clone.c:276
+#: builtin/clone.c:278
 msgid ""
 "No directory name could be guessed.\n"
 "Please specify a directory on the command line"
@@ -7104,42 +7482,42 @@ msgstr ""
 "无法猜到目录名。\n"
 "请在命令行指定一个目录"
 
-#: builtin/clone.c:329
+#: builtin/clone.c:331
 #, c-format
 msgid "info: Could not add alternate for '%s': %s\n"
 msgstr "info: 不能为 '%s' 添加一个备用:%s\n"
 
-#: builtin/clone.c:401
+#: builtin/clone.c:403
 #, c-format
 msgid "failed to open '%s'"
 msgstr "无法打开 '%s'"
 
-#: builtin/clone.c:409
+#: builtin/clone.c:411
 #, c-format
 msgid "%s exists and is not a directory"
 msgstr "%s 存在且不是一个目录"
 
-#: builtin/clone.c:423
+#: builtin/clone.c:425
 #, c-format
 msgid "failed to stat %s\n"
 msgstr "对 %s 调用 stat 失败\n"
 
-#: builtin/clone.c:445
+#: builtin/clone.c:447
 #, c-format
 msgid "failed to create link '%s'"
 msgstr "无法创建链接 '%s'"
 
-#: builtin/clone.c:449
+#: builtin/clone.c:451
 #, c-format
 msgid "failed to copy file to '%s'"
 msgstr "无法拷贝文件至 '%s'"
 
-#: builtin/clone.c:475
+#: builtin/clone.c:477
 #, c-format
 msgid "done.\n"
 msgstr "完成。\n"
 
-#: builtin/clone.c:489
+#: builtin/clone.c:491
 msgid ""
 "Clone succeeded, but checkout failed.\n"
 "You can inspect what was checked out with 'git status'\n"
@@ -7149,99 +7527,99 @@ msgstr ""
 "您可以通过 'git status' 检查哪些已被检出,然后使用命令\n"
 "'git checkout -f HEAD' 重试\n"
 
-#: builtin/clone.c:566
+#: builtin/clone.c:568
 #, c-format
 msgid "Could not find remote branch %s to clone."
 msgstr "不能发现要克隆的远程分支 %s。"
 
-#: builtin/clone.c:661
+#: builtin/clone.c:663
 msgid "remote did not send all necessary objects"
 msgstr "远程没有发送所有必须的对象"
 
-#: builtin/clone.c:677
+#: builtin/clone.c:679
 #, c-format
 msgid "unable to update %s"
 msgstr "不能更新 %s"
 
-#: builtin/clone.c:726
+#: builtin/clone.c:728
 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
 msgstr "远程 HEAD 指向一个不存在的引用,无法检出。\n"
 
-#: builtin/clone.c:756
+#: builtin/clone.c:758
 msgid "unable to checkout working tree"
 msgstr "不能检出工作区"
 
-#: builtin/clone.c:801
+#: builtin/clone.c:803
 msgid "unable to write parameters to config file"
 msgstr "无法将参数写入配置文件"
 
-#: builtin/clone.c:864
+#: builtin/clone.c:866
 msgid "cannot repack to clean up"
 msgstr "无法执行 repack 来清理"
 
-#: builtin/clone.c:866
+#: builtin/clone.c:868
 msgid "cannot unlink temporary alternates file"
 msgstr "无法删除临时的 alternates 文件"
 
-#: builtin/clone.c:906 builtin/receive-pack.c:1946
+#: builtin/clone.c:907 builtin/receive-pack.c:1947
 msgid "Too many arguments."
 msgstr "太多参数。"
 
-#: builtin/clone.c:910
+#: builtin/clone.c:911
 msgid "You must specify a repository to clone."
 msgstr "您必须指定一个仓库来克隆。"
 
-#: builtin/clone.c:923
+#: builtin/clone.c:924
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr "--bare 和 --origin %s 选项不兼容。"
 
-#: builtin/clone.c:926
+#: builtin/clone.c:927
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "--bare 和 --separate-git-dir 选项不兼容。"
 
-#: builtin/clone.c:939
+#: builtin/clone.c:940
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "仓库 '%s' 不存在"
 
-#: builtin/clone.c:945 builtin/fetch.c:1455
+#: builtin/clone.c:946 builtin/fetch.c:1460
 #, c-format
 msgid "depth %s is not a positive number"
 msgstr "深度 %s 不是一个正数"
 
-#: builtin/clone.c:955
+#: builtin/clone.c:956
 #, c-format
 msgid "destination path '%s' already exists and is not an empty directory."
 msgstr "目标路径 '%s' 已经存在,并且不是一个空目录。"
 
-#: builtin/clone.c:965
+#: builtin/clone.c:966
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "工作区 '%s' 已经存在。"
 
-#: builtin/clone.c:980 builtin/clone.c:1001 builtin/difftool.c:270
-#: builtin/worktree.c:255 builtin/worktree.c:285
+#: builtin/clone.c:981 builtin/clone.c:1002 builtin/difftool.c:270
+#: builtin/worktree.c:246 builtin/worktree.c:276
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "不能为 '%s' 创建先导目录"
 
-#: builtin/clone.c:985
+#: builtin/clone.c:986
 #, c-format
 msgid "could not create work tree dir '%s'"
 msgstr "不能创建工作区目录 '%s'"
 
-#: builtin/clone.c:1005
+#: builtin/clone.c:1006
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "克隆到纯仓库 '%s'...\n"
 
-#: builtin/clone.c:1007
+#: builtin/clone.c:1008
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "正克隆到 '%s'...\n"
 
-#: builtin/clone.c:1031
+#: builtin/clone.c:1032
 msgid ""
 "clone --recursive is not compatible with both --reference and --reference-if-"
 "able"
@@ -7308,7 +7686,7 @@ msgstr "右边框的填充空间"
 msgid "Padding space between columns"
 msgstr "两列之间的填充空间"
 
-#: builtin/column.c:52
+#: builtin/column.c:51
 msgid "--command must be the first argument"
 msgstr "--command 必须是第一个参数"
 
@@ -7363,98 +7741,98 @@ msgstr ""
 "然后执行 \"git cherry-pick --continue\" 继续对其余提交执行拣选\n"
 "操作。\n"
 
-#: builtin/commit.c:284
+#: builtin/commit.c:293
 msgid "failed to unpack HEAD tree object"
 msgstr "无法解包 HEAD 树对象"
 
-#: builtin/commit.c:325
+#: builtin/commit.c:334
 msgid "unable to create temporary index"
 msgstr "不能创建临时索引"
 
-#: builtin/commit.c:331
+#: builtin/commit.c:340
 msgid "interactive add failed"
 msgstr "交互式添加失败"
 
-#: builtin/commit.c:344
+#: builtin/commit.c:353
 msgid "unable to update temporary index"
 msgstr "无法更新临时索引"
 
-#: builtin/commit.c:346
+#: builtin/commit.c:355
 msgid "Failed to update main cache tree"
 msgstr "不能更新树的主缓存"
 
-#: builtin/commit.c:371 builtin/commit.c:395 builtin/commit.c:444
+#: builtin/commit.c:380 builtin/commit.c:403 builtin/commit.c:449
 msgid "unable to write new_index file"
 msgstr "无法写 new_index 文件"
 
-#: builtin/commit.c:427
+#: builtin/commit.c:432
 msgid "cannot do a partial commit during a merge."
 msgstr "在合并过程中不能做部分提交。"
 
-#: builtin/commit.c:429
+#: builtin/commit.c:434
 msgid "cannot do a partial commit during a cherry-pick."
 msgstr "在拣选过程中不能做部分提交。"
 
-#: builtin/commit.c:437
+#: builtin/commit.c:442
 msgid "cannot read the index"
 msgstr "无法读取索引"
 
-#: builtin/commit.c:456
+#: builtin/commit.c:461
 msgid "unable to write temporary index file"
 msgstr "无法写临时索引文件"
 
-#: builtin/commit.c:553
+#: builtin/commit.c:558
 #, c-format
 msgid "commit '%s' lacks author header"
 msgstr "提交 '%s' 缺少作者信息"
 
-#: builtin/commit.c:555
+#: builtin/commit.c:560
 #, c-format
 msgid "commit '%s' has malformed author line"
-msgstr "提交 '%s' 有非法的作者信息"
+msgstr "提交 '%s' 有格式错误的作者信息"
 
-#: builtin/commit.c:574
+#: builtin/commit.c:579
 msgid "malformed --author parameter"
-msgstr "非法的 --author 参数"
+msgstr "格式错误的 --author 参数"
 
-#: builtin/commit.c:626
+#: builtin/commit.c:631
 msgid ""
 "unable to select a comment character that is not used\n"
 "in the current commit message"
 msgstr "无法选择一个未被当前提交说明使用的注释字符"
 
-#: builtin/commit.c:663 builtin/commit.c:696 builtin/commit.c:1024
+#: builtin/commit.c:668 builtin/commit.c:701 builtin/commit.c:1029
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "不能查询提交 %s"
 
-#: builtin/commit.c:675 builtin/shortlog.c:309
+#: builtin/commit.c:680 builtin/shortlog.c:316
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(正从标准输入中读取日志信息)\n"
 
-#: builtin/commit.c:677
+#: builtin/commit.c:682
 msgid "could not read log from standard input"
 msgstr "不能从标准输入中读取日志信息"
 
-#: builtin/commit.c:681
+#: builtin/commit.c:686
 #, c-format
 msgid "could not read log file '%s'"
 msgstr "不能读取日志文件 '%s'"
 
-#: builtin/commit.c:710 builtin/commit.c:718
+#: builtin/commit.c:715 builtin/commit.c:723
 msgid "could not read SQUASH_MSG"
 msgstr "不能读取 SQUASH_MSG"
 
-#: builtin/commit.c:715
+#: builtin/commit.c:720
 msgid "could not read MERGE_MSG"
 msgstr "不能读取 MERGE_MSG"
 
-#: builtin/commit.c:769
+#: builtin/commit.c:774
 msgid "could not write commit template"
 msgstr "不能写提交模版"
 
-#: builtin/commit.c:787
+#: builtin/commit.c:792
 #, c-format
 msgid ""
 "\n"
@@ -7468,7 +7846,7 @@ msgstr ""
 "\t%s\n"
 "然后重试。\n"
 
-#: builtin/commit.c:792
+#: builtin/commit.c:797
 #, c-format
 msgid ""
 "\n"
@@ -7482,7 +7860,7 @@ msgstr ""
 "\t%s\n"
 "然后重试。\n"
 
-#: builtin/commit.c:805
+#: builtin/commit.c:810
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -7491,7 +7869,7 @@ msgstr ""
 "请为您的变更输入提交说明。以 '%c' 开始的行将被忽略,而一个空的提交\n"
 "说明将会终止提交。\n"
 
-#: builtin/commit.c:813
+#: builtin/commit.c:818
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -7502,342 +7880,350 @@ msgstr ""
 "也可以删除它们。一个空的提交说明将会终止提交。\n"
 
 #  译者:为保证在输出中对齐,注意调整句中空格!
-#: builtin/commit.c:830
+#: builtin/commit.c:835
 #, c-format
 msgid "%sAuthor:    %.*s <%.*s>"
 msgstr "%s作者:  %.*s <%.*s>"
 
 #  译者:为保证在输出中对齐,注意调整句中空格!
-#: builtin/commit.c:838
+#: builtin/commit.c:843
 #, c-format
 msgid "%sDate:      %s"
 msgstr "%s日期:  %s"
 
 #  译者:为保证在输出中对齐,注意调整句中空格!
-#: builtin/commit.c:845
+#: builtin/commit.c:850
 #, c-format
 msgid "%sCommitter: %.*s <%.*s>"
 msgstr "%s提交者:%.*s <%.*s>"
 
-#: builtin/commit.c:862
+#: builtin/commit.c:867
 msgid "Cannot read index"
 msgstr "无法读取索引"
 
-#: builtin/commit.c:928
+#: builtin/commit.c:933
 msgid "Error building trees"
 msgstr "无法创建树对象"
 
-#: builtin/commit.c:942 builtin/tag.c:256
+#: builtin/commit.c:947 builtin/tag.c:257
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "请使用 -m 或 -F 选项提供提交说明。\n"
 
-#: builtin/commit.c:986
+#: builtin/commit.c:991
 #, c-format
 msgid "--author '%s' is not 'Name <email>' and matches no existing author"
 msgstr "--author '%s' 不是 '姓名 <邮箱>' 格式,且未能在现有作者中找到匹配"
 
-#: builtin/commit.c:1000
+#: builtin/commit.c:1005
 #, c-format
 msgid "Invalid ignored mode '%s'"
 msgstr "无效的忽略模式 '%s'"
 
-#: builtin/commit.c:1014 builtin/commit.c:1264
+#: builtin/commit.c:1019 builtin/commit.c:1269
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "无效的未追踪文件参数 '%s'"
 
-#: builtin/commit.c:1052
+#: builtin/commit.c:1057
 msgid "--long and -z are incompatible"
 msgstr "--long 和 -z 选项不兼容"
 
-#: builtin/commit.c:1085
+#: builtin/commit.c:1090
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "同时使用 --reset-author 和 --author 没有意义"
 
-#: builtin/commit.c:1094
+#: builtin/commit.c:1099
 msgid "You have nothing to amend."
 msgstr "您没有可修补的提交。"
 
-#: builtin/commit.c:1097
+#: builtin/commit.c:1102
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr "您正处于一个合并过程中 -- 无法修补提交。"
 
-#: builtin/commit.c:1099
+#: builtin/commit.c:1104
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr "您正处于一个拣选过程中 -- 无法修补提交。"
 
-#: builtin/commit.c:1102
+#: builtin/commit.c:1107
 msgid "Options --squash and --fixup cannot be used together"
 msgstr "选项 --squash 和 --fixup 不能同时使用"
 
-#: builtin/commit.c:1112
+#: builtin/commit.c:1117
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "只能用一个 -c/-C/-F/--fixup 选项。"
 
-#: builtin/commit.c:1114
+#: builtin/commit.c:1119
 msgid "Option -m cannot be combined with -c/-C/-F."
 msgstr "选项 -m 不能和 -c/-C/-F 同时使用。"
 
-#: builtin/commit.c:1122
+#: builtin/commit.c:1127
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr "--reset-author 只能和 -C、-c 或 --amend 同时使用。"
 
-#: builtin/commit.c:1139
+#: builtin/commit.c:1144
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr "只能用一个 --include/--only/--all/--interactive/--patch 选项。"
 
-#: builtin/commit.c:1141
+#: builtin/commit.c:1146
 msgid "No paths with --include/--only does not make sense."
 msgstr "参数 --include/--only 不跟路径没有意义。"
 
-#: builtin/commit.c:1155 builtin/tag.c:542
+#: builtin/commit.c:1160 builtin/tag.c:543
 #, c-format
 msgid "Invalid cleanup mode %s"
 msgstr "无效的清理模式 %s"
 
-#: builtin/commit.c:1160
+#: builtin/commit.c:1165
 msgid "Paths with -a does not make sense."
 msgstr "路径和 -a 选项同时使用没有意义。"
 
-#: builtin/commit.c:1278 builtin/commit.c:1443
+#: builtin/commit.c:1303 builtin/commit.c:1480
 msgid "show status concisely"
 msgstr "以简洁的格式显示状态"
 
-#: builtin/commit.c:1280 builtin/commit.c:1445
+#: builtin/commit.c:1305 builtin/commit.c:1482
 msgid "show branch information"
 msgstr "显示分支信息"
 
-#: builtin/commit.c:1282
+#: builtin/commit.c:1307
 msgid "show stash information"
 msgstr "显示贮藏区信息"
 
-#: builtin/commit.c:1284 builtin/commit.c:1447
+#: builtin/commit.c:1309 builtin/commit.c:1484
 msgid "compute full ahead/behind values"
 msgstr "计算完整的领先/落后值"
 
-#: builtin/commit.c:1286
+#: builtin/commit.c:1311
 msgid "version"
 msgstr "版本"
 
-#: builtin/commit.c:1286 builtin/commit.c:1449 builtin/push.c:542
-#: builtin/worktree.c:541
+#: builtin/commit.c:1311 builtin/commit.c:1486 builtin/push.c:558
+#: builtin/worktree.c:581
 msgid "machine-readable output"
 msgstr "机器可读的输出"
 
-#: builtin/commit.c:1289 builtin/commit.c:1451
+#: builtin/commit.c:1314 builtin/commit.c:1488
 msgid "show status in long format (default)"
 msgstr "以长格式显示状态(默认)"
 
-#: builtin/commit.c:1292 builtin/commit.c:1454
+#: builtin/commit.c:1317 builtin/commit.c:1491
 msgid "terminate entries with NUL"
 msgstr "条目以 NUL 字符结尾"
 
-#: builtin/commit.c:1294 builtin/commit.c:1298 builtin/commit.c:1457
-#: builtin/fast-export.c:999 builtin/fast-export.c:1002 builtin/tag.c:396
+#: builtin/commit.c:1319 builtin/commit.c:1323 builtin/commit.c:1494
+#: builtin/fast-export.c:1001 builtin/fast-export.c:1004 builtin/tag.c:397
 msgid "mode"
 msgstr "模式"
 
-#: builtin/commit.c:1295 builtin/commit.c:1457
+#: builtin/commit.c:1320 builtin/commit.c:1494
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr "显示未跟踪的文件,“模式”的可选参数:all、normal、no。(默认:all)"
 
-#: builtin/commit.c:1299
+#: builtin/commit.c:1324
 msgid ""
 "show ignored files, optional modes: traditional, matching, no. (Default: "
 "traditional)"
 msgstr ""
 "显示已忽略的文件,可选模式:traditional、matching、no。(默认:traditional)"
 
-#: builtin/commit.c:1301 parse-options.h:167
+#: builtin/commit.c:1326 parse-options.h:167
 msgid "when"
 msgstr "何时"
 
-#: builtin/commit.c:1302
+#: builtin/commit.c:1327
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
 msgstr ""
 "忽略子模组的更改,“何时”的可选参数:all、dirty、untracked。(默认:all)"
 
-#: builtin/commit.c:1304
+#: builtin/commit.c:1329
 msgid "list untracked files in columns"
 msgstr "以列的方式显示未跟踪的文件"
 
-#: builtin/commit.c:1323
+#: builtin/commit.c:1330
+msgid "do not detect renames"
+msgstr "不检测重命名"
+
+#: builtin/commit.c:1332
+msgid "detect renames, optionally set similarity index"
+msgstr "检测重命名,可以设置索引相似度"
+
+#: builtin/commit.c:1352
 msgid "Unsupported combination of ignored and untracked-files arguments"
 msgstr "不支持已忽略和未跟踪文件参数的组合"
 
-#: builtin/commit.c:1413
+#: builtin/commit.c:1450
 msgid "suppress summary after successful commit"
 msgstr "提交成功后不显示概述信息"
 
-#: builtin/commit.c:1414
+#: builtin/commit.c:1451
 msgid "show diff in commit message template"
 msgstr "在提交说明模板里显示差异"
 
-#: builtin/commit.c:1416
+#: builtin/commit.c:1453
 msgid "Commit message options"
 msgstr "提交说明选项"
 
-#: builtin/commit.c:1417 builtin/tag.c:393
+#: builtin/commit.c:1454 builtin/tag.c:394
 msgid "read message from file"
 msgstr "从文件中读取提交说明"
 
-#: builtin/commit.c:1418
+#: builtin/commit.c:1455
 msgid "author"
 msgstr "作者"
 
-#: builtin/commit.c:1418
+#: builtin/commit.c:1455
 msgid "override author for commit"
 msgstr "提交时覆盖作者"
 
-#: builtin/commit.c:1419 builtin/gc.c:359
+#: builtin/commit.c:1456 builtin/gc.c:501
 msgid "date"
 msgstr "日期"
 
-#: builtin/commit.c:1419
+#: builtin/commit.c:1456
 msgid "override date for commit"
 msgstr "提交时覆盖日期"
 
-#: builtin/commit.c:1420 builtin/merge.c:226 builtin/notes.c:402
-#: builtin/notes.c:565 builtin/tag.c:391
+#: builtin/commit.c:1457 builtin/merge.c:228 builtin/notes.c:402
+#: builtin/notes.c:565 builtin/tag.c:392
 msgid "message"
 msgstr "说明"
 
-#: builtin/commit.c:1420
+#: builtin/commit.c:1457
 msgid "commit message"
 msgstr "提交说明"
 
-#: builtin/commit.c:1421 builtin/commit.c:1422 builtin/commit.c:1423
-#: builtin/commit.c:1424 parse-options.h:269 ref-filter.h:92
+#: builtin/commit.c:1458 builtin/commit.c:1459 builtin/commit.c:1460
+#: builtin/commit.c:1461 parse-options.h:270 ref-filter.h:92
 msgid "commit"
 msgstr "提交"
 
-#: builtin/commit.c:1421
+#: builtin/commit.c:1458
 msgid "reuse and edit message from specified commit"
 msgstr "重用并编辑指定提交的提交说明"
 
-#: builtin/commit.c:1422
+#: builtin/commit.c:1459
 msgid "reuse message from specified commit"
 msgstr "重用指定提交的提交说明"
 
-#: builtin/commit.c:1423
+#: builtin/commit.c:1460
 msgid "use autosquash formatted message to fixup specified commit"
 msgstr "使用 autosquash 格式的提交说明用以修正指定的提交"
 
-#: builtin/commit.c:1424
+#: builtin/commit.c:1461
 msgid "use autosquash formatted message to squash specified commit"
 msgstr "使用 autosquash 格式的提交说明用以压缩至指定的提交"
 
-#: builtin/commit.c:1425
+#: builtin/commit.c:1462
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr "现在将该提交的作者改为我(和 -C/-c/--amend 参数共用)"
 
-#: builtin/commit.c:1426 builtin/log.c:1446 builtin/merge.c:240
-#: builtin/pull.c:149 builtin/revert.c:105
+#: builtin/commit.c:1463 builtin/log.c:1446 builtin/merge.c:242
+#: builtin/pull.c:154 builtin/revert.c:105
 msgid "add Signed-off-by:"
 msgstr "添加 Signed-off-by: 签名"
 
-#: builtin/commit.c:1427
+#: builtin/commit.c:1464
 msgid "use specified template file"
 msgstr "使用指定的模板文件"
 
-#: builtin/commit.c:1428
+#: builtin/commit.c:1465
 msgid "force edit of commit"
 msgstr "强制编辑提交"
 
 #  译者:可选值,不能翻译(或是原文中笔误,应为 mode)
-#: builtin/commit.c:1429
+#: builtin/commit.c:1466
 msgid "default"
 msgstr "default"
 
-#: builtin/commit.c:1429 builtin/tag.c:397
+#: builtin/commit.c:1466 builtin/tag.c:398
 msgid "how to strip spaces and #comments from message"
 msgstr "设置如何删除提交说明里的空格和#注释"
 
-#: builtin/commit.c:1430
+#: builtin/commit.c:1467
 msgid "include status in commit message template"
 msgstr "在提交说明模板里包含状态信息"
 
-#: builtin/commit.c:1432 builtin/merge.c:238 builtin/pull.c:179
+#: builtin/commit.c:1469 builtin/merge.c:240 builtin/pull.c:184
 #: builtin/revert.c:113
 msgid "GPG sign commit"
 msgstr "GPG 提交签名"
 
-#: builtin/commit.c:1435
+#: builtin/commit.c:1472
 msgid "Commit contents options"
 msgstr "提交内容选项"
 
-#: builtin/commit.c:1436
+#: builtin/commit.c:1473
 msgid "commit all changed files"
 msgstr "提交所有改动的文件"
 
-#: builtin/commit.c:1437
+#: builtin/commit.c:1474
 msgid "add specified files to index for commit"
 msgstr "添加指定的文件到索引区等待提交"
 
-#: builtin/commit.c:1438
+#: builtin/commit.c:1475
 msgid "interactively add files"
 msgstr "交互式添加文件"
 
-#: builtin/commit.c:1439
+#: builtin/commit.c:1476
 msgid "interactively add changes"
 msgstr "交互式添加变更"
 
-#: builtin/commit.c:1440
+#: builtin/commit.c:1477
 msgid "commit only specified files"
 msgstr "只提交指定的文件"
 
-#: builtin/commit.c:1441
+#: builtin/commit.c:1478
 msgid "bypass pre-commit and commit-msg hooks"
 msgstr "绕过 pre-commit 和 commit-msg 钩子"
 
-#: builtin/commit.c:1442
+#: builtin/commit.c:1479
 msgid "show what would be committed"
 msgstr "显示将要提交的内容"
 
-#: builtin/commit.c:1455
+#: builtin/commit.c:1492
 msgid "amend previous commit"
 msgstr "修改先前的提交"
 
-#: builtin/commit.c:1456
+#: builtin/commit.c:1493
 msgid "bypass post-rewrite hook"
 msgstr "绕过 post-rewrite 钩子"
 
-#: builtin/commit.c:1461
+#: builtin/commit.c:1498
 msgid "ok to record an empty change"
 msgstr "允许一个空提交"
 
-#: builtin/commit.c:1463
+#: builtin/commit.c:1500
 msgid "ok to record a change with an empty message"
 msgstr "允许空的提交说明"
 
-#: builtin/commit.c:1536
+#: builtin/commit.c:1573
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "损坏的 MERGE_HEAD 文件(%s)"
 
-#: builtin/commit.c:1543
+#: builtin/commit.c:1580
 msgid "could not read MERGE_MODE"
 msgstr "不能读取 MERGE_MODE"
 
-#: builtin/commit.c:1562
+#: builtin/commit.c:1599
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "不能读取提交说明:%s"
 
-#: builtin/commit.c:1573
+#: builtin/commit.c:1610
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr "终止提交因为提交说明为空。\n"
 
-#: builtin/commit.c:1578
+#: builtin/commit.c:1615
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr "终止提交;您未更改来自模版的提交说明。\n"
 
-#: builtin/commit.c:1613
+#: builtin/commit.c:1650
 msgid ""
 "Repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full and quota is\n"
@@ -7846,147 +8232,211 @@ msgstr ""
 "仓库已更新,但无法写 new_index 文件。检查是否磁盘已满\n"
 "或磁盘配额已耗尽,然后执行 \"git reset HEAD\" 恢复。"
 
+#: builtin/commit-graph.c:9
+msgid "git commit-graph [--object-dir <objdir>]"
+msgstr "git commit-graph [--object-dir <对象目录>]"
+
+#: builtin/commit-graph.c:10 builtin/commit-graph.c:16
+msgid "git commit-graph read [--object-dir <objdir>]"
+msgstr "git commit-graph read [--object-dir <对象目录>]"
+
+#: builtin/commit-graph.c:11 builtin/commit-graph.c:21
+msgid ""
+"git commit-graph write [--object-dir <objdir>] [--append] [--stdin-packs|--"
+"stdin-commits]"
+msgstr ""
+"git commit-graph write [--object-dir <对象目录>] [--append] [--stdin-packs|--"
+"stdin-commits]"
+
+#: builtin/commit-graph.c:39 builtin/commit-graph.c:92
+#: builtin/commit-graph.c:147 builtin/fetch.c:161 builtin/log.c:1466
+msgid "dir"
+msgstr "目录"
+
+#: builtin/commit-graph.c:40 builtin/commit-graph.c:93
+#: builtin/commit-graph.c:148
+msgid "The object directory to store the graph"
+msgstr "保存图形的对象目录"
+
+#: builtin/commit-graph.c:95
+msgid "scan pack-indexes listed by stdin for commits"
+msgstr "从标准输入中的包索引文件列表中扫描提交"
+
+#: builtin/commit-graph.c:97
+msgid "start walk at commits listed by stdin"
+msgstr "从标准输入中的提交开始扫描"
+
+#: builtin/commit-graph.c:99
+msgid "include all commits already in the commit-graph file"
+msgstr "包含 commit-graph 文件中已有所有提交"
+
+#: builtin/commit-graph.c:108
+msgid "cannot use both --stdin-commits and --stdin-packs"
+msgstr "不能同时使用 --stdin-commits 和 --stdin-packs 选项"
+
 #: builtin/config.c:10
 msgid "git config [<options>]"
 msgstr "git config [<选项>]"
 
-#: builtin/config.c:58
+#: builtin/config.c:101
+#, c-format
+msgid "unrecognized --type argument, %s"
+msgstr "未能识别的 --type 参数,%s"
+
+#: builtin/config.c:123
 msgid "Config file location"
 msgstr "配置文件位置"
 
-#: builtin/config.c:59
+#: builtin/config.c:124
 msgid "use global config file"
 msgstr "使用全局配置文件"
 
-#: builtin/config.c:60
+#: builtin/config.c:125
 msgid "use system config file"
 msgstr "使用系统级配置文件"
 
-#: builtin/config.c:61
+#: builtin/config.c:126
 msgid "use repository config file"
 msgstr "使用仓库级配置文件"
 
-#: builtin/config.c:62
+#: builtin/config.c:127
 msgid "use given config file"
 msgstr "使用指定的配置文件"
 
-#: builtin/config.c:63
+#: builtin/config.c:128
 msgid "blob-id"
 msgstr "数据对象 ID"
 
-#: builtin/config.c:63
+#: builtin/config.c:128
 msgid "read config from given blob object"
 msgstr "从给定的数据对象读取配置"
 
-#: builtin/config.c:64
+#: builtin/config.c:129
 msgid "Action"
 msgstr "操作"
 
-#: builtin/config.c:65
+#: builtin/config.c:130
 msgid "get value: name [value-regex]"
 msgstr "获取值:name [value-regex]"
 
-#: builtin/config.c:66
+#: builtin/config.c:131
 msgid "get all values: key [value-regex]"
 msgstr "获得所有的值:key [value-regex]"
 
-#: builtin/config.c:67
+#: builtin/config.c:132
 msgid "get values for regexp: name-regex [value-regex]"
 msgstr "根据正则表达式获得值:name-regex [value-regex]"
 
-#: builtin/config.c:68
+#: builtin/config.c:133
 msgid "get value specific for the URL: section[.var] URL"
 msgstr "获得 URL 取值:section[.var] URL"
 
-#: builtin/config.c:69
+#: builtin/config.c:134
 msgid "replace all matching variables: name value [value_regex]"
 msgstr "替换所有匹配的变量:name value [value_regex]"
 
-#: builtin/config.c:70
+#: builtin/config.c:135
 msgid "add a new variable: name value"
 msgstr "添加一个新的变量:name value"
 
-#: builtin/config.c:71
+#: builtin/config.c:136
 msgid "remove a variable: name [value-regex]"
 msgstr "删除一个变量:name [value-regex]"
 
-#: builtin/config.c:72
+#: builtin/config.c:137
 msgid "remove all matches: name [value-regex]"
 msgstr "删除所有匹配项:name [value-regex]"
 
-#: builtin/config.c:73
+#: builtin/config.c:138
 msgid "rename section: old-name new-name"
 msgstr "重命名小节:old-name new-name"
 
-#: builtin/config.c:74
+#: builtin/config.c:139
 msgid "remove a section: name"
 msgstr "删除一个小节:name"
 
-#: builtin/config.c:75
+#: builtin/config.c:140
 msgid "list all"
 msgstr "列出所有"
 
-#: builtin/config.c:76
+#: builtin/config.c:141
 msgid "open an editor"
 msgstr "打开一个编辑器"
 
-#: builtin/config.c:77
+#: builtin/config.c:142
 msgid "find the color configured: slot [default]"
 msgstr "获得配置的颜色:配置 [默认]"
 
-#: builtin/config.c:78
+#: builtin/config.c:143
 msgid "find the color setting: slot [stdout-is-tty]"
 msgstr "获得颜色设置:配置 [stdout-is-tty]"
 
-#: builtin/config.c:79
+#: builtin/config.c:144
 msgid "Type"
 msgstr "类型"
 
-#: builtin/config.c:80
+#: builtin/config.c:145
+msgid "value is given this type"
+msgstr "取值为该类型"
+
+#: builtin/config.c:146
 msgid "value is \"true\" or \"false\""
 msgstr "值是 \"true\" 或 \"false\""
 
-#: builtin/config.c:81
+#: builtin/config.c:147
 msgid "value is decimal number"
 msgstr "值是十进制数"
 
-#: builtin/config.c:82
+#: builtin/config.c:148
 msgid "value is --bool or --int"
 msgstr "值是 --bool or --int"
 
-#: builtin/config.c:83
+#: builtin/config.c:149
 msgid "value is a path (file or directory name)"
 msgstr "值是一个路径(文件或目录名)"
 
-#: builtin/config.c:84
+#: builtin/config.c:150
 msgid "value is an expiry date"
 msgstr "值是一个到期日期"
 
-#: builtin/config.c:85
+#: builtin/config.c:151
 msgid "Other"
 msgstr "其它"
 
-#: builtin/config.c:86
+#: builtin/config.c:152
 msgid "terminate values with NUL byte"
 msgstr "终止值是 NUL 字节"
 
-#: builtin/config.c:87
+#: builtin/config.c:153
 msgid "show variable names only"
 msgstr "只显示变量名"
 
-#: builtin/config.c:88
+#: builtin/config.c:154
 msgid "respect include directives on lookup"
 msgstr "查询时参照 include 指令递归查找"
 
-#: builtin/config.c:89
+#: builtin/config.c:155
 msgid "show origin of config (file, standard input, blob, command line)"
 msgstr "显示配置的来源(文件、标准输入、数据对象,或命令行)"
 
-#: builtin/config.c:335
+#: builtin/config.c:156
+msgid "value"
+msgstr "取值"
+
+#: builtin/config.c:156
+msgid "with --get, use default value when missing entry"
+msgstr "使用 --get 参数,当缺少设置时使用默认值"
+
+#: builtin/config.c:332
+#, c-format
+msgid "failed to format default config value: %s"
+msgstr "无法格式化默认配置取值:%s"
+
+#: builtin/config.c:431
 msgid "unable to parse default color value"
 msgstr "不能解析默认颜色值"
 
-#: builtin/config.c:479
+#: builtin/config.c:575
 #, c-format
 msgid ""
 "# This is Git's per-user configuration file.\n"
@@ -8001,16 +8451,20 @@ msgstr ""
 "#\tname = %s\n"
 "#\temail = %s\n"
 
-#: builtin/config.c:507
+#: builtin/config.c:603
 msgid "--local can only be used inside a git repository"
 msgstr "--local 只能在一个仓库内使用"
 
-#: builtin/config.c:632
+#: builtin/config.c:606
+msgid "--blob can only be used inside a git repository"
+msgstr "--blob 只能在一个仓库内使用"
+
+#: builtin/config.c:735
 #, c-format
 msgid "cannot create configuration file %s"
 msgstr "不能创建配置文件 %s"
 
-#: builtin/config.c:645
+#: builtin/config.c:748
 #, c-format
 msgid ""
 "cannot overwrite multiple values with a single value\n"
@@ -8019,11 +8473,11 @@ msgstr ""
 "无法用一个值覆盖多个值\n"
 "       使用一个正则表达式、--add 或 --replace-all 来修改 %s。"
 
-#: builtin/count-objects.c:88
+#: builtin/count-objects.c:90
 msgid "git count-objects [-v] [-H | --human-readable]"
 msgstr "git count-objects [-v] [-H | --human-readable]"
 
-#: builtin/count-objects.c:98
+#: builtin/count-objects.c:100
 msgid "print sizes in human readable format"
 msgstr "以用户可读的格式显示大小"
 
@@ -8287,278 +8741,284 @@ msgstr "执行一个全目录差异比较"
 msgid "do not prompt before launching a diff tool"
 msgstr "启动差异比较工具之前不提示"
 
-#: builtin/difftool.c:705
+#: builtin/difftool.c:704
 msgid "use symlinks in dir-diff mode"
 msgstr "在 dir-diff 模式中使用符号链接"
 
-#: builtin/difftool.c:706
+#: builtin/difftool.c:705
 msgid "<tool>"
 msgstr "<工具>"
 
-#: builtin/difftool.c:707
+#: builtin/difftool.c:706
 msgid "use the specified diff tool"
 msgstr "使用指定的差异比较工具"
 
-#: builtin/difftool.c:709
+#: builtin/difftool.c:708
 msgid "print a list of diff tools that may be used with `--tool`"
 msgstr "显示可以用在 `--tool` 参数后的差异工具列表"
 
-#: builtin/difftool.c:712
+#: builtin/difftool.c:711
 msgid ""
 "make 'git-difftool' exit when an invoked diff tool returns a non - zero exit "
 "code"
 msgstr "当执行 diff 工具返回非零退出码时,使 'git-difftool' 退出"
 
-#: builtin/difftool.c:714
+#: builtin/difftool.c:713
 msgid "<command>"
 msgstr "<命令>"
 
-#: builtin/difftool.c:715
+#: builtin/difftool.c:714
 msgid "specify a custom command for viewing diffs"
 msgstr "指定一个用于查看差异的自定义命令"
 
-#: builtin/difftool.c:739
+#: builtin/difftool.c:738
 msgid "no <tool> given for --tool=<tool>"
 msgstr "没有为 --tool=<工具> 参数提供 <工具>"
 
-#: builtin/difftool.c:746
+#: builtin/difftool.c:745
 msgid "no <cmd> given for --extcmd=<cmd>"
 msgstr "没有为 --extcmd=<命令> 参数提供 <命令>"
 
-#: builtin/fast-export.c:26
+#: builtin/fast-export.c:27
 msgid "git fast-export [rev-list-opts]"
 msgstr "git fast-export [rev-list-opts]"
 
-#: builtin/fast-export.c:998
+#: builtin/fast-export.c:1000
 msgid "show progress after <n> objects"
 msgstr "在 <n> 个对象之后显示进度"
 
-#: builtin/fast-export.c:1000
+#: builtin/fast-export.c:1002
 msgid "select handling of signed tags"
 msgstr "选择如何处理签名标签"
 
-#: builtin/fast-export.c:1003
+#: builtin/fast-export.c:1005
 msgid "select handling of tags that tag filtered objects"
 msgstr "选择当标签指向被过滤对象时该标签的处理方式"
 
-#: builtin/fast-export.c:1006
+#: builtin/fast-export.c:1008
 msgid "Dump marks to this file"
 msgstr "把标记存储到这个文件"
 
-#: builtin/fast-export.c:1008
+#: builtin/fast-export.c:1010
 msgid "Import marks from this file"
 msgstr "从这个文件导入标记"
 
-#: builtin/fast-export.c:1010
+#: builtin/fast-export.c:1012
 msgid "Fake a tagger when tags lack one"
 msgstr "当标签缺少标记者字段时,假装提供一个"
 
-#: builtin/fast-export.c:1012
+#: builtin/fast-export.c:1014
 msgid "Output full tree for each commit"
 msgstr "每次提交都输出整个树"
 
-#: builtin/fast-export.c:1014
+#: builtin/fast-export.c:1016
 msgid "Use the done feature to terminate the stream"
 msgstr "使用 done 功能来终止流"
 
-#: builtin/fast-export.c:1015
+#: builtin/fast-export.c:1017
 msgid "Skip output of blob data"
 msgstr "跳过数据对象的输出"
 
-#: builtin/fast-export.c:1016
+#: builtin/fast-export.c:1018
 msgid "refspec"
 msgstr "引用规格"
 
-#: builtin/fast-export.c:1017
+#: builtin/fast-export.c:1019
 msgid "Apply refspec to exported refs"
 msgstr "对导出的引用应用引用规格"
 
-#: builtin/fast-export.c:1018
+#: builtin/fast-export.c:1020
 msgid "anonymize output"
 msgstr "匿名输出"
 
-#: builtin/fetch.c:25
+#: builtin/fetch.c:26
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
 msgstr "git fetch [<选项>] [<仓库> [<引用规格>...]]"
 
-#: builtin/fetch.c:26
+#: builtin/fetch.c:27
 msgid "git fetch [<options>] <group>"
 msgstr "git fetch [<选项>] <组>"
 
-#: builtin/fetch.c:27
+#: builtin/fetch.c:28
 msgid "git fetch --multiple [<options>] [(<repository> | <group>)...]"
 msgstr "git fetch --multiple [<选项>] [(<仓库> | <组>)...]"
 
-#: builtin/fetch.c:28
+#: builtin/fetch.c:29
 msgid "git fetch --all [<options>]"
 msgstr "git fetch --all [<选项>]"
 
-#: builtin/fetch.c:124 builtin/pull.c:188
+#: builtin/fetch.c:123 builtin/pull.c:193
 msgid "fetch from all remotes"
 msgstr "从所有的远程抓取"
 
-#: builtin/fetch.c:126 builtin/pull.c:191
+#: builtin/fetch.c:125 builtin/pull.c:196
 msgid "append to .git/FETCH_HEAD instead of overwriting"
 msgstr "追加到 .git/FETCH_HEAD 而不是覆盖它"
 
-#: builtin/fetch.c:128 builtin/pull.c:194
+#: builtin/fetch.c:127 builtin/pull.c:199
 msgid "path to upload pack on remote end"
 msgstr "上传包到远程的路径"
 
-#: builtin/fetch.c:129 builtin/pull.c:196
+#: builtin/fetch.c:128 builtin/pull.c:201
 msgid "force overwrite of local branch"
 msgstr "强制覆盖本地分支"
 
-#: builtin/fetch.c:131
+#: builtin/fetch.c:130
 msgid "fetch from multiple remotes"
 msgstr "从多个远程抓取"
 
-#: builtin/fetch.c:133 builtin/pull.c:198
+#: builtin/fetch.c:132 builtin/pull.c:203
 msgid "fetch all tags and associated objects"
 msgstr "抓取所有的标签和关联对象"
 
-#: builtin/fetch.c:135
+#: builtin/fetch.c:134
 msgid "do not fetch all tags (--no-tags)"
 msgstr "不抓取任何标签(--no-tags)"
 
-#: builtin/fetch.c:137
+#: builtin/fetch.c:136
 msgid "number of submodules fetched in parallel"
 msgstr "子模组获取的并发数"
 
-#: builtin/fetch.c:139 builtin/pull.c:201
+#: builtin/fetch.c:138 builtin/pull.c:206
 msgid "prune remote-tracking branches no longer on remote"
 msgstr "清除远程已经不存在的分支的跟踪分支"
 
-#: builtin/fetch.c:141
+#: builtin/fetch.c:140
 msgid "prune local tags no longer on remote and clobber changed tags"
 msgstr "清除远程不存在的本地标签,并且替换变更标签"
 
 #  译者:可选值,不能翻译
-#: builtin/fetch.c:142 builtin/fetch.c:165 builtin/pull.c:126
+#: builtin/fetch.c:141 builtin/fetch.c:164 builtin/pull.c:131
 msgid "on-demand"
 msgstr "on-demand"
 
-#: builtin/fetch.c:143
+#: builtin/fetch.c:142
 msgid "control recursive fetching of submodules"
 msgstr "控制子模组的递归抓取"
 
-#: builtin/fetch.c:147 builtin/pull.c:209
+#: builtin/fetch.c:146 builtin/pull.c:214
 msgid "keep downloaded pack"
 msgstr "保持下载包"
 
-#: builtin/fetch.c:149
+#: builtin/fetch.c:148
 msgid "allow updating of HEAD ref"
 msgstr "允许更新 HEAD 引用"
 
-#: builtin/fetch.c:152 builtin/fetch.c:158 builtin/pull.c:212
+#: builtin/fetch.c:151 builtin/fetch.c:157 builtin/pull.c:217
 msgid "deepen history of shallow clone"
 msgstr "深化浅克隆的历史"
 
-#: builtin/fetch.c:154
+#: builtin/fetch.c:153
 msgid "deepen history of shallow repository based on time"
 msgstr "基于时间来深化浅克隆的历史"
 
-#: builtin/fetch.c:160 builtin/pull.c:215
+#: builtin/fetch.c:159 builtin/pull.c:220
 msgid "convert to a complete repository"
 msgstr "转换为一个完整的仓库"
 
-#: builtin/fetch.c:162 builtin/log.c:1466
-msgid "dir"
-msgstr "目录"
-
-#: builtin/fetch.c:163
+#: builtin/fetch.c:162
 msgid "prepend this to submodule path output"
 msgstr "在子模组路径输出的前面加上此目录"
 
-#: builtin/fetch.c:166
+#: builtin/fetch.c:165
 msgid ""
 "default for recursive fetching of submodules (lower priority than config "
 "files)"
 msgstr "递归获取子模组的缺省值(比配置文件优先级低)"
 
-#: builtin/fetch.c:170 builtin/pull.c:218
+#: builtin/fetch.c:169 builtin/pull.c:223
 msgid "accept refs that update .git/shallow"
 msgstr "接受更新 .git/shallow 的引用"
 
-#: builtin/fetch.c:171 builtin/pull.c:220
+#: builtin/fetch.c:170 builtin/pull.c:225
 msgid "refmap"
 msgstr "引用映射"
 
-#: builtin/fetch.c:172 builtin/pull.c:221
+#: builtin/fetch.c:171 builtin/pull.c:226
 msgid "specify fetch refmap"
 msgstr "指定获取操作的引用映射"
 
-#: builtin/fetch.c:431
+#: builtin/fetch.c:172 builtin/ls-remote.c:77 builtin/push.c:582
+#: builtin/send-pack.c:172
+msgid "server-specific"
+msgstr "server-specific"
+
+#: builtin/fetch.c:172 builtin/ls-remote.c:77 builtin/push.c:582
+#: builtin/send-pack.c:173
+msgid "option to transmit"
+msgstr "传输选项"
+
+#: builtin/fetch.c:442
 msgid "Couldn't find remote ref HEAD"
 msgstr "无法发现远程 HEAD 引用"
 
-#: builtin/fetch.c:549
+#: builtin/fetch.c:560
 #, c-format
 msgid "configuration fetch.output contains invalid value %s"
 msgstr "配置变量 fetch.output 包含无效值 %s"
 
-#: builtin/fetch.c:642
+#: builtin/fetch.c:653
 #, c-format
 msgid "object %s not found"
 msgstr "对象 %s 未发现"
 
-#: builtin/fetch.c:646
+#: builtin/fetch.c:657
 msgid "[up to date]"
 msgstr "[最新]"
 
-#: builtin/fetch.c:659 builtin/fetch.c:739
+#: builtin/fetch.c:670 builtin/fetch.c:750
 msgid "[rejected]"
 msgstr "[已拒绝]"
 
-#: builtin/fetch.c:660
+#: builtin/fetch.c:671
 msgid "can't fetch in current branch"
 msgstr "当前分支下不能执行获取操作"
 
-#: builtin/fetch.c:669
+#: builtin/fetch.c:680
 msgid "[tag update]"
 msgstr "[标签更新]"
 
-#: builtin/fetch.c:670 builtin/fetch.c:703 builtin/fetch.c:719
-#: builtin/fetch.c:734
+#: builtin/fetch.c:681 builtin/fetch.c:714 builtin/fetch.c:730
+#: builtin/fetch.c:745
 msgid "unable to update local ref"
 msgstr "不能更新本地引用"
 
-#: builtin/fetch.c:689
+#: builtin/fetch.c:700
 msgid "[new tag]"
 msgstr "[新标签]"
 
-#: builtin/fetch.c:692
+#: builtin/fetch.c:703
 msgid "[new branch]"
 msgstr "[新分支]"
 
-#: builtin/fetch.c:695
+#: builtin/fetch.c:706
 msgid "[new ref]"
 msgstr "[新引用]"
 
-#: builtin/fetch.c:734
+#: builtin/fetch.c:745
 msgid "forced update"
 msgstr "强制更新"
 
-#: builtin/fetch.c:739
+#: builtin/fetch.c:750
 msgid "non-fast-forward"
 msgstr "非快进"
 
-#: builtin/fetch.c:784
+#: builtin/fetch.c:795
 #, c-format
 msgid "%s did not send all necessary objects\n"
 msgstr "%s 未发送所有必须的对象\n"
 
-#: builtin/fetch.c:804
+#: builtin/fetch.c:815
 #, c-format
 msgid "reject %s because shallow roots are not allowed to be updated"
 msgstr "拒绝 %s 因为浅克隆不允许被更新"
 
-#: builtin/fetch.c:892 builtin/fetch.c:988
+#: builtin/fetch.c:903 builtin/fetch.c:999
 #, c-format
 msgid "From %.*s\n"
 msgstr "来自 %.*s\n"
 
-#: builtin/fetch.c:903
+#: builtin/fetch.c:914
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
@@ -8568,95 +9028,95 @@ msgstr ""
 " 'git remote prune %s' 来删除旧的、有冲突的分支"
 
 #  译者:注意保持前导空格
-#: builtin/fetch.c:958
+#: builtin/fetch.c:969
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr "   (%s 将成为摇摆状态)"
 
 #  译者:注意保持前导空格
-#: builtin/fetch.c:959
+#: builtin/fetch.c:970
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr "   (%s 已成为摇摆状态)"
 
-#: builtin/fetch.c:991
+#: builtin/fetch.c:1002
 msgid "[deleted]"
 msgstr "[已删除]"
 
-#: builtin/fetch.c:992 builtin/remote.c:1024
+#: builtin/fetch.c:1003 builtin/remote.c:1033
 msgid "(none)"
 msgstr "(无)"
 
-#: builtin/fetch.c:1015
+#: builtin/fetch.c:1026
 #, c-format
 msgid "Refusing to fetch into current branch %s of non-bare repository"
 msgstr "拒绝获取到非纯仓库的当前分支 %s"
 
-#: builtin/fetch.c:1034
+#: builtin/fetch.c:1045
 #, c-format
 msgid "Option \"%s\" value \"%s\" is not valid for %s"
 msgstr "选项 \"%s\" 的值 \"%s\" 对于 %s 是无效的"
 
-#: builtin/fetch.c:1037
+#: builtin/fetch.c:1048
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr "选项 \"%s\" 为 %s 所忽略\n"
 
-#: builtin/fetch.c:1277
+#: builtin/fetch.c:1287
 #, c-format
 msgid "Fetching %s\n"
 msgstr "正在获取 %s\n"
 
-#: builtin/fetch.c:1279 builtin/remote.c:97
+#: builtin/fetch.c:1289 builtin/remote.c:98
 #, c-format
 msgid "Could not fetch %s"
 msgstr "不能获取 %s"
 
-#: builtin/fetch.c:1325 builtin/fetch.c:1498
+#: builtin/fetch.c:1335 builtin/fetch.c:1503
 msgid ""
 "--filter can only be used with the remote configured in core.partialClone"
 msgstr "只可以将 --filter 用于在 core.partialClone 中配置的远程仓库"
 
-#: builtin/fetch.c:1350
+#: builtin/fetch.c:1358
 msgid ""
 "No remote repository specified.  Please, specify either a URL or a\n"
 "remote name from which new revisions should be fetched."
 msgstr "未指定远程仓库。请通过一个 URL 或远程仓库名指定,用以获取新提交。"
 
-#: builtin/fetch.c:1394
+#: builtin/fetch.c:1395
 msgid "You need to specify a tag name."
 msgstr "您需要指定一个标签名称。"
 
-#: builtin/fetch.c:1439
+#: builtin/fetch.c:1444
 msgid "Negative depth in --deepen is not supported"
 msgstr "--deepen 不支持负数深度"
 
-#: builtin/fetch.c:1441
+#: builtin/fetch.c:1446
 msgid "--deepen and --depth are mutually exclusive"
 msgstr "--deepen 和 --depth 是互斥的"
 
-#: builtin/fetch.c:1446
+#: builtin/fetch.c:1451
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth 和 --unshallow 不能同时使用"
 
-#: builtin/fetch.c:1448
+#: builtin/fetch.c:1453
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "对于一个完整的仓库,参数 --unshallow 没有意义"
 
-#: builtin/fetch.c:1464
+#: builtin/fetch.c:1469
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all 不能带一个仓库参数"
 
-#: builtin/fetch.c:1466
+#: builtin/fetch.c:1471
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all 带引用规格没有任何意义"
 
-#: builtin/fetch.c:1475
+#: builtin/fetch.c:1480
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "没有这样的远程或远程组:%s"
 
-#: builtin/fetch.c:1482
+#: builtin/fetch.c:1487
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "获取组并指定引用规格没有意义"
 
@@ -8721,7 +9181,7 @@ msgstr "引用占位符适用于 Tcl"
 msgid "show only <n> matched refs"
 msgstr "只显示 <n> 个匹配的引用"
 
-#: builtin/for-each-ref.c:39 builtin/tag.c:420
+#: builtin/for-each-ref.c:39 builtin/tag.c:421
 msgid "respect format colors"
 msgstr "遵照格式中的颜色输出"
 
@@ -8745,81 +9205,81 @@ msgstr "只打印包含该提交的引用"
 msgid "print only refs which don't contain the commit"
 msgstr "只打印不包含该提交的引用"
 
-#: builtin/fsck.c:568
+#: builtin/fsck.c:569
 msgid "Checking object directories"
 msgstr "检查对象目录中"
 
-#: builtin/fsck.c:660
+#: builtin/fsck.c:661
 msgid "git fsck [<options>] [<object>...]"
 msgstr "git fsck [<选项>] [<对象>...]"
 
-#: builtin/fsck.c:666
+#: builtin/fsck.c:667
 msgid "show unreachable objects"
 msgstr "显示不可达的对象"
 
-#: builtin/fsck.c:667
+#: builtin/fsck.c:668
 msgid "show dangling objects"
 msgstr "显示摇摆的对象"
 
-#: builtin/fsck.c:668
+#: builtin/fsck.c:669
 msgid "report tags"
 msgstr "报告标签"
 
-#: builtin/fsck.c:669
+#: builtin/fsck.c:670
 msgid "report root nodes"
 msgstr "报告根节点"
 
-#: builtin/fsck.c:670
+#: builtin/fsck.c:671
 msgid "make index objects head nodes"
 msgstr "将索引亦作为检查的头节点"
 
-#: builtin/fsck.c:671
+#: builtin/fsck.c:672
 msgid "make reflogs head nodes (default)"
 msgstr "将引用日志作为检查的头节点(默认)"
 
-#: builtin/fsck.c:672
+#: builtin/fsck.c:673
 msgid "also consider packs and alternate objects"
 msgstr "也考虑包和备用对象"
 
-#: builtin/fsck.c:673
+#: builtin/fsck.c:674
 msgid "check only connectivity"
 msgstr "仅检查连通性"
 
-#: builtin/fsck.c:674
+#: builtin/fsck.c:675
 msgid "enable more strict checking"
 msgstr "启用更严格的检查"
 
-#: builtin/fsck.c:676
+#: builtin/fsck.c:677
 msgid "write dangling objects in .git/lost-found"
 msgstr "将摇摆对象写入 .git/lost-found 中"
 
-#: builtin/fsck.c:677 builtin/prune.c:108
+#: builtin/fsck.c:678 builtin/prune.c:109
 msgid "show progress"
 msgstr "显示进度"
 
-#: builtin/fsck.c:678
+#: builtin/fsck.c:679
 msgid "show verbose names for reachable objects"
 msgstr "显示可达对象的详细名称"
 
-#: builtin/fsck.c:742
+#: builtin/fsck.c:745
 msgid "Checking objects"
 msgstr "检查对象中"
 
-#: builtin/gc.c:27
+#: builtin/gc.c:33
 msgid "git gc [<options>]"
 msgstr "git gc [<选项>]"
 
-#: builtin/gc.c:80
+#: builtin/gc.c:88
 #, c-format
 msgid "Failed to fstat %s: %s"
 msgstr "对 %s 调用 fstat 失败:%s"
 
-#: builtin/gc.c:312
+#: builtin/gc.c:452
 #, c-format
 msgid "Can't stat %s"
 msgstr "不能对 %s 调用 stat"
 
-#: builtin/gc.c:321
+#: builtin/gc.c:461
 #, c-format
 msgid ""
 "The last gc run reported the following. Please correct the root cause\n"
@@ -8833,64 +9293,73 @@ msgstr ""
 "\n"
 "%s"
 
-#: builtin/gc.c:360
+#: builtin/gc.c:502
 msgid "prune unreferenced objects"
 msgstr "清除未引用的对象"
 
-#: builtin/gc.c:362
+#: builtin/gc.c:504
 msgid "be more thorough (increased runtime)"
 msgstr "更彻底(增加运行时间)"
 
-#: builtin/gc.c:363
+#: builtin/gc.c:505
 msgid "enable auto-gc mode"
 msgstr "启用自动垃圾回收模式"
 
-#: builtin/gc.c:366
+#: builtin/gc.c:508
 msgid "force running gc even if there may be another gc running"
 msgstr "强制执行 gc 即使另外一个 gc 正在执行"
 
-#: builtin/gc.c:384
+#: builtin/gc.c:511
+msgid "repack all other packs except the largest pack"
+msgstr "除了最大的包之外,对所有其它包文件重新打包"
+
+#: builtin/gc.c:528
+#, c-format
+msgid "failed to parse gc.logexpiry value %s"
+msgstr "无法解析 gc.logexpiry 的值 %s"
+
+#: builtin/gc.c:539
 #, c-format
-msgid "Failed to parse gc.logexpiry value %s"
+msgid "failed to parse prune expiry value %s"
 msgstr "无法解析 gc.logexpiry 的值 %s"
 
-#: builtin/gc.c:412
+#: builtin/gc.c:559
 #, c-format
 msgid "Auto packing the repository in background for optimum performance.\n"
 msgstr "自动在后台执行仓库打包以求最佳性能。\n"
 
-#: builtin/gc.c:414
+#: builtin/gc.c:561
 #, c-format
 msgid "Auto packing the repository for optimum performance.\n"
 msgstr "自动打包仓库以求最佳性能。\n"
 
-#: builtin/gc.c:415
+#: builtin/gc.c:562
 #, c-format
 msgid "See \"git help gc\" for manual housekeeping.\n"
 msgstr "手工维护参见 \"git help gc\"。\n"
 
-#: builtin/gc.c:440
+#: builtin/gc.c:598
 #, c-format
 msgid ""
 "gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
 msgstr ""
 "已经有一个 gc 正运行在机器 '%s' pid %<PRIuMAX>(如果不是,使用 --force)"
 
-#: builtin/gc.c:487
+#: builtin/gc.c:645
 msgid ""
 "There are too many unreachable loose objects; run 'git prune' to remove them."
 msgstr "有太多不可达的松散对象,运行 'git prune' 删除它们。"
 
-#: builtin/grep.c:27
+#: builtin/grep.c:28
 msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
 msgstr "git grep [<选项>] [-e] <模式> [<版本>...] [[--] <路径>...]"
 
-#: builtin/grep.c:225
+#: builtin/grep.c:226
 #, c-format
 msgid "grep: failed to create thread: %s"
 msgstr "grep:无法创建线程:%s"
 
-#: builtin/grep.c:283
+#: builtin/grep.c:284
 #, c-format
 msgid "invalid number of threads specified (%d) for %s"
 msgstr "为 %2$s 设定的线程数 (%1$d) 无效"
@@ -8899,17 +9368,17 @@ msgstr "为 %2$s 设定的线程数 (%1$d) 无效"
 #. variable for tweaking threads, currently
 #. grep.threads
 #.
-#: builtin/grep.c:292 builtin/index-pack.c:1523 builtin/index-pack.c:1712
+#: builtin/grep.c:293 builtin/index-pack.c:1535 builtin/index-pack.c:1727
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "没有线程支持,忽略 %s"
 
-#: builtin/grep.c:460 builtin/grep.c:580 builtin/grep.c:622
+#: builtin/grep.c:461 builtin/grep.c:582 builtin/grep.c:623
 #, c-format
 msgid "unable to read tree (%s)"
 msgstr "无法读取树(%s)"
 
-#: builtin/grep.c:637
+#: builtin/grep.c:638
 #, c-format
 msgid "unable to grep from object of type %s"
 msgstr "无法抓取来自于 %s 类型的对象"
@@ -9109,7 +9578,7 @@ msgstr "--no-index 或 --untracked 不能和版本同时使用"
 msgid "unable to resolve revision: %s"
 msgstr "不能解析版本:%s"
 
-#: builtin/grep.c:1036 builtin/index-pack.c:1519
+#: builtin/grep.c:1036 builtin/index-pack.c:1531
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "指定的线程数无效(%d)"
@@ -9179,58 +9648,62 @@ msgstr "允许对任意随机垃圾数据做散列来创建损坏的对象以便
 msgid "process file as it were from this path"
 msgstr "处理文件并假设其来自于此路径"
 
-#: builtin/help.c:43
+#: builtin/help.c:45
 msgid "print all available commands"
 msgstr "打印所有可用的命令"
 
-#: builtin/help.c:44
+#: builtin/help.c:46
 msgid "exclude guides"
 msgstr "排除向导"
 
-#: builtin/help.c:45
+#: builtin/help.c:47
 msgid "print list of useful guides"
 msgstr "显示有用的指南列表"
 
-#: builtin/help.c:46
+#: builtin/help.c:48
 msgid "show man page"
 msgstr "显示 man 手册"
 
-#: builtin/help.c:47
+#: builtin/help.c:49
 msgid "show manual in web browser"
 msgstr "在 web 浏览器中显示手册"
 
-#: builtin/help.c:49
+#: builtin/help.c:51
 msgid "show info page"
 msgstr "显示 info 手册"
 
-#: builtin/help.c:55
+#: builtin/help.c:53
+msgid "print command description"
+msgstr "打印命令描述"
+
+#: builtin/help.c:58
 msgid "git help [--all] [--guides] [--man | --web | --info] [<command>]"
 msgstr "git help [--all] [--guides] [--man | --web | --info] [<命令>]"
 
-#: builtin/help.c:67
+#: builtin/help.c:70
 #, c-format
 msgid "unrecognized help format '%s'"
 msgstr "未能识别的帮助格式 '%s'"
 
-#: builtin/help.c:94
+#: builtin/help.c:97
 msgid "Failed to start emacsclient."
 msgstr "无法启动 emacsclient。"
 
-#: builtin/help.c:107
+#: builtin/help.c:110
 msgid "Failed to parse emacsclient version."
 msgstr "无法解析 emacsclient 版本。"
 
-#: builtin/help.c:115
+#: builtin/help.c:118
 #, c-format
 msgid "emacsclient version '%d' too old (< 22)."
 msgstr "emacsclient 版本 '%d' 太老(< 22)。"
 
-#: builtin/help.c:133 builtin/help.c:155 builtin/help.c:165 builtin/help.c:173
+#: builtin/help.c:136 builtin/help.c:158 builtin/help.c:168 builtin/help.c:176
 #, c-format
 msgid "failed to exec '%s'"
 msgstr "无法执行 '%s'"
 
-#: builtin/help.c:211
+#: builtin/help.c:214
 #, c-format
 msgid ""
 "'%s': path for unsupported man viewer.\n"
@@ -9239,7 +9712,7 @@ msgstr ""
 "'%s':不支持的 man 手册查看器的路径。\n"
 "请使用 'man.<工具>.cmd'。"
 
-#: builtin/help.c:223
+#: builtin/help.c:226
 #, c-format
 msgid ""
 "'%s': cmd for supported man viewer.\n"
@@ -9248,358 +9721,326 @@ msgstr ""
 "'%s': 支持的 man 手册查看器命令。\n"
 "请使用 'man.<工具>.path'。"
 
-#: builtin/help.c:340
+#: builtin/help.c:343
 #, c-format
 msgid "'%s': unknown man viewer."
 msgstr "'%s':未知的 man 查看器。"
 
-#: builtin/help.c:357
+#: builtin/help.c:360
 msgid "no man viewer handled the request"
 msgstr "没有 man 查看器处理此请求"
 
-#: builtin/help.c:365
+#: builtin/help.c:368
 msgid "no info viewer handled the request"
 msgstr "没有 info 查看器处理此请求"
 
-#: builtin/help.c:407
-msgid "Defining attributes per path"
-msgstr "定义路径的属性"
-
-#: builtin/help.c:408
-msgid "Everyday Git With 20 Commands Or So"
-msgstr "每一天 Git 常用的约 20 条命令"
+#: builtin/help.c:415
+#, c-format
+msgid "'%s' is aliased to '%s'"
+msgstr "'%s' 是 '%s' 的别名"
 
-#: builtin/help.c:409
-msgid "A Git glossary"
-msgstr "Git 词汇表"
+#: builtin/help.c:442 builtin/help.c:459
+#, c-format
+msgid "usage: %s%s"
+msgstr "用法:%s%s"
 
-#: builtin/help.c:410
-msgid "Specifies intentionally untracked files to ignore"
-msgstr "忽略指定的未跟踪文件"
+#: builtin/index-pack.c:158
+#, c-format
+msgid "unable to open %s"
+msgstr "不能打开 %s"
 
-#: builtin/help.c:411
-msgid "Defining submodule properties"
-msgstr "定义子模组属性"
-
-#: builtin/help.c:412
-msgid "Specifying revisions and ranges for Git"
-msgstr "指定 Git 的版本和版本范围"
-
-#: builtin/help.c:413
-msgid "A tutorial introduction to Git (for version 1.5.1 or newer)"
-msgstr "一个 Git 教程(针对 1.5.1 或更新版本)"
-
-#: builtin/help.c:414
-msgid "An overview of recommended workflows with Git"
-msgstr "Git 推荐的工作流概览"
-
-#: builtin/help.c:426
-msgid "The common Git guides are:\n"
-msgstr "最常用的 Git 向导有:\n"
-
-#: builtin/help.c:444
-#, c-format
-msgid "'%s' is aliased to '%s'"
-msgstr "'%s' 是 '%s' 的别名"
-
-#: builtin/help.c:466 builtin/help.c:483
-#, c-format
-msgid "usage: %s%s"
-msgstr "用法:%s%s"
-
-#: builtin/index-pack.c:157
-#, c-format
-msgid "unable to open %s"
-msgstr "不能打开 %s"
-
-#: builtin/index-pack.c:207
+#: builtin/index-pack.c:208
 #, c-format
 msgid "object type mismatch at %s"
 msgstr "%s 的对象类型不匹配"
 
-#: builtin/index-pack.c:227
+#: builtin/index-pack.c:228
 #, c-format
 msgid "did not receive expected object %s"
 msgstr "未能获取预期的对象 %s"
 
-#: builtin/index-pack.c:230
+#: builtin/index-pack.c:231
 #, c-format
 msgid "object %s: expected type %s, found %s"
 msgstr "对象 %s:应为类型 %s,却是 %s"
 
-#: builtin/index-pack.c:272
+#: builtin/index-pack.c:273
 #, c-format
 msgid "cannot fill %d byte"
 msgid_plural "cannot fill %d bytes"
 msgstr[0] "无法填充 %d 字节"
 msgstr[1] "无法填充 %d 字节"
 
-#: builtin/index-pack.c:282
+#: builtin/index-pack.c:283
 msgid "early EOF"
 msgstr "过早的文件结束符(EOF)"
 
-#: builtin/index-pack.c:283
+#: builtin/index-pack.c:284
 msgid "read error on input"
 msgstr "输入上的读错误"
 
-#: builtin/index-pack.c:295
+#: builtin/index-pack.c:296
 msgid "used more bytes than were available"
 msgstr "用掉了超过可用的字节"
 
-#: builtin/index-pack.c:302
+#: builtin/index-pack.c:303
 msgid "pack too large for current definition of off_t"
 msgstr "包太大超过了当前 off_t 的定义"
 
-#: builtin/index-pack.c:305 builtin/unpack-objects.c:93
+#: builtin/index-pack.c:306 builtin/unpack-objects.c:93
 msgid "pack exceeds maximum allowed size"
 msgstr "包超过了最大允许值"
 
-#: builtin/index-pack.c:320
+#: builtin/index-pack.c:321
 #, c-format
 msgid "unable to create '%s'"
 msgstr "不能创建 '%s'"
 
-#: builtin/index-pack.c:326
+#: builtin/index-pack.c:327
 #, c-format
 msgid "cannot open packfile '%s'"
 msgstr "无法打开包文件 '%s'"
 
-#: builtin/index-pack.c:340
+#: builtin/index-pack.c:341
 msgid "pack signature mismatch"
 msgstr "包签名不匹配"
 
-#: builtin/index-pack.c:342
+#: builtin/index-pack.c:343
 #, c-format
 msgid "pack version %<PRIu32> unsupported"
 msgstr "不支持包版本 %<PRIu32>"
 
-#: builtin/index-pack.c:360
+#: builtin/index-pack.c:361
 #, c-format
 msgid "pack has bad object at offset %<PRIuMAX>: %s"
 msgstr "包中有错误的对象位于偏移量 %<PRIuMAX>:%s"
 
-#: builtin/index-pack.c:481
+#: builtin/index-pack.c:482
 #, c-format
 msgid "inflate returned %d"
 msgstr "解压缩返回 %d"
 
-#: builtin/index-pack.c:530
+#: builtin/index-pack.c:531
 msgid "offset value overflow for delta base object"
 msgstr "偏移值覆盖了 delta 基准对象"
 
-#: builtin/index-pack.c:538
+#: builtin/index-pack.c:539
 msgid "delta base offset is out of bound"
 msgstr "delta 基准偏移越界"
 
-#: builtin/index-pack.c:546
+#: builtin/index-pack.c:547
 #, c-format
 msgid "unknown object type %d"
 msgstr "未知对象类型 %d"
 
-#: builtin/index-pack.c:577
+#: builtin/index-pack.c:578
 msgid "cannot pread pack file"
 msgstr "无法读取包文件"
 
-#: builtin/index-pack.c:579
+#: builtin/index-pack.c:580
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
 msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
 msgstr[0] "包文件过早结束,缺少 %<PRIuMAX> 字节"
 msgstr[1] "包文件过早结束,缺少 %<PRIuMAX> 字节"
 
-#: builtin/index-pack.c:605
+#: builtin/index-pack.c:606
 msgid "serious inflate inconsistency"
 msgstr "解压缩严重的不一致"
 
-#: builtin/index-pack.c:750 builtin/index-pack.c:756 builtin/index-pack.c:779
-#: builtin/index-pack.c:818 builtin/index-pack.c:827
+#: builtin/index-pack.c:751 builtin/index-pack.c:757 builtin/index-pack.c:780
+#: builtin/index-pack.c:819 builtin/index-pack.c:828
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "发现 %s 出现 SHA1 冲突!"
 
-#: builtin/index-pack.c:753 builtin/pack-objects.c:182
-#: builtin/pack-objects.c:276
+#: builtin/index-pack.c:754 builtin/pack-objects.c:198
+#: builtin/pack-objects.c:292
 #, c-format
 msgid "unable to read %s"
 msgstr "不能读 %s"
 
-#: builtin/index-pack.c:816
+#: builtin/index-pack.c:817
 #, c-format
 msgid "cannot read existing object info %s"
 msgstr "不能读取现存对象信息 %s"
 
-#: builtin/index-pack.c:824
+#: builtin/index-pack.c:825
 #, c-format
 msgid "cannot read existing object %s"
 msgstr "不能读取现存对象 %s"
 
-#: builtin/index-pack.c:838
+#: builtin/index-pack.c:839
 #, c-format
 msgid "invalid blob object %s"
 msgstr "无效的数据对象 %s"
 
-#: builtin/index-pack.c:853
+#: builtin/index-pack.c:842 builtin/index-pack.c:860
+msgid "fsck error in packed object"
+msgstr "对打包对象 fsck 检查出错"
+
+#: builtin/index-pack.c:857
 #, c-format
 msgid "invalid %s"
 msgstr "无效的 %s"
 
-#: builtin/index-pack.c:856
-msgid "Error in object"
-msgstr "对象中出错"
-
-#: builtin/index-pack.c:858
+#: builtin/index-pack.c:862
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr "%s 的所有子对象并非都可达"
 
-#: builtin/index-pack.c:930 builtin/index-pack.c:961
+#: builtin/index-pack.c:934 builtin/index-pack.c:965
 msgid "failed to apply delta"
 msgstr "无法应用 delta"
 
-#: builtin/index-pack.c:1131
+#: builtin/index-pack.c:1135
 msgid "Receiving objects"
 msgstr "接收对象中"
 
-#: builtin/index-pack.c:1131
+#: builtin/index-pack.c:1135
 msgid "Indexing objects"
 msgstr "索引对象中"
 
-#: builtin/index-pack.c:1165
+#: builtin/index-pack.c:1169
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr "包冲突(SHA1 不匹配)"
 
-#: builtin/index-pack.c:1170
+#: builtin/index-pack.c:1174
 msgid "cannot fstat packfile"
 msgstr "不能对包文件调用 fstat"
 
-#: builtin/index-pack.c:1173
+#: builtin/index-pack.c:1177
 msgid "pack has junk at the end"
 msgstr "包的结尾有垃圾数据"
 
-#: builtin/index-pack.c:1185
+#: builtin/index-pack.c:1189
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr "parse_pack_objects() 中遇到不可理喻的问题"
 
-#: builtin/index-pack.c:1208
+#: builtin/index-pack.c:1212
 msgid "Resolving deltas"
 msgstr "处理 delta 中"
 
-#: builtin/index-pack.c:1219
+#: builtin/index-pack.c:1223
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "不能创建线程:%s"
 
-#: builtin/index-pack.c:1261
+#: builtin/index-pack.c:1265
 msgid "confusion beyond insanity"
 msgstr "不可理喻"
 
-#: builtin/index-pack.c:1267
+#: builtin/index-pack.c:1271
 #, c-format
 msgid "completed with %d local object"
 msgid_plural "completed with %d local objects"
 msgstr[0] "完成 %d 个本地对象"
 msgstr[1] "完成 %d 个本地对象"
 
-#: builtin/index-pack.c:1279
+#: builtin/index-pack.c:1283
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr "对 %s 的尾部校验出现意外(磁盘损坏?)"
 
-#: builtin/index-pack.c:1283
+#: builtin/index-pack.c:1287
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
 msgstr[0] "包有 %d 个未解决的 delta"
 msgstr[1] "包有 %d 个未解决的 delta"
 
-#: builtin/index-pack.c:1307
+#: builtin/index-pack.c:1311
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr "不能压缩附加对象(%d)"
 
-#: builtin/index-pack.c:1383
+#: builtin/index-pack.c:1388
 #, c-format
 msgid "local object %s is corrupt"
 msgstr "本地对象 %s 已损坏"
 
-#: builtin/index-pack.c:1397
+#: builtin/index-pack.c:1402
 #, c-format
 msgid "packfile name '%s' does not end with '.pack'"
 msgstr "包文件名 '%s' 没有以 '.pack' 结尾"
 
-#: builtin/index-pack.c:1422
+#: builtin/index-pack.c:1427
 #, c-format
 msgid "cannot write %s file '%s'"
 msgstr "无法写入 %s 文件 '%s'"
 
-#: builtin/index-pack.c:1430
+#: builtin/index-pack.c:1435
 #, c-format
 msgid "cannot close written %s file '%s'"
 msgstr "无法关闭已写入的 %s 文件 '%s'"
 
-#: builtin/index-pack.c:1454
+#: builtin/index-pack.c:1459
 msgid "error while closing pack file"
 msgstr "关闭包文件时出错"
 
-#: builtin/index-pack.c:1468
+#: builtin/index-pack.c:1473
 msgid "cannot store pack file"
 msgstr "无法存储包文件"
 
-#: builtin/index-pack.c:1476
+#: builtin/index-pack.c:1481
 msgid "cannot store index file"
 msgstr "无法存储索引文件"
 
-#: builtin/index-pack.c:1513
+#: builtin/index-pack.c:1525
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "坏的 pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1581
+#: builtin/index-pack.c:1594
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "无法打开现存包文件 '%s'"
 
-#: builtin/index-pack.c:1583
+#: builtin/index-pack.c:1596
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "无法为 %s 打开包索引文件"
 
-#: builtin/index-pack.c:1631
+#: builtin/index-pack.c:1644
 #, 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:1638
+#: builtin/index-pack.c:1651
 #, 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:1675
+#: builtin/index-pack.c:1688
 msgid "Cannot come back to cwd"
 msgstr "无法返回当前工作目录"
 
-#: builtin/index-pack.c:1724 builtin/index-pack.c:1727
-#: builtin/index-pack.c:1743 builtin/index-pack.c:1747
+#: builtin/index-pack.c:1739 builtin/index-pack.c:1742
+#: builtin/index-pack.c:1758 builtin/index-pack.c:1762
 #, c-format
 msgid "bad %s"
 msgstr "错误选项 %s"
 
-#: builtin/index-pack.c:1763
+#: builtin/index-pack.c:1778
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin 不能和 --stdin 同时使用"
 
-#: builtin/index-pack.c:1765
+#: builtin/index-pack.c:1780
 msgid "--stdin requires a git repository"
 msgstr "--stdin 需要一个 git 仓库"
 
-#: builtin/index-pack.c:1771
+#: builtin/index-pack.c:1786
 msgid "--verify with no packfile name given"
 msgstr "--verify 没有提供包文件名参数"
 
+#: builtin/index-pack.c:1836 builtin/unpack-objects.c:578
+msgid "fsck error in pack objects"
+msgstr "在打包对象中 fsck 检查出错"
+
 #: builtin/init-db.c:55
 #, c-format
 msgid "cannot stat '%s'"
@@ -9637,8 +10078,8 @@ msgstr "忽略模版 %s"
 
 #: builtin/init-db.c:120
 #, c-format
-msgid "templates not found %s"
-msgstr "模ç\89\88æ\9cªæ\89¾å\88° %s"
+msgid "templates not found in %s"
+msgstr "没æ\9c\89å\9c¨ %s ä¸­æ\89¾å\88°æ¨¡ç\89\88"
 
 #: builtin/init-db.c:135
 #, c-format
@@ -9696,11 +10137,6 @@ msgstr "权限"
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr "指定 git 仓库是多个用户之间共享的"
 
-#: builtin/init-db.c:516 builtin/init-db.c:521
-#, c-format
-msgid "cannot mkdir %s"
-msgstr "不能创建目录 %s"
-
 #: builtin/init-db.c:525
 #, c-format
 msgid "cannot chdir to %s"
@@ -9882,7 +10318,7 @@ msgstr "两个输出目录?"
 msgid "Unknown commit %s"
 msgstr "未知提交 %s"
 
-#: builtin/log.c:1289 builtin/notes.c:887 builtin/tag.c:522
+#: builtin/log.c:1289 builtin/notes.c:887 builtin/tag.c:523
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr "无法解析 '%s' 为一个有效引用。"
@@ -10230,7 +10666,7 @@ msgstr "假装自从 <树或提交> 之后删除的路径仍然存在"
 msgid "show debugging data"
 msgstr "显示调试数据"
 
-#: builtin/ls-remote.c:7
+#: builtin/ls-remote.c:9
 msgid ""
 "git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]\n"
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
@@ -10240,39 +10676,39 @@ msgstr ""
 "                     [-q | --quiet] [--exit-code] [--get-url]\n"
 "                     [--symref] [<仓库> [<引用>...]]"
 
-#: builtin/ls-remote.c:52
+#: builtin/ls-remote.c:59
 msgid "do not print remote URL"
 msgstr "不打印远程 URL"
 
-#: builtin/ls-remote.c:53 builtin/ls-remote.c:55
+#: builtin/ls-remote.c:60 builtin/ls-remote.c:62
 msgid "exec"
 msgstr "exec"
 
-#: builtin/ls-remote.c:54 builtin/ls-remote.c:56
+#: builtin/ls-remote.c:61 builtin/ls-remote.c:63
 msgid "path of git-upload-pack on the remote host"
 msgstr "远程主机上的 git-upload-pack 路径"
 
-#: builtin/ls-remote.c:58
+#: builtin/ls-remote.c:65
 msgid "limit to tags"
 msgstr "仅限于标签"
 
-#: builtin/ls-remote.c:59
+#: builtin/ls-remote.c:66
 msgid "limit to heads"
 msgstr "仅限于分支"
 
-#: builtin/ls-remote.c:60
+#: builtin/ls-remote.c:67
 msgid "do not show peeled tags"
 msgstr "不显示已解析的标签"
 
-#: builtin/ls-remote.c:62
+#: builtin/ls-remote.c:69
 msgid "take url.<base>.insteadOf into account"
 msgstr "参考 url.<base>.insteadOf 设置"
 
-#: builtin/ls-remote.c:64
+#: builtin/ls-remote.c:73
 msgid "exit with exit code 2 if no matching refs are found"
 msgstr "若未找到匹配的引用则以退出码2退出"
 
-#: builtin/ls-remote.c:67
+#: builtin/ls-remote.c:76
 msgid "show underlying ref in addition to the object pointed by it"
 msgstr "除了显示指向的对象外,显示指向的引用名"
 
@@ -10317,166 +10753,166 @@ msgstr "列出整个树;不仅仅当前目录(隐含 --full-name)"
 msgid "empty mbox: '%s'"
 msgstr "空的 mbox:'%s'"
 
-#: builtin/merge.c:49
+#: builtin/merge.c:51
 msgid "git merge [<options>] [<commit>...]"
 msgstr "git merge [<选项>] [<提交>...]"
 
-#: builtin/merge.c:50
+#: builtin/merge.c:52
 msgid "git merge --abort"
 msgstr "git merge --abort"
 
-#: builtin/merge.c:51
+#: builtin/merge.c:53
 msgid "git merge --continue"
 msgstr "git merge --continue"
 
-#: builtin/merge.c:108
+#: builtin/merge.c:110
 msgid "switch `m' requires a value"
 msgstr "开关 `m' 需要一个值"
 
-#: builtin/merge.c:145
+#: builtin/merge.c:147
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
 msgstr "不能找到合并策略 '%s'。\n"
 
-#: builtin/merge.c:146
+#: builtin/merge.c:148
 #, c-format
 msgid "Available strategies are:"
 msgstr "可用的策略有:"
 
-#: builtin/merge.c:151
+#: builtin/merge.c:153
 #, c-format
 msgid "Available custom strategies are:"
 msgstr "可用的自定义策略有:"
 
-#: builtin/merge.c:201 builtin/pull.c:137
+#: builtin/merge.c:203 builtin/pull.c:142
 msgid "do not show a diffstat at the end of the merge"
 msgstr "在合并的最后不显示差异统计"
 
-#: builtin/merge.c:204 builtin/pull.c:140
+#: builtin/merge.c:206 builtin/pull.c:145
 msgid "show a diffstat at the end of the merge"
 msgstr "在合并的最后显示差异统计"
 
-#: builtin/merge.c:205 builtin/pull.c:143
+#: builtin/merge.c:207 builtin/pull.c:148
 msgid "(synonym to --stat)"
 msgstr "(和 --stat 同义)"
 
-#: builtin/merge.c:207 builtin/pull.c:146
+#: builtin/merge.c:209 builtin/pull.c:151
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr "在合并提交信息中添加(最多 <n> 条)精简提交记录"
 
-#: builtin/merge.c:210 builtin/pull.c:152
+#: builtin/merge.c:212 builtin/pull.c:157
 msgid "create a single commit instead of doing a merge"
 msgstr "创建一个单独的提交而不是做一次合并"
 
-#: builtin/merge.c:212 builtin/pull.c:155
+#: builtin/merge.c:214 builtin/pull.c:160
 msgid "perform a commit if the merge succeeds (default)"
 msgstr "如果合并成功,执行一次提交(默认)"
 
-#: builtin/merge.c:214 builtin/pull.c:158
+#: builtin/merge.c:216 builtin/pull.c:163
 msgid "edit message before committing"
 msgstr "在提交前编辑提交说明"
 
-#: builtin/merge.c:215
+#: builtin/merge.c:217
 msgid "allow fast-forward (default)"
 msgstr "允许快进(默认)"
 
-#: builtin/merge.c:217 builtin/pull.c:164
+#: builtin/merge.c:219 builtin/pull.c:169
 msgid "abort if fast-forward is not possible"
 msgstr "如果不能快进就放弃合并"
 
-#: builtin/merge.c:221 builtin/pull.c:167
+#: builtin/merge.c:223 builtin/pull.c:172
 msgid "verify that the named commit has a valid GPG signature"
 msgstr "验证指定的提交是否包含一个有效的 GPG 签名"
 
-#: builtin/merge.c:222 builtin/notes.c:777 builtin/pull.c:171
+#: builtin/merge.c:224 builtin/notes.c:777 builtin/pull.c:176
 #: builtin/revert.c:109
 msgid "strategy"
 msgstr "策略"
 
-#: builtin/merge.c:223 builtin/pull.c:172
+#: builtin/merge.c:225 builtin/pull.c:177
 msgid "merge strategy to use"
 msgstr "要使用的合并策略"
 
-#: builtin/merge.c:224 builtin/pull.c:175
+#: builtin/merge.c:226 builtin/pull.c:180
 msgid "option=value"
 msgstr "option=value"
 
-#: builtin/merge.c:225 builtin/pull.c:176
+#: builtin/merge.c:227 builtin/pull.c:181
 msgid "option for selected merge strategy"
 msgstr "所选的合并策略的选项"
 
-#: builtin/merge.c:227
+#: builtin/merge.c:229
 msgid "merge commit message (for a non-fast-forward merge)"
 msgstr "合并的提交说明(针对非快进式合并)"
 
-#: builtin/merge.c:231
+#: builtin/merge.c:233
 msgid "abort the current in-progress merge"
 msgstr "放弃当前正在进行的合并"
 
-#: builtin/merge.c:233
+#: builtin/merge.c:235
 msgid "continue the current in-progress merge"
 msgstr "继续当前正在进行的合并"
 
-#: builtin/merge.c:235 builtin/pull.c:183
+#: builtin/merge.c:237 builtin/pull.c:188
 msgid "allow merging unrelated histories"
 msgstr "允许合并不相关的历史"
 
-#: builtin/merge.c:241
+#: builtin/merge.c:243
 msgid "verify commit-msg hook"
 msgstr "校验 commit-msg 钩子"
 
-#: builtin/merge.c:266
+#: builtin/merge.c:268
 msgid "could not run stash."
 msgstr "不能运行贮藏。"
 
-#: builtin/merge.c:271
+#: builtin/merge.c:273
 msgid "stash failed"
 msgstr "贮藏失败"
 
-#: builtin/merge.c:276
+#: builtin/merge.c:278
 #, c-format
 msgid "not a valid object: %s"
 msgstr "不是一个有效对象:%s"
 
-#: builtin/merge.c:298 builtin/merge.c:315
+#: builtin/merge.c:300 builtin/merge.c:317
 msgid "read-tree failed"
 msgstr "读取树失败"
 
 #  译者:注意保持前导空格
-#: builtin/merge.c:345
+#: builtin/merge.c:347
 msgid " (nothing to squash)"
 msgstr " (无可压缩)"
 
-#: builtin/merge.c:356
+#: builtin/merge.c:358
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
 msgstr "压缩提交 -- 未更新 HEAD\n"
 
-#: builtin/merge.c:406
+#: builtin/merge.c:408
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
 msgstr "无合并信息 -- 未更新 HEAD\n"
 
-#: builtin/merge.c:456
+#: builtin/merge.c:458
 #, c-format
 msgid "'%s' does not point to a commit"
 msgstr "'%s' 没有指向一个提交"
 
-#: builtin/merge.c:546
+#: builtin/merge.c:548
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "坏的 branch.%s.mergeoptions 字符串:%s"
 
-#: builtin/merge.c:668
+#: builtin/merge.c:669
 msgid "Not handling anything other than two heads merge."
 msgstr "未处理两个头合并之外的任何操作。"
 
-#: builtin/merge.c:682
+#: builtin/merge.c:683
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "merge-recursive 的未知选项:-X%s"
 
-#: builtin/merge.c:697
+#: builtin/merge.c:698
 #, c-format
 msgid "unable to write %s"
 msgstr "不能写 %s"
@@ -10509,64 +10945,64 @@ msgstr ""
 msgid "Empty commit message."
 msgstr "空提交信息。"
 
-#: builtin/merge.c:820
+#: builtin/merge.c:819
 #, c-format
 msgid "Wonderful.\n"
 msgstr "太棒了。\n"
 
-#: builtin/merge.c:873
+#: builtin/merge.c:872
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr "自动合并失败,修正冲突然后提交修正的结果。\n"
 
-#: builtin/merge.c:912
+#: builtin/merge.c:911
 msgid "No current branch."
 msgstr "没有当前分支。"
 
-#: builtin/merge.c:914
+#: builtin/merge.c:913
 msgid "No remote for the current branch."
 msgstr "当前分支没有对应的远程仓库。"
 
-#: builtin/merge.c:916
+#: builtin/merge.c:915
 msgid "No default upstream defined for the current branch."
 msgstr "当前分支没有定义默认的上游分支。"
 
-#: builtin/merge.c:921
+#: builtin/merge.c:920
 #, c-format
 msgid "No remote-tracking branch for %s from %s"
 msgstr "对于 %s 没有来自 %s 的远程跟踪分支"
 
-#: builtin/merge.c:974
+#: builtin/merge.c:973
 #, c-format
 msgid "Bad value '%s' in environment '%s'"
 msgstr "环境 '%2$s' 中存在坏的取值 '%1$s'"
 
-#: builtin/merge.c:1076
+#: builtin/merge.c:1075
 #, c-format
 msgid "not something we can merge in %s: %s"
 msgstr "不能在 %s 中合并:%s"
 
-#: builtin/merge.c:1110
+#: builtin/merge.c:1109
 msgid "not something we can merge"
 msgstr "不能合并"
 
-#: builtin/merge.c:1212
+#: builtin/merge.c:1211
 msgid "--abort expects no arguments"
 msgstr "--abort 不带参数"
 
-#: builtin/merge.c:1216
+#: builtin/merge.c:1215
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "没有要终止的合并(MERGE_HEAD 丢失)。"
 
-#: builtin/merge.c:1228
+#: builtin/merge.c:1227
 msgid "--continue expects no arguments"
 msgstr "--continue 不带参数"
 
-#: builtin/merge.c:1232
+#: builtin/merge.c:1231
 msgid "There is no merge in progress (MERGE_HEAD missing)."
 msgstr "没有进行中的合并(MERGE_HEAD 丢失)。"
 
-#: builtin/merge.c:1248
+#: builtin/merge.c:1247
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -10574,7 +11010,7 @@ msgstr ""
 "您尚未结束您的合并(存在 MERGE_HEAD)。\n"
 "请在合并前先提交您的修改。"
 
-#: builtin/merge.c:1255
+#: builtin/merge.c:1254
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you merge."
@@ -10582,112 +11018,112 @@ msgstr ""
 "您尚未结束您的拣选(存在 CHERRY_PICK_HEAD)。\n"
 "请在合并前先提交您的修改。"
 
-#: builtin/merge.c:1258
+#: builtin/merge.c:1257
 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
 msgstr "您尚未结束您的拣选(存在 CHERRY_PICK_HEAD)。"
 
-#: builtin/merge.c:1267
+#: builtin/merge.c:1266
 msgid "You cannot combine --squash with --no-ff."
 msgstr "您不能将 --squash 与 --no-ff 同时使用。"
 
-#: builtin/merge.c:1275
+#: builtin/merge.c:1274
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr "未指定提交并且 merge.defaultToUpstream 未设置。"
 
-#: builtin/merge.c:1292
+#: builtin/merge.c:1291
 msgid "Squash commit into empty head not supported yet"
 msgstr "尚不支持到空分支的压缩提交"
 
-#: builtin/merge.c:1294
+#: builtin/merge.c:1293
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr "到空分支的非快进式提交没有意义"
 
-#: builtin/merge.c:1299
+#: builtin/merge.c:1298
 #, c-format
 msgid "%s - not something we can merge"
 msgstr "%s - 不能被合并"
 
-#: builtin/merge.c:1301
+#: builtin/merge.c:1300
 msgid "Can merge only exactly one commit into empty head"
 msgstr "只能将一个提交合并到空分支上"
 
-#: builtin/merge.c:1335
+#: builtin/merge.c:1334
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr "提交 %s 有一个非可信的声称来自 %s 的 GPG 签名。"
 
-#: builtin/merge.c:1338
+#: builtin/merge.c:1337
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
 msgstr "提交 %s 有一个错误的声称来自 %s 的 GPG 签名。"
 
-#: builtin/merge.c:1341
+#: builtin/merge.c:1340
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "提交 %s 没有一个 GPG 签名。"
 
-#: builtin/merge.c:1344
+#: builtin/merge.c:1343
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "提交 %s 有一个来自 %s 的好的 GPG 签名。\n"
 
-#: builtin/merge.c:1403
+#: builtin/merge.c:1402
 msgid "refusing to merge unrelated histories"
 msgstr "拒绝合并无关的历史"
 
-#: builtin/merge.c:1412
+#: builtin/merge.c:1411
 msgid "Already up to date."
 msgstr "已经是最新的。"
 
-#: builtin/merge.c:1422
+#: builtin/merge.c:1421
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "更新 %s..%s\n"
 
-#: builtin/merge.c:1463
+#: builtin/merge.c:1462
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "尝试非常小的索引内合并...\n"
 
-#: builtin/merge.c:1470
+#: builtin/merge.c:1469
 #, c-format
 msgid "Nope.\n"
 msgstr "无。\n"
 
-#: builtin/merge.c:1495
+#: builtin/merge.c:1494
 msgid "Already up to date. Yeeah!"
 msgstr "已经是最新的。耶!"
 
-#: builtin/merge.c:1501
+#: builtin/merge.c:1500
 msgid "Not possible to fast-forward, aborting."
 msgstr "无法快进,终止。"
 
-#: builtin/merge.c:1524 builtin/merge.c:1603
+#: builtin/merge.c:1523 builtin/merge.c:1602
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "将树回滚至原始状态...\n"
 
-#: builtin/merge.c:1528
+#: builtin/merge.c:1527
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "尝试合并策略 %s...\n"
 
-#: builtin/merge.c:1594
+#: builtin/merge.c:1593
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "没有合并策略处理此合并。\n"
 
-#: builtin/merge.c:1596
+#: builtin/merge.c:1595
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "使用策略 %s 合并失败。\n"
 
-#: builtin/merge.c:1605
+#: builtin/merge.c:1604
 #, c-format
 msgid "Using the %s to prepare resolving by hand.\n"
 msgstr "使用 %s 以准备手工解决。\n"
 
-#: builtin/merge.c:1617
+#: builtin/merge.c:1616
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr "自动合并进展顺利,按要求在提交前停止\n"
@@ -10823,25 +11259,25 @@ msgstr "允许创建一个以上的树"
 msgid "git mv [<options>] <source>... <destination>"
 msgstr "git mv [<选项>] <源>... <目标>"
 
-#: builtin/mv.c:83
+#: builtin/mv.c:82
 #, c-format
 msgid "Directory %s is in index and no submodule?"
 msgstr "目录 %s 在索引中并且不是子模组?"
 
-#: builtin/mv.c:85 builtin/rm.c:289
+#: builtin/mv.c:84 builtin/rm.c:288
 msgid "Please stage your changes to .gitmodules or stash them to proceed"
 msgstr "请将您的修改暂存到 .gitmodules 中或贮藏后再继续"
 
-#: builtin/mv.c:103
+#: builtin/mv.c:102
 #, c-format
 msgid "%.*s is in index"
 msgstr "%.*s 在索引中"
 
-#: builtin/mv.c:125
+#: builtin/mv.c:124
 msgid "force move/rename even if target exists"
 msgstr "强制移动/重命令,即使目标存在"
 
-#: builtin/mv.c:127
+#: builtin/mv.c:126
 msgid "skip move/rename errors"
 msgstr "跳过移动/重命名错误"
 
@@ -10906,7 +11342,7 @@ msgstr "%s,源=%s,目标=%s"
 msgid "Renaming %s to %s\n"
 msgstr "重命名 %s 至 %s\n"
 
-#: builtin/mv.c:276 builtin/remote.c:712 builtin/repack.c:394
+#: builtin/mv.c:276 builtin/remote.c:715 builtin/repack.c:409
 #, c-format
 msgid "renaming '%s' failed"
 msgstr "重命名 '%s' 失败"
@@ -11095,12 +11531,12 @@ msgstr "不能写注解对象"
 msgid "the note contents have been left in %s"
 msgstr "注解内容被留在 %s 中"
 
-#: builtin/notes.c:234 builtin/tag.c:506
+#: builtin/notes.c:234 builtin/tag.c:507
 #, c-format
 msgid "cannot read '%s'"
 msgstr "不能读取 '%s'"
 
-#: builtin/notes.c:236 builtin/tag.c:509
+#: builtin/notes.c:236 builtin/tag.c:510
 #, c-format
 msgid "could not open or read '%s'"
 msgstr "不能打开或读取 '%s'"
@@ -11125,7 +11561,7 @@ msgstr "不能从非数据对象 '%s' 中读取注解数据。"
 #: builtin/notes.c:302
 #, c-format
 msgid "malformed input line: '%s'."
-msgstr "非法的输入行:'%s'。"
+msgstr "格式错误的输入行:'%s'。"
 
 #: builtin/notes.c:317
 #, c-format
@@ -11338,7 +11774,7 @@ msgstr "尝试删除不存在的注解不是一个错误"
 msgid "read object names from the standard input"
 msgstr "从标准输入读取对象名称"
 
-#: builtin/notes.c:943 builtin/prune.c:106 builtin/worktree.c:160
+#: builtin/notes.c:943 builtin/prune.c:107 builtin/worktree.c:151
 msgid "do not remove, show only"
 msgstr "不删除,只显示"
 
@@ -11359,208 +11795,236 @@ msgstr "从 <注解引用> 使用注解"
 msgid "unknown subcommand: %s"
 msgstr "未知子命令:%s"
 
-#: builtin/pack-objects.c:33
+#: builtin/pack-objects.c:48
 msgid ""
 "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"
 msgstr "git pack-objects --stdout [<选项>...] [< <引用列表> | < <对象列表>]"
 
-#: builtin/pack-objects.c:34
+#: builtin/pack-objects.c:49
 msgid ""
 "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"
 msgstr "git pack-objects [<选项>...] <前缀名称> [< <引用列表> | < <对象列表>]"
 
-#: builtin/pack-objects.c:195 builtin/pack-objects.c:198
+#: builtin/pack-objects.c:211 builtin/pack-objects.c:214
 #, c-format
 msgid "deflate error (%d)"
 msgstr "压缩错误 (%d)"
 
-#: builtin/pack-objects.c:791
+#: builtin/pack-objects.c:810
 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
 msgstr "禁用 bitmap 写入,因为 pack.packSizeLimit 设置使得包被切分为多个"
 
-#: builtin/pack-objects.c:804
+#: builtin/pack-objects.c:823
 msgid "Writing objects"
 msgstr "写入对象中"
 
-#: builtin/pack-objects.c:1084
+#: builtin/pack-objects.c:1106
 msgid "disabling bitmap writing, as some objects are not being packed"
 msgstr "禁用 bitmap 写入,因为一些对象将不会被打包"
 
-#: builtin/pack-objects.c:2454
+#: builtin/pack-objects.c:1765
+msgid "Counting objects"
+msgstr "对象计数中"
+
+#: builtin/pack-objects.c:1895
+#, c-format
+msgid "unable to get size of %s"
+msgstr "不能得到 %s 的大小"
+
+#: builtin/pack-objects.c:1910
+#, c-format
+msgid "unable to parse object header of %s"
+msgstr "无法解析对象 %s 头信息"
+
+#: builtin/pack-objects.c:2564
 msgid "Compressing objects"
 msgstr "压缩对象中"
 
-#: builtin/pack-objects.c:2625
+#: builtin/pack-objects.c:2735
 msgid "invalid value for --missing"
 msgstr "选项 --missing 的值无效"
 
-#: builtin/pack-objects.c:2928
+#: builtin/pack-objects.c:3067
 #, c-format
 msgid "unsupported index version %s"
 msgstr "不支持的索引版本 %s"
 
-#: builtin/pack-objects.c:2932
+#: builtin/pack-objects.c:3071
 #, c-format
 msgid "bad index version '%s'"
 msgstr "坏的索引版本 '%s'"
 
-#: builtin/pack-objects.c:2962
+#: builtin/pack-objects.c:3102
 msgid "do not show progress meter"
 msgstr "不显示进度表"
 
-#: builtin/pack-objects.c:2964
+#: builtin/pack-objects.c:3104
 msgid "show progress meter"
 msgstr "显示进度表"
 
-#: builtin/pack-objects.c:2966
+#: builtin/pack-objects.c:3106
 msgid "show progress meter during object writing phase"
 msgstr "在对象写入阶段显示进度表"
 
-#: builtin/pack-objects.c:2969
+#: builtin/pack-objects.c:3109
 msgid "similar to --all-progress when progress meter is shown"
 msgstr "当进度表显示时类似于 --all-progress"
 
-#: builtin/pack-objects.c:2970
+#: builtin/pack-objects.c:3110
 msgid "version[,offset]"
 msgstr "版本[,偏移]"
 
-#: builtin/pack-objects.c:2971
+#: builtin/pack-objects.c:3111
 msgid "write the pack index file in the specified idx format version"
 msgstr "用指定的 idx 格式版本来写包索引文件"
 
-#: builtin/pack-objects.c:2974
+#: builtin/pack-objects.c:3114
 msgid "maximum size of each output pack file"
 msgstr "每个输出包的最大尺寸"
 
-#: builtin/pack-objects.c:2976
+#: builtin/pack-objects.c:3116
 msgid "ignore borrowed objects from alternate object store"
 msgstr "忽略从备用对象存储里借用对象"
 
-#: builtin/pack-objects.c:2978
+#: builtin/pack-objects.c:3118
 msgid "ignore packed objects"
 msgstr "忽略包对象"
 
-#: builtin/pack-objects.c:2980
+#: builtin/pack-objects.c:3120
 msgid "limit pack window by objects"
 msgstr "限制打包窗口的对象数"
 
-#: builtin/pack-objects.c:2982
+#: builtin/pack-objects.c:3122
 msgid "limit pack window by memory in addition to object limit"
 msgstr "除对象数量限制外设置打包窗口的内存限制"
 
-#: builtin/pack-objects.c:2984
+#: builtin/pack-objects.c:3124
 msgid "maximum length of delta chain allowed in the resulting pack"
 msgstr "打包允许的 delta 链的最大长度"
 
-#: builtin/pack-objects.c:2986
+#: builtin/pack-objects.c:3126
 msgid "reuse existing deltas"
 msgstr "重用已存在的 deltas"
 
-#: builtin/pack-objects.c:2988
+#: builtin/pack-objects.c:3128
 msgid "reuse existing objects"
 msgstr "重用已存在的对象"
 
-#: builtin/pack-objects.c:2990
+#: builtin/pack-objects.c:3130
 msgid "use OFS_DELTA objects"
 msgstr "使用 OFS_DELTA 对象"
 
-#: builtin/pack-objects.c:2992
+#: builtin/pack-objects.c:3132
 msgid "use threads when searching for best delta matches"
 msgstr "使用线程查询最佳 delta 匹配"
 
-#: builtin/pack-objects.c:2994
+#: builtin/pack-objects.c:3134
 msgid "do not create an empty pack output"
 msgstr "不创建空的包输出"
 
-#: builtin/pack-objects.c:2996
+#: builtin/pack-objects.c:3136
 msgid "read revision arguments from standard input"
 msgstr "从标准输入读取版本号参数"
 
-#: builtin/pack-objects.c:2998
+#: builtin/pack-objects.c:3138
 msgid "limit the objects to those that are not yet packed"
 msgstr "限制那些尚未打包的对象"
 
-#: builtin/pack-objects.c:3001
+#: builtin/pack-objects.c:3141
 msgid "include objects reachable from any reference"
 msgstr "包括可以从任何引用访问到的对象"
 
-#: builtin/pack-objects.c:3004
+#: builtin/pack-objects.c:3144
 msgid "include objects referred by reflog entries"
 msgstr "包括被引用日志引用到的对象"
 
-#: builtin/pack-objects.c:3007
+#: builtin/pack-objects.c:3147
 msgid "include objects referred to by the index"
 msgstr "包括被索引引用到的对象"
 
-#: builtin/pack-objects.c:3010
+#: builtin/pack-objects.c:3150
 msgid "output pack to stdout"
 msgstr "输出包到标准输出"
 
-#: builtin/pack-objects.c:3012
+#: builtin/pack-objects.c:3152
 msgid "include tag objects that refer to objects to be packed"
 msgstr "包括那些引用了待打包对象的标签对象"
 
-#: builtin/pack-objects.c:3014
+#: builtin/pack-objects.c:3154
 msgid "keep unreachable objects"
 msgstr "维持不可达的对象"
 
-#: builtin/pack-objects.c:3016
+#: builtin/pack-objects.c:3156
 msgid "pack loose unreachable objects"
 msgstr "打包松散的不可达对象"
 
-#: builtin/pack-objects.c:3018
+#: builtin/pack-objects.c:3158
 msgid "unpack unreachable objects newer than <time>"
 msgstr "将比给定 <时间> 新的无法访问的对象解包"
 
-#: builtin/pack-objects.c:3021
+#: builtin/pack-objects.c:3161
 msgid "create thin packs"
 msgstr "创建精简包"
 
-#: builtin/pack-objects.c:3023
+#: builtin/pack-objects.c:3163
 msgid "create packs suitable for shallow fetches"
 msgstr "创建适合浅克隆仓库获取的包"
 
-#: builtin/pack-objects.c:3025
+#: builtin/pack-objects.c:3165
 msgid "ignore packs that have companion .keep file"
 msgstr "忽略配有 .keep 文件的包"
 
-#: builtin/pack-objects.c:3027
+#: builtin/pack-objects.c:3167
+msgid "ignore this pack"
+msgstr "忽略该 pack"
+
+#: builtin/pack-objects.c:3169
 msgid "pack compression level"
 msgstr "打包压缩级别"
 
-#: builtin/pack-objects.c:3029
+#: builtin/pack-objects.c:3171
 msgid "do not hide commits by grafts"
-msgstr "显示被嫁接隐藏的提交"
+msgstr "显示被移植隐藏的提交"
 
-#: builtin/pack-objects.c:3031
+#: builtin/pack-objects.c:3173
 msgid "use a bitmap index if available to speed up counting objects"
 msgstr "使用 bitmap 索引(如果有的话)以提高对象计数时的速度"
 
-#: builtin/pack-objects.c:3033
+#: builtin/pack-objects.c:3175
 msgid "write a bitmap index together with the pack index"
 msgstr "在建立包索引的同时创建 bitmap 索引"
 
-#: builtin/pack-objects.c:3036
+#: builtin/pack-objects.c:3178
 msgid "handling for missing objects"
 msgstr "处理丢失的对象"
 
-#: builtin/pack-objects.c:3039
+#: builtin/pack-objects.c:3181
 msgid "do not pack objects in promisor packfiles"
 msgstr "不要打包 promisor 包文件中的对象"
 
-#: builtin/pack-objects.c:3178
-msgid "Counting objects"
-msgstr "对象计数中"
+#: builtin/pack-objects.c:3205
+#, c-format
+msgid "delta chain depth %d is too deep, forcing %d"
+msgstr "增量链深度 %d 太深了,强制为 %d"
+
+#: builtin/pack-objects.c:3210
+#, c-format
+msgid "pack.deltaCacheLimit is too high, forcing %d"
+msgstr "配置 pack.deltaCacheLimit 太高了,强制为 %d"
 
-#: builtin/pack-refs.c:6
+#: builtin/pack-objects.c:3338
+msgid "Enumerating objects"
+msgstr "枚举对象"
+
+#: builtin/pack-refs.c:7
 msgid "git pack-refs [<options>]"
 msgstr "git pack-refs [<选项>]"
 
-#: builtin/pack-refs.c:14
+#: builtin/pack-refs.c:15
 msgid "pack everything"
 msgstr "打包一切"
 
-#: builtin/pack-refs.c:15
+#: builtin/pack-refs.c:16
 msgid "prune loose refs (default)"
 msgstr "清除松散的引用(默认)"
 
@@ -11576,82 +12040,82 @@ msgstr "正在删除重复对象"
 msgid "git prune [-n] [-v] [--progress] [--expire <time>] [--] [<head>...]"
 msgstr "git prune [-n] [-v] [--progress] [--expire <时间>] [--] [<head>...]"
 
-#: builtin/prune.c:107
+#: builtin/prune.c:108
 msgid "report pruned objects"
 msgstr "报告清除的对象"
 
-#: builtin/prune.c:110
+#: builtin/prune.c:111
 msgid "expire objects older than <time>"
 msgstr "使早于给定时间的对象过期"
 
-#: builtin/prune.c:112
+#: builtin/prune.c:113
 msgid "limit traversal to objects outside promisor packfiles"
 msgstr "限制遍历 promisor 包以外的对象"
 
-#: builtin/prune.c:126
+#: builtin/prune.c:127
 msgid "cannot prune in a precious-objects repo"
 msgstr "不能在珍品仓库中执行清理操作"
 
-#: builtin/pull.c:54 builtin/pull.c:56
+#: builtin/pull.c:59 builtin/pull.c:61
 #, c-format
 msgid "Invalid value for %s: %s"
 msgstr "%s 的值无效:%s"
 
-#: builtin/pull.c:76
+#: builtin/pull.c:81
 msgid "git pull [<options>] [<repository> [<refspec>...]]"
 msgstr "git pull [<选项>] [<仓库> [<引用规格>...]]"
 
-#: builtin/pull.c:127
+#: builtin/pull.c:132
 msgid "control for recursive fetching of submodules"
 msgstr "控制子模组的递归获取"
 
-#: builtin/pull.c:131
+#: builtin/pull.c:136
 msgid "Options related to merging"
 msgstr "和合并相关的选项"
 
-#: builtin/pull.c:134
+#: builtin/pull.c:139
 msgid "incorporate changes by rebasing rather than merging"
 msgstr "使用变基操作取代合并操作以合入修改"
 
-#: builtin/pull.c:161 builtin/rebase--helper.c:23 builtin/revert.c:121
+#: builtin/pull.c:166 builtin/rebase--helper.c:23 builtin/revert.c:121
 msgid "allow fast-forward"
 msgstr "允许快进式"
 
-#: builtin/pull.c:170
+#: builtin/pull.c:175
 msgid "automatically stash/stash pop before and after rebase"
 msgstr "变基操作前后执行自动贮藏和弹出贮藏"
 
-#: builtin/pull.c:186
+#: builtin/pull.c:191
 msgid "Options related to fetching"
 msgstr "和获取相关的参数"
 
-#: builtin/pull.c:204
+#: builtin/pull.c:209
 msgid "number of submodules pulled in parallel"
 msgstr "并发拉取的子模组的数量"
 
-#: builtin/pull.c:299
+#: builtin/pull.c:304
 #, c-format
 msgid "Invalid value for pull.ff: %s"
 msgstr "pull.ff 的取值无效:%s"
 
-#: builtin/pull.c:415
+#: builtin/pull.c:420
 msgid ""
 "There is no candidate for rebasing against among the refs that you just "
 "fetched."
 msgstr "在您刚刚获取到的引用中没有变基操作的候选。"
 
-#: builtin/pull.c:417
+#: builtin/pull.c:422
 msgid ""
 "There are no candidates for merging among the refs that you just fetched."
 msgstr "在您刚刚获取到的引用中没有合并操作的候选。"
 
-#: builtin/pull.c:418
+#: builtin/pull.c:423
 msgid ""
 "Generally this means that you provided a wildcard refspec which had no\n"
 "matches on the remote end."
 msgstr "通常这意味着您提供了一个通配符引用规格但未能和远端匹配。"
 
-#: builtin/pull.c:421
+#: builtin/pull.c:426
 #, c-format
 msgid ""
 "You asked to pull from the remote '%s', but did not specify\n"
@@ -11661,42 +12125,42 @@ msgstr ""
 "您要求从远程 '%s' 拉取,但是未指定一个分支。因为这不是当前\n"
 "分支默认的远程仓库,您必须在命令行中指定一个分支名。"
 
-#: builtin/pull.c:426 git-parse-remote.sh:73
+#: builtin/pull.c:431 git-parse-remote.sh:73
 msgid "You are not currently on a branch."
 msgstr "您当前不在一个分支上。"
 
-#: builtin/pull.c:428 builtin/pull.c:443 git-parse-remote.sh:79
+#: builtin/pull.c:433 builtin/pull.c:448 git-parse-remote.sh:79
 msgid "Please specify which branch you want to rebase against."
 msgstr "请指定您要变基到哪一个分支。"
 
-#: builtin/pull.c:430 builtin/pull.c:445 git-parse-remote.sh:82
+#: builtin/pull.c:435 builtin/pull.c:450 git-parse-remote.sh:82
 msgid "Please specify which branch you want to merge with."
 msgstr "请指定您要合并哪一个分支。"
 
-#: builtin/pull.c:431 builtin/pull.c:446
+#: builtin/pull.c:436 builtin/pull.c:451
 msgid "See git-pull(1) for details."
 msgstr "详见 git-pull(1)。"
 
-#: builtin/pull.c:433 builtin/pull.c:439 builtin/pull.c:448
+#: builtin/pull.c:438 builtin/pull.c:444 builtin/pull.c:453
 #: git-parse-remote.sh:64
 msgid "<remote>"
 msgstr "<远程>"
 
-#: builtin/pull.c:433 builtin/pull.c:448 builtin/pull.c:453 git-rebase.sh:477
+#: builtin/pull.c:438 builtin/pull.c:453 builtin/pull.c:458 git-rebase.sh:523
 #: git-parse-remote.sh:65
 msgid "<branch>"
 msgstr "<分支>"
 
-#: builtin/pull.c:441 git-parse-remote.sh:75
+#: builtin/pull.c:446 git-parse-remote.sh:75
 msgid "There is no tracking information for the current branch."
 msgstr "当前分支没有跟踪信息。"
 
-#: builtin/pull.c:450 git-parse-remote.sh:95
+#: builtin/pull.c:455 git-parse-remote.sh:95
 msgid ""
 "If you wish to set tracking information for this branch you can do so with:"
 msgstr "如果您想要为此分支创建跟踪信息,您可以执行:"
 
-#: builtin/pull.c:455
+#: builtin/pull.c:460
 #, c-format
 msgid ""
 "Your configuration specifies to merge with the ref '%s'\n"
@@ -11705,27 +12169,27 @@ msgstr ""
 "您的配置中指定要合并远程的引用 '%s',\n"
 "但是没有获取到这个引用。"
 
-#: builtin/pull.c:819
+#: builtin/pull.c:826
 msgid "ignoring --verify-signatures for rebase"
 msgstr "为变基操作忽略 --verify-signatures"
 
-#: builtin/pull.c:867
+#: builtin/pull.c:874
 msgid "--[no-]autostash option is only valid with --rebase."
 msgstr "--[no-]autostash 选项只在使用 --rebase 时有效。"
 
-#: builtin/pull.c:875
+#: builtin/pull.c:882
 msgid "Updating an unborn branch with changes added to the index."
 msgstr "更新尚未诞生的分支,变更添加至索引。"
 
-#: builtin/pull.c:878
+#: builtin/pull.c:885
 msgid "pull with rebase"
 msgstr "变基式拉取"
 
-#: builtin/pull.c:879
+#: builtin/pull.c:886
 msgid "please commit or stash them."
 msgstr "请提交或贮藏它们。"
 
-#: builtin/pull.c:904
+#: builtin/pull.c:911
 #, c-format
 msgid ""
 "fetch updated the current branch head.\n"
@@ -11735,7 +12199,7 @@ msgstr ""
 "fetch 更新了当前的分支。快进您的工作区\n"
 "至提交 %s。"
 
-#: builtin/pull.c:909
+#: builtin/pull.c:916
 #, c-format
 msgid ""
 "Cannot fast-forward your working tree.\n"
@@ -11752,31 +12216,31 @@ msgstr ""
 "$ git reset --hard\n"
 "恢复之前的状态。"
 
-#: builtin/pull.c:924
+#: builtin/pull.c:931
 msgid "Cannot merge multiple branches into empty head."
 msgstr "无法将多个分支合并到空分支。"
 
-#: builtin/pull.c:928
+#: builtin/pull.c:935
 msgid "Cannot rebase onto multiple branches."
 msgstr "无法变基到多个分支。"
 
-#: builtin/pull.c:935
+#: builtin/pull.c:942
 msgid "cannot rebase with locally recorded submodule modifications"
 msgstr "本地子模组中有修改,无法变基"
 
-#: builtin/push.c:17
+#: builtin/push.c:19
 msgid "git push [<options>] [<repository> [<refspec>...]]"
 msgstr "git push [<选项>] [<仓库> [<引用规格>...]]"
 
-#: builtin/push.c:92
+#: builtin/push.c:111
 msgid "tag shorthand without <tag>"
 msgstr "标签后面未提供 <标签> 参数"
 
-#: builtin/push.c:102
+#: builtin/push.c:121
 msgid "--delete only accepts plain target ref names"
 msgstr "--delete 只接受简单的目标引用名"
 
-#: builtin/push.c:146
+#: builtin/push.c:165
 msgid ""
 "\n"
 "To choose either option permanently, see push.default in 'git help config'."
@@ -11784,7 +12248,7 @@ msgstr ""
 "\n"
 "为了永久地选择任一选项,参见 'git help config' 中的 push.default。"
 
-#: builtin/push.c:149
+#: builtin/push.c:168
 #, c-format
 msgid ""
 "The upstream branch of your current branch does not match\n"
@@ -11808,7 +12272,7 @@ msgstr ""
 "    git push %s %s\n"
 "%s"
 
-#: builtin/push.c:164
+#: builtin/push.c:183
 #, c-format
 msgid ""
 "You are not currently on a branch.\n"
@@ -11822,7 +12286,7 @@ msgstr ""
 "\n"
 "    git push %s HEAD:<远程分支名字>\n"
 
-#: builtin/push.c:178
+#: builtin/push.c:197
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -11835,12 +12299,12 @@ msgstr ""
 "\n"
 "    git push --set-upstream %s %s\n"
 
-#: builtin/push.c:186
+#: builtin/push.c:205
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
 msgstr "当前分支 %s 有多个上游分支,拒绝推送。"
 
-#: builtin/push.c:189
+#: builtin/push.c:208
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -11850,12 +12314,12 @@ msgstr ""
 "您正推送至远程 '%s'(其并非当前分支 '%s' 的上游),\n"
 "而没有告诉我要推送什么、更新哪个远程分支。"
 
-#: builtin/push.c:248
+#: builtin/push.c:267
 msgid ""
 "You didn't specify any refspecs to push, and push.default is \"nothing\"."
 msgstr "您没有为推送指定任何引用规格,并且 push.default 为 \"nothing\"。"
 
-#: builtin/push.c:255
+#: builtin/push.c:274
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
 "its remote counterpart. Integrate the remote changes (e.g.\n"
@@ -11866,7 +12330,7 @@ msgstr ""
 "再次推送前,先与远程变更合并(如 'git pull ...')。详见\n"
 "'git push --help' 中的 'Note about fast-forwards' 小节。"
 
-#: builtin/push.c:261
+#: builtin/push.c:280
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. Check out this branch and integrate the remote changes\n"
@@ -11877,7 +12341,7 @@ msgstr ""
 "检出该分支并整合远程变更(如 'git pull ...'),然后再推送。详见\n"
 "'git push --help' 中的 'Note about fast-forwards' 小节。"
 
-#: builtin/push.c:267
+#: builtin/push.c:286
 msgid ""
 "Updates were rejected because the remote contains work that you do\n"
 "not have locally. This is usually caused by another repository pushing\n"
@@ -11890,11 +12354,11 @@ msgstr ""
 "(如 'git pull ...')。\n"
 "详见 'git push --help' 中的 'Note about fast-forwards' 小节。"
 
-#: builtin/push.c:274
+#: builtin/push.c:293
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr "更新被拒绝,因为该标签在远程已经存在。"
 
-#: builtin/push.c:277
+#: builtin/push.c:296
 msgid ""
 "You cannot update a remote ref that points at a non-commit object,\n"
 "or update a remote ref to make it point at a non-commit object,\n"
@@ -11903,22 +12367,22 @@ msgstr ""
 "如果不使用 '--force' 参数,您不能更新一个指向非提交对象的远程引用,\n"
 "也不能更新远程引用让其指向一个非提交对象。\n"
 
-#: builtin/push.c:337
+#: builtin/push.c:357
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "推送到 %s\n"
 
-#: builtin/push.c:341
+#: builtin/push.c:361
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "无法推送一些引用到 '%s'"
 
-#: builtin/push.c:372
+#: builtin/push.c:395
 #, c-format
 msgid "bad repository '%s'"
 msgstr "坏的仓库 '%s'"
 
-#: builtin/push.c:373
+#: builtin/push.c:396
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -11939,112 +12403,104 @@ msgstr ""
 "\n"
 "    git push <名称>\n"
 
-#: builtin/push.c:391
-msgid "--all and --tags are incompatible"
-msgstr "--all 和 --tags 不兼容"
-
-#: builtin/push.c:392
-msgid "--all can't be combined with refspecs"
-msgstr "--all 不能和引用规格同时使用"
-
-#: builtin/push.c:397
-msgid "--mirror and --tags are incompatible"
-msgstr "--mirror 和 --tags 不兼容"
-
-#: builtin/push.c:398
-msgid "--mirror can't be combined with refspecs"
-msgstr "--mirror 不能和引用规格同时使用"
-
-#: builtin/push.c:403
-msgid "--all and --mirror are incompatible"
-msgstr "--all 和 --mirror 不兼容"
-
-#: builtin/push.c:535
+#: builtin/push.c:551
 msgid "repository"
 msgstr "仓库"
 
-#: builtin/push.c:536 builtin/send-pack.c:163
+#: builtin/push.c:552 builtin/send-pack.c:164
 msgid "push all refs"
 msgstr "推送所有引用"
 
-#: builtin/push.c:537 builtin/send-pack.c:165
+#: builtin/push.c:553 builtin/send-pack.c:166
 msgid "mirror all refs"
 msgstr "镜像所有引用"
 
-#: builtin/push.c:539
+#: builtin/push.c:555
 msgid "delete refs"
 msgstr "删除引用"
 
-#: builtin/push.c:540
+#: builtin/push.c:556
 msgid "push tags (can't be used with --all or --mirror)"
 msgstr "推送标签(不能使用 --all or --mirror)"
 
-#: builtin/push.c:543 builtin/send-pack.c:166
+#: builtin/push.c:559 builtin/send-pack.c:167
 msgid "force updates"
 msgstr "强制更新"
 
-#: builtin/push.c:545 builtin/send-pack.c:180
+#: builtin/push.c:561 builtin/send-pack.c:181
 msgid "refname>:<expect"
 msgstr "引用名>:<期望值"
 
-#: builtin/push.c:546 builtin/send-pack.c:181
+#: builtin/push.c:562 builtin/send-pack.c:182
 msgid "require old value of ref to be at this value"
 msgstr "要求引用旧的取值为设定值"
 
-#: builtin/push.c:549
+#: builtin/push.c:565
 msgid "control recursive pushing of submodules"
 msgstr "控制子模组的递归推送"
 
-#: builtin/push.c:551 builtin/send-pack.c:174
+#: builtin/push.c:567 builtin/send-pack.c:175
 msgid "use thin pack"
 msgstr "使用精简打包"
 
-#: builtin/push.c:552 builtin/push.c:553 builtin/send-pack.c:160
-#: builtin/send-pack.c:161
+#: builtin/push.c:568 builtin/push.c:569 builtin/send-pack.c:161
+#: builtin/send-pack.c:162
 msgid "receive pack program"
 msgstr "接收包程序"
 
-#: builtin/push.c:554
+#: builtin/push.c:570
 msgid "set upstream for git pull/status"
 msgstr "设置 git pull/status 的上游"
 
-#: builtin/push.c:557
+#: builtin/push.c:573
 msgid "prune locally removed refs"
 msgstr "清除本地删除的引用"
 
-#: builtin/push.c:559
+#: builtin/push.c:575
 msgid "bypass pre-push hook"
 msgstr "绕过 pre-push 钩子"
 
-#: builtin/push.c:560
+#: builtin/push.c:576
 msgid "push missing but relevant tags"
 msgstr "推送缺失但有关的标签"
 
-#: builtin/push.c:563 builtin/send-pack.c:168
+#: builtin/push.c:579 builtin/send-pack.c:169
 msgid "GPG sign the push"
 msgstr "用 GPG 为推送签名"
 
-#: builtin/push.c:565 builtin/send-pack.c:175
+#: builtin/push.c:581 builtin/send-pack.c:176
 msgid "request atomic transaction on remote side"
 msgstr "需要远端支持原子事务"
 
-#: builtin/push.c:566 builtin/send-pack.c:171
-msgid "server-specific"
-msgstr "server-specific"
-
-#: builtin/push.c:566 builtin/send-pack.c:172
-msgid "option to transmit"
-msgstr "传输选项"
-
-#: builtin/push.c:583
+#: builtin/push.c:599
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr "--delete 与 --all、--mirror 及 --tags 不兼容"
 
-#: builtin/push.c:585
+#: builtin/push.c:601
 msgid "--delete doesn't make sense without any refs"
 msgstr "--delete 未接任何引用没有意义"
 
 #: builtin/push.c:604
+msgid "--all and --tags are incompatible"
+msgstr "--all 和 --tags 不兼容"
+
+#: builtin/push.c:606
+msgid "--all can't be combined with refspecs"
+msgstr "--all 不能和引用规格同时使用"
+
+#: builtin/push.c:610
+msgid "--mirror and --tags are incompatible"
+msgstr "--mirror 和 --tags 不兼容"
+
+#: builtin/push.c:612
+msgid "--mirror can't be combined with refspecs"
+msgstr "--mirror 不能和引用规格同时使用"
+
+#: builtin/push.c:615
+msgid "--all and --mirror are incompatible"
+msgstr "--all 和 --mirror 不兼容"
+
+#: builtin/push.c:634
 msgid "push options must not have new line characters"
 msgstr "推送选项不能有换行符"
 
@@ -12058,67 +12514,67 @@ msgstr ""
 "u [--exclude-per-directory=<gitignore>] | -i]] [--no-sparse-checkout] [--"
 "index-output=<文件>] (--empty | <树对象1> [<树对象2> [<树对象3>]])"
 
-#: builtin/read-tree.c:121
+#: builtin/read-tree.c:120
 msgid "write resulting index to <file>"
 msgstr "将索引结果写入 <文件>"
 
-#: builtin/read-tree.c:124
+#: builtin/read-tree.c:123
 msgid "only empty the index"
 msgstr "只是清空索引"
 
-#: builtin/read-tree.c:126
+#: builtin/read-tree.c:125
 msgid "Merging"
 msgstr "合并"
 
-#: builtin/read-tree.c:128
+#: builtin/read-tree.c:127
 msgid "perform a merge in addition to a read"
 msgstr "读取之余再执行一个合并"
 
-#: builtin/read-tree.c:130
+#: builtin/read-tree.c:129
 msgid "3-way merge if no file level merging required"
 msgstr "如果没有文件级合并需要,执行三方合并"
 
-#: builtin/read-tree.c:132
+#: builtin/read-tree.c:131
 msgid "3-way merge in presence of adds and removes"
 msgstr "存在添加和删除时,也执行三方合并"
 
-#: builtin/read-tree.c:134
+#: builtin/read-tree.c:133
 msgid "same as -m, but discard unmerged entries"
 msgstr "类似于 -m,但丢弃未合并的条目"
 
-#: builtin/read-tree.c:135
+#: builtin/read-tree.c:134
 msgid "<subdirectory>/"
 msgstr "<子目录>/"
 
-#: builtin/read-tree.c:136
+#: builtin/read-tree.c:135
 msgid "read the tree into the index under <subdirectory>/"
 msgstr "读取树对象到索引的 <子目录>/ 下"
 
-#: builtin/read-tree.c:139
+#: builtin/read-tree.c:138
 msgid "update working tree with merge result"
 msgstr "用合并的结果更新工作区"
 
-#: builtin/read-tree.c:141
+#: builtin/read-tree.c:140
 msgid "gitignore"
 msgstr "gitignore"
 
-#: builtin/read-tree.c:142
+#: builtin/read-tree.c:141
 msgid "allow explicitly ignored files to be overwritten"
 msgstr "允许忽略文件中设定的文件可以被覆盖"
 
-#: builtin/read-tree.c:145
+#: builtin/read-tree.c:144
 msgid "don't check the working tree after merging"
 msgstr "合并后不检查工作区"
 
-#: builtin/read-tree.c:146
+#: builtin/read-tree.c:145
 msgid "don't update the index or the work tree"
 msgstr "不更新索引区和工作区"
 
-#: builtin/read-tree.c:148
+#: builtin/read-tree.c:147
 msgid "skip applying sparse checkout filter"
 msgstr "跳过应用稀疏检出过滤器"
 
-#: builtin/read-tree.c:150
+#: builtin/read-tree.c:149
 msgid "debug unpack-trees"
 msgstr "调试 unpack-trees"
 
@@ -12135,46 +12591,58 @@ msgid "allow commits with empty messages"
 msgstr "允许提交说明为空"
 
 #: builtin/rebase--helper.c:27
+msgid "rebase merge commits"
+msgstr "对合并提交变基"
+
+#: builtin/rebase--helper.c:29
+msgid "keep original branch points of cousins"
+msgstr "保持兄弟提交的原始分支点"
+
+#: builtin/rebase--helper.c:30
 msgid "continue rebase"
 msgstr "继续变基"
 
-#: builtin/rebase--helper.c:29
+#: builtin/rebase--helper.c:32
 msgid "abort rebase"
 msgstr "中止变基"
 
-#: builtin/rebase--helper.c:32
+#: builtin/rebase--helper.c:35
 msgid "make rebase script"
 msgstr "制作变基脚本"
 
-#: builtin/rebase--helper.c:34
+#: builtin/rebase--helper.c:37
 msgid "shorten commit ids in the todo list"
 msgstr "缩短待办列表中的提交号"
 
-#: builtin/rebase--helper.c:36
+#: builtin/rebase--helper.c:39
 msgid "expand commit ids in the todo list"
 msgstr "扩展待办列表中的提交号"
 
-#: builtin/rebase--helper.c:38
+#: builtin/rebase--helper.c:41
 msgid "check the todo list"
 msgstr "检查待办列表"
 
-#: builtin/rebase--helper.c:40
+#: builtin/rebase--helper.c:43
 msgid "skip unnecessary picks"
 msgstr "跳过不必要的拣选"
 
-#: builtin/rebase--helper.c:42
+#: builtin/rebase--helper.c:45
 msgid "rearrange fixup/squash lines"
 msgstr "重新排列 fixup/squash 行"
 
-#: builtin/rebase--helper.c:44
+#: builtin/rebase--helper.c:47
 msgid "insert exec commands in todo list"
 msgstr "在待办列表中插入 exec 执行命令"
 
-#: builtin/receive-pack.c:30
+#: builtin/rebase--helper.c:68
+msgid "--[no-]rebase-cousins has no effect without --rebase-merges"
+msgstr "不使用 --rebase-merges,则 --[no-]rebase-cousins 没有效果"
+
+#: builtin/receive-pack.c:31
 msgid "git receive-pack <git-dir>"
 msgstr "git receive-pack <仓库目录>"
 
-#: builtin/receive-pack.c:841
+#: builtin/receive-pack.c:842
 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"
@@ -12200,7 +12668,7 @@ msgstr ""
 "若要屏蔽此信息且保持默认行为,设置 'receive.denyCurrentBranch'\n"
 "配置变量为 'refuse'。"
 
-#: builtin/receive-pack.c:861
+#: builtin/receive-pack.c:862
 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"
@@ -12219,11 +12687,11 @@ msgstr ""
 "\n"
 "若要屏蔽此信息,您可以设置它为 'refuse'。"
 
-#: builtin/receive-pack.c:1934
+#: builtin/receive-pack.c:1935
 msgid "quiet"
 msgstr "静默模式"
 
-#: builtin/receive-pack.c:1948
+#: builtin/receive-pack.c:1949
 msgid "You must specify a directory."
 msgstr "您必须指定一个目录。"
 
@@ -12232,11 +12700,11 @@ msgstr "您必须指定一个目录。"
 msgid "'%s' is not a valid timestamp"
 msgstr "'%s' 不是一个有效的时间戳"
 
-#: builtin/remote.c:13
+#: builtin/remote.c:14
 msgid "git remote [-v | --verbose]"
 msgstr "git remote [-v | --verbose]"
 
-#: builtin/remote.c:14
+#: builtin/remote.c:15
 msgid ""
 "git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
 "mirror=<fetch|push>] <name> <url>"
@@ -12244,81 +12712,81 @@ msgstr ""
 "git remote add [-t <分支>] [-m <master>] [-f] [--tags | --no-tags] [--"
 "mirror=<fetch|push>] <名称> <地址>"
 
-#: builtin/remote.c:15 builtin/remote.c:35
+#: builtin/remote.c:16 builtin/remote.c:36
 msgid "git remote rename <old> <new>"
 msgstr "git remote rename <旧名称> <新名称>"
 
-#: builtin/remote.c:16 builtin/remote.c:40
+#: builtin/remote.c:17 builtin/remote.c:41
 msgid "git remote remove <name>"
 msgstr "git remote remove <名称>"
 
-#: builtin/remote.c:17 builtin/remote.c:45
+#: builtin/remote.c:18 builtin/remote.c:46
 msgid "git remote set-head <name> (-a | --auto | -d | --delete | <branch>)"
 msgstr "git remote set-head <名称> (-a | --auto | -d | --delete | <分支>)"
 
-#: builtin/remote.c:18
+#: builtin/remote.c:19
 msgid "git remote [-v | --verbose] show [-n] <name>"
 msgstr "git remote [-v | --verbose] show [-n] <名称>"
 
-#: builtin/remote.c:19
+#: builtin/remote.c:20
 msgid "git remote prune [-n | --dry-run] <name>"
 msgstr "git remote prune [-n | --dry-run] <名称>"
 
-#: builtin/remote.c:20
+#: builtin/remote.c:21
 msgid ""
 "git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]"
 msgstr "git remote [-v | --verbose] update [-p | --prune] [(<组> | <远程>)...]"
 
-#: builtin/remote.c:21
+#: builtin/remote.c:22
 msgid "git remote set-branches [--add] <name> <branch>..."
 msgstr "git remote set-branches [--add] <名称> <分支>..."
 
-#: builtin/remote.c:22 builtin/remote.c:71
+#: builtin/remote.c:23 builtin/remote.c:72
 msgid "git remote get-url [--push] [--all] <name>"
 msgstr "git remote get-url [--push] [--all] <名称>"
 
-#: builtin/remote.c:23 builtin/remote.c:76
+#: builtin/remote.c:24 builtin/remote.c:77
 msgid "git remote set-url [--push] <name> <newurl> [<oldurl>]"
 msgstr "git remote set-url [--push] <名称> <新的地址> [<旧的地址>]"
 
-#: builtin/remote.c:24 builtin/remote.c:77
+#: builtin/remote.c:25 builtin/remote.c:78
 msgid "git remote set-url --add <name> <newurl>"
 msgstr "git remote set-url --add <名称> <新的地址>"
 
-#: builtin/remote.c:25 builtin/remote.c:78
+#: builtin/remote.c:26 builtin/remote.c:79
 msgid "git remote set-url --delete <name> <url>"
 msgstr "git remote set-url --delete <名称> <地址>"
 
-#: builtin/remote.c:30
+#: builtin/remote.c:31
 msgid "git remote add [<options>] <name> <url>"
 msgstr "git remote add [<选项>] <名称> <地址>"
 
-#: builtin/remote.c:50
+#: builtin/remote.c:51
 msgid "git remote set-branches <name> <branch>..."
 msgstr "git remote set-branches <名称> <分支>..."
 
-#: builtin/remote.c:51
+#: builtin/remote.c:52
 msgid "git remote set-branches --add <name> <branch>..."
 msgstr "git remote set-branches --add <名称> <分支>..."
 
-#: builtin/remote.c:56
+#: builtin/remote.c:57
 msgid "git remote show [<options>] <name>"
 msgstr "git remote show [<选项>] <名称>"
 
-#: builtin/remote.c:61
+#: builtin/remote.c:62
 msgid "git remote prune [<options>] <name>"
 msgstr "git remote prune [<选项>] <名称>"
 
-#: builtin/remote.c:66
+#: builtin/remote.c:67
 msgid "git remote update [<options>] [<group> | <remote>]..."
 msgstr "git remote update [<选项>] [<组> | <远程>]..."
 
-#: builtin/remote.c:95
+#: builtin/remote.c:96
 #, c-format
 msgid "Updating %s"
 msgstr "更新 %s 中"
 
-#: builtin/remote.c:127
+#: builtin/remote.c:128
 msgid ""
 "--mirror is dangerous and deprecated; please\n"
 "\t use --mirror=fetch or --mirror=push instead"
@@ -12326,86 +12794,86 @@ msgstr ""
 "--mirror 选项危险且过时,请使用 --mirror=fetch\n"
 "\t 或 --mirror=push"
 
-#: builtin/remote.c:144
+#: builtin/remote.c:145
 #, c-format
 msgid "unknown mirror argument: %s"
 msgstr "未知的镜像参数:%s"
 
-#: builtin/remote.c:160
+#: builtin/remote.c:161
 msgid "fetch the remote branches"
 msgstr "抓取远程的分支"
 
-#: builtin/remote.c:162
+#: builtin/remote.c:163
 msgid "import all tags and associated objects when fetching"
 msgstr "抓取时导入所有的标签和关联对象"
 
-#: builtin/remote.c:165
+#: builtin/remote.c:166
 msgid "or do not fetch any tag at all (--no-tags)"
 msgstr "或不抓取任何标签(--no-tags)"
 
-#: builtin/remote.c:167
+#: builtin/remote.c:168
 msgid "branch(es) to track"
 msgstr "跟踪的分支"
 
-#: builtin/remote.c:168
+#: builtin/remote.c:169
 msgid "master branch"
 msgstr "主线分支"
 
-#: builtin/remote.c:169
+#: builtin/remote.c:170
 msgid "push|fetch"
 msgstr "push|fetch"
 
-#: builtin/remote.c:170
+#: builtin/remote.c:171
 msgid "set up remote as a mirror to push to or fetch from"
 msgstr "把远程设置为用以推送或抓取的镜像"
 
-#: builtin/remote.c:182
+#: builtin/remote.c:183
 msgid "specifying a master branch makes no sense with --mirror"
 msgstr "指定一个 master 分支并使用 --mirror 选项没有意义"
 
-#: builtin/remote.c:184
+#: builtin/remote.c:185
 msgid "specifying branches to track makes sense only with fetch mirrors"
 msgstr "指定要跟踪的分支只在与获取镜像同时使用才有意义"
 
-#: builtin/remote.c:191 builtin/remote.c:631
+#: builtin/remote.c:192 builtin/remote.c:634
 #, c-format
 msgid "remote %s already exists."
 msgstr "远程 %s 已经存在。"
 
-#: builtin/remote.c:195 builtin/remote.c:635
+#: builtin/remote.c:196 builtin/remote.c:638
 #, c-format
 msgid "'%s' is not a valid remote name"
 msgstr "'%s' 不是一个有效的远程名称"
 
-#: builtin/remote.c:235
+#: builtin/remote.c:236
 #, c-format
 msgid "Could not setup master '%s'"
 msgstr "无法设置 master '%s'"
 
-#: builtin/remote.c:337
+#: builtin/remote.c:342
 #, c-format
 msgid "Could not get fetch map for refspec %s"
 msgstr "无法得到引用规格 %s 的获取列表"
 
-#: builtin/remote.c:438 builtin/remote.c:446
+#: builtin/remote.c:441 builtin/remote.c:449
 msgid "(matching)"
 msgstr "(匹配)"
 
-#: builtin/remote.c:450
+#: builtin/remote.c:453
 msgid "(delete)"
 msgstr "(删除)"
 
-#: builtin/remote.c:624 builtin/remote.c:759 builtin/remote.c:858
+#: builtin/remote.c:627 builtin/remote.c:762 builtin/remote.c:861
 #, c-format
 msgid "No such remote: %s"
 msgstr "没有这样的远程:%s"
 
-#: builtin/remote.c:641
+#: builtin/remote.c:644
 #, c-format
 msgid "Could not rename config section '%s' to '%s'"
 msgstr "不能重命名配置小节 '%s' 到 '%s'"
 
-#: builtin/remote.c:661
+#: builtin/remote.c:664
 #, c-format
 msgid ""
 "Not updating non-default fetch refspec\n"
@@ -12416,17 +12884,17 @@ msgstr ""
 "\t%s\n"
 "\t如果必要请手动更新配置。"
 
-#: builtin/remote.c:697
+#: builtin/remote.c:700
 #, c-format
 msgid "deleting '%s' failed"
 msgstr "删除 '%s' 失败"
 
-#: builtin/remote.c:731
+#: builtin/remote.c:734
 #, c-format
 msgid "creating '%s' failed"
 msgstr "创建 '%s' 失败"
 
-#: builtin/remote.c:796
+#: builtin/remote.c:799
 msgid ""
 "Note: A branch outside the refs/remotes/ hierarchy was not removed;\n"
 "to delete it, use:"
@@ -12436,113 +12904,118 @@ msgid_plural ""
 msgstr[0] "注意:ref/remotes 层级之外的一个分支未被移除。要删除它,使用:"
 msgstr[1] "注意:ref/remotes 层级之外的一些分支未被移除。要删除它们,使用:"
 
-#: builtin/remote.c:810
+#: builtin/remote.c:813
 #, c-format
 msgid "Could not remove config section '%s'"
 msgstr "不能移除配置小节 '%s'"
 
-#: builtin/remote.c:911
+#: builtin/remote.c:914
 #, c-format
 msgid " new (next fetch will store in remotes/%s)"
 msgstr " 新的(下一次获取将存储于 remotes/%s)"
 
-#: builtin/remote.c:914
+#: builtin/remote.c:917
 msgid " tracked"
 msgstr " 已跟踪"
 
-#: builtin/remote.c:916
+#: builtin/remote.c:919
 msgid " stale (use 'git remote prune' to remove)"
 msgstr " 过时(使用 'git remote prune' 来移除)"
 
-#: builtin/remote.c:918
+#: builtin/remote.c:921
 msgid " ???"
 msgstr " ???"
 
-#: builtin/remote.c:959
+#: builtin/remote.c:962
 #, c-format
 msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch"
 msgstr "无效的 branch.%s.merge,不能变基到一个以上的分支"
 
-#: builtin/remote.c:967
+#: builtin/remote.c:971
 #, c-format
 msgid "rebases interactively onto remote %s"
 msgstr "交互式变基到远程 %s"
 
-#: builtin/remote.c:968
+#: builtin/remote.c:973
+#, c-format
+msgid "rebases interactively (with merges) onto remote %s"
+msgstr "交互式变基(含合并提交)到远程 %s"
+
+#: builtin/remote.c:976
 #, c-format
 msgid "rebases onto remote %s"
 msgstr "变基到远程 %s"
 
-#: builtin/remote.c:971
+#: builtin/remote.c:980
 #, c-format
 msgid " merges with remote %s"
 msgstr " 与远程 %s 合并"
 
-#: builtin/remote.c:974
+#: builtin/remote.c:983
 #, c-format
 msgid "merges with remote %s"
 msgstr "与远程 %s 合并"
 
-#: builtin/remote.c:977
+#: builtin/remote.c:986
 #, c-format
 msgid "%-*s    and with remote %s\n"
 msgstr "%-*s    以及和远程 %s\n"
 
-#: builtin/remote.c:1020
+#: builtin/remote.c:1029
 msgid "create"
 msgstr "创建"
 
-#: builtin/remote.c:1023
+#: builtin/remote.c:1032
 msgid "delete"
 msgstr "删除"
 
-#: builtin/remote.c:1027
+#: builtin/remote.c:1036
 msgid "up to date"
 msgstr "最新"
 
-#: builtin/remote.c:1030
+#: builtin/remote.c:1039
 msgid "fast-forwardable"
 msgstr "可快进"
 
-#: builtin/remote.c:1033
+#: builtin/remote.c:1042
 msgid "local out of date"
 msgstr "本地已过时"
 
-#: builtin/remote.c:1040
+#: builtin/remote.c:1049
 #, c-format
 msgid "    %-*s forces to %-*s (%s)"
 msgstr "    %-*s 强制推送至 %-*s (%s)"
 
-#: builtin/remote.c:1043
+#: builtin/remote.c:1052
 #, c-format
 msgid "    %-*s pushes to %-*s (%s)"
 msgstr "    %-*s 推送至 %-*s (%s)"
 
-#: builtin/remote.c:1047
+#: builtin/remote.c:1056
 #, c-format
 msgid "    %-*s forces to %s"
 msgstr "    %-*s 强制推送至 %s"
 
-#: builtin/remote.c:1050
+#: builtin/remote.c:1059
 #, c-format
 msgid "    %-*s pushes to %s"
 msgstr "    %-*s 推送至 %s"
 
-#: builtin/remote.c:1118
+#: builtin/remote.c:1127
 msgid "do not query remotes"
 msgstr "不查询远程"
 
-#: builtin/remote.c:1145
+#: builtin/remote.c:1154
 #, c-format
 msgid "* remote %s"
 msgstr "* 远程 %s"
 
-#: builtin/remote.c:1146
+#: builtin/remote.c:1155
 #, c-format
 msgid "  Fetch URL: %s"
 msgstr "  获取地址:%s"
 
-#: builtin/remote.c:1147 builtin/remote.c:1163 builtin/remote.c:1302
+#: builtin/remote.c:1156 builtin/remote.c:1172 builtin/remote.c:1311
 msgid "(no URL)"
 msgstr "(无 URL)"
 
@@ -12550,32 +13023,32 @@ msgstr "(无 URL)"
 #. with the one in " Fetch URL: %s"
 #. translation.
 #.
-#: builtin/remote.c:1161 builtin/remote.c:1163
+#: builtin/remote.c:1170 builtin/remote.c:1172
 #, c-format
 msgid "  Push  URL: %s"
 msgstr "  推送地址:%s"
 
-#: builtin/remote.c:1165 builtin/remote.c:1167 builtin/remote.c:1169
+#: builtin/remote.c:1174 builtin/remote.c:1176 builtin/remote.c:1178
 #, c-format
 msgid "  HEAD branch: %s"
 msgstr "  HEAD 分支:%s"
 
 #  译者:中文字符串拼接,可删除前导空格
-#: builtin/remote.c:1165
+#: builtin/remote.c:1174
 msgid "(not queried)"
 msgstr "(未查询)"
 
-#: builtin/remote.c:1167
+#: builtin/remote.c:1176
 msgid "(unknown)"
 msgstr "(未知)"
 
-#: builtin/remote.c:1171
+#: builtin/remote.c:1180
 #, c-format
 msgid ""
 "  HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
 msgstr "  HEAD 分支(远程 HEAD 模糊,可能是下列中的一个):\n"
 
-#: builtin/remote.c:1183
+#: builtin/remote.c:1192
 #, c-format
 msgid "  Remote branch:%s"
 msgid_plural "  Remote branches:%s"
@@ -12583,155 +13056,155 @@ msgstr[0] "  远程分支:%s"
 msgstr[1] "  远程分支:%s"
 
 #  译者:中文字符串拼接,可删除前导空格
-#: builtin/remote.c:1186 builtin/remote.c:1212
+#: builtin/remote.c:1195 builtin/remote.c:1221
 msgid " (status not queried)"
 msgstr "(状态未查询)"
 
-#: builtin/remote.c:1195
+#: builtin/remote.c:1204
 msgid "  Local branch configured for 'git pull':"
 msgid_plural "  Local branches configured for 'git pull':"
 msgstr[0] "  为 'git pull' 配置的本地分支:"
 msgstr[1] "  为 'git pull' 配置的本地分支:"
 
-#: builtin/remote.c:1203
+#: builtin/remote.c:1212
 msgid "  Local refs will be mirrored by 'git push'"
 msgstr "  本地引用将在 'git push' 时被镜像"
 
-#: builtin/remote.c:1209
+#: builtin/remote.c:1218
 #, c-format
 msgid "  Local ref configured for 'git push'%s:"
 msgid_plural "  Local refs configured for 'git push'%s:"
 msgstr[0] "  为 'git push' 配置的本地引用%s:"
 msgstr[1] "  为 'git push' 配置的本地引用%s:"
 
-#: builtin/remote.c:1230
+#: builtin/remote.c:1239
 msgid "set refs/remotes/<name>/HEAD according to remote"
 msgstr "根据远程设置 refs/remotes/<名称>/HEAD"
 
-#: builtin/remote.c:1232
+#: builtin/remote.c:1241
 msgid "delete refs/remotes/<name>/HEAD"
 msgstr "删除 refs/remotes/<名称>/HEAD"
 
-#: builtin/remote.c:1247
+#: builtin/remote.c:1256
 msgid "Cannot determine remote HEAD"
 msgstr "无法确定远程 HEAD"
 
-#: builtin/remote.c:1249
+#: builtin/remote.c:1258
 msgid "Multiple remote HEAD branches. Please choose one explicitly with:"
 msgstr "多个远程 HEAD 分支。请明确地选择一个用命令:"
 
-#: builtin/remote.c:1259
+#: builtin/remote.c:1268
 #, c-format
 msgid "Could not delete %s"
 msgstr "无法删除 %s"
 
-#: builtin/remote.c:1267
+#: builtin/remote.c:1276
 #, c-format
 msgid "Not a valid ref: %s"
 msgstr "不是一个有效引用:%s"
 
-#: builtin/remote.c:1269
+#: builtin/remote.c:1278
 #, c-format
 msgid "Could not setup %s"
 msgstr "不能设置 %s"
 
 #  译者:注意保持前导空格
-#: builtin/remote.c:1287
+#: builtin/remote.c:1296
 #, c-format
 msgid " %s will become dangling!"
 msgstr " %s 将成为摇摆状态!"
 
 #  译者:注意保持前导空格
-#: builtin/remote.c:1288
+#: builtin/remote.c:1297
 #, c-format
 msgid " %s has become dangling!"
 msgstr " %s 已成为摇摆状态!"
 
-#: builtin/remote.c:1298
+#: builtin/remote.c:1307
 #, c-format
 msgid "Pruning %s"
 msgstr "修剪 %s"
 
-#: builtin/remote.c:1299
+#: builtin/remote.c:1308
 #, c-format
 msgid "URL: %s"
 msgstr "URL:%s"
 
-#: builtin/remote.c:1315
+#: builtin/remote.c:1324
 #, c-format
 msgid " * [would prune] %s"
 msgstr " * [将删除] %s"
 
-#: builtin/remote.c:1318
+#: builtin/remote.c:1327
 #, c-format
 msgid " * [pruned] %s"
 msgstr " * [已删除] %s"
 
-#: builtin/remote.c:1363
+#: builtin/remote.c:1372
 msgid "prune remotes after fetching"
 msgstr "抓取后清除远程"
 
-#: builtin/remote.c:1426 builtin/remote.c:1480 builtin/remote.c:1548
+#: builtin/remote.c:1435 builtin/remote.c:1489 builtin/remote.c:1557
 #, c-format
 msgid "No such remote '%s'"
 msgstr "没有此远程 '%s'"
 
-#: builtin/remote.c:1442
+#: builtin/remote.c:1451
 msgid "add branch"
 msgstr "添加分支"
 
-#: builtin/remote.c:1449
+#: builtin/remote.c:1458
 msgid "no remote specified"
 msgstr "未指定远程"
 
-#: builtin/remote.c:1466
+#: builtin/remote.c:1475
 msgid "query push URLs rather than fetch URLs"
 msgstr "查询推送 URL 地址,而非获取 URL 地址"
 
-#: builtin/remote.c:1468
+#: builtin/remote.c:1477
 msgid "return all URLs"
 msgstr "返回所有 URL 地址"
 
-#: builtin/remote.c:1496
+#: builtin/remote.c:1505
 #, c-format
 msgid "no URLs configured for remote '%s'"
 msgstr "没有给远程仓库 '%s' 设定 URL"
 
-#: builtin/remote.c:1522
+#: builtin/remote.c:1531
 msgid "manipulate push URLs"
 msgstr "操作推送 URLS"
 
-#: builtin/remote.c:1524
+#: builtin/remote.c:1533
 msgid "add URL"
 msgstr "添加 URL"
 
-#: builtin/remote.c:1526
+#: builtin/remote.c:1535
 msgid "delete URLs"
 msgstr "删除 URLS"
 
-#: builtin/remote.c:1533
+#: builtin/remote.c:1542
 msgid "--add --delete doesn't make sense"
 msgstr "--add --delete 无意义"
 
-#: builtin/remote.c:1572
+#: builtin/remote.c:1581
 #, c-format
 msgid "Invalid old URL pattern: %s"
 msgstr "无效的旧 URL 匹配模版:%s"
 
-#: builtin/remote.c:1580
+#: builtin/remote.c:1589
 #, c-format
 msgid "No such URL found: %s"
 msgstr "未找到此 URL:%s"
 
-#: builtin/remote.c:1582
+#: builtin/remote.c:1591
 msgid "Will not delete all non-push URLs"
 msgstr "将不会删除所有非推送 URL 地址"
 
-#: builtin/remote.c:1598
+#: builtin/remote.c:1607
 msgid "be verbose; must be placed before a subcommand"
 msgstr "冗长输出;必须置于子命令之前"
 
-#: builtin/remote.c:1629
+#: builtin/remote.c:1638
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr "未知子命令:%s"
@@ -12748,172 +13221,193 @@ msgstr ""
 "增量 repack 和 bitmap 索引不兼容。  使用 --no-write-bitmap-index\n"
 "或禁用 pack.writebitmaps 配置。"
 
-#: builtin/repack.c:170
+#: builtin/repack.c:180
 msgid "pack everything in a single pack"
 msgstr "所有内容打包到一个包文件中"
 
-#: builtin/repack.c:172
+#: builtin/repack.c:182
 msgid "same as -a, and turn unreachable objects loose"
 msgstr "和 -a 相同,并将不可达的对象设为松散对象"
 
-#: builtin/repack.c:175
+#: builtin/repack.c:185
 msgid "remove redundant packs, and run git-prune-packed"
 msgstr "删除多余的包,运行 git-prune-packed"
 
-#: builtin/repack.c:177
+#: builtin/repack.c:187
 msgid "pass --no-reuse-delta to git-pack-objects"
 msgstr "向 git-pack-objects 传递参数 --no-reuse-delta"
 
-#: builtin/repack.c:179
+#: builtin/repack.c:189
 msgid "pass --no-reuse-object to git-pack-objects"
 msgstr "向 git-pack-objects 传递参数 --no-reuse-object"
 
-#: builtin/repack.c:181
+#: builtin/repack.c:191
 msgid "do not run git-update-server-info"
 msgstr "不运行 git-update-server-info"
 
-#: builtin/repack.c:184
+#: builtin/repack.c:194
 msgid "pass --local to git-pack-objects"
 msgstr "向 git-pack-objects 传递参数 --local"
 
-#: builtin/repack.c:186
+#: builtin/repack.c:196
 msgid "write bitmap index"
 msgstr "写 bitmap 索引"
 
-#: builtin/repack.c:187
+#: builtin/repack.c:197
 msgid "approxidate"
 msgstr "近似日期"
 
-#: builtin/repack.c:188
+#: builtin/repack.c:198
 msgid "with -A, do not loosen objects older than this"
 msgstr "使用 -A,不要将早于给定时间的对象过期"
 
-#: builtin/repack.c:190
+#: builtin/repack.c:200
 msgid "with -a, repack unreachable objects"
 msgstr "使用 -a ,重新对不可达对象打包"
 
-#: builtin/repack.c:192
+#: builtin/repack.c:202
 msgid "size of the window used for delta compression"
 msgstr "用于增量压缩的窗口值"
 
-#: builtin/repack.c:193 builtin/repack.c:199
+#: builtin/repack.c:203 builtin/repack.c:209
 msgid "bytes"
 msgstr "字节"
 
-#: builtin/repack.c:194
+#: builtin/repack.c:204
 msgid "same as the above, but limit memory size instead of entries count"
 msgstr "和上面的相似,但限制内存大小而非条目数"
 
-#: builtin/repack.c:196
+#: builtin/repack.c:206
 msgid "limits the maximum delta depth"
 msgstr "限制最大增量深度"
 
-#: builtin/repack.c:198
+#: builtin/repack.c:208
 msgid "limits the maximum number of threads"
 msgstr "限制最大线程数"
 
-#: builtin/repack.c:200
+#: builtin/repack.c:210
 msgid "maximum size of each packfile"
 msgstr "每个包文件的最大尺寸"
 
-#: builtin/repack.c:202
+#: builtin/repack.c:212
 msgid "repack objects in packs marked with .keep"
 msgstr "对标记为 .keep 的包中的对象重新打包"
 
-#: builtin/repack.c:212
+#: builtin/repack.c:214
+msgid "do not repack this pack"
+msgstr "不要对该包文件重新打包"
+
+#: builtin/repack.c:224
 msgid "cannot delete packs in a precious-objects repo"
 msgstr "不能删除珍品仓库中的打包文件"
 
-#: builtin/repack.c:216
+#: builtin/repack.c:228
 msgid "--keep-unreachable and -A are incompatible"
 msgstr "--keep-unreachable 和 -A 不兼容"
 
-#: builtin/repack.c:410 builtin/worktree.c:148
+#: builtin/repack.c:425 builtin/worktree.c:139
 #, c-format
 msgid "failed to remove '%s'"
 msgstr "无法删除 '%s'"
 
-#: builtin/replace.c:20
+#: builtin/replace.c:22
 msgid "git replace [-f] <object> <replacement>"
 msgstr "git replace [-f] <对象> <替换物>"
 
-#: builtin/replace.c:21
+#: builtin/replace.c:23
 msgid "git replace [-f] --edit <object>"
 msgstr "git replace [-f] --edit <对象>"
 
-#: builtin/replace.c:22
+#: builtin/replace.c:24
 msgid "git replace [-f] --graft <commit> [<parent>...]"
 msgstr "git replace [-f] --graft <提交> [<父提交>...]"
 
-#: builtin/replace.c:23
+#: builtin/replace.c:25
+msgid "git replace [-f] --convert-graft-file"
+msgstr "git replace [-f] --convert-graft-file"
+
+#: builtin/replace.c:26
 msgid "git replace -d <object>..."
 msgstr "git replace -d <对象>..."
 
-#: builtin/replace.c:24
+#: builtin/replace.c:27
 msgid "git replace [--format=<format>] [-l [<pattern>]]"
 msgstr "git replace [--format=<格式>] [-l [<模式>]]"
 
-#: builtin/replace.c:331 builtin/replace.c:369 builtin/replace.c:397
+#: builtin/replace.c:371 builtin/replace.c:415 builtin/replace.c:445
 #, c-format
 msgid "Not a valid object name: '%s'"
 msgstr "不是一个有效的对象名:'%s'"
 
-#: builtin/replace.c:361
+#: builtin/replace.c:407
 #, c-format
 msgid "bad mergetag in commit '%s'"
 msgstr "提交 '%s' 中含有损坏的合并标签"
 
-#: builtin/replace.c:363
+#: builtin/replace.c:409
 #, c-format
 msgid "malformed mergetag in commit '%s'"
-msgstr "提交 '%s' 中含有非法的合并标签"
+msgstr "提交 '%s' 中含有格式错误的合并标签"
 
-#: builtin/replace.c:374
+#: builtin/replace.c:421
 #, c-format
 msgid ""
 "original commit '%s' contains mergetag '%s' that is discarded; use --edit "
 "instead of --graft"
 msgstr "原始提交 '%s' 包含已经丢弃的合并标签 '%s',使用 --edit 代替 --graft"
 
-#: builtin/replace.c:407
+#: builtin/replace.c:460
 #, c-format
 msgid "the original commit '%s' has a gpg signature."
 msgstr "原始提交 '%s' 中包含一个 GPG 签名"
 
-#: builtin/replace.c:408
+#: builtin/replace.c:461
 msgid "the signature will be removed in the replacement commit!"
 msgstr "在替换的提交中签名将被移除!"
 
-#: builtin/replace.c:414
+#: builtin/replace.c:471
 #, c-format
 msgid "could not write replacement commit for: '%s'"
 msgstr "不能为 '%s' 写替换提交"
 
-#: builtin/replace.c:438
+#: builtin/replace.c:514
+#, c-format
+msgid ""
+"could not convert the following graft(s):\n"
+"%s"
+msgstr ""
+"不能转换下列移植:\n"
+"%s"
+
+#: builtin/replace.c:535
 msgid "list replace refs"
 msgstr "列出替换的引用"
 
-#: builtin/replace.c:439
+#: builtin/replace.c:536
 msgid "delete replace refs"
 msgstr "删除替换的引用"
 
-#: builtin/replace.c:440
+#: builtin/replace.c:537
 msgid "edit existing object"
 msgstr "编辑现存的对象"
 
-#: builtin/replace.c:441
+#: builtin/replace.c:538
 msgid "change a commit's parents"
 msgstr "修改一个提交的父提交"
 
-#: builtin/replace.c:442
+#: builtin/replace.c:539
+msgid "convert existing graft file"
+msgstr "转换现存的移植文件"
+
+#: builtin/replace.c:540
 msgid "replace the ref if it exists"
 msgstr "如果存在则替换引用"
 
-#: builtin/replace.c:444
+#: builtin/replace.c:542
 msgid "do not pretty-print contents for --edit"
 msgstr "不要为 --edit 操作美观显示内容"
 
-#: builtin/replace.c:445
+#: builtin/replace.c:543
 msgid "use this format"
 msgstr "使用此格式"
 
@@ -13074,23 +13568,23 @@ msgstr "rev-list 不支持显示注解"
 msgid "cannot combine --use-bitmap-index with object filtering"
 msgstr "不能将 --use-bitmap-index 和对象过滤组合使用"
 
-#: builtin/rev-parse.c:402
+#: builtin/rev-parse.c:406
 msgid "git rev-parse --parseopt [<options>] -- [<args>...]"
 msgstr "git rev-parse --parseopt [<选项>] -- [<参数>...]"
 
-#: builtin/rev-parse.c:407
+#: builtin/rev-parse.c:411
 msgid "keep the `--` passed as an arg"
 msgstr "保持 `--` 作为一个参数传递"
 
-#: builtin/rev-parse.c:409
+#: builtin/rev-parse.c:413
 msgid "stop parsing after the first non-option argument"
 msgstr "遇到第一个非选项参数后停止解析"
 
-#: builtin/rev-parse.c:412
+#: builtin/rev-parse.c:416
 msgid "output in stuck long form"
 msgstr "以固定长格式输出"
 
-#: builtin/rev-parse.c:545
+#: builtin/rev-parse.c:549
 msgid ""
 "git rev-parse --parseopt [<options>] -- [<args>...]\n"
 "   or: git rev-parse --sq-quote [<arg>...]\n"
@@ -13227,42 +13721,42 @@ msgid_plural "the following files have local modifications:"
 msgstr[0] "如下文件有本地修改:"
 msgstr[1] "如下文件有本地修改:"
 
-#: builtin/rm.c:243
+#: builtin/rm.c:241
 msgid "do not list removed files"
 msgstr "不列出删除的文件"
 
-#: builtin/rm.c:244
+#: builtin/rm.c:242
 msgid "only remove from the index"
 msgstr "只从索引区删除"
 
-#: builtin/rm.c:245
+#: builtin/rm.c:243
 msgid "override the up-to-date check"
 msgstr "忽略文件更新状态检查"
 
-#: builtin/rm.c:246
+#: builtin/rm.c:244
 msgid "allow recursive removal"
 msgstr "允许递归删除"
 
-#: builtin/rm.c:248
+#: builtin/rm.c:246
 msgid "exit with a zero status even if nothing matched"
 msgstr "即使没有匹配,也以零状态退出"
 
-#: builtin/rm.c:307
+#: builtin/rm.c:306
 #, c-format
 msgid "not removing '%s' recursively without -r"
 msgstr "未提供 -r 选项不会递归删除 '%s'"
 
-#: builtin/rm.c:346
+#: builtin/rm.c:345
 #, c-format
 msgid "git rm: unable to remove %s"
 msgstr "git rm:不能删除 %s"
 
-#: builtin/rm.c:369
+#: builtin/rm.c:368
 #, c-format
 msgid "could not remove '%s'"
 msgstr "无法删除 '%s'"
 
-#: builtin/send-pack.c:19
+#: builtin/send-pack.c:20
 msgid ""
 "git send-pack [--all | --mirror] [--dry-run] [--force] [--receive-pack=<git-"
 "receive-pack>] [--verbose] [--thin] [--atomic] [<host>:]<directory> "
@@ -13273,50 +13767,70 @@ msgstr ""
 "receive-pack>] [--verbose] [--thin] [--atomic] [<主机>:]<目录> [<引用>...]\n"
 "  --all 和明确的 <引用> 互斥。"
 
-#: builtin/send-pack.c:162
+#: builtin/send-pack.c:163
 msgid "remote name"
 msgstr "远程名称"
 
-#: builtin/send-pack.c:176
+#: builtin/send-pack.c:177
 msgid "use stateless RPC protocol"
 msgstr "使用无状态的 RPC 协议"
 
-#: builtin/send-pack.c:177
+#: builtin/send-pack.c:178
 msgid "read refs from stdin"
 msgstr "从标准输入读取引用"
 
-#: builtin/send-pack.c:178
+#: builtin/send-pack.c:179
 msgid "print status from remote helper"
 msgstr "打印来自远程 helper 的状态"
 
+#: builtin/serve.c:7
+msgid "git serve [<options>]"
+msgstr "git serve [<选项>]"
+
+#: builtin/serve.c:17 builtin/upload-pack.c:23
+msgid "quit after a single request/response exchange"
+msgstr "在一次单独的请求/响应之后退出"
+
+#: builtin/serve.c:19
+msgid "exit immediately after advertising capabilities"
+msgstr "在广告功能后立即退出"
+
 #: builtin/shortlog.c:14
-msgid "git shortlog [<options>] [<revision-range>] [[--] [<path>...]]"
-msgstr "git shortlog [<选项>] [<版本范围>] [[--] [<路径>...]]"
+msgid "git shortlog [<options>] [<revision-range>] [[--] <path>...]"
+msgstr "git shortlog [<选项>] [<版本范围>] [[--] <路径>...]"
+
+#: builtin/shortlog.c:15
+msgid "git log --pretty=short | git shortlog [<options>]"
+msgstr "git log --pretty=short | git shortlog [<选项>]"
 
-#: builtin/shortlog.c:263
+#: builtin/shortlog.c:264
 msgid "Group by committer rather than author"
 msgstr "按照提交者分组而不是作者"
 
-#: builtin/shortlog.c:265
+#: builtin/shortlog.c:266
 msgid "sort output according to the number of commits per author"
 msgstr "根据每个作者的提交数量排序"
 
-#: builtin/shortlog.c:267
+#: builtin/shortlog.c:268
 msgid "Suppress commit descriptions, only provides commit count"
 msgstr "隐藏提交说明,只提供提交数量"
 
-#: builtin/shortlog.c:269
+#: builtin/shortlog.c:270
 msgid "Show the email address of each author"
 msgstr "显示每个作者的电子邮件地址"
 
-#: builtin/shortlog.c:270
+#: builtin/shortlog.c:271
 msgid "w[,i1[,i2]]"
 msgstr "w[,i1[,i2]]"
 
-#: builtin/shortlog.c:271
+#: builtin/shortlog.c:272
 msgid "Linewrap output"
 msgstr "折行输出"
 
+#: builtin/shortlog.c:298
+msgid "too many arguments given outside repository"
+msgstr "仓库外执行提供了太多的参数"
+
 #: builtin/show-branch.c:12
 msgid ""
 "git show-branch [-a | --all] [-r | --remotes] [--topo-order | --date-order]\n"
@@ -13511,233 +14025,233 @@ msgstr "跳过和移除所有的注释行"
 msgid "prepend comment character and space to each line"
 msgstr "为每一行的行首添加注释符和空格"
 
-#: builtin/submodule--helper.c:35 builtin/submodule--helper.c:1669
+#: builtin/submodule--helper.c:37 builtin/submodule--helper.c:1688
 #, c-format
 msgid "No such ref: %s"
 msgstr "没有这样的引用:%s"
 
-#: builtin/submodule--helper.c:42 builtin/submodule--helper.c:1678
+#: builtin/submodule--helper.c:44 builtin/submodule--helper.c:1697
 #, c-format
 msgid "Expecting a full ref name, got %s"
 msgstr "期望一个完整的引用名称,却得到 %s"
 
-#: builtin/submodule--helper.c:59
+#: builtin/submodule--helper.c:61
 msgid "submodule--helper print-default-remote takes no arguments"
 msgstr "submodule--helper print-default-remote 不带参数"
 
-#: builtin/submodule--helper.c:96
+#: builtin/submodule--helper.c:98
 #, c-format
 msgid "cannot strip one component off url '%s'"
 msgstr "无法从 url '%s' 剥离一个组件"
 
-#: builtin/submodule--helper.c:404 builtin/submodule--helper.c:1198
+#: builtin/submodule--helper.c:406 builtin/submodule--helper.c:1211
 msgid "alternative anchor for relative paths"
 msgstr "相对路径的替代锚记(anchor)"
 
-#: builtin/submodule--helper.c:409
+#: builtin/submodule--helper.c:411
 msgid "git submodule--helper list [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper list [--prefix=<路径>] [<路径>...]"
 
-#: builtin/submodule--helper.c:460 builtin/submodule--helper.c:483
+#: builtin/submodule--helper.c:462 builtin/submodule--helper.c:485
 #, c-format
 msgid "No url found for submodule path '%s' in .gitmodules"
 msgstr "在 .gitmodules 中未找到子模组 '%s' 的 url"
 
-#: builtin/submodule--helper.c:498
+#: builtin/submodule--helper.c:500
 #, c-format
 msgid ""
 "could not lookup configuration '%s'. Assuming this repository is its own "
 "authoritative upstream."
 msgstr "无法找到配置 '%s'。假定这个仓库是其自身的官方上游。"
 
-#: builtin/submodule--helper.c:509
+#: builtin/submodule--helper.c:511
 #, c-format
 msgid "Failed to register url for submodule path '%s'"
 msgstr "无法为子模组 '%s' 注册 url"
 
-#: builtin/submodule--helper.c:513
+#: builtin/submodule--helper.c:515
 #, c-format
 msgid "Submodule '%s' (%s) registered for path '%s'\n"
 msgstr "子模组 '%s'(%s)未对路径 '%s' 注册\n"
 
 #
-#: builtin/submodule--helper.c:523
+#: builtin/submodule--helper.c:525
 #, c-format
 msgid "warning: command update mode suggested for submodule '%s'\n"
 msgstr "警告:建议子模组 '%s' 使用命令更新模式\n"
 
-#: builtin/submodule--helper.c:530
+#: builtin/submodule--helper.c:532
 #, c-format
 msgid "Failed to register update mode for submodule path '%s'"
 msgstr "无法为子模组 '%s' 注册更新模式"
 
-#: builtin/submodule--helper.c:552
+#: builtin/submodule--helper.c:554
 msgid "Suppress output for initializing a submodule"
 msgstr "阻止子模组初始化的输出"
 
-#: builtin/submodule--helper.c:557
+#: builtin/submodule--helper.c:559
 msgid "git submodule--helper init [<path>]"
 msgstr "git submodule--helper init [<路径>]"
 
-#: builtin/submodule--helper.c:625 builtin/submodule--helper.c:747
+#: builtin/submodule--helper.c:631 builtin/submodule--helper.c:757
 #, c-format
 msgid "no submodule mapping found in .gitmodules for path '%s'"
 msgstr "在 .gitmodules 中没有发现路径 '%s' 的子模组映射"
 
-#: builtin/submodule--helper.c:660
+#: builtin/submodule--helper.c:670
 #, c-format
 msgid "could not resolve HEAD ref inside the submodule '%s'"
 msgstr "无法解析子模组 '%s' 的 HEAD 引用"
 
-#: builtin/submodule--helper.c:687 builtin/submodule--helper.c:856
+#: builtin/submodule--helper.c:697 builtin/submodule--helper.c:866
 #, c-format
 msgid "failed to recurse into submodule '%s'"
 msgstr "无法递归子模组 '%s'"
 
-#: builtin/submodule--helper.c:711 builtin/submodule--helper.c:1021
+#: builtin/submodule--helper.c:721 builtin/submodule--helper.c:1031
 msgid "Suppress submodule status output"
 msgstr "阻止子模组状态输出"
 
-#: builtin/submodule--helper.c:712
+#: builtin/submodule--helper.c:722
 msgid ""
 "Use commit stored in the index instead of the one stored in the submodule "
 "HEAD"
 msgstr "使用存储在索引中的提交,而非存储在子模组 HEAD 中的提交"
 
-#: builtin/submodule--helper.c:713
+#: builtin/submodule--helper.c:723
 msgid "recurse into nested submodules"
 msgstr "递归进入嵌套子模组中"
 
-#: builtin/submodule--helper.c:718
+#: builtin/submodule--helper.c:728
 msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
 msgstr "git submodule status [--quiet] [--cached] [--recursive] [<路径>...]"
 
-#: builtin/submodule--helper.c:742
+#: builtin/submodule--helper.c:752
 msgid "git submodule--helper name <path>"
 msgstr "git submodule--helper name <路径>"
 
-#: builtin/submodule--helper.c:806
+#: builtin/submodule--helper.c:816
 #, c-format
 msgid "Synchronizing submodule url for '%s'\n"
 msgstr "为 '%s' 同步子模组 url\n"
 
-#: builtin/submodule--helper.c:812
+#: builtin/submodule--helper.c:822
 #, c-format
 msgid "failed to register url for submodule path '%s'"
 msgstr "无法为子模组路径 '%s' 注册 url"
 
-#: builtin/submodule--helper.c:826
+#: builtin/submodule--helper.c:836
 #, c-format
 msgid "failed to get the default remote for submodule '%s'"
 msgstr "无法得到子模组 '%s' 的默认远程关联"
 
-#: builtin/submodule--helper.c:837
+#: builtin/submodule--helper.c:847
 #, c-format
 msgid "failed to update remote for submodule '%s'"
 msgstr "无法为子模组 '%s' 更新远程关联"
 
-#: builtin/submodule--helper.c:885
+#: builtin/submodule--helper.c:895
 msgid "Suppress output of synchronizing submodule url"
 msgstr "阻止子模组 url 同步的输出"
 
-#: builtin/submodule--helper.c:887
+#: builtin/submodule--helper.c:897
 msgid "Recurse into nested submodules"
 msgstr "递归进入嵌套子模组中"
 
-#: builtin/submodule--helper.c:892
+#: builtin/submodule--helper.c:902
 msgid "git submodule--helper sync [--quiet] [--recursive] [<path>]"
 msgstr "git submodule--helper sync [--quiet] [--recursive] [<路径>]"
 
-#: builtin/submodule--helper.c:946
+#: builtin/submodule--helper.c:956
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains a .git directory (use 'rm -rf' if you "
 "really want to remove it including all of its history)"
 msgstr ""
-"子模组工作区 '%s' 包含一个 .git 目录(如果您确需删除它及其全部历史,使用 "
-"'rm -rf' 命令)"
+"子模组工作区 '%s' 包含一个 .git 目录(如果您确需删除它及其全部历史,使用 'rm "
+"-rf' 命令)"
 
-#: builtin/submodule--helper.c:958
+#: builtin/submodule--helper.c:968
 #, c-format
 msgid ""
 "Submodule work tree '%s' contains local modifications; use '-f' to discard "
 "them"
 msgstr "子模组工作区 '%s' 包含本地修改;使用 '-f' 丢弃它们"
 
-#: builtin/submodule--helper.c:966
+#: builtin/submodule--helper.c:976
 #, c-format
 msgid "Cleared directory '%s'\n"
 msgstr "已清除目录 '%s'\n"
 
-#: builtin/submodule--helper.c:968
+#: builtin/submodule--helper.c:978
 #, c-format
 msgid "Could not remove submodule work tree '%s'\n"
 msgstr "无法移除子模组工作区 '%s'\n"
 
-#: builtin/submodule--helper.c:977
+#: builtin/submodule--helper.c:987
 #, c-format
 msgid "could not create empty submodule directory %s"
 msgstr "不能创建空的子模组目录 %s"
 
-#: builtin/submodule--helper.c:993
+#: builtin/submodule--helper.c:1003
 #, c-format
 msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
 msgstr "子模组 '%s'(%s)未对路径 '%s' 注册\n"
 
-#: builtin/submodule--helper.c:1022
+#: builtin/submodule--helper.c:1032
 msgid "Remove submodule working trees even if they contain local changes"
 msgstr "删除子模组工作区,即使包含本地修改"
 
-#: builtin/submodule--helper.c:1023
+#: builtin/submodule--helper.c:1033
 msgid "Unregister all submodules"
 msgstr "将所有子模组取消注册"
 
-#: builtin/submodule--helper.c:1028
+#: builtin/submodule--helper.c:1038
 msgid ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
 msgstr ""
 "git submodule deinit [--quiet] [-f | --force] [--all | [--] [<路径>...]]"
 
-#: builtin/submodule--helper.c:1042
+#: builtin/submodule--helper.c:1052
 msgid "Use '--all' if you really want to deinitialize all submodules"
 msgstr "如果您确实想要对所有子模组执行取消初始化,请使用 '--all'"
 
-#: builtin/submodule--helper.c:1133 builtin/submodule--helper.c:1136
+#: builtin/submodule--helper.c:1145 builtin/submodule--helper.c:1148
 #, c-format
 msgid "submodule '%s' cannot add alternate: %s"
 msgstr "子模组 '%s' 不能添加仓库备选:%s"
 
-#: builtin/submodule--helper.c:1172
+#: builtin/submodule--helper.c:1184
 #, c-format
 msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
 msgstr "不能识别 submodule.alternateErrorStrategy 的取值 '%s'"
 
-#: builtin/submodule--helper.c:1179
+#: builtin/submodule--helper.c:1191
 #, c-format
 msgid "Value '%s' for submodule.alternateLocation is not recognized"
 msgstr "不能识别 submodule.alternateLocaion 的取值 '%s'"
 
-#: builtin/submodule--helper.c:1201
+#: builtin/submodule--helper.c:1214
 msgid "where the new submodule will be cloned to"
 msgstr "新的子模组将要克隆的路径"
 
-#: builtin/submodule--helper.c:1204
+#: builtin/submodule--helper.c:1217
 msgid "name of the new submodule"
 msgstr "新子模组的名称"
 
-#: builtin/submodule--helper.c:1207
+#: builtin/submodule--helper.c:1220
 msgid "url where to clone the submodule from"
 msgstr "克隆子模组的 url 地址"
 
-#: builtin/submodule--helper.c:1213
+#: builtin/submodule--helper.c:1228
 msgid "depth for shallow clones"
 msgstr "浅克隆的深度"
 
-#: builtin/submodule--helper.c:1216 builtin/submodule--helper.c:1587
+#: builtin/submodule--helper.c:1231 builtin/submodule--helper.c:1606
 msgid "force cloning progress"
 msgstr "强制显示克隆进度"
 
-#: builtin/submodule--helper.c:1221
+#: builtin/submodule--helper.c:1236
 msgid ""
 "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
 "<repository>] [--name <name>] [--depth <depth>] --url <url> --path <path>"
@@ -13745,102 +14259,102 @@ msgstr ""
 "git submodule--helper clone [--prefix=<路径>] [--quiet] [--reference <仓库>] "
 "[--name <名字>] [--depth <深度>] --url <url> --path <路径>"
 
-#: builtin/submodule--helper.c:1252
+#: builtin/submodule--helper.c:1267
 #, c-format
 msgid "clone of '%s' into submodule path '%s' failed"
 msgstr "无法克隆 '%s' 到子模组路径 '%s'"
 
-#: builtin/submodule--helper.c:1267
+#: builtin/submodule--helper.c:1281
 #, c-format
 msgid "could not get submodule directory for '%s'"
 msgstr "无法得到 '%s' 的子模组目录"
 
-#: builtin/submodule--helper.c:1332
+#: builtin/submodule--helper.c:1347
 #, c-format
 msgid "Submodule path '%s' not initialized"
 msgstr "子模组 '%s' 尚未初始化"
 
-#: builtin/submodule--helper.c:1336
+#: builtin/submodule--helper.c:1351
 msgid "Maybe you want to use 'update --init'?"
 msgstr "也许您想要执行 'update --init'?"
 
-#: builtin/submodule--helper.c:1365
+#: builtin/submodule--helper.c:1380
 #, c-format
 msgid "Skipping unmerged submodule %s"
 msgstr "略过未合并的子模组 %s"
 
-#: builtin/submodule--helper.c:1394
+#: builtin/submodule--helper.c:1409
 #, c-format
 msgid "Skipping submodule '%s'"
 msgstr "略过子模组 '%s'"
 
-#: builtin/submodule--helper.c:1527
+#: builtin/submodule--helper.c:1544
 #, c-format
 msgid "Failed to clone '%s'. Retry scheduled"
 msgstr "克隆 '%s' 失败。按计划重试"
 
-#: builtin/submodule--helper.c:1538
+#: builtin/submodule--helper.c:1555
 #, c-format
 msgid "Failed to clone '%s' a second time, aborting"
 msgstr "第二次尝试克隆 '%s' 失败,退出"
 
-#: builtin/submodule--helper.c:1568 builtin/submodule--helper.c:1788
+#: builtin/submodule--helper.c:1585 builtin/submodule--helper.c:1808
 msgid "path into the working tree"
 msgstr "到工作区的路径"
 
-#: builtin/submodule--helper.c:1571
+#: builtin/submodule--helper.c:1588
 msgid "path into the working tree, across nested submodule boundaries"
 msgstr "工作区中的路径,递归嵌套子模组"
 
-#: builtin/submodule--helper.c:1575
+#: builtin/submodule--helper.c:1592
 msgid "rebase, merge, checkout or none"
 msgstr "rebase、merge、checkout 或 none"
 
-#: builtin/submodule--helper.c:1579
+#: builtin/submodule--helper.c:1598
 msgid "Create a shallow clone truncated to the specified number of revisions"
 msgstr "创建一个指定深度的浅克隆"
 
-#: builtin/submodule--helper.c:1582
+#: builtin/submodule--helper.c:1601
 msgid "parallel jobs"
 msgstr "并发任务"
 
-#: builtin/submodule--helper.c:1584
+#: builtin/submodule--helper.c:1603
 msgid "whether the initial clone should follow the shallow recommendation"
 msgstr "初始克隆是否应该遵守推荐的浅克隆选项"
 
-#: builtin/submodule--helper.c:1585
+#: builtin/submodule--helper.c:1604
 msgid "don't print cloning progress"
 msgstr "不要输出克隆进度"
 
-#: builtin/submodule--helper.c:1592
+#: builtin/submodule--helper.c:1611
 msgid "git submodule--helper update_clone [--prefix=<path>] [<path>...]"
 msgstr "git submodule--helper update_clone [--prefix=<路径>] [<路径>...]"
 
-#: builtin/submodule--helper.c:1605
+#: builtin/submodule--helper.c:1624
 msgid "bad value for update parameter"
 msgstr "update 参数取值错误"
 
-#: builtin/submodule--helper.c:1673
+#: builtin/submodule--helper.c:1692
 #, c-format
 msgid ""
 "Submodule (%s) branch configured to inherit branch from superproject, but "
 "the superproject is not on any branch"
 msgstr "子模组(%s)的分支配置为继承上级项目的分支,但是上级项目不在任何分支上"
 
-#: builtin/submodule--helper.c:1789
+#: builtin/submodule--helper.c:1809
 msgid "recurse into submodules"
 msgstr "在子模组中递归"
 
-#: builtin/submodule--helper.c:1795
+#: builtin/submodule--helper.c:1815
 msgid "git submodule--helper embed-git-dir [<path>...]"
 msgstr "git submodule--helper embed-git-dir [<路径>...]"
 
-#: builtin/submodule--helper.c:1857
+#: builtin/submodule--helper.c:1901
 #, c-format
 msgid "%s doesn't support --super-prefix"
 msgstr "%s 不支持 --super-prefix"
 
-#: builtin/submodule--helper.c:1863
+#: builtin/submodule--helper.c:1907
 #, c-format
 msgid "'%s' is not a valid submodule--helper subcommand"
 msgstr "'%s' 不是一个有效的 submodule--helper 子命令"
@@ -13908,7 +14422,7 @@ msgstr "未发现标签 '%s'。"
 msgid "Deleted tag '%s' (was %s)\n"
 msgstr "已删除标签 '%s'(曾为 %s)\n"
 
-#: builtin/tag.c:131
+#: builtin/tag.c:132
 #, c-format
 msgid ""
 "\n"
@@ -13921,7 +14435,7 @@ msgstr ""
 "  %s\n"
 "以 '%c' 开头的行将被忽略。\n"
 
-#: builtin/tag.c:135
+#: builtin/tag.c:136
 #, c-format
 msgid ""
 "\n"
@@ -13935,146 +14449,146 @@ msgstr ""
 "  %s\n"
 "以 '%c' 开头的行将被保留,如果您愿意也可以删除它们。\n"
 
-#: builtin/tag.c:189
+#: builtin/tag.c:190
 msgid "unable to sign the tag"
 msgstr "无法签署标签"
 
-#: builtin/tag.c:191
+#: builtin/tag.c:192
 msgid "unable to write tag file"
 msgstr "无法写标签文件"
 
-#: builtin/tag.c:216
+#: builtin/tag.c:217
 msgid "bad object type."
 msgstr "坏的对象类型。"
 
-#: builtin/tag.c:265
+#: builtin/tag.c:266
 msgid "no tag message?"
 msgstr "无标签说明?"
 
-#: builtin/tag.c:272
+#: builtin/tag.c:273
 #, c-format
 msgid "The tag message has been left in %s\n"
 msgstr "标签说明被保留在 %s\n"
 
-#: builtin/tag.c:381
+#: builtin/tag.c:382
 msgid "list tag names"
 msgstr "列出标签名称"
 
-#: builtin/tag.c:383
+#: builtin/tag.c:384
 msgid "print <n> lines of each tag message"
 msgstr "每个标签信息打印 <n> 行"
 
-#: builtin/tag.c:385
+#: builtin/tag.c:386
 msgid "delete tags"
 msgstr "删除标签"
 
-#: builtin/tag.c:386
+#: builtin/tag.c:387
 msgid "verify tags"
 msgstr "验证标签"
 
-#: builtin/tag.c:388
+#: builtin/tag.c:389
 msgid "Tag creation options"
 msgstr "标签创建选项"
 
-#: builtin/tag.c:390
+#: builtin/tag.c:391
 msgid "annotated tag, needs a message"
 msgstr "附注标签,需要一个说明"
 
-#: builtin/tag.c:392
+#: builtin/tag.c:393
 msgid "tag message"
 msgstr "标签说明"
 
-#: builtin/tag.c:394
+#: builtin/tag.c:395
 msgid "force edit of tag message"
 msgstr "强制编辑标签说明"
 
-#: builtin/tag.c:395
+#: builtin/tag.c:396
 msgid "annotated and GPG-signed tag"
 msgstr "附注并附加 GPG 签名的标签"
 
-#: builtin/tag.c:399
+#: builtin/tag.c:400
 msgid "use another key to sign the tag"
 msgstr "使用另外的私钥签名该标签"
 
-#: builtin/tag.c:400
+#: builtin/tag.c:401
 msgid "replace the tag if exists"
 msgstr "如果存在,替换现有的标签"
 
-#: builtin/tag.c:401 builtin/update-ref.c:368
+#: builtin/tag.c:402 builtin/update-ref.c:368
 msgid "create a reflog"
 msgstr "创建引用日志"
 
-#: builtin/tag.c:403
+#: builtin/tag.c:404
 msgid "Tag listing options"
 msgstr "标签列表选项"
 
-#: builtin/tag.c:404
+#: builtin/tag.c:405
 msgid "show tag list in columns"
 msgstr "以列的方式显示标签列表"
 
-#: builtin/tag.c:405 builtin/tag.c:407
+#: builtin/tag.c:406 builtin/tag.c:408
 msgid "print only tags that contain the commit"
 msgstr "只打印包含该提交的标签"
 
-#: builtin/tag.c:406 builtin/tag.c:408
+#: builtin/tag.c:407 builtin/tag.c:409
 msgid "print only tags that don't contain the commit"
 msgstr "只打印不包含该提交的标签"
 
-#: builtin/tag.c:409
+#: builtin/tag.c:410
 msgid "print only tags that are merged"
 msgstr "只打印已经合并的标签"
 
-#: builtin/tag.c:410
+#: builtin/tag.c:411
 msgid "print only tags that are not merged"
 msgstr "只打印尚未合并的标签"
 
-#: builtin/tag.c:415
+#: builtin/tag.c:416
 msgid "print only tags of the object"
 msgstr "只打印指向该对象的标签"
 
-#: builtin/tag.c:459
+#: builtin/tag.c:460
 msgid "--column and -n are incompatible"
 msgstr "--column 和 -n 不兼容"
 
-#: builtin/tag.c:481
+#: builtin/tag.c:482
 msgid "-n option is only allowed in list mode"
 msgstr "-n 选项只允许用在列表显示模式"
 
-#: builtin/tag.c:483
+#: builtin/tag.c:484
 msgid "--contains option is only allowed in list mode"
 msgstr "--contains 选项只允许用在列表显示模式"
 
-#: builtin/tag.c:485
+#: builtin/tag.c:486
 msgid "--no-contains option is only allowed in list mode"
 msgstr "--no-contains 选项只允许用在列表显示模式"
 
-#: builtin/tag.c:487
+#: builtin/tag.c:488
 msgid "--points-at option is only allowed in list mode"
 msgstr "--points-at 选项只允许用在列表显示模式"
 
-#: builtin/tag.c:489
+#: builtin/tag.c:490
 msgid "--merged and --no-merged options are only allowed in list mode"
 msgstr "--merged 和 --no-merged 选项只允许用在列表显示模式"
 
-#: builtin/tag.c:500
+#: builtin/tag.c:501
 msgid "only one -F or -m option is allowed."
 msgstr "只允许一个 -F 或 -m 选项。"
 
-#: builtin/tag.c:519
+#: builtin/tag.c:520
 msgid "too many params"
 msgstr "太多参数"
 
-#: builtin/tag.c:525
+#: builtin/tag.c:526
 #, c-format
 msgid "'%s' is not a valid tag name."
 msgstr "'%s' 不是一个有效的标签名称。"
 
-#: builtin/tag.c:530
+#: builtin/tag.c:531
 #, c-format
 msgid "tag '%s' already exists"
 msgstr "标签 '%s' 已存在"
 
-#: builtin/tag.c:561
+#: builtin/tag.c:562
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
 msgstr "已更新标签 '%s'(曾为 %s)\n"
@@ -14141,157 +14655,157 @@ msgstr "删除一个目录后,目录的状态信息未改变"
 msgid " OK"
 msgstr " OK"
 
-#: builtin/update-index.c:579
+#: builtin/update-index.c:589
 msgid "git update-index [<options>] [--] [<file>...]"
 msgstr "git update-index [<选项>] [--] [<文件>...]"
 
-#: builtin/update-index.c:936
+#: builtin/update-index.c:946
 msgid "continue refresh even when index needs update"
 msgstr "当索引需要更新时继续刷新"
 
-#: builtin/update-index.c:939
+#: builtin/update-index.c:949
 msgid "refresh: ignore submodules"
 msgstr "刷新:忽略子模组"
 
-#: builtin/update-index.c:942
+#: builtin/update-index.c:952
 msgid "do not ignore new files"
 msgstr "不忽略新的文件"
 
-#: builtin/update-index.c:944
+#: builtin/update-index.c:954
 msgid "let files replace directories and vice-versa"
 msgstr "让文件替换目录(反之亦然)"
 
-#: builtin/update-index.c:946
+#: builtin/update-index.c:956
 msgid "notice files missing from worktree"
 msgstr "通知文件从工作区丢失"
 
-#: builtin/update-index.c:948
+#: builtin/update-index.c:958
 msgid "refresh even if index contains unmerged entries"
 msgstr "即使索引区包含未合并的条目也执行刷新"
 
-#: builtin/update-index.c:951
+#: builtin/update-index.c:961
 msgid "refresh stat information"
 msgstr "刷新统计信息"
 
-#: builtin/update-index.c:955
+#: builtin/update-index.c:965
 msgid "like --refresh, but ignore assume-unchanged setting"
 msgstr "类似于 --refresh,但是忽略 assume-unchanged 设置"
 
-#: builtin/update-index.c:959
+#: builtin/update-index.c:969
 msgid "<mode>,<object>,<path>"
 msgstr "<存取模式>,<对象>,<路径>"
 
-#: builtin/update-index.c:960
+#: builtin/update-index.c:970
 msgid "add the specified entry to the index"
 msgstr "添加指定的条目到索引区"
 
-#: builtin/update-index.c:969
+#: builtin/update-index.c:979
 msgid "mark files as \"not changing\""
 msgstr "把文件标记为 \"没有变更\""
 
-#: builtin/update-index.c:972
+#: builtin/update-index.c:982
 msgid "clear assumed-unchanged bit"
 msgstr "清除 assumed-unchanged 位"
 
-#: builtin/update-index.c:975
+#: builtin/update-index.c:985
 msgid "mark files as \"index-only\""
 msgstr "把文件标记为 \"仅索引\""
 
-#: builtin/update-index.c:978
+#: builtin/update-index.c:988
 msgid "clear skip-worktree bit"
 msgstr "清除 skip-worktree 位"
 
-#: builtin/update-index.c:981
+#: builtin/update-index.c:991
 msgid "add to index only; do not add content to object database"
 msgstr "只添加到索引区;不添加对象到对象库"
 
-#: builtin/update-index.c:983
+#: builtin/update-index.c:993
 msgid "remove named paths even if present in worktree"
 msgstr "即使存在工作区里,也删除路径"
 
-#: builtin/update-index.c:985
+#: builtin/update-index.c:995
 msgid "with --stdin: input lines are terminated by null bytes"
 msgstr "携带 --stdin:输入的行以 null 字符终止"
 
-#: builtin/update-index.c:987
+#: builtin/update-index.c:997
 msgid "read list of paths to be updated from standard input"
 msgstr "从标准输入中读取需要更新的路径列表"
 
-#: builtin/update-index.c:991
+#: builtin/update-index.c:1001
 msgid "add entries from standard input to the index"
 msgstr "从标准输入添加条目到索引区"
 
-#: builtin/update-index.c:995
+#: builtin/update-index.c:1005
 msgid "repopulate stages #2 and #3 for the listed paths"
 msgstr "为指定文件重新生成第2和第3暂存区"
 
-#: builtin/update-index.c:999
+#: builtin/update-index.c:1009
 msgid "only update entries that differ from HEAD"
 msgstr "只更新与 HEAD 不同的条目"
 
-#: builtin/update-index.c:1003
+#: builtin/update-index.c:1013
 msgid "ignore files missing from worktree"
 msgstr "忽略工作区丢失的文件"
 
-#: builtin/update-index.c:1006
+#: builtin/update-index.c:1016
 msgid "report actions to standard output"
 msgstr "在标准输出显示操作"
 
-#: builtin/update-index.c:1008
+#: builtin/update-index.c:1018
 msgid "(for porcelains) forget saved unresolved conflicts"
 msgstr "(for porcelains) 忘记保存的未解决的冲突"
 
-#: builtin/update-index.c:1012
+#: builtin/update-index.c:1022
 msgid "write index in this format"
 msgstr "以这种格式写入索引区"
 
-#: builtin/update-index.c:1014
+#: builtin/update-index.c:1024
 msgid "enable or disable split index"
 msgstr "启用或禁用索引拆分"
 
-#: builtin/update-index.c:1016
+#: builtin/update-index.c:1026
 msgid "enable/disable untracked cache"
 msgstr "启用/禁用对未跟踪文件的缓存"
 
-#: builtin/update-index.c:1018
+#: builtin/update-index.c:1028
 msgid "test if the filesystem supports untracked cache"
 msgstr "测试文件系统是否支持未跟踪文件缓存"
 
-#: builtin/update-index.c:1020
+#: builtin/update-index.c:1030
 msgid "enable untracked cache without testing the filesystem"
 msgstr "无需检测文件系统,启用对未跟踪文件的缓存"
 
-#: builtin/update-index.c:1022
+#: builtin/update-index.c:1032
 msgid "write out the index even if is not flagged as changed"
 msgstr "即使没有被标记为已更改,也要写出索引"
 
-#: builtin/update-index.c:1024
+#: builtin/update-index.c:1034
 msgid "enable or disable file system monitor"
 msgstr "启用或禁用文件系统监控"
 
-#: builtin/update-index.c:1026
+#: builtin/update-index.c:1036
 msgid "mark files as fsmonitor valid"
 msgstr "标记文件为 fsmonitor 有效"
 
-#: builtin/update-index.c:1029
+#: builtin/update-index.c:1039
 msgid "clear fsmonitor valid bit"
 msgstr "清除 fsmonitor 有效位"
 
-#: builtin/update-index.c:1127
+#: builtin/update-index.c:1138
 msgid ""
 "core.splitIndex is set to false; remove or change it, if you really want to "
 "enable split index"
 msgstr ""
 "core.splitIndex 被设置为 false。如果您确实要启用索引拆分,请删除或修改它。"
 
-#: builtin/update-index.c:1136
+#: builtin/update-index.c:1147
 msgid ""
 "core.splitIndex is set to true; remove or change it, if you really want to "
 "disable split index"
 msgstr ""
 "core.splitIndex 被设置为 true。如果您确实要禁用索引拆分,请删除或修改它。"
 
-#: builtin/update-index.c:1147
+#: builtin/update-index.c:1158
 msgid ""
 "core.untrackedCache is set to true; remove or change it, if you really want "
 "to disable the untracked cache"
@@ -14299,11 +14813,11 @@ msgstr ""
 "core.untrackedCache 被设置为 true。如果您确实要禁用未跟踪文件缓存,请删除或修"
 "改它。"
 
-#: builtin/update-index.c:1151
+#: builtin/update-index.c:1162
 msgid "Untracked cache disabled"
 msgstr "缓存未跟踪文件被禁用"
 
-#: builtin/update-index.c:1159
+#: builtin/update-index.c:1170
 msgid ""
 "core.untrackedCache is set to false; remove or change it, if you really want "
 "to enable the untracked cache"
@@ -14311,25 +14825,25 @@ msgstr ""
 "core.untrackedCache 被设置为 false。如果您确实要启用未跟踪文件缓存,请删除或"
 "修改它。"
 
-#: builtin/update-index.c:1163
+#: builtin/update-index.c:1174
 #, c-format
 msgid "Untracked cache enabled for '%s'"
 msgstr "缓存未跟踪文件在 '%s' 启用"
 
-#: builtin/update-index.c:1171
+#: builtin/update-index.c:1182
 msgid "core.fsmonitor is unset; set it if you really want to enable fsmonitor"
 msgstr "core.fsmonitor 未设置;如果想要启用 fsmonitor 请设置该选项"
 
-#: builtin/update-index.c:1175
+#: builtin/update-index.c:1186
 msgid "fsmonitor enabled"
 msgstr "fsmonitor 被启用"
 
-#: builtin/update-index.c:1178
+#: builtin/update-index.c:1189
 msgid ""
 "core.fsmonitor is set; remove it if you really want to disable fsmonitor"
 msgstr "core.fsmonitor 已设置;如果想要禁用 fsmonitor 请移除该选项"
 
-#: builtin/update-index.c:1182
+#: builtin/update-index.c:1193
 msgid "fsmonitor disabled"
 msgstr "fsmonitor 被禁用"
 
@@ -14369,6 +14883,22 @@ msgstr "git update-server-info [--force]"
 msgid "update the info files from scratch"
 msgstr "从头开始更新文件信息"
 
+#: builtin/upload-pack.c:11
+msgid "git upload-pack [<options>] <dir>"
+msgstr "git upload-pack [<选项>] <目录>"
+
+#: builtin/upload-pack.c:25
+msgid "exit immediately after initial ref advertisement"
+msgstr "在初始的引用广告后立即退出"
+
+#: builtin/upload-pack.c:27
+msgid "do not try <directory>/.git/ if <directory> is no Git directory"
+msgstr "如果 <目录> 不是一个 Git 目录,不要尝试 <目录>/.git/"
+
+#: builtin/upload-pack.c:29
+msgid "interrupt transfer after <n> seconds of inactivity"
+msgstr "不活动 <n> 秒钟后终止传输"
+
 #: builtin/verify-commit.c:18
 msgid "git verify-commit [-v | --verbose] <commit>..."
 msgstr "git verify-commit [-v | --verbose] <提交>..."
@@ -14429,198 +14959,213 @@ msgstr "git worktree remove [<选项>] <工作区>"
 msgid "git worktree unlock <path>"
 msgstr "git worktree unlock <路径>"
 
-#: builtin/worktree.c:60
+#: builtin/worktree.c:58
 #, c-format
 msgid "Removing worktrees/%s: not a valid directory"
 msgstr "删除工作区/%s:不是一个有效的目录"
 
-#: builtin/worktree.c:66
+#: builtin/worktree.c:64
 #, c-format
 msgid "Removing worktrees/%s: gitdir file does not exist"
 msgstr "删除 worktrees/%s:gitdir 文件不存在"
 
-#: builtin/worktree.c:71 builtin/worktree.c:80
+#: builtin/worktree.c:69 builtin/worktree.c:78
 #, c-format
 msgid "Removing worktrees/%s: unable to read gitdir file (%s)"
 msgstr "删除 worktrees/%s:无法读取 gitdir 文件 (%s)"
 
-#: builtin/worktree.c:90
+#: builtin/worktree.c:88
 #, c-format
 msgid ""
 "Removing worktrees/%s: short read (expected %<PRIuMAX> bytes, read "
 "%<PRIuMAX>)"
 msgstr "删除工作树/%s:读取过短(期望 %<PRIuMAX> 字节,读取 %<PRIuMAX>)"
 
-#: builtin/worktree.c:98
+#: builtin/worktree.c:96
 #, c-format
 msgid "Removing worktrees/%s: invalid gitdir file"
 msgstr "删除 worktrees/%s:无效的 gitdir 文件"
 
-#: builtin/worktree.c:114
+#: builtin/worktree.c:105
 #, c-format
 msgid "Removing worktrees/%s: gitdir file points to non-existent location"
 msgstr "删除 worktrees/%s:gitdir 文件的指向不存在"
 
-#: builtin/worktree.c:161
+#: builtin/worktree.c:152
 msgid "report pruned working trees"
 msgstr "报告清除的工作区"
 
-#: builtin/worktree.c:163
+#: builtin/worktree.c:154
 msgid "expire working trees older than <time>"
 msgstr "将早于 <时间> 的工作区过期"
 
-#: builtin/worktree.c:238
+#: builtin/worktree.c:229
 #, c-format
 msgid "'%s' already exists"
 msgstr "'%s' 已经存在"
 
-#: builtin/worktree.c:269
+#: builtin/worktree.c:260
 #, c-format
 msgid "could not create directory of '%s'"
 msgstr "不能创建目录 '%s'"
 
-#: builtin/worktree.c:308
+#: builtin/worktree.c:373 builtin/worktree.c:379
+#, c-format
+msgid "Preparing worktree (new branch '%s')"
+msgstr "准备工作区(新分支 '%s')"
+
+#: builtin/worktree.c:375
+#, c-format
+msgid "Preparing worktree (resetting branch '%s'; was at %s)"
+msgstr "准备工作区(重置分支 '%s',之前为 %s)"
+
+#: builtin/worktree.c:384
+#, c-format
+msgid "Preparing worktree (checking out '%s')"
+msgstr "准备工作区(检出 '%s')"
+
+#: builtin/worktree.c:390
 #, c-format
-msgid "Preparing %s (identifier %s)"
-msgstr "准备 %s(标识符 %s)"
+msgid "Preparing worktree (detached HEAD %s)"
+msgstr "准备工作区(分离头指针 %s)"
 
-#: builtin/worktree.c:385
+#: builtin/worktree.c:431
 msgid "checkout <branch> even if already checked out in other worktree"
 msgstr "检出 <分支>,即使已经被检出到其它工作区"
 
-#: builtin/worktree.c:388
+#: builtin/worktree.c:434
 msgid "create a new branch"
 msgstr "创建一个新分支"
 
-#: builtin/worktree.c:390
+#: builtin/worktree.c:436
 msgid "create or reset a branch"
 msgstr "创建或重置一个分支"
 
-#: builtin/worktree.c:392
+#: builtin/worktree.c:438
 msgid "populate the new working tree"
 msgstr "生成新的工作区"
 
-#: builtin/worktree.c:393
+#: builtin/worktree.c:439
 msgid "keep the new working tree locked"
 msgstr "锁定新工作区"
 
-#: builtin/worktree.c:395
+#: builtin/worktree.c:441
 msgid "set up tracking mode (see git-branch(1))"
 msgstr "设置跟踪模式(参见 git-branch(1))"
 
-#: builtin/worktree.c:398
+#: builtin/worktree.c:444
 msgid "try to match the new branch name with a remote-tracking branch"
 msgstr "尝试为新分支名匹配一个远程跟踪分支"
 
-#: builtin/worktree.c:406
+#: builtin/worktree.c:452
 msgid "-b, -B, and --detach are mutually exclusive"
 msgstr "-b、-B 和 --detach 是互斥的"
 
-#: builtin/worktree.c:471
+#: builtin/worktree.c:511
 msgid "--[no-]track can only be used if a new branch is created"
 msgstr "只能在创建新分支时使用选项 --[no-]track "
 
-#: builtin/worktree.c:571
+#: builtin/worktree.c:611
 msgid "reason for locking"
 msgstr "锁定原因"
 
-#: builtin/worktree.c:583 builtin/worktree.c:616 builtin/worktree.c:670
-#: builtin/worktree.c:809
+#: builtin/worktree.c:623 builtin/worktree.c:656 builtin/worktree.c:710
+#: builtin/worktree.c:850
 #, c-format
 msgid "'%s' is not a working tree"
 msgstr "'%s' 不是一个工作区"
 
-#: builtin/worktree.c:585 builtin/worktree.c:618
+#: builtin/worktree.c:625 builtin/worktree.c:658
 msgid "The main working tree cannot be locked or unlocked"
 msgstr "主工作区无法被加锁或解锁"
 
-#: builtin/worktree.c:590
+#: builtin/worktree.c:630
 #, c-format
 msgid "'%s' is already locked, reason: %s"
 msgstr "'%s' 已被锁定,原因:%s"
 
-#: builtin/worktree.c:592
+#: builtin/worktree.c:632
 #, c-format
 msgid "'%s' is already locked"
 msgstr "'%s' 已被锁定"
 
-#: builtin/worktree.c:620
+#: builtin/worktree.c:660
 #, c-format
 msgid "'%s' is not locked"
 msgstr "'%s' 未被锁定"
 
-#: builtin/worktree.c:645
+#: builtin/worktree.c:685
 msgid "working trees containing submodules cannot be moved or removed"
 msgstr "不能移动或删除包含子模组的工作区"
 
-#: builtin/worktree.c:672 builtin/worktree.c:811
+#: builtin/worktree.c:712 builtin/worktree.c:852
 #, c-format
 msgid "'%s' is a main working tree"
 msgstr "'%s' 是一个主工作区"
 
-#: builtin/worktree.c:677
+#: builtin/worktree.c:717
 #, c-format
 msgid "could not figure out destination name from '%s'"
 msgstr "无法从 '%s' 算出目标名称"
 
-#: builtin/worktree.c:683
+#: builtin/worktree.c:723
 #, c-format
 msgid "target '%s' already exists"
 msgstr "目标 '%s' 已存在"
 
-#: builtin/worktree.c:690
+#: builtin/worktree.c:730
 #, c-format
 msgid "cannot move a locked working tree, lock reason: %s"
 msgstr "无法移动一个锁定的工作区,锁定原因:%s"
 
-#: builtin/worktree.c:692
+#: builtin/worktree.c:732
 msgid "cannot move a locked working tree"
 msgstr "无法移动一个锁定的工作区"
 
-#: builtin/worktree.c:695
+#: builtin/worktree.c:735
 #, c-format
 msgid "validation failed, cannot move working tree: %s"
 msgstr "验证失败,无法移动工作区:%s"
 
-#: builtin/worktree.c:700
+#: builtin/worktree.c:740
 #, c-format
 msgid "failed to move '%s' to '%s'"
 msgstr "无法移动 '%s' 到 '%s'"
 
-#: builtin/worktree.c:748
+#: builtin/worktree.c:788
 #, c-format
 msgid "failed to run 'git status' on '%s'"
 msgstr "无法在 '%s' 中执行 'git status'"
 
-#: builtin/worktree.c:752
+#: builtin/worktree.c:792
 #, c-format
 msgid "'%s' is dirty, use --force to delete it"
 msgstr "'%s' 是脏的,使用 --force 删除"
 
-#: builtin/worktree.c:757
+#: builtin/worktree.c:797
 #, c-format
 msgid "failed to run 'git status' on '%s', code %d"
 msgstr "无法在 '%s' 中执行 'git status',退出码 %d"
 
-#: builtin/worktree.c:768 builtin/worktree.c:782
+#: builtin/worktree.c:808 builtin/worktree.c:822
 #, c-format
 msgid "failed to delete '%s'"
 msgstr "无法删除 '%s'"
 
-#: builtin/worktree.c:794
+#: builtin/worktree.c:834
 msgid "force removing even if the worktree is dirty"
 msgstr "强制删除,即使工作区是脏的"
 
-#: builtin/worktree.c:815
+#: builtin/worktree.c:856
 #, c-format
 msgid "cannot remove a locked working tree, lock reason: %s"
 msgstr "无法删除一个锁定的工作区,锁定原因:%s"
 
-#: builtin/worktree.c:817
+#: builtin/worktree.c:858
 msgid "cannot remove a locked working tree"
 msgstr "无法删除一个锁定的工作区"
 
-#: builtin/worktree.c:820
+#: builtin/worktree.c:861
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
 msgstr "验证失败,无法删除工作区:%s"
@@ -14641,26 +15186,6 @@ msgstr "将 <前缀> 子目录内容写到一个树对象"
 msgid "only useful for debugging"
 msgstr "只对调试有用"
 
-#: upload-pack.c:27
-msgid "git upload-pack [<options>] <dir>"
-msgstr "git upload-pack [<选项>] <目录>"
-
-#: upload-pack.c:1070
-msgid "quit after a single request/response exchange"
-msgstr "在一次单独的请求/响应(request/response)交换后退出"
-
-#: upload-pack.c:1072
-msgid "exit immediately after initial ref advertisement"
-msgstr "在初始的引用广告后立即退出"
-
-#: upload-pack.c:1074
-msgid "do not try <directory>/.git/ if <directory> is no Git directory"
-msgstr "如果 <目录> 不是一个 Git 目录,不要尝试 <目录>/.git/"
-
-#: upload-pack.c:1076
-msgid "interrupt transfer after <n> seconds of inactivity"
-msgstr "不活动 <n> 秒钟后终止传输"
-
 #: credential-cache--daemon.c:222
 #, c-format
 msgid ""
@@ -14678,21 +15203,23 @@ msgstr ""
 msgid "print debugging messages to stderr"
 msgstr "调试信息输出到标准错误"
 
-#: git.c:8
+#: git.c:27
 msgid ""
 "git [--version] [--help] [-C <path>] [-c <name>=<value>]\n"
 "           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
-"           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]\n"
+"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
+"bare]\n"
 "           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
 "           <command> [<args>]"
 msgstr ""
-"git [--version] [--help] [-C <path>] [-c <键名>=<值>]\n"
+"git [--version] [--help] [-C <路径>] [-c <名称>=<取值>]\n"
 "           [--exec-path[=<路径>]] [--html-path] [--man-path] [--info-path]\n"
-"           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]\n"
+"           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--"
+"bare]\n"
 "           [--git-dir=<路径>] [--work-tree=<路径>] [--namespace=<名称>]\n"
 "           <命令> [<参数>]"
 
-#: git.c:15
+#: git.c:34
 msgid ""
 "'git help -a' and 'git help -g' list available subcommands and some\n"
 "concept guides. See 'git help <command>' or 'git help <concept>'\n"
@@ -14702,65 +15229,65 @@ msgstr ""
 "查看 'git help <命令>' 或 'git help <概念>' 以获取给定子命令或概念的\n"
 "帮助。"
 
-#: git.c:95
+#: git.c:173
 #, c-format
 msgid "no directory given for --git-dir\n"
 msgstr "没有为 --git-dir 提供目录\n"
 
-#: git.c:109
+#: git.c:187
 #, c-format
 msgid "no namespace given for --namespace\n"
 msgstr "没有为 --namespace 提供命名空间\n"
 
-#: git.c:123
+#: git.c:201
 #, c-format
 msgid "no directory given for --work-tree\n"
 msgstr "没有为 --work-tree 提供目录\n"
 
-#: git.c:137
+#: git.c:215
 #, c-format
 msgid "no prefix given for --super-prefix\n"
 msgstr "没有为 --super-prefix 提供前缀\n"
 
-#: git.c:159
+#: git.c:237
 #, c-format
 msgid "-c expects a configuration string\n"
 msgstr "应为 -c 提供一个配置字符串\n"
 
-#: git.c:197
+#: git.c:275
 #, c-format
 msgid "no directory given for -C\n"
 msgstr "没有为 -C 提供目录\n"
 
-#: git.c:212
+#: git.c:300
 #, c-format
 msgid "unknown option: %s\n"
 msgstr "未知选项:%s\n"
 
-#: git.c:687
+#: git.c:765
 #, c-format
 msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
 msgstr "展开别名命令 '%s' 失败,'%s' 不是一个 git 命令\n"
 
-#: git.c:699
+#: git.c:777
 #, c-format
 msgid "failed to run command '%s': %s\n"
 msgstr "无法运行命令 '%s':%s\n"
 
-#: http.c:342
+#: http.c:348
 #, c-format
 msgid "negative value for http.postbuffer; defaulting to %d"
 msgstr "http.postbuffer 为负值,默认为 %d"
 
-#: http.c:363
+#: http.c:369
 msgid "Delegation control is not supported with cURL < 7.22.0"
 msgstr "当 cURL < 7.22.0 时,不支持委托控制"
 
-#: http.c:372
+#: http.c:378
 msgid "Public key pinning not supported with cURL < 7.44.0"
 msgstr "不支持公钥文件锁定,因为 cURL < 7.44.0"
 
-#: http.c:1857
+#: http.c:1854
 #, c-format
 msgid ""
 "unable to update url base from redirection:\n"
@@ -14771,7 +15298,7 @@ msgstr ""
 "     请求:%s\n"
 "   重定向:%s"
 
-#: remote-curl.c:345
+#: remote-curl.c:401
 #, c-format
 msgid "redirecting to %s"
 msgstr "重定向到 %s"
@@ -14784,129 +15311,654 @@ msgstr "参数"
 msgid "object filtering"
 msgstr "对象过滤"
 
-#: common-cmds.h:9
-msgid "start a working area (see also: git help tutorial)"
-msgstr "å¼\80å§\8bä¸\80个工ä½\9cå\8cºï¼\88å\8f\82è§\81ï¼\9agit help tutorialï¼\89"
+#: parse-options.h:157
+msgid "expiry-date"
+msgstr "å\88°æ\9c\9fæ\97¶é\97´"
 
-#: common-cmds.h:10
-msgid "work on the current change (see also: git help everyday)"
-msgstr "在当前变更上工作(参见:git help everyday)"
+#: parse-options.h:172
+msgid "no-op (backward compatibility)"
+msgstr "空操作(向后兼容)"
 
-#: common-cmds.h:11
-msgid "examine the history and state (see also: git help revisions)"
-msgstr "æ£\80æ\9f¥å\8e\86å\8f²å\92\8cç\8a¶æ\80\81ï¼\88å\8f\82è§\81ï¼\9agit help revisionsï¼\89"
+#: parse-options.h:251
+msgid "be more verbose"
+msgstr "æ\9b´å\8a è¯¦ç»\86"
 
-#: common-cmds.h:12
-msgid "grow, mark and tweak your common history"
-msgstr "æ\89©å±\95ã\80\81æ \87è®°å\92\8cè°\83æ ¡æ\82¨ç\9a\84å\8e\86å\8f²è®°å½\95"
+#: parse-options.h:253
+msgid "be more quiet"
+msgstr "æ\9b´å\8a å®\89é\9d\99"
 
-#: common-cmds.h:13
-msgid "collaborate (see also: git help workflows)"
-msgstr "协同(参见:git help workflows)"
+#: parse-options.h:259
+msgid "use <n> digits to display SHA-1s"
+msgstr "用 <n> 位数字显示 SHA-1 哈希值"
 
-#: common-cmds.h:17
+#: command-list.h:50
 msgid "Add file contents to the index"
 msgstr "添加文件内容至索引"
 
-#: common-cmds.h:18
+#: command-list.h:51
+msgid "Apply a series of patches from a mailbox"
+msgstr "应用邮箱格式的系列补丁"
+
+#: command-list.h:52
+msgid "Annotate file lines with commit information"
+msgstr "使用提交信息注释文件行"
+
+#: command-list.h:53
+msgid "Apply a patch to files and/or to the index"
+msgstr "应用一个补丁到文件和/或索引区"
+
+#: command-list.h:54
+msgid "Import an Arch repository into Git"
+msgstr "将一个 Arch 仓库导入到 Git"
+
+#: command-list.h:55
+msgid "Create an archive of files from a named tree"
+msgstr "基于一个指定的树创建文件存档"
+
+#: command-list.h:56
 msgid "Use binary search to find the commit that introduced a bug"
 msgstr "通过二分查找定位引入 bug 的提交"
 
-#: common-cmds.h:19
+#: command-list.h:57
+msgid "Show what revision and author last modified each line of a file"
+msgstr "显示文件每一行最后修改的版本和修改者"
+
+#: command-list.h:58
 msgid "List, create, or delete branches"
 msgstr "列出、创建或删除分支"
 
-#: common-cmds.h:20
+#: command-list.h:59
+msgid "Move objects and refs by archive"
+msgstr "通过归档移动对象和引用"
+
+#: command-list.h:60
+msgid "Provide content or type and size information for repository objects"
+msgstr "提供仓库对象的内容、类型或大小"
+
+#: command-list.h:61
+msgid "Display gitattributes information"
+msgstr "显示 gitattributes 信息"
+
+#: command-list.h:62
+msgid "Debug gitignore / exclude files"
+msgstr "调试 gitignore / exclude 文件"
+
+#: command-list.h:63
+msgid "Show canonical names and email addresses of contacts"
+msgstr "显示联系人的规范名称和电子邮件"
+
+#: command-list.h:64
 msgid "Switch branches or restore working tree files"
 msgstr "切换分支或恢复工作区文件"
 
-#: common-cmds.h:21
+#: command-list.h:65
+msgid "Copy files from the index to the working tree"
+msgstr "从索引拷贝文件到工作区"
+
+#: command-list.h:66
+msgid "Ensures that a reference name is well formed"
+msgstr "确保引用名称格式正确"
+
+#: command-list.h:67
+msgid "Find commits yet to be applied to upstream"
+msgstr "查找尚未应用到上游的提交"
+
+#: command-list.h:68
+msgid "Apply the changes introduced by some existing commits"
+msgstr "应用一些现存提交引入的修改"
+
+#: command-list.h:69
+msgid "Graphical alternative to git-commit"
+msgstr "git-commit 的图形替代界面"
+
+#: command-list.h:70
+msgid "Remove untracked files from the working tree"
+msgstr "从工作区中删除未跟踪文件"
+
+#: command-list.h:71
 msgid "Clone a repository into a new directory"
 msgstr "克隆一个仓库到一个新目录"
 
-#: common-cmds.h:22
+#: command-list.h:72
+msgid "Display data in columns"
+msgstr "以列的方式显示数据"
+
+#: command-list.h:73
 msgid "Record changes to the repository"
 msgstr "记录变更到仓库"
 
-#: common-cmds.h:23
+#: command-list.h:74
+msgid "Write and verify Git commit graph files"
+msgstr "写入和校验 Git 提交图形文件"
+
+#: command-list.h:75
+msgid "Create a new commit object"
+msgstr "创建一个新的提交对象"
+
+#: command-list.h:76
+msgid "Get and set repository or global options"
+msgstr "获取和设置仓库或者全局选项"
+
+#: command-list.h:77
+msgid "Count unpacked number of objects and their disk consumption"
+msgstr "计算未打包对象的数量和磁盘空间占用"
+
+#: command-list.h:78
+msgid "Retrieve and store user credentials"
+msgstr "检索和存储用户密码"
+
+#: command-list.h:79
+msgid "Helper to temporarily store passwords in memory"
+msgstr "在内存中临时存储密码的助手"
+
+#: command-list.h:80
+msgid "Helper to store credentials on disk"
+msgstr "在磁盘存储密码的助手"
+
+#: command-list.h:81
+msgid "Export a single commit to a CVS checkout"
+msgstr "将一个提交导出到 CVS 检出中"
+
+#: command-list.h:82
+msgid "Salvage your data out of another SCM people love to hate"
+msgstr "从另外一个人们爱恨的配置管理系统中拯救你的数据"
+
+#: command-list.h:83
+msgid "A CVS server emulator for Git"
+msgstr "Git 的一个 CVS 服务模拟器"
+
+#: command-list.h:84
+msgid "A really simple server for Git repositories"
+msgstr "一个非常简单的 Git 仓库服务器"
+
+#: command-list.h:85
+msgid "Give an object a human readable name based on an available ref"
+msgstr "基于一个现存的引用为一个对象起一个可读的名称"
+
+#: command-list.h:86
 msgid "Show changes between commits, commit and working tree, etc"
 msgstr "显示提交之间、提交和工作区之间等的差异"
 
-#: common-cmds.h:24
+#: command-list.h:87
+msgid "Compares files in the working tree and the index"
+msgstr "比较工作区和索引区中的文件"
+
+#: command-list.h:88
+msgid "Compare a tree to the working tree or index"
+msgstr "将一个树和工作区或索引做比较"
+
+#: command-list.h:89
+msgid "Compares the content and mode of blobs found via two tree objects"
+msgstr "比较两个树对象的文件内容和模式"
+
+#: command-list.h:90
+msgid "Show changes using common diff tools"
+msgstr "使用常见的差异工具显示更改"
+
+#: command-list.h:91
+msgid "Git data exporter"
+msgstr "Git 数据导出器"
+
+#: command-list.h:92
+msgid "Backend for fast Git data importers"
+msgstr "Git 快速数据导入器后端"
+
+#: command-list.h:93
 msgid "Download objects and refs from another repository"
 msgstr "从另外一个仓库下载对象和引用"
 
-#: common-cmds.h:25
+#: command-list.h:94
+msgid "Receive missing objects from another repository"
+msgstr "从另一个仓库获取缺失的对象"
+
+#: command-list.h:95
+msgid "Rewrite branches"
+msgstr "重写分支"
+
+#: command-list.h:96
+msgid "Produce a merge commit message"
+msgstr "生成一个合并提交信息"
+
+#: command-list.h:97
+msgid "Output information on each ref"
+msgstr "对每一个引用输出信息 "
+
+#: command-list.h:98
+msgid "Prepare patches for e-mail submission"
+msgstr "准备电子邮件提交的补丁"
+
+#: command-list.h:99
+msgid "Verifies the connectivity and validity of the objects in the database"
+msgstr "验证仓库中对象的连通性和有效性"
+
+#: command-list.h:100
+msgid "Cleanup unnecessary files and optimize the local repository"
+msgstr "清除不必要的文件和优化本地仓库"
+
+#: command-list.h:101
+msgid "Extract commit ID from an archive created using git-archive"
+msgstr "从 git-archive 创建的归档文件中提取提交ID"
+
+#: command-list.h:102
 msgid "Print lines matching a pattern"
 msgstr "输出和模式匹配的行"
 
-#: common-cmds.h:26
+#: command-list.h:103
+msgid "A portable graphical interface to Git"
+msgstr "一个便携的 Git 图形客户端"
+
+#: command-list.h:104
+msgid "Compute object ID and optionally creates a blob from a file"
+msgstr "从一个文件计算对象ID,并可以创建 blob 数据对象"
+
+#: command-list.h:105
+msgid "Display help information about Git"
+msgstr "显示 Git 的帮助信息"
+
+#: command-list.h:106
+msgid "Server side implementation of Git over HTTP"
+msgstr "Git HTTP 协议的服务端实现"
+
+#: command-list.h:107
+msgid "Download from a remote Git repository via HTTP"
+msgstr "通过 HTTP 从远程 Git 仓库下载"
+
+#: command-list.h:108
+msgid "Push objects over HTTP/DAV to another repository"
+msgstr "通过 HTTP/DAV 推送对象另一个仓库"
+
+#: command-list.h:109
+msgid "Send a collection of patches from stdin to an IMAP folder"
+msgstr "从标准输入将一组补丁发送到IMAP文件夹"
+
+#: command-list.h:110
+msgid "Build pack index file for an existing packed archive"
+msgstr "从一个现存的包存档文件创建包索引"
+
+#: command-list.h:111
 msgid "Create an empty Git repository or reinitialize an existing one"
 msgstr "创建一个空的 Git 仓库或重新初始化一个已存在的仓库"
 
-#: common-cmds.h:27
+#: command-list.h:112
+msgid "Instantly browse your working repository in gitweb"
+msgstr "在 gitweb 中即时浏览您的工作仓库"
+
+#: command-list.h:113
+msgid "add or parse structured information in commit messages"
+msgstr "添加或解析提交说明中的结构化信息"
+
+#: command-list.h:114
+msgid "The Git repository browser"
+msgstr "Git 仓库浏览器"
+
+#: command-list.h:115
 msgid "Show commit logs"
 msgstr "显示提交日志"
 
-#: common-cmds.h:28
+#: command-list.h:116
+msgid "Show information about files in the index and the working tree"
+msgstr "显示索引和工作区中文件的信息"
+
+#: command-list.h:117
+msgid "List references in a remote repository"
+msgstr "显示一个远程仓库的引用"
+
+#: command-list.h:118
+msgid "List the contents of a tree object"
+msgstr "显示一个树对象的内容"
+
+#: command-list.h:119
+msgid "Extracts patch and authorship from a single e-mail message"
+msgstr "从单个电子邮件中提取补丁和作者身份"
+
+#: command-list.h:120
+msgid "Simple UNIX mbox splitter program"
+msgstr "简单的 UNIX mbox 邮箱切分程序"
+
+#: command-list.h:121
 msgid "Join two or more development histories together"
 msgstr "合并两个或更多开发历史"
 
-#: common-cmds.h:29
+#: command-list.h:122
+msgid "Find as good common ancestors as possible for a merge"
+msgstr "为了合并查找尽可能好的公共祖先提交"
+
+#: command-list.h:123
+msgid "Run a three-way file merge"
+msgstr "运行一个三路文件合并"
+
+#: command-list.h:124
+msgid "Run a merge for files needing merging"
+msgstr "对于需要合并的文件执行合并"
+
+#: command-list.h:125
+msgid "The standard helper program to use with git-merge-index"
+msgstr "与 git-merge-index 一起使用的标准向导程序"
+
+#: command-list.h:126
+msgid "Run merge conflict resolution tools to resolve merge conflicts"
+msgstr "运行合并冲突解决工具以解决合并冲突"
+
+#: command-list.h:127
+msgid "Show three-way merge without touching index"
+msgstr "显示三路合并而不动索引"
+
+#: command-list.h:128
+msgid "Creates a tag object"
+msgstr "创建一个标签对象"
+
+#: command-list.h:129
+msgid "Build a tree-object from ls-tree formatted text"
+msgstr "基于 ls-tree 的格式化文本创建一个树对象"
+
+#: command-list.h:130
 msgid "Move or rename a file, a directory, or a symlink"
 msgstr "移动或重命名一个文件、目录或符号链接"
 
-#: common-cmds.h:30
+# 查找给定版本的符号名称
+#: command-list.h:131
+msgid "Find symbolic names for given revs"
+msgstr "查找给定版本的符号名称"
+
+#: command-list.h:132
+msgid "Add or inspect object notes"
+msgstr "添加或检查对象注释"
+
+#: command-list.h:133
+msgid "Import from and submit to Perforce repositories"
+msgstr "导入和提交到 Perforce 仓库中"
+
+#: command-list.h:134
+msgid "Create a packed archive of objects"
+msgstr "创建对象的存档包"
+
+#: command-list.h:135
+msgid "Find redundant pack files"
+msgstr "查找冗余的包文件"
+
+#: command-list.h:136
+msgid "Pack heads and tags for efficient repository access"
+msgstr "打包头和标签以实现高效的仓库访问"
+
+#: command-list.h:137
+msgid "Routines to help parsing remote repository access parameters"
+msgstr "帮助解析远程仓库访问参数的例程"
+
+#: command-list.h:138
+msgid "Compute unique ID for a patch"
+msgstr "计算一个补丁的唯一ID"
+
+#: command-list.h:139
+msgid "Prune all unreachable objects from the object database"
+msgstr "删除对象库中所有不可达对象"
+
+#: command-list.h:140
+msgid "Remove extra objects that are already in pack files"
+msgstr "删除已经在包文件中的多余对象"
+
+#: command-list.h:141
 msgid "Fetch from and integrate with another repository or a local branch"
 msgstr "获取并整合另外的仓库或一个本地分支"
 
-#: common-cmds.h:31
+#: command-list.h:142
 msgid "Update remote refs along with associated objects"
 msgstr "更新远程引用和相关的对象"
 
-#: common-cmds.h:32
+#: command-list.h:143
+msgid "Applies a quilt patchset onto the current branch"
+msgstr "将一个 quilt 补丁集应用到当前分支。"
+
+#: command-list.h:144
+msgid "Reads tree information into the index"
+msgstr "将树信息读取到索引"
+
+#: command-list.h:145
 msgid "Reapply commits on top of another base tip"
 msgstr "在另一个分支上重新应用提交"
 
-#: common-cmds.h:33
+#: command-list.h:146
+msgid "Receive what is pushed into the repository"
+msgstr "接收推送到仓库中的对象"
+
+#: command-list.h:147
+msgid "Manage reflog information"
+msgstr "管理 reflog 信息"
+
+#: command-list.h:148
+msgid "Manage set of tracked repositories"
+msgstr "管理已跟踪仓库"
+
+#: command-list.h:149
+msgid "Pack unpacked objects in a repository"
+msgstr "打包仓库中未打包对象"
+
+#: command-list.h:150
+msgid "Create, list, delete refs to replace objects"
+msgstr "创建、列出、删除对象替换引用"
+
+#: command-list.h:151
+msgid "Generates a summary of pending changes"
+msgstr "生成待定更改的摘要"
+
+#: command-list.h:152
+msgid "Reuse recorded resolution of conflicted merges"
+msgstr "重用冲突合并的解决方案记录"
+
+#: command-list.h:153
 msgid "Reset current HEAD to the specified state"
 msgstr "重置当前 HEAD 到指定状态"
 
-#: common-cmds.h:34
+#: command-list.h:154
+msgid "Revert some existing commits"
+msgstr "回退一些现存提交"
+
+#: command-list.h:155
+msgid "Lists commit objects in reverse chronological order"
+msgstr "按时间顺序列出提交对象"
+
+#: command-list.h:156
+msgid "Pick out and massage parameters"
+msgstr "选出并处理参数"
+
+#: command-list.h:157
 msgid "Remove files from the working tree and from the index"
 msgstr "从工作区和索引中删除文件"
 
-#: common-cmds.h:35
+#: command-list.h:158
+msgid "Send a collection of patches as emails"
+msgstr "通过电子邮件发送一组补丁"
+
+#: command-list.h:159
+msgid "Push objects over Git protocol to another repository"
+msgstr "使用 Git 协议推送对象到另一个仓库"
+
+#: command-list.h:160
+msgid "Restricted login shell for Git-only SSH access"
+msgstr "只允许 Git SSH 访问的受限登录shell"
+
+#: command-list.h:161
+msgid "Summarize 'git log' output"
+msgstr "'git log' 输出摘要"
+
+#: command-list.h:162
 msgid "Show various types of objects"
 msgstr "显示各种类型的对象"
 
-#: common-cmds.h:36
+#: command-list.h:163
+msgid "Show branches and their commits"
+msgstr "显示分支和提交"
+
+#: command-list.h:164
+msgid "Show packed archive index"
+msgstr "显示打包归档索引"
+
+#: command-list.h:165
+msgid "List references in a local repository"
+msgstr "显示本地仓库中的引用"
+
+#: command-list.h:166
+msgid "Git's i18n setup code for shell scripts"
+msgstr "为 shell 脚本准备的 Git 国际化设置代码"
+
+#: command-list.h:167
+msgid "Common Git shell script setup code"
+msgstr "常用的 Git shell 脚本设置代码"
+
+#: command-list.h:168
+msgid "Stash the changes in a dirty working directory away"
+msgstr "贮藏脏工作区中的修改"
+
+#: command-list.h:169
+msgid "Add file contents to the staging area"
+msgstr "将文件内容添加到索引"
+
+#: command-list.h:170
 msgid "Show the working tree status"
 msgstr "显示工作区状态"
 
-#: common-cmds.h:37
+#: command-list.h:171
+msgid "Remove unnecessary whitespace"
+msgstr "删除不必要的空白字符"
+
+#: command-list.h:172
+msgid "Initialize, update or inspect submodules"
+msgstr "初始化、更新或检查子模组"
+
+#: command-list.h:173
+msgid "Bidirectional operation between a Subversion repository and Git"
+msgstr "Subersion 仓库和 Git 之间的双向操作"
+
+#: command-list.h:174
+msgid "Read, modify and delete symbolic refs"
+msgstr "读取、修改和删除符号引用"
+
+#: command-list.h:175
 msgid "Create, list, delete or verify a tag object signed with GPG"
 msgstr "创建、列出、删除或校验一个 GPG 签名的标签对象"
 
-#: parse-options.h:157
-msgid "expiry-date"
-msgstr "到期时间"
+#: command-list.h:176
+msgid "Creates a temporary file with a blob's contents"
+msgstr "用 blob 数据对象的内容创建一个临时文件"
 
-#: parse-options.h:172
-msgid "no-op (backward compatibility)"
-msgstr "空操作(向后兼容)"
+#: command-list.h:177
+msgid "Unpack objects from a packed archive"
+msgstr "从打包文件中解压缩对象"
 
-#: parse-options.h:250
-msgid "be more verbose"
-msgstr "更加详细"
+#: command-list.h:178
+msgid "Register file contents in the working tree to the index"
+msgstr "将工作区的文件内容注册到索引"
 
-#: parse-options.h:252
-msgid "be more quiet"
-msgstr "更加安静"
+#: command-list.h:179
+msgid "Update the object name stored in a ref safely"
+msgstr "安全地更新存储于引用中的对象名称"
 
-#: parse-options.h:258
-msgid "use <n> digits to display SHA-1s"
-msgstr "用 <n> 位数字显示 SHA-1 哈希值"
+#: command-list.h:180
+msgid "Update auxiliary info file to help dumb servers"
+msgstr "更新辅助信息文件以帮助哑协议服务"
+
+#: command-list.h:181
+msgid "Send archive back to git-archive"
+msgstr "将存档发送回 git-archive"
+
+#: command-list.h:182
+msgid "Send objects packed back to git-fetch-pack"
+msgstr "将对象压缩包发送回 git-fetch-pack"
+
+#: command-list.h:183
+msgid "Show a Git logical variable"
+msgstr "显示一个Git逻辑变量"
+
+#: command-list.h:184
+msgid "Check the GPG signature of commits"
+msgstr "检查 GPG 提交签名"
+
+#: command-list.h:185
+msgid "Validate packed Git archive files"
+msgstr "校验打包的Git存仓文件"
+
+#: command-list.h:186
+msgid "Check the GPG signature of tags"
+msgstr "检查标签的 GPG 签名"
+
+#: command-list.h:187
+msgid "Git web interface (web frontend to Git repositories)"
+msgstr "Git web 界面(Git 仓库的 web 前端)"
+
+#: command-list.h:188
+msgid "Show logs with difference each commit introduces"
+msgstr "显示每一个提交引入的差异日志"
+
+#: command-list.h:189
+msgid "Manage multiple working trees"
+msgstr "管理多个工作区"
+
+#: command-list.h:190
+msgid "Create a tree object from the current index"
+msgstr "从当前索引创建一个树对象"
+
+#: command-list.h:191
+msgid "Defining attributes per path"
+msgstr "定义路径的属性"
+
+#: command-list.h:192
+msgid "Git command-line interface and conventions"
+msgstr "Git 命令行界面和约定"
+
+#: command-list.h:193
+msgid "A Git core tutorial for developers"
+msgstr "面向开发人员的 Git 核心教程"
+
+#: command-list.h:194
+msgid "Git for CVS users"
+msgstr "适合 CVS 用户的 Git 帮助"
+
+#: command-list.h:195
+msgid "Tweaking diff output"
+msgstr "调整差异输出"
+
+#: command-list.h:196
+msgid "A useful minimum set of commands for Everyday Git"
+msgstr "每一天 Git 的一组有用的最小命令集合"
+
+#: command-list.h:197
+msgid "A Git Glossary"
+msgstr "Git 词汇表"
+
+#: command-list.h:198
+msgid "Hooks used by Git"
+msgstr "Git 使用的钩子"
+
+#: command-list.h:199
+msgid "Specifies intentionally untracked files to ignore"
+msgstr "忽略指定的未跟踪文件"
+
+#: command-list.h:200
+msgid "Defining submodule properties"
+msgstr "定义子模组属性"
+
+#: command-list.h:201
+msgid "Git namespaces"
+msgstr "Git 名字空间"
+
+#: command-list.h:202
+msgid "Git Repository Layout"
+msgstr "Git 仓库布局"
+
+#: command-list.h:203
+msgid "Specifying revisions and ranges for Git"
+msgstr "指定 Git 的版本和版本范围"
+
+#: command-list.h:204
+msgid "A tutorial introduction to Git: part two"
+msgstr "一个 Git 教程:第二部分"
+
+#: command-list.h:205
+msgid "A tutorial introduction to Git"
+msgstr "一个 Git 教程"
+
+#: command-list.h:206
+msgid "An overview of recommended workflows with Git"
+msgstr "Git 推荐的工作流概览"
 
 #: rerere.h:40
 msgid "update the index with reused conflict resolution if possible"
@@ -15132,7 +16184,7 @@ msgstr "尝试和 $pretty_name 的简单合并"
 msgid "Simple merge did not work, trying automatic merge."
 msgstr "简单合并未生效,尝试自动合并。"
 
-#: git-rebase.sh:60
+#: git-rebase.sh:61
 msgid ""
 "Resolve all conflicts manually, mark them as resolved with\n"
 "\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
@@ -15145,41 +16197,41 @@ msgstr ""
 "\"git rebase --skip\" 命令跳过这个提交。如果想要终止执行并回到\n"
 "\"git rebase\" 执行之前的状态,执行 \"git rebase --abort\"。"
 
-#: git-rebase.sh:163 git-rebase.sh:409
+#: git-rebase.sh:173 git-rebase.sh:442
 #, sh-format
 msgid "Could not move back to $head_name"
 msgstr "无法移回 $head_name"
 
-#: git-rebase.sh:174
+#: git-rebase.sh:184
 msgid "Applied autostash."
 msgstr "成功应用 autostash。"
 
-#: git-rebase.sh:177
+#: git-rebase.sh:187
 #, sh-format
 msgid "Cannot store $stash_sha1"
 msgstr "无法保存 $stash_sha1"
 
-#: git-rebase.sh:218
+#: git-rebase.sh:229
 msgid "The pre-rebase hook refused to rebase."
 msgstr "钩子 pre-rebase 拒绝变基操作。"
 
-#: git-rebase.sh:223
+#: git-rebase.sh:234
 msgid "It looks like 'git am' is in progress. Cannot rebase."
 msgstr "看起来 'git-am' 正在执行中。无法变基。"
 
-#: git-rebase.sh:370
+#: git-rebase.sh:403
 msgid "No rebase in progress?"
 msgstr "没有正在进行的变基?"
 
-#: git-rebase.sh:381
+#: git-rebase.sh:414
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr "动作 --edit-todo 只能用在交互式变基过程中。"
 
-#: git-rebase.sh:388
+#: git-rebase.sh:421
 msgid "Cannot read HEAD"
 msgstr "不能读取 HEAD"
 
-#: git-rebase.sh:391
+#: git-rebase.sh:424
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
@@ -15187,7 +16239,7 @@ msgstr ""
 "您必须编辑所有的合并冲突,然后通过 git add\n"
 "命令将它们标记为已解决"
 
-#: git-rebase.sh:435
+#: git-rebase.sh:468
 #, sh-format
 msgid ""
 "It seems that there is already a $state_dir_base directory, and\n"
@@ -15206,74 +16258,78 @@ msgstr ""
 "\t$cmd_clear_stale_rebase\n"
 "然后再重新执行变基操作。 为避免丢失重要数据,我已经停止当前操作。"
 
-#: git-rebase.sh:491
+#: git-rebase.sh:509
+msgid "error: cannot combine '--signoff' with '--preserve-merges'"
+msgstr "错误:不能组合参数 '--signoff' 和 '--preserve-merges'"
+
+#: git-rebase.sh:537
 #, sh-format
 msgid "invalid upstream '$upstream_name'"
 msgstr "无效的上游 '$upstream_name'"
 
-#: git-rebase.sh:515
+#: git-rebase.sh:561
 #, sh-format
 msgid "$onto_name: there are more than one merge bases"
 msgstr "$onto_name: 有一个以上的合并基准"
 
-#: git-rebase.sh:518 git-rebase.sh:522
+#: git-rebase.sh:564 git-rebase.sh:568
 #, sh-format
 msgid "$onto_name: there is no merge base"
 msgstr "$onto_name: 没有合并基准"
 
-#: git-rebase.sh:527
+#: git-rebase.sh:573
 #, sh-format
 msgid "Does not point to a valid commit: $onto_name"
 msgstr "没有指向一个有效的提交:$onto_name"
 
-#: git-rebase.sh:553
+#: git-rebase.sh:599
 #, sh-format
 msgid "fatal: no such branch/commit '$branch_name'"
 msgstr "严重错误:无此分支/提交 '$branch_name'"
 
-#: git-rebase.sh:586
+#: git-rebase.sh:632
 msgid "Cannot autostash"
 msgstr "无法 autostash"
 
-#: git-rebase.sh:591
+#: git-rebase.sh:637
 #, sh-format
 msgid "Created autostash: $stash_abbrev"
 msgstr "创建了 autostash: $stash_abbrev"
 
-#: git-rebase.sh:595
+#: git-rebase.sh:641
 msgid "Please commit or stash them."
 msgstr "请提交或贮藏修改。"
 
-#: git-rebase.sh:618
+#: git-rebase.sh:664
 #, sh-format
 msgid "HEAD is up to date."
 msgstr "HEAD 是最新的。"
 
-#: git-rebase.sh:620
+#: git-rebase.sh:666
 #, sh-format
 msgid "Current branch $branch_name is up to date."
 msgstr "当前分支 $branch_name 是最新的。"
 
-#: git-rebase.sh:628
+#: git-rebase.sh:674
 #, sh-format
 msgid "HEAD is up to date, rebase forced."
 msgstr "HEAD 是最新的,强制变基。"
 
-#: git-rebase.sh:630
+#: git-rebase.sh:676
 #, sh-format
 msgid "Current branch $branch_name is up to date, rebase forced."
 msgstr "当前分支 $branch_name 是最新的,强制变基。"
 
-#: git-rebase.sh:642
+#: git-rebase.sh:688
 #, sh-format
 msgid "Changes from $mb to $onto:"
 msgstr "变更从 $mb 到 $onto:"
 
-#: git-rebase.sh:651
+#: git-rebase.sh:697
 msgid "First, rewinding head to replay your work on top of it..."
 msgstr "首先,回退分支以便在上面重放您的工作..."
 
-#: git-rebase.sh:661
+#: git-rebase.sh:707
 #, sh-format
 msgid "Fast-forwarded $branch_name to $onto_name."
 msgstr "快进 $branch_name 至 $onto_name。"
@@ -15341,109 +16397,109 @@ msgstr "无法保存当前状态"
 msgid "Saved working directory and index state $stash_msg"
 msgstr "保存工作目录和索引状态 $stash_msg"
 
-#: git-stash.sh:340
+#: git-stash.sh:342
 msgid "Cannot remove worktree changes"
 msgstr "无法删除工作区变更"
 
-#: git-stash.sh:488
+#: git-stash.sh:490
 #, sh-format
 msgid "unknown option: $opt"
 msgstr "未知选项: $opt"
 
-#: git-stash.sh:501
+#: git-stash.sh:503
 msgid "No stash entries found."
 msgstr "未发现贮藏条目。"
 
-#: git-stash.sh:508
+#: git-stash.sh:510
 #, sh-format
 msgid "Too many revisions specified: $REV"
 msgstr "指定了太多的版本:$REV"
 
-#: git-stash.sh:523
+#: git-stash.sh:525
 #, sh-format
 msgid "$reference is not a valid reference"
 msgstr "$reference 不是一个有效的引用"
 
-#: git-stash.sh:551
+#: git-stash.sh:553
 #, sh-format
 msgid "'$args' is not a stash-like commit"
 msgstr "'$args' 不是贮藏式提交"
 
-#: git-stash.sh:562
+#: git-stash.sh:564
 #, sh-format
 msgid "'$args' is not a stash reference"
 msgstr "'$args' 不是一个贮藏引用"
 
-#: git-stash.sh:570
+#: git-stash.sh:572
 msgid "unable to refresh index"
 msgstr "无法刷新索引"
 
-#: git-stash.sh:574
+#: git-stash.sh:576
 msgid "Cannot apply a stash in the middle of a merge"
 msgstr "无法在合并过程应用贮藏"
 
-#: git-stash.sh:582
+#: git-stash.sh:584
 msgid "Conflicts in index. Try without --index."
 msgstr "索引中有冲突。尝试不使用 --index。"
 
-#: git-stash.sh:584
+#: git-stash.sh:586
 msgid "Could not save index tree"
 msgstr "不能保存索引树"
 
-#: git-stash.sh:593
+#: git-stash.sh:595
 msgid "Could not restore untracked files from stash entry"
 msgstr "无法从贮藏条目中恢复未跟踪文件"
 
-#: git-stash.sh:618
+#: git-stash.sh:620
 msgid "Cannot unstage modified files"
 msgstr "无法将修改的文件取消暂存"
 
-#: git-stash.sh:633
+#: git-stash.sh:635
 msgid "Index was not unstashed."
 msgstr "索引未从贮藏中恢复。"
 
-#: git-stash.sh:647
+#: git-stash.sh:649
 msgid "The stash entry is kept in case you need it again."
 msgstr "贮藏条目被保留以备您再次需要。"
 
-#: git-stash.sh:656
+#: git-stash.sh:658
 #, sh-format
 msgid "Dropped ${REV} ($s)"
 msgstr "丢弃了 ${REV} ($s)"
 
-#: git-stash.sh:657
+#: git-stash.sh:659
 #, sh-format
 msgid "${REV}: Could not drop stash entry"
 msgstr "${REV}:无法丢弃贮藏条目"
 
-#: git-stash.sh:665
+#: git-stash.sh:667
 msgid "No branch name specified"
 msgstr "未指定分支名"
 
-#: git-stash.sh:744
+#: git-stash.sh:746
 msgid "(To restore them type \"git stash apply\")"
 msgstr "(为恢复数据输入 \"git stash apply\")"
 
-#: git-submodule.sh:181
+#: git-submodule.sh:188
 msgid "Relative path can only be used from the toplevel of the working tree"
 msgstr "只能在工作区的顶级目录中使用相对路径"
 
-#: git-submodule.sh:191
+#: git-submodule.sh:198
 #, sh-format
 msgid "repo URL: '$repo' must be absolute or begin with ./|../"
 msgstr "仓库 URL:'$repo' 必须是绝对路径或以 ./|../ 起始"
 
-#: git-submodule.sh:210
+#: git-submodule.sh:217
 #, sh-format
 msgid "'$sm_path' already exists in the index"
 msgstr "'$sm_path' 已经存在于索引中"
 
-#: git-submodule.sh:213
+#: git-submodule.sh:220
 #, sh-format
 msgid "'$sm_path' already exists in the index and is not a submodule"
 msgstr "'$sm_path' 已经存在于索引中且不是一个子模组"
 
-#: git-submodule.sh:219
+#: git-submodule.sh:226
 #, sh-format
 msgid ""
 "The following path is ignored by one of your .gitignore files:\n"
@@ -15454,22 +16510,22 @@ msgstr ""
 "$sm_path\n"
 "如果您确实想添加它,使用 -f 参数。"
 
-#: git-submodule.sh:237
+#: git-submodule.sh:249
 #, sh-format
 msgid "Adding existing repo at '$sm_path' to the index"
 msgstr "添加位于 '$sm_path' 的现存仓库到索引"
 
-#: git-submodule.sh:239
+#: git-submodule.sh:251
 #, sh-format
 msgid "'$sm_path' already exists and is not a valid git repo"
 msgstr "'$sm_path' 已存在且不是一个有效的 git 仓库"
 
-#: git-submodule.sh:247
+#: git-submodule.sh:259
 #, sh-format
 msgid "A git directory for '$sm_name' is found locally with remote(s):"
 msgstr "本地发现 '$sm_name' 的一个 git 目录,与其对应的远程仓库:"
 
-#: git-submodule.sh:249
+#: git-submodule.sh:261
 #, sh-format
 msgid ""
 "If you want to reuse this local git directory instead of cloning again from\n"
@@ -15484,59 +16540,59 @@ msgstr ""
 "使用 '--force' 选项。如果本地 git 目录不是正确的仓库\n"
 "或者您不确定这里的含义,使用 '--name' 选项选择另外的名称。"
 
-#: git-submodule.sh:255
+#: git-submodule.sh:267
 #, sh-format
 msgid "Reactivating local git directory for submodule '$sm_name'."
 msgstr "激活本地 git 目录到子模组 '$sm_name'。"
 
-#: git-submodule.sh:267
+#: git-submodule.sh:279
 #, sh-format
 msgid "Unable to checkout submodule '$sm_path'"
 msgstr "不能检出子模组 '$sm_path'"
 
-#: git-submodule.sh:272
+#: git-submodule.sh:284
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr "无法添加子模组 '$sm_path'"
 
-#: git-submodule.sh:281
+#: git-submodule.sh:293
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
 msgstr "无法注册子模组 '$sm_path'"
 
-#: git-submodule.sh:342
+#: git-submodule.sh:354
 #, sh-format
 msgid "Entering '$displaypath'"
 msgstr "正在进入 '$displaypath'"
 
-#: git-submodule.sh:362
+#: git-submodule.sh:374
 #, sh-format
 msgid "Stopping at '$displaypath'; script returned non-zero status."
 msgstr "停止于 '$displaypath';脚本返回非零值。"
 
-#: git-submodule.sh:584
+#: git-submodule.sh:600
 #, sh-format
 msgid "Unable to find current revision in submodule path '$displaypath'"
 msgstr "无法在子模组路径 '$displaypath' 中找到当前版本"
 
-#: git-submodule.sh:594
+#: git-submodule.sh:610
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr "无法在子模组路径 '$sm_path' 中获取"
 
-#: git-submodule.sh:599
+#: git-submodule.sh:615
 #, sh-format
 msgid ""
 "Unable to find current ${remote_name}/${branch} revision in submodule path "
 "'$sm_path'"
 msgstr "无法在子模组路径 '$sm_path' 中找到当前版本 ${remote_name}/${branch}"
 
-#: git-submodule.sh:617
+#: git-submodule.sh:633
 #, sh-format
 msgid "Unable to fetch in submodule path '$displaypath'"
 msgstr "无法在子模组路径 '$displaypath' 中获取"
 
-#: git-submodule.sh:623
+#: git-submodule.sh:639
 #, sh-format
 msgid ""
 "Fetched in submodule path '$displaypath', but it did not contain $sha1. "
@@ -15544,74 +16600,74 @@ msgid ""
 msgstr ""
 "获取了子模组路径 '$displaypath',但是它没有包含 $sha1。直接获取该提交失败。"
 
-#: git-submodule.sh:630
+#: git-submodule.sh:646
 #, sh-format
 msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
 msgstr "无法在子模组路径 '$displaypath' 中检出 '$sha1'"
 
-#: git-submodule.sh:631
+#: git-submodule.sh:647
 #, sh-format
 msgid "Submodule path '$displaypath': checked out '$sha1'"
 msgstr "子模组路径 '$displaypath':检出 '$sha1'"
 
-#: git-submodule.sh:635
+#: git-submodule.sh:651
 #, sh-format
 msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
 msgstr "无法在子模组路径 '$displaypath' 中变基 '$sha1'"
 
-#: git-submodule.sh:636
+#: git-submodule.sh:652
 #, sh-format
 msgid "Submodule path '$displaypath': rebased into '$sha1'"
 msgstr "子模组路径 '$displaypath':变基至 '$sha1'"
 
-#: git-submodule.sh:641
+#: git-submodule.sh:657
 #, sh-format
 msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
 msgstr "无法合并 '$sha1' 到子模组路径 '$displaypath' 中"
 
-#: git-submodule.sh:642
+#: git-submodule.sh:658
 #, sh-format
 msgid "Submodule path '$displaypath': merged in '$sha1'"
 msgstr "子模组路径 '$displaypath':已合并入 '$sha1'"
 
-#: git-submodule.sh:647
+#: git-submodule.sh:663
 #, sh-format
 msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'"
 msgstr "在子模组 '$displaypath' 中执行 '$command $sha1' 失败"
 
-#: git-submodule.sh:648
+#: git-submodule.sh:664
 #, sh-format
 msgid "Submodule path '$displaypath': '$command $sha1'"
 msgstr "子模组 '$displaypath':'$command $sha1'"
 
-#: git-submodule.sh:679
+#: git-submodule.sh:695
 #, sh-format
 msgid "Failed to recurse into submodule path '$displaypath'"
 msgstr "无法递归进子模组路径 '$displaypath'"
 
-#: git-submodule.sh:775
+#: git-submodule.sh:791
 msgid "The --cached option cannot be used with the --files option"
 msgstr "选项 --cached 不能和选项 --files 同时使用"
 
-#: git-submodule.sh:827
+#: git-submodule.sh:843
 #, sh-format
 msgid "unexpected mode $mod_dst"
 msgstr "意外的模式 $mod_dst"
 
 #  译者:注意保持前导空格
-#: git-submodule.sh:847
+#: git-submodule.sh:863
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_src"
 msgstr "  警告:$display_name 未包含提交 $sha1_src"
 
 #  译者:注意保持前导空格
-#: git-submodule.sh:850
+#: git-submodule.sh:866
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commit $sha1_dst"
 msgstr "  警告:$display_name 未包含提交 $sha1_dst"
 
 #  译者:注意保持前导空格
-#: git-submodule.sh:853
+#: git-submodule.sh:869
 #, sh-format
 msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
 msgstr "  警告:$display_name 未包含提交 $sha1_src 和 $sha1_dst"
@@ -15621,38 +16677,50 @@ msgstr "  警告:$display_name 未包含提交 $sha1_src 和 $sha1_dst"
 msgid "See git-${cmd}(1) for details."
 msgstr "详见 git-${cmd}(1)。"
 
-#: git-rebase--interactive.sh:140
+#: git-rebase--interactive.sh:142
 #, sh-format
 msgid "Rebasing ($new_count/$total)"
 msgstr "变基中($new_count/$total)"
 
-#: git-rebase--interactive.sh:156
+#: git-rebase--interactive.sh:158
 msgid ""
 "\n"
 "Commands:\n"
-"p, pick = use commit\n"
-"r, reword = use commit, but edit the commit message\n"
-"e, edit = use commit, but stop for amending\n"
-"s, squash = use commit, but meld into previous commit\n"
-"f, fixup = like \"squash\", but discard this commit's log message\n"
-"x, exec = run command (the rest of the line) using shell\n"
-"d, drop = remove commit\n"
+"p, pick <commit> = use commit\n"
+"r, reword <commit> = use commit, but edit the commit message\n"
+"e, edit <commit> = use commit, but stop for amending\n"
+"s, squash <commit> = use commit, but meld into previous commit\n"
+"f, fixup <commit> = like \"squash\", but discard this commit's log message\n"
+"x, exec <command> = run command (the rest of the line) using shell\n"
+"d, drop <commit> = remove commit\n"
+"l, label <label> = label current HEAD with a name\n"
+"t, reset <label> = reset HEAD to a label\n"
+"m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]\n"
+".       create a merge commit using the original merge commit's\n"
+".       message (or the oneline, if no original merge commit was\n"
+".       specified). Use -c <commit> to reword the commit message.\n"
 "\n"
 "These lines can be re-ordered; they are executed from top to bottom.\n"
 msgstr ""
 "\n"
 "命令:\n"
-"p, pick = 使用提交\n"
-"r, reword = 使用提交,但修改提交说明\n"
-"e, edit = 使用提交,但停止以便进行提交修补\n"
-"s, squash = 使用提交,但和前一个版本融合\n"
-"f, fixup = 类似于 \"squash\",但丢弃提交说明日志\n"
-"x, exec = 使用 shell 运行命令(此行剩余部分)\n"
-"d, drop = 删除提交\n"
+"p, pick <提交> = 使用提交\n"
+"r, reword <提交> = 使用提交,但修改提交说明\n"
+"e, edit <提交> = 使用提交,进入 shell 以便进行提交修补\n"
+"s, squash <提交> = 使用提交,但融合到前一个提交\n"
+"f, fixup <提交> = 类似于 \"squash\",但丢弃提交说明日志\n"
+"x, exec <命令> = 使用 shell 运行命令(此行剩余部分)\n"
+"d, drop <提交> = 删除提交\n"
+"l, label <label> = 为当前 HEAD 打上标记\n"
+"t, reset <label> = 重置 HEAD 到该标记\n"
+"m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]\n"
+".       创建一个合并提交,并使用原始的合并提交说明(如果没有指定\n"
+".       原始提交,使用注释部分的 oneline 作为提交说明)。使用\n"
+".       -c <提交> 可以编辑提交说明。\n"
 "\n"
-"这些行可以被重新排序;它们会被从上至下地执行。\n"
+"可以对这些行重新排序,将从上至下执行。\n"
 
-#: git-rebase--interactive.sh:171
+#: git-rebase--interactive.sh:179
 msgid ""
 "\n"
 "Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
@@ -15660,7 +16728,7 @@ msgstr ""
 "\n"
 "不要删除任意一行。使用 'drop' 显式地删除一个提交。\n"
 
-#: git-rebase--interactive.sh:175
+#: git-rebase--interactive.sh:183
 msgid ""
 "\n"
 "If you remove a line here THAT COMMIT WILL BE LOST.\n"
@@ -15668,7 +16736,7 @@ msgstr ""
 "\n"
 "如果您在这里删除一行,对应的提交将会丢失。\n"
 
-#: git-rebase--interactive.sh:213
+#: git-rebase--interactive.sh:221
 #, sh-format
 msgid ""
 "You can amend the commit now, with\n"
@@ -15687,83 +16755,83 @@ msgstr ""
 "\n"
 "\tgit rebase --continue"
 
-#: git-rebase--interactive.sh:238
+#: git-rebase--interactive.sh:246
 #, sh-format
 msgid "$sha1: not a commit that can be picked"
 msgstr "$sha1:不是一个可以被拣选的提交"
 
-#: git-rebase--interactive.sh:277
+#: git-rebase--interactive.sh:285
 #, sh-format
 msgid "Invalid commit name: $sha1"
 msgstr "无效的提交名:$sha1"
 
-#: git-rebase--interactive.sh:319
+#: git-rebase--interactive.sh:325
 msgid "Cannot write current commit's replacement sha1"
 msgstr "不能写入当前提交的替代 sha1"
 
-#: git-rebase--interactive.sh:371
+#: git-rebase--interactive.sh:376
 #, sh-format
 msgid "Fast-forward to $sha1"
 msgstr "快进到 $sha1"
 
-#: git-rebase--interactive.sh:373
+#: git-rebase--interactive.sh:378
 #, sh-format
 msgid "Cannot fast-forward to $sha1"
 msgstr "不能快进到 $sha1"
 
-#: git-rebase--interactive.sh:382
+#: git-rebase--interactive.sh:387
 #, sh-format
 msgid "Cannot move HEAD to $first_parent"
 msgstr "不能移动 HEAD 到 $first_parent"
 
-#: git-rebase--interactive.sh:387
+#: git-rebase--interactive.sh:392
 #, sh-format
 msgid "Refusing to squash a merge: $sha1"
 msgstr "拒绝压缩一个合并:$sha1"
 
-#: git-rebase--interactive.sh:405
+#: git-rebase--interactive.sh:410
 #, sh-format
 msgid "Error redoing merge $sha1"
 msgstr "无法重做合并 $sha1"
 
-#: git-rebase--interactive.sh:414
+#: git-rebase--interactive.sh:419
 #, sh-format
 msgid "Could not pick $sha1"
 msgstr "不能拣选 $sha1"
 
-#: git-rebase--interactive.sh:423
+#: git-rebase--interactive.sh:428
 #, sh-format
 msgid "This is the commit message #${n}:"
 msgstr "这是提交说明 #${n}:"
 
-#: git-rebase--interactive.sh:428
+#: git-rebase--interactive.sh:433
 #, sh-format
 msgid "The commit message #${n} will be skipped:"
 msgstr "提交说明 #${n} 将被跳过:"
 
-#: git-rebase--interactive.sh:439
+#: git-rebase--interactive.sh:444
 #, sh-format
 msgid "This is a combination of $count commit."
 msgid_plural "This is a combination of $count commits."
 msgstr[0] "这是一个 $count 个提交的组合。"
 msgstr[1] "这是一个 $count 个提交的组合。"
 
-#: git-rebase--interactive.sh:448
+#: git-rebase--interactive.sh:453
 #, sh-format
 msgid "Cannot write $fixup_msg"
 msgstr "不能写入 $fixup_msg"
 
-#: git-rebase--interactive.sh:451
+#: git-rebase--interactive.sh:456
 msgid "This is a combination of 2 commits."
 msgstr "这是一个 2 个提交的组合。"
 
-#: git-rebase--interactive.sh:492 git-rebase--interactive.sh:535
-#: git-rebase--interactive.sh:538
+#: git-rebase--interactive.sh:497 git-rebase--interactive.sh:540
+#: git-rebase--interactive.sh:543
 #, sh-format
 msgid "Could not apply $sha1... $rest"
 msgstr "不能应用 $sha1... $rest"
 
-#: git-rebase--interactive.sh:567
+#: git-rebase--interactive.sh:572
 #, sh-format
 msgid ""
 "Could not amend commit after successfully picking $sha1... $rest\n"
@@ -15776,32 +16844,32 @@ msgstr ""
 "这通常是因为空的提交说明,或者 pre-commit 钩子执行失败。如果是 pre-commit\n"
 "钩子执行失败,你可能需要在重写提交说明前解决这个问题。"
 
-#: git-rebase--interactive.sh:582
+#: git-rebase--interactive.sh:587
 #, sh-format
 msgid "Stopped at $sha1_abbrev... $rest"
 msgstr "停止在 $sha1_abbrev... $rest"
 
-#: git-rebase--interactive.sh:597
+#: git-rebase--interactive.sh:602
 #, sh-format
 msgid "Cannot '$squash_style' without a previous commit"
 msgstr "没有父提交的情况下不能 '$squash_style'"
 
-#: git-rebase--interactive.sh:639
+#: git-rebase--interactive.sh:644
 #, sh-format
 msgid "Executing: $rest"
 msgstr "执行:$rest"
 
-#: git-rebase--interactive.sh:647
+#: git-rebase--interactive.sh:652
 #, sh-format
 msgid "Execution failed: $rest"
 msgstr "执行失败:$rest"
 
-#: git-rebase--interactive.sh:649
+#: git-rebase--interactive.sh:654
 msgid "and made changes to the index and/or the working tree"
 msgstr "并且修改索引和/或工作区"
 
 #  译者:注意保持前导空格
-#: git-rebase--interactive.sh:651
+#: git-rebase--interactive.sh:656
 msgid ""
 "You can fix the problem, and then run\n"
 "\n"
@@ -15812,7 +16880,7 @@ msgstr ""
 "\tgit rebase --continue"
 
 #. TRANSLATORS: after these lines is a command to be issued by the user
-#: git-rebase--interactive.sh:664
+#: git-rebase--interactive.sh:669
 #, sh-format
 msgid ""
 "Execution succeeded: $rest\n"
@@ -15826,29 +16894,29 @@ msgstr ""
 "\n"
 "\tgit rebase --continue"
 
-#: git-rebase--interactive.sh:675
+#: git-rebase--interactive.sh:680
 #, sh-format
 msgid "Unknown command: $command $sha1 $rest"
 msgstr "未知命令:$command $sha1 $rest"
 
-#: git-rebase--interactive.sh:676
+#: git-rebase--interactive.sh:681
 msgid "Please fix this using 'git rebase --edit-todo'."
 msgstr "要修改请使用命令 'git rebase --edit-todo'。"
 
-#: git-rebase--interactive.sh:711
+#: git-rebase--interactive.sh:716
 #, sh-format
 msgid "Successfully rebased and updated $head_name."
 msgstr "成功变基并更新 $head_name。"
 
-#: git-rebase--interactive.sh:735
+#: git-rebase--interactive.sh:740
 msgid "could not detach HEAD"
 msgstr "不能检出为分离头指针"
 
-#: git-rebase--interactive.sh:771
+#: git-rebase--interactive.sh:778
 msgid "Could not remove CHERRY_PICK_HEAD"
 msgstr "不能删除 CHERRY_PICK_HEAD"
 
-#: git-rebase--interactive.sh:776
+#: git-rebase--interactive.sh:783
 #, sh-format
 msgid ""
 "You have staged changes in your working tree.\n"
@@ -15877,22 +16945,22 @@ msgstr ""
 "\n"
 "  git rebase --continue\n"
 
-#: git-rebase--interactive.sh:793
+#: git-rebase--interactive.sh:800
 msgid "Error trying to find the author identity to amend commit"
 msgstr "在修补提交中查找作者信息时遇到错误"
 
-#: git-rebase--interactive.sh:798
+#: git-rebase--interactive.sh:805
 msgid ""
 "You have uncommitted changes in your working tree. Please commit them\n"
 "first and then run 'git rebase --continue' again."
 msgstr ""
 "您的工作区中有未提交的变更。请先提交然后再次运行 'git rebase --continue'。"
 
-#: git-rebase--interactive.sh:803 git-rebase--interactive.sh:807
+#: git-rebase--interactive.sh:810 git-rebase--interactive.sh:814
 msgid "Could not commit staged changes."
 msgstr "不能提交暂存的修改。"
 
-#: git-rebase--interactive.sh:836
+#: git-rebase--interactive.sh:843
 msgid ""
 "\n"
 "You are editing the todo file of an ongoing interactive rebase.\n"
@@ -15906,57 +16974,59 @@ msgstr ""
 "    git rebase --continue\n"
 "\n"
 
-#: git-rebase--interactive.sh:844 git-rebase--interactive.sh:1008
+#: git-rebase--interactive.sh:851 git-rebase--interactive.sh:937
 msgid "Could not execute editor"
 msgstr "无法运行编辑器"
 
-#: git-rebase--interactive.sh:860
+#: git-rebase--interactive.sh:872
 #, sh-format
 msgid "Could not checkout $switch_to"
 msgstr "不能检出 $switch_to"
 
-#: git-rebase--interactive.sh:865
+#: git-rebase--interactive.sh:879
 msgid "No HEAD?"
 msgstr "没有 HEAD?"
 
-#: git-rebase--interactive.sh:866
+#: git-rebase--interactive.sh:880
 #, sh-format
 msgid "Could not create temporary $state_dir"
 msgstr "不能创建临时 $state_dir"
 
-#: git-rebase--interactive.sh:869
+#: git-rebase--interactive.sh:883
 msgid "Could not mark as interactive"
 msgstr "不能标记为交互式"
 
-#: git-rebase--interactive.sh:879 git-rebase--interactive.sh:884
-msgid "Could not init rewritten commits"
-msgstr "不能对重写提交进行初始化"
-
-#: git-rebase--interactive.sh:910
-msgid "Could not generate todo list"
-msgstr "无法生成待办列表"
-
-#: git-rebase--interactive.sh:986
+#: git-rebase--interactive.sh:915
 #, sh-format
 msgid "Rebase $shortrevisions onto $shortonto ($todocount command)"
 msgid_plural "Rebase $shortrevisions onto $shortonto ($todocount commands)"
 msgstr[0] "变基 $shortrevisions 到 $shortonto($todocount 个提交)"
 msgstr[1] "变基 $shortrevisions 到 $shortonto($todocount 个提交)"
 
-#: git-rebase--interactive.sh:991
+#: git-rebase--interactive.sh:920
 msgid ""
 "\n"
-"However, if you remove everything, the rebase will be aborted.\n"
+"\tHowever, if you remove everything, the rebase will be aborted.\n"
 "\n"
+"\t"
 msgstr ""
 "\n"
-"然而,如果您删除全部内容,变基操作将会终止。\n"
+"\t然而,如果您删除全部内容,变基操作将会终止。\n"
 "\n"
+"\t"
 
-#: git-rebase--interactive.sh:998
+#: git-rebase--interactive.sh:927
 msgid "Note that empty commits are commented out"
 msgstr "注意空提交已被注释掉"
 
+#: git-rebase--interactive.sh:980
+msgid "Could not generate todo list"
+msgstr "无法生成待办列表"
+
+#: git-rebase--interactive.sh:1001 git-rebase--interactive.sh:1006
+msgid "Could not init rewritten commits"
+msgstr "不能对重写提交进行初始化"
+
 #: git-sh-setup.sh:89 git-sh-setup.sh:94
 #, sh-format
 msgid "usage: $dashless $USAGE"
@@ -16028,107 +17098,107 @@ msgstr "缓存"
 msgid "unstaged"
 msgstr "未缓存"
 
-#: git-add--interactive.perl:246 git-add--interactive.perl:271
+#: git-add--interactive.perl:253 git-add--interactive.perl:278
 msgid "binary"
 msgstr "二进制"
 
-#: git-add--interactive.perl:255 git-add--interactive.perl:309
+#: git-add--interactive.perl:262 git-add--interactive.perl:316
 msgid "nothing"
 msgstr "无"
 
-#: git-add--interactive.perl:291 git-add--interactive.perl:306
+#: git-add--interactive.perl:298 git-add--interactive.perl:313
 msgid "unchanged"
 msgstr "没有修改"
 
-#: git-add--interactive.perl:602
+#: git-add--interactive.perl:609
 #, perl-format
 msgid "added %d path\n"
 msgid_plural "added %d paths\n"
 msgstr[0] "增加了 %d 个路径\n"
 msgstr[1] "增加了 %d 个路径\n"
 
-#: git-add--interactive.perl:605
+#: git-add--interactive.perl:612
 #, perl-format
 msgid "updated %d path\n"
 msgid_plural "updated %d paths\n"
 msgstr[0] "更新了 %d 个路径\n"
 msgstr[1] "更新了 %d 个路径\n"
 
-#: git-add--interactive.perl:608
+#: git-add--interactive.perl:615
 #, perl-format
 msgid "reverted %d path\n"
 msgid_plural "reverted %d paths\n"
 msgstr[0] "还原了 %d 个路径\n"
 msgstr[1] "还原了 %d 个路径\n"
 
-#: git-add--interactive.perl:611
+#: git-add--interactive.perl:618
 #, perl-format
 msgid "touched %d path\n"
 msgid_plural "touched %d paths\n"
 msgstr[0] "触碰了 %d 个路径\n"
 msgstr[1] "触碰了 %d 个路径\n"
 
-#: git-add--interactive.perl:620
+#: git-add--interactive.perl:627
 msgid "Update"
 msgstr "更新"
 
-#: git-add--interactive.perl:632
+#: git-add--interactive.perl:639
 msgid "Revert"
 msgstr "还原"
 
-#: git-add--interactive.perl:655
+#: git-add--interactive.perl:662
 #, perl-format
 msgid "note: %s is untracked now.\n"
 msgstr "说明:%s 现已成为未跟踪的。\n"
 
-#: git-add--interactive.perl:666
+#: git-add--interactive.perl:673
 msgid "Add untracked"
 msgstr "添加未跟踪的"
 
-#: git-add--interactive.perl:672
+#: git-add--interactive.perl:679
 msgid "No untracked files.\n"
 msgstr "没有未跟踪的文件。\n"
 
-#: git-add--interactive.perl:1026
+#: git-add--interactive.perl:1033
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for staging."
 msgstr "如果补丁能干净地应用,编辑块将立即标记为暂存。"
 
-#: git-add--interactive.perl:1029
+#: git-add--interactive.perl:1036
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for stashing."
 msgstr "如果补丁能干净地应用,编辑块将立即标记为贮藏。"
 
-#: git-add--interactive.perl:1032
+#: git-add--interactive.perl:1039
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for unstaging."
 msgstr "如果补丁能干净地应用,编辑块将立即标记为未暂存。"
 
-#: git-add--interactive.perl:1035 git-add--interactive.perl:1044
+#: git-add--interactive.perl:1042 git-add--interactive.perl:1051
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for applying."
 msgstr "如果补丁能干净地应用,编辑块将立即标记为应用。"
 
-#: git-add--interactive.perl:1038 git-add--interactive.perl:1041
+#: git-add--interactive.perl:1045 git-add--interactive.perl:1048
 msgid ""
 "If the patch applies cleanly, the edited hunk will immediately be\n"
 "marked for discarding."
 msgstr "如果补丁能干净地应用,编辑块将立即标记为丢弃。"
 
-#: git-add--interactive.perl:1078
+#: git-add--interactive.perl:1085
 #, perl-format
 msgid "failed to open hunk edit file for writing: %s"
 msgstr "无法写入块编辑文件:%s"
 
-#: git-add--interactive.perl:1079
+#: git-add--interactive.perl:1086
 msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
 msgstr "手动块编辑模式 -- 查看底部的快速指南。\n"
 
-#: git-add--interactive.perl:1085
+#: git-add--interactive.perl:1092
 #, perl-format
 msgid ""
 "---\n"
@@ -16142,7 +17212,7 @@ msgstr ""
 "以 %s 开始的行将被删除。\n"
 
 #. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: git-add--interactive.perl:1093
+#: git-add--interactive.perl:1100
 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"
@@ -16151,7 +17221,7 @@ msgstr ""
 "如果不能干净地应用,您将有机会重新编辑。如果该块的全部内容删除,则\n"
 "此次编辑被终止,该块不会被修改。\n"
 
-#: git-add--interactive.perl:1107
+#: git-add--interactive.perl:1114
 #, perl-format
 msgid "failed to open hunk edit file for reading: %s"
 msgstr "无法读取块编辑文件:%s"
@@ -16162,12 +17232,12 @@ msgstr "无法读取块编辑文件:%s"
 #. Consider translating (saying "no" discards!) as
 #. (saying "n" for "no" discards!) if the translation
 #. of the word "no" does not start with n.
-#: git-add--interactive.perl:1206
+#: git-add--interactive.perl:1213
 msgid ""
 "Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
 msgstr "您的编辑块不能被应用。重新编辑(选择 \"no\" 丢弃!) [y/n]? "
 
-#: git-add--interactive.perl:1215
+#: git-add--interactive.perl:1222
 msgid ""
 "y - stage this hunk\n"
 "n - do not stage this hunk\n"
@@ -16181,7 +17251,7 @@ msgstr ""
 "a - 暂存该块和本文件中后面的全部块\n"
 "d - 不暂存该块和本文件中后面的全部块"
 
-#: git-add--interactive.perl:1221
+#: git-add--interactive.perl:1228
 msgid ""
 "y - stash this hunk\n"
 "n - do not stash this hunk\n"
@@ -16195,7 +17265,7 @@ msgstr ""
 "a - 贮藏该块和本文件中后面的全部块\n"
 "d - 不贮藏该块和本文件中后面的全部块"
 
-#: git-add--interactive.perl:1227
+#: git-add--interactive.perl:1234
 msgid ""
 "y - unstage this hunk\n"
 "n - do not unstage this hunk\n"
@@ -16209,7 +17279,7 @@ msgstr ""
 "a - 不暂存该块和本文件中后面的全部块\n"
 "d - 不要不暂存该块和本文件中后面的全部块"
 
-#: git-add--interactive.perl:1233
+#: git-add--interactive.perl:1240
 msgid ""
 "y - apply this hunk to index\n"
 "n - do not apply this hunk to index\n"
@@ -16223,7 +17293,7 @@ msgstr ""
 "a - 应用该块和本文件中后面的全部块\n"
 "d - 不要应用该块和本文件中后面的全部块"
 
-#: git-add--interactive.perl:1239
+#: git-add--interactive.perl:1246
 msgid ""
 "y - discard this hunk from worktree\n"
 "n - do not discard this hunk from worktree\n"
@@ -16237,7 +17307,7 @@ msgstr ""
 "a - 丢弃该块和本文件中后面的全部块\n"
 "d - 不要丢弃该块和本文件中后面的全部块"
 
-#: git-add--interactive.perl:1245
+#: git-add--interactive.perl:1252
 msgid ""
 "y - discard this hunk from index and worktree\n"
 "n - do not discard this hunk from index and worktree\n"
@@ -16251,7 +17321,7 @@ msgstr ""
 "a - 丢弃该块和本文件中后面的全部块\n"
 "d - 不要丢弃该块和本文件中后面的全部块"
 
-#: git-add--interactive.perl:1251
+#: git-add--interactive.perl:1258
 msgid ""
 "y - apply this hunk to index and worktree\n"
 "n - do not apply this hunk to index and worktree\n"
@@ -16265,7 +17335,7 @@ msgstr ""
 "a - 应用该块和本文件中后面的全部块\n"
 "d - 不要应用该块和本文件中后面的全部块"
 
-#: git-add--interactive.perl:1266
+#: git-add--interactive.perl:1273
 msgid ""
 "g - select a hunk to go to\n"
 "/ - search for a hunk matching the given regex\n"
@@ -16287,211 +17357,211 @@ msgstr ""
 "e - 手动编辑当前块\n"
 "? - 显示帮助\n"
 
-#: git-add--interactive.perl:1297
+#: git-add--interactive.perl:1304
 msgid "The selected hunks do not apply to the index!\n"
 msgstr "选中的块不能应用到索引!\n"
 
-#: git-add--interactive.perl:1298
+#: git-add--interactive.perl:1305
 msgid "Apply them to the worktree anyway? "
 msgstr "无论如何都要应用到工作区么?"
 
-#: git-add--interactive.perl:1301
+#: git-add--interactive.perl:1308
 msgid "Nothing was applied.\n"
 msgstr "未应用。\n"
 
-#: git-add--interactive.perl:1312
+#: git-add--interactive.perl:1319
 #, perl-format
 msgid "ignoring unmerged: %s\n"
 msgstr "忽略未合入的:%s\n"
 
-#: git-add--interactive.perl:1321
+#: git-add--interactive.perl:1328
 msgid "Only binary files changed.\n"
 msgstr "只有二进制文件被修改。\n"
 
-#: git-add--interactive.perl:1323
+#: git-add--interactive.perl:1330
 msgid "No changes.\n"
 msgstr "没有修改。\n"
 
-#: git-add--interactive.perl:1331
+#: git-add--interactive.perl:1338
 msgid "Patch update"
 msgstr "补丁更新"
 
-#: git-add--interactive.perl:1383
+#: git-add--interactive.perl:1390
 #, perl-format
 msgid "Stage mode change [y,n,q,a,d%s,?]? "
 msgstr "暂存模式变更 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1384
+#: git-add--interactive.perl:1391
 #, perl-format
 msgid "Stage deletion [y,n,q,a,d%s,?]? "
 msgstr "暂存删除动作 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1385
+#: git-add--interactive.perl:1392
 #, perl-format
 msgid "Stage this hunk [y,n,q,a,d%s,?]? "
 msgstr "暂存该块 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1388
+#: git-add--interactive.perl:1395
 #, perl-format
 msgid "Stash mode change [y,n,q,a,d%s,?]? "
 msgstr "贮藏模式变更 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1389
+#: git-add--interactive.perl:1396
 #, perl-format
 msgid "Stash deletion [y,n,q,a,d%s,?]? "
 msgstr "贮藏删除动作 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1390
+#: git-add--interactive.perl:1397
 #, perl-format
 msgid "Stash this hunk [y,n,q,a,d%s,?]? "
 msgstr "贮藏该块 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1393
+#: git-add--interactive.perl:1400
 #, perl-format
 msgid "Unstage mode change [y,n,q,a,d%s,?]? "
 msgstr "取消暂存模式变更 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1394
+#: git-add--interactive.perl:1401
 #, perl-format
 msgid "Unstage deletion [y,n,q,a,d%s,?]? "
 msgstr "取消暂存删除动作 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1395
+#: git-add--interactive.perl:1402
 #, perl-format
 msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
 msgstr "取消暂存该块 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1398
+#: git-add--interactive.perl:1405
 #, perl-format
 msgid "Apply mode change to index [y,n,q,a,d%s,?]? "
 msgstr "将模式变更应用到索引 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1399
+#: git-add--interactive.perl:1406
 #, perl-format
 msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
 msgstr "将删除应用到索引 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1400
+#: git-add--interactive.perl:1407
 #, perl-format
 msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
 msgstr "将该块应用到索引 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1403
+#: git-add--interactive.perl:1410
 #, perl-format
 msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
 msgstr "从工作区中丢弃模式变更 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1404
+#: git-add--interactive.perl:1411
 #, perl-format
 msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
 msgstr "从工作区中丢弃删除动作 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1405
+#: git-add--interactive.perl:1412
 #, perl-format
 msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
 msgstr "从工作区中丢弃该块 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1408
+#: git-add--interactive.perl:1415
 #, perl-format
 msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "从索引和工作区中丢弃模式变更 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1409
+#: git-add--interactive.perl:1416
 #, perl-format
 msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "从索引和工作区中丢弃删除 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1410
+#: git-add--interactive.perl:1417
 #, perl-format
 msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
 msgstr "从索引和工作区中丢弃该块 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1413
+#: git-add--interactive.perl:1420
 #, perl-format
 msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "将模式变更应用到索引和工作区 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1414
+#: git-add--interactive.perl:1421
 #, perl-format
 msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "将删除应用到索引和工作区 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1415
+#: git-add--interactive.perl:1422
 #, perl-format
 msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
 msgstr "将该块应用到索引和工作区 [y,n,q,a,d%s,?]? "
 
-#: git-add--interactive.perl:1515
+#: git-add--interactive.perl:1522
 msgid "No other hunks to goto\n"
 msgstr "没有其它可供跳转的块\n"
 
-#: git-add--interactive.perl:1522
+#: git-add--interactive.perl:1529
 msgid "go to which hunk (<ret> to see more)? "
 msgstr "跳转到哪个块(<回车> 查看更多)? "
 
-#: git-add--interactive.perl:1524
+#: git-add--interactive.perl:1531
 msgid "go to which hunk? "
 msgstr "跳转到哪个块?"
 
-#: git-add--interactive.perl:1533
+#: git-add--interactive.perl:1540
 #, perl-format
 msgid "Invalid number: '%s'\n"
 msgstr "无效数字:'%s'\n"
 
-#: git-add--interactive.perl:1538
+#: git-add--interactive.perl:1545
 #, 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:1564
+#: git-add--interactive.perl:1571
 msgid "No other hunks to search\n"
 msgstr "没有其它可供查找的块\n"
 
-#: git-add--interactive.perl:1568
+#: git-add--interactive.perl:1575
 msgid "search for regex? "
 msgstr "使用正则表达式搜索?"
 
-#: git-add--interactive.perl:1581
+#: git-add--interactive.perl:1588
 #, perl-format
 msgid "Malformed search regexp %s: %s\n"
 msgstr "错误的正则表达式 %s:%s\n"
 
-#: git-add--interactive.perl:1591
+#: git-add--interactive.perl:1598
 msgid "No hunk matches the given pattern\n"
 msgstr "没有和给定模式相匹配的快\n"
 
-#: git-add--interactive.perl:1603 git-add--interactive.perl:1625
+#: git-add--interactive.perl:1610 git-add--interactive.perl:1632
 msgid "No previous hunk\n"
 msgstr "没有前一个块\n"
 
-#: git-add--interactive.perl:1612 git-add--interactive.perl:1631
+#: git-add--interactive.perl:1619 git-add--interactive.perl:1638
 msgid "No next hunk\n"
 msgstr "没有下一个块\n"
 
-#: git-add--interactive.perl:1637
+#: git-add--interactive.perl:1644
 msgid "Sorry, cannot split this hunk\n"
 msgstr "对不起,不能拆分这个块\n"
 
-#: git-add--interactive.perl:1643
+#: git-add--interactive.perl:1650
 #, 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:1653
+#: git-add--interactive.perl:1660
 msgid "Sorry, cannot edit this hunk\n"
 msgstr "对不起,不能编辑这个块\n"
 
-#: git-add--interactive.perl:1699
+#: git-add--interactive.perl:1706
 msgid "Review diff"
 msgstr "检视 diff"
 
 #. TRANSLATORS: please do not translate the command names
 #. 'status', 'update', 'revert', etc.
-#: git-add--interactive.perl:1718
+#: git-add--interactive.perl:1725
 msgid ""
 "status        - show paths with changes\n"
 "update        - add working tree state to the staged set of changes\n"
@@ -16508,18 +17578,18 @@ msgstr ""
 "diff          - 显示 HEAD 和索引间差异\n"
 "add untracked - 添加未跟踪文件的内容至暂存列表\n"
 
-#: git-add--interactive.perl:1735 git-add--interactive.perl:1740
-#: git-add--interactive.perl:1743 git-add--interactive.perl:1750
-#: git-add--interactive.perl:1754 git-add--interactive.perl:1760
+#: git-add--interactive.perl:1742 git-add--interactive.perl:1747
+#: git-add--interactive.perl:1750 git-add--interactive.perl:1757
+#: git-add--interactive.perl:1761 git-add--interactive.perl:1767
 msgid "missing --"
 msgstr "缺失 --"
 
-#: git-add--interactive.perl:1756
+#: git-add--interactive.perl:1763
 #, perl-format
 msgid "unknown --patch mode: %s"
 msgstr "未知的 --patch 模式:%s"
 
-#: git-add--interactive.perl:1762 git-add--interactive.perl:1768
+#: git-add--interactive.perl:1769 git-add--interactive.perl:1775
 #, perl-format
 msgid "invalid argument %s, expecting --"
 msgstr "无效的参数 %s,期望是 --"
@@ -16725,7 +17795,7 @@ msgstr "如何处理这个地址?([q]uit|[d]rop|[e]dit):"
 msgid "CA path \"%s\" does not exist"
 msgstr "CA 路径 \"%s\" 不存在"
 
-#: git-send-email.perl:1395
+#: git-send-email.perl:1400
 msgid ""
 "    The Cc list above has been expanded by additional\n"
 "    addresses found in the patch commit message. By default\n"
@@ -16747,135 +17817,165 @@ msgstr ""
 "    sendemail.confirm auto'。\n"
 "\n"
 
-#. TRANSLATORS: Make sure to include [y] [n] [q] [a] in your
+#. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
 #. translation. The program will only accept English input
 #. at this point.
-#: git-send-email.perl:1410
-msgid "Send this email? ([y]es|[n]o|[q]uit|[a]ll): "
-msgstr "发送邮件?([y]es|[n]o|[q]uit|[a]ll):"
+#: git-send-email.perl:1415
+msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
+msgstr "发送这封邮件?([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
 
-#: git-send-email.perl:1413
+#: git-send-email.perl:1418
 msgid "Send this email reply required"
 msgstr "发送要求的邮件回复"
 
-#: git-send-email.perl:1439
+#: git-send-email.perl:1446
 msgid "The required SMTP server is not properly defined."
 msgstr "要求的 SMTP 服务器未被正确定义。"
 
-#: git-send-email.perl:1486
+#: git-send-email.perl:1493
 #, perl-format
 msgid "Server does not support STARTTLS! %s"
 msgstr "服务器不支持 STARTTLS!%s"
 
-#: git-send-email.perl:1491 git-send-email.perl:1495
+#: git-send-email.perl:1498 git-send-email.perl:1502
 #, perl-format
 msgid "STARTTLS failed! %s"
 msgstr "STARTTLS 失败!%s"
 
-#: git-send-email.perl:1505
+#: git-send-email.perl:1512
 msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
 msgstr "无法正确地初始化 SMTP。检查配置并使用 --smtp-debug。"
 
-#: git-send-email.perl:1523
+#: git-send-email.perl:1530
 #, perl-format
 msgid "Failed to send %s\n"
 msgstr "无法发送 %s\n"
 
-#: git-send-email.perl:1526
+#: git-send-email.perl:1533
 #, perl-format
 msgid "Dry-Sent %s\n"
 msgstr "演习发送 %s\n"
 
-#: git-send-email.perl:1526
+#: git-send-email.perl:1533
 #, perl-format
 msgid "Sent %s\n"
 msgstr "正发送 %s\n"
 
-#: git-send-email.perl:1528
+#: git-send-email.perl:1535
 msgid "Dry-OK. Log says:\n"
 msgstr "演习成功。日志说:\n"
 
-#: git-send-email.perl:1528
+#: git-send-email.perl:1535
 msgid "OK. Log says:\n"
 msgstr "OK。日志说:\n"
 
-#: git-send-email.perl:1540
+#: git-send-email.perl:1547
 msgid "Result: "
 msgstr "结果:"
 
-#: git-send-email.perl:1543
+#: git-send-email.perl:1550
 msgid "Result: OK\n"
 msgstr "结果:OK\n"
 
-#: git-send-email.perl:1556
+#: git-send-email.perl:1568
 #, perl-format
 msgid "can't open file %s"
 msgstr "无法打开文件 %s"
 
-#: git-send-email.perl:1603 git-send-email.perl:1623
+#: git-send-email.perl:1615 git-send-email.perl:1635
 #, perl-format
 msgid "(mbox) Adding cc: %s from line '%s'\n"
 msgstr "(mbox) 添加 cc:%s 自行 '%s'\n"
 
-#: git-send-email.perl:1609
+#: git-send-email.perl:1621
 #, perl-format
 msgid "(mbox) Adding to: %s from line '%s'\n"
 msgstr "(mbox) 添加 to:%s 自行 '%s'\n"
 
-#: git-send-email.perl:1657
+#: git-send-email.perl:1674
 #, perl-format
 msgid "(non-mbox) Adding cc: %s from line '%s'\n"
 msgstr "(non-mbox) 添加 cc:%s 自行 '%s'\n"
 
-#: git-send-email.perl:1682
+#: git-send-email.perl:1699
 #, perl-format
 msgid "(body) Adding cc: %s from line '%s'\n"
 msgstr "(body) 添加 cc: %s 自行 '%s'\n"
 
-#: git-send-email.perl:1788
+#: git-send-email.perl:1817
 #, perl-format
 msgid "(%s) Could not execute '%s'"
 msgstr "(%s) 不能执行 '%s'"
 
-#: git-send-email.perl:1795
+#: git-send-email.perl:1824
 #, perl-format
 msgid "(%s) Adding %s: %s from: '%s'\n"
 msgstr "(%s) 添加 %s: %s 自:'%s'\n"
 
-#: git-send-email.perl:1799
+#: git-send-email.perl:1828
 #, perl-format
 msgid "(%s) failed to close pipe to '%s'"
 msgstr "(%s) 无法关闭管道至 '%s'"
 
-#: git-send-email.perl:1826
+#: git-send-email.perl:1855
 msgid "cannot send message as 7bit"
 msgstr "不能以 7bit 形式发送信息"
 
-#: git-send-email.perl:1834
+#: git-send-email.perl:1863
 msgid "invalid transfer encoding"
 msgstr "无效的传送编码"
 
-#: git-send-email.perl:1872 git-send-email.perl:1923 git-send-email.perl:1933
+#: git-send-email.perl:1901 git-send-email.perl:1952 git-send-email.perl:1962
 #, perl-format
 msgid "unable to open %s: %s\n"
 msgstr "不能打开 %s:%s\n"
 
-#: git-send-email.perl:1875
+#: git-send-email.perl:1904
 #, perl-format
 msgid "%s: patch contains a line longer than 998 characters"
 msgstr "%s:补丁包含一个超过 998 字符的行"
 
-#: git-send-email.perl:1891
+#: git-send-email.perl:1920
 #, 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:1895
+#: git-send-email.perl:1924
 #, perl-format
 msgid "Do you really want to send %s? [y|N]: "
 msgstr "您真的要发送 %s?[y|N]:"
 
+#~ msgid "Everyday Git With 20 Commands Or So"
+#~ msgstr "每一天 Git 常用的约 20 条命令"
+
+#~ msgid "Could not open '%s' for writing"
+#~ msgstr "无法打开 '%s' 进行写入"
+
+#~ msgid "BUG: returned path string doesn't match cwd?"
+#~ msgstr "BUG:返回的路径和当前路径不匹配?"
+
+#~ msgid "Error in object"
+#~ msgstr "对象中出错"
+
+#~ msgid ""
+#~ "unexpected 1st line of squash message:\n"
+#~ "\n"
+#~ "\t%.*s"
+#~ msgstr ""
+#~ "意外的压缩提交首行提交信息:\n"
+#~ "\n"
+#~ "\t%.*s"
+
+#~ msgid ""
+#~ "invalid 1st line of squash message:\n"
+#~ "\n"
+#~ "\t%.*s"
+#~ msgstr ""
+#~ "压缩提交的首行提交信息无效:\n"
+#~ "\n"
+#~ "\t%.*s"
+
 #~ msgid "To/Cc/Bcc fields are not interpreted yet, they have been ignored\n"
 #~ msgstr "To/Cc/Bcc 字段不解析,它们被忽略\n"
 
index 372588260ea00f48ea4d031095901a575ac0e620..e865254bea028485e1731d316727b66753a8fc5e 100644 (file)
@@ -11,6 +11,7 @@
 #include "cache-tree.h"
 #include "refs.h"
 #include "dir.h"
+#include "object-store.h"
 #include "tree.h"
 #include "commit.h"
 #include "blob.h"
index 01c1a82075eca737c2e3749e295ca24bbab870b6..0ab893a250f565ef8be1c449542d4e70e7bc10d5 100644 (file)
@@ -3,6 +3,7 @@
 #include "parse-options.h"
 #include "refs.h"
 #include "wildmatch.h"
+#include "object-store.h"
 #include "commit.h"
 #include "remote.h"
 #include "color.h"
@@ -16,6 +17,7 @@
 #include "trailer.h"
 #include "wt-status.h"
 #include "commit-slab.h"
+#include "commit-graph.h"
 
 static struct ref_msg {
        const char *gone;
@@ -1662,12 +1664,13 @@ static int in_commit_list(const struct commit_list *want, struct commit *c)
 }
 
 /*
- * Test whether the candidate or one of its parents is contained in the list.
+ * Test whether the candidate is contained in the list.
  * Do not recurse to find out, though, but return -1 if inconclusive.
  */
 static enum contains_result contains_test(struct commit *candidate,
                                          const struct commit_list *want,
-                                         struct contains_cache *cache)
+                                         struct contains_cache *cache,
+                                         uint32_t cutoff)
 {
        enum contains_result *cached = contains_cache_at(cache, candidate);
 
@@ -1683,6 +1686,10 @@ static enum contains_result contains_test(struct commit *candidate,
 
        /* Otherwise, we don't know; prepare to recurse */
        parse_commit_or_die(candidate);
+
+       if (candidate->generation < cutoff)
+               return CONTAINS_NO;
+
        return CONTAINS_UNKNOWN;
 }
 
@@ -1698,8 +1705,18 @@ static enum contains_result contains_tag_algo(struct commit *candidate,
                                              struct contains_cache *cache)
 {
        struct contains_stack contains_stack = { 0, 0, NULL };
-       enum contains_result result = contains_test(candidate, want, cache);
+       enum contains_result result;
+       uint32_t cutoff = GENERATION_NUMBER_INFINITY;
+       const struct commit_list *p;
+
+       for (p = want; p; p = p->next) {
+               struct commit *c = p->item;
+               load_commit_graph_info(c);
+               if (c->generation < cutoff)
+                       cutoff = c->generation;
+       }
 
+       result = contains_test(candidate, want, cache, cutoff);
        if (result != CONTAINS_UNKNOWN)
                return result;
 
@@ -1717,7 +1734,7 @@ static enum contains_result contains_tag_algo(struct commit *candidate,
                 * If we just popped the stack, parents->item has been marked,
                 * therefore contains_test will return a meaningful yes/no.
                 */
-               else switch (contains_test(parents->item, want, cache)) {
+               else switch (contains_test(parents->item, want, cache, cutoff)) {
                case CONTAINS_YES:
                        *contains_cache_at(cache, commit) = CONTAINS_YES;
                        contains_stack.nr--;
@@ -1731,7 +1748,7 @@ static enum contains_result contains_tag_algo(struct commit *candidate,
                }
        }
        free(contains_stack.contains_stack);
-       return contains_test(candidate, want, cache);
+       return contains_test(candidate, want, cache, cutoff);
 }
 
 static int commit_contains(struct ref_filter *filter, struct commit *commit,
diff --git a/refs.c b/refs.c
index 0eb379f9312fd9f167fea2e0f148c85c47cd2ff0..3b4508a97aa23fa4a16bb64137b01c16b2b4b59d 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -9,6 +9,7 @@
 #include "iterator.h"
 #include "refs.h"
 #include "refs/refs-internal.h"
+#include "object-store.h"
 #include "object.h"
 #include "tag.h"
 #include "submodule.h"
index cec3fb9e00f78c1e0be9f24bd07aa756d56afc00..d447a731da0932e60c918030c7cd07a1843dfd35 100644 (file)
@@ -499,6 +499,7 @@ static int load_contents(struct snapshot *snapshot)
        size = xsize_t(st.st_size);
 
        if (!size) {
+               close(fd);
                return 0;
        } else if (mmap_strategy == MMAP_NONE || size <= SMALL_FILE_SIZE) {
                snapshot->buf = xmalloc(size);
index 78edc48ae8eebcfdbfd87172e7ef4ead6c3fff85..e8010dce0ce27472c2b3269e13b9c1de6a69f3cc 100644 (file)
--- a/refspec.c
+++ b/refspec.c
@@ -124,11 +124,16 @@ static int parse_refspec(struct refspec_item *item, const char *refspec, int fet
        return 1;
 }
 
-void refspec_item_init(struct refspec_item *item, const char *refspec, int fetch)
+int refspec_item_init(struct refspec_item *item, const char *refspec, int fetch)
 {
        memset(item, 0, sizeof(*item));
+       return parse_refspec(item, refspec, fetch);
+}
 
-       if (!parse_refspec(item, refspec, fetch))
+void refspec_item_init_or_die(struct refspec_item *item, const char *refspec,
+                             int fetch)
+{
+       if (!refspec_item_init(item, refspec, fetch))
                die("Invalid refspec '%s'", refspec);
 }
 
@@ -152,7 +157,7 @@ void refspec_append(struct refspec *rs, const char *refspec)
 {
        struct refspec_item item;
 
-       refspec_item_init(&item, refspec, rs->fetch);
+       refspec_item_init_or_die(&item, refspec, rs->fetch);
 
        ALLOC_GROW(rs->items, rs->nr + 1, rs->alloc);
        rs->items[rs->nr++] = item;
@@ -191,7 +196,7 @@ void refspec_clear(struct refspec *rs)
 int valid_fetch_refspec(const char *fetch_refspec_str)
 {
        struct refspec_item refspec;
-       int ret = parse_refspec(&refspec, fetch_refspec_str, REFSPEC_FETCH);
+       int ret = refspec_item_init(&refspec, fetch_refspec_str, REFSPEC_FETCH);
        refspec_item_clear(&refspec);
        return ret;
 }
index 3a9363887c48dbba612ae4de195c30f9d382c00c..9b6e64a824e4be1025f3f0a07fa5a59296698489 100644 (file)
--- a/refspec.h
+++ b/refspec.h
@@ -32,7 +32,10 @@ struct refspec {
        int fetch;
 };
 
-void refspec_item_init(struct refspec_item *item, const char *refspec, int fetch);
+int refspec_item_init(struct refspec_item *item, const char *refspec,
+                     int fetch);
+void refspec_item_init_or_die(struct refspec_item *item, const char *refspec,
+                             int fetch);
 void refspec_item_clear(struct refspec_item *item);
 void refspec_init(struct refspec *rs, int fetch);
 void refspec_append(struct refspec *rs, const char *refspec);
index 444d98059f681e21beeb3e66fe8539887cfb74d1..3af708c5b671920cff3d1888eb9c8ae724e0d648 100644 (file)
@@ -1,6 +1,7 @@
 #include "cache.h"
 #include "refs.h"
 #include "remote.h"
+#include "object-store.h"
 #include "strbuf.h"
 #include "url.h"
 #include "exec-cmd.h"
index abe80c13972c718bd5d738063a2f526f2d12ee87..539285fbdf015141bbacf7a730b9fad0cacbf842 100644 (file)
--- a/remote.c
+++ b/remote.c
@@ -3,6 +3,7 @@
 #include "remote.h"
 #include "refs.h"
 #include "refspec.h"
+#include "object-store.h"
 #include "commit.h"
 #include "diff.h"
 #include "revision.h"
index 02fe884603df56ea0996121152b7640afb56a48f..5dd148671811b383a64b8f3adab87804cea9db08 100644 (file)
@@ -2,6 +2,7 @@
 #include "repository.h"
 #include "object-store.h"
 #include "config.h"
+#include "object.h"
 #include "submodule-config.h"
 
 /* The main repository */
@@ -14,6 +15,8 @@ void initialize_the_repository(void)
 
        the_repo.index = &the_index;
        the_repo.objects = raw_object_store_new();
+       the_repo.parsed_objects = parsed_object_pool_new();
+
        repo_set_hash_algo(&the_repo, GIT_HASH_SHA1);
 }
 
@@ -143,6 +146,7 @@ int repo_init(struct repository *repo,
        memset(repo, 0, sizeof(*repo));
 
        repo->objects = raw_object_store_new();
+       repo->parsed_objects = parsed_object_pool_new();
 
        if (repo_init_gitdir(repo, gitdir))
                goto error;
@@ -226,6 +230,9 @@ void repo_clear(struct repository *repo)
        raw_object_store_clear(repo->objects);
        FREE_AND_NULL(repo->objects);
 
+       parsed_object_pool_clear(repo->parsed_objects);
+       FREE_AND_NULL(repo->parsed_objects);
+
        if (repo->config) {
                git_configset_clear(repo->config);
                FREE_AND_NULL(repo->config);
index f2646f0c52aa83f6da8950cfd96c4308498cf417..b9413be50cfd0c9d17865220c3db5eb16024187e 100644 (file)
@@ -26,9 +26,23 @@ struct repository {
         */
        struct raw_object_store *objects;
 
+       /*
+        * All objects in this repository that have been parsed. This structure
+        * owns all objects it references, so users of "struct object *"
+        * generally do not need to free them; instead, when a repository is no
+        * longer used, call parsed_object_pool_clear() on this structure, which
+        * is called by the repositories repo_clear on its desconstruction.
+        */
+       struct parsed_object_pool *parsed_objects;
+
        /* The store in which the refs are held. */
        struct ref_store *refs;
 
+       /*
+        * Contains path to often used file names.
+        */
+       struct path_cache cached_paths;
+
        /*
         * Path to the repository's graft file.
         * Cannot be NULL after initialization.
index e0862e27786244b1a98723d09475223cc001dd62..16c8aac6211ac74de77b1f2cad5eddb4d1abcc95 100644 (file)
--- a/rerere.c
+++ b/rerere.c
@@ -9,6 +9,7 @@
 #include "ll-merge.h"
 #include "attr.h"
 #include "pathspec.h"
+#include "object-store.h"
 #include "sha1-lookup.h"
 
 #define RESOLVED 0
@@ -200,7 +201,7 @@ static struct rerere_id *new_rerere_id(unsigned char *sha1)
 static void read_rr(struct string_list *rr)
 {
        struct strbuf buf = STRBUF_INIT;
-       FILE *in = fopen_or_warn(git_path_merge_rr(), "r");
+       FILE *in = fopen_or_warn(git_path_merge_rr(the_repository), "r");
 
        if (!in)
                return;
@@ -895,7 +896,8 @@ int setup_rerere(struct string_list *merge_rr, int flags)
        if (flags & RERERE_READONLY)
                fd = 0;
        else
-               fd = hold_lock_file_for_update(&write_lock, git_path_merge_rr(),
+               fd = hold_lock_file_for_update(&write_lock,
+                                              git_path_merge_rr(the_repository),
                                               LOCK_DIE_ON_ERROR);
        read_rr(merge_rr);
        return fd;
@@ -1245,6 +1247,6 @@ void rerere_clear(struct string_list *merge_rr)
                        rmdir(rerere_path(id, NULL));
                }
        }
-       unlink_or_warn(git_path_merge_rr());
+       unlink_or_warn(git_path_merge_rr(the_repository));
        rollback_lock_file(&write_lock);
 }
index 40fd91ff2b16bffc725f8602f45117279e27ba19..72abe235e4a8045b92d40b18c7d1fb574456e38c 100644 (file)
@@ -1,4 +1,5 @@
 #include "cache.h"
+#include "object-store.h"
 #include "tag.h"
 #include "blob.h"
 #include "tree.h"
@@ -29,6 +30,8 @@ volatile show_early_output_fn_t show_early_output;
 static const char *term_bad;
 static const char *term_good;
 
+implement_shared_commit_slab(revision_sources, char *);
+
 void show_object_with_name(FILE *out, struct object *obj, const char *name)
 {
        const char *p;
@@ -265,14 +268,19 @@ static struct commit *handle_commit(struct rev_info *revs,
         */
        if (object->type == OBJ_COMMIT) {
                struct commit *commit = (struct commit *)object;
+
                if (parse_commit(commit) < 0)
                        die("unable to parse commit %s", name);
                if (flags & UNINTERESTING) {
                        mark_parents_uninteresting(commit);
                        revs->limited = 1;
                }
-               if (revs->show_source && !commit->util)
-                       commit->util = xstrdup(name);
+               if (revs->sources) {
+                       char **slot = revision_sources_at(revs->sources, commit);
+
+                       if (!*slot)
+                               *slot = xstrdup(name);
+               }
                return commit;
        }
 
@@ -824,8 +832,12 @@ static int add_parents_to_list(struct rev_info *revs, struct commit *commit,
                        }
                        return -1;
                }
-               if (revs->show_source && !p->util)
-                       p->util = commit->util;
+               if (revs->sources) {
+                       char **slot = revision_sources_at(revs->sources, p);
+
+                       if (!*slot)
+                               *slot = *revision_sources_at(revs->sources, commit);
+               }
                p->object.flags |= left_flag;
                if (!(p->object.flags & SEEN)) {
                        p->object.flags |= SEEN;
index b8c47b98e22562ef320197b4ddbc8f0c3ee40f98..bf2239f87689d9486c4b888bed5cba6affa21953 100644 (file)
@@ -6,6 +6,7 @@
 #include "notes.h"
 #include "pretty.h"
 #include "diff.h"
+#include "commit-slab-decl.h"
 
 /* Remember to update object flag allocation in object.h */
 #define SEEN           (1u<<0)
@@ -29,6 +30,7 @@ struct rev_info;
 struct log_info;
 struct string_list;
 struct saved_parents;
+define_shared_commit_slab(revision_sources, char *);
 
 struct rev_cmdline_info {
        unsigned int nr;
@@ -111,7 +113,6 @@ struct rev_info {
                        right_only:1,
                        rewrite_parents:1,
                        print_parents:1,
-                       show_source:1,
                        show_decorations:1,
                        reverse:1,
                        reverse_output_stage:1,
@@ -224,6 +225,8 @@ struct rev_info {
 
        struct commit_list *previous_parents;
        const char *break_bar;
+
+       struct revision_sources *sources;
 };
 
 extern int ref_excluded(struct string_list *, const char *path);
index 19025a7aca82a7066b9a2d40d4d50406a9749a5f..e920ca57df4dd0b65d6694ed2532dead8ae83fb6 100644 (file)
@@ -2,6 +2,7 @@
 #include "config.h"
 #include "commit.h"
 #include "refs.h"
+#include "object-store.h"
 #include "pkt-line.h"
 #include "sideband.h"
 #include "run-command.h"
@@ -75,7 +76,7 @@ static int pack_objects(int fd, struct ref *refs, struct oid_array *extra, struc
                argv_array_push(&po.args, "-q");
        if (args->progress)
                argv_array_push(&po.args, "--progress");
-       if (is_repository_shallow())
+       if (is_repository_shallow(the_repository))
                argv_array_push(&po.args, "--shallow");
        po.in = -1;
        po.out = args->stateless_rpc ? -1 : fd;
@@ -220,7 +221,7 @@ static int advertise_shallow_grafts_cb(const struct commit_graft *graft, void *c
 
 static void advertise_shallow_grafts_buf(struct strbuf *sb)
 {
-       if (!is_repository_shallow())
+       if (!is_repository_shallow(the_repository))
                return;
        for_each_commit_graft(advertise_shallow_grafts_cb, sb);
 }
@@ -537,7 +538,7 @@ int send_pack(struct send_pack_args *args,
        }
 
        if (args->stateless_rpc) {
-               if (!args->dry_run && (cmds_sent || is_repository_shallow())) {
+               if (!args->dry_run && (cmds_sent || is_repository_shallow(the_repository))) {
                        packet_buf_flush(&req_buf);
                        send_sideband(out, -1, req_buf.buf, req_buf.len, LARGE_PACKET_MAX);
                }
index cca968043ea86c4515e6af1b4fe9251a0140c0a3..0a291c91fe8937428c063db5e22afc93ea7691b6 100644 (file)
@@ -2,6 +2,7 @@
 #include "config.h"
 #include "lockfile.h"
 #include "dir.h"
+#include "object-store.h"
 #include "object.h"
 #include "commit.h"
 #include "sequencer.h"
@@ -27,6 +28,7 @@
 #include "worktree.h"
 #include "oidmap.h"
 #include "oidset.h"
+#include "commit-slab.h"
 #include "alias.h"
 
 #define GIT_REFLOG_ACTION "GIT_REFLOG_ACTION"
@@ -175,6 +177,7 @@ static int git_sequencer_config(const char *k, const char *v, void *cb)
                        warning(_("invalid commit message cleanup mode '%s'"),
                                  s);
 
+               free((char *)s);
                return status;
        }
 
@@ -355,7 +358,7 @@ static void print_advice(int show_hint, struct replay_opts *opts)
                 * (typically rebase --interactive) wants to take care
                 * of the commit itself so remove CHERRY_PICK_HEAD
                 */
-               unlink(git_path_cherry_pick_head());
+               unlink(git_path_cherry_pick_head(the_repository));
                return;
        }
 
@@ -784,7 +787,7 @@ static int run_git_commit(const char *defmsg, struct replay_opts *opts,
        struct child_process cmd = CHILD_PROCESS_INIT;
        const char *value;
 
-       if (flags & CREATE_ROOT_COMMIT) {
+       if ((flags & CREATE_ROOT_COMMIT) && !(flags & AMEND_MSG)) {
                struct strbuf msg = STRBUF_INIT, script = STRBUF_INIT;
                const char *author = is_rebase_i(opts) ?
                        read_author_ident(&script) : NULL;
@@ -1322,8 +1325,8 @@ static int do_commit(const char *msg_file, const char *author,
                                    &oid);
                strbuf_release(&sb);
                if (!res) {
-                       unlink(git_path_cherry_pick_head());
-                       unlink(git_path_merge_msg());
+                       unlink(git_path_cherry_pick_head(the_repository));
+                       unlink(git_path_merge_msg(the_repository));
                        if (!is_rebase_i(opts))
                                print_commit_summary(NULL, &oid,
                                                SUMMARY_SHOW_AUTHOR_DATE);
@@ -1611,7 +1614,7 @@ static int do_pick_commit(enum todo_command command, struct commit *commit,
                struct replay_opts *opts, int final_fixup)
 {
        unsigned int flags = opts->edit ? EDIT_MSG : 0;
-       const char *msg_file = opts->edit ? NULL : git_path_merge_msg();
+       const char *msg_file = opts->edit ? NULL : git_path_merge_msg(the_repository);
        struct object_id head;
        struct commit *base, *next, *parent;
        const char *base_label, *next_label;
@@ -1753,12 +1756,12 @@ static int do_pick_commit(enum todo_command command, struct commit *commit,
                        flags |= CLEANUP_MSG;
                        msg_file = rebase_path_fixup_msg();
                } else {
-                       const char *dest = git_path_squash_msg();
+                       const char *dest = git_path_squash_msg(the_repository);
                        unlink(dest);
                        if (copy_file(dest, rebase_path_squash_msg(), 0666))
                                return error(_("could not rename '%s' to '%s'"),
                                             rebase_path_squash_msg(), dest);
-                       unlink(git_path_merge_msg());
+                       unlink(git_path_merge_msg(the_repository));
                        msg_file = dest;
                        flags |= EDIT_MSG;
                }
@@ -1773,15 +1776,16 @@ static int do_pick_commit(enum todo_command command, struct commit *commit,
                res = do_recursive_merge(base, next, base_label, next_label,
                                         &head, &msgbuf, opts);
                if (res < 0)
-                       return res;
+                       goto leave;
+
                res |= write_message(msgbuf.buf, msgbuf.len,
-                                    git_path_merge_msg(), 0);
+                                    git_path_merge_msg(the_repository), 0);
        } else {
                struct commit_list *common = NULL;
                struct commit_list *remotes = NULL;
 
                res = write_message(msgbuf.buf, msgbuf.len,
-                                   git_path_merge_msg(), 0);
+                                   git_path_merge_msg(the_repository), 0);
 
                commit_list_insert(base, &common);
                commit_list_insert(next, &remotes);
@@ -2391,8 +2395,8 @@ static int rollback_single_pick(void)
 {
        struct object_id head_oid;
 
-       if (!file_exists(git_path_cherry_pick_head()) &&
-           !file_exists(git_path_revert_head()))
+       if (!file_exists(git_path_cherry_pick_head(the_repository)) &&
+           !file_exists(git_path_revert_head(the_repository)))
                return error(_("no cherry-pick or revert in progress"));
        if (read_ref_full("HEAD", 0, &head_oid, NULL))
                return error(_("cannot resolve HEAD"));
@@ -2617,10 +2621,11 @@ static int error_failed_squash(struct commit *commit,
        if (copy_file(rebase_path_message(), rebase_path_squash_msg(), 0666))
                return error(_("could not copy '%s' to '%s'"),
                        rebase_path_squash_msg(), rebase_path_message());
-       unlink(git_path_merge_msg());
-       if (copy_file(git_path_merge_msg(), rebase_path_message(), 0666))
+       unlink(git_path_merge_msg(the_repository));
+       if (copy_file(git_path_merge_msg(the_repository), rebase_path_message(), 0666))
                return error(_("could not copy '%s' to '%s'"),
-                            rebase_path_message(), git_path_merge_msg());
+                            rebase_path_message(),
+                            git_path_merge_msg(the_repository));
        return error_with_patch(commit, subject, subject_len, opts, 1, 0);
 }
 
@@ -2910,11 +2915,11 @@ static int do_merge(struct commit *commit, const char *arg, int arg_len,
                write_author_script(message);
                find_commit_subject(message, &body);
                len = strlen(body);
-               ret = write_message(body, len, git_path_merge_msg(), 0);
+               ret = write_message(body, len, git_path_merge_msg(the_repository), 0);
                unuse_commit_buffer(commit, message);
                if (ret) {
                        error_errno(_("could not write '%s'"),
-                                   git_path_merge_msg());
+                                   git_path_merge_msg(the_repository));
                        goto leave_merge;
                }
        } else {
@@ -2935,11 +2940,11 @@ static int do_merge(struct commit *commit, const char *arg, int arg_len,
                        len = buf.len;
                }
 
-               ret = write_message(p, len, git_path_merge_msg(), 0);
+               ret = write_message(p, len, git_path_merge_msg(the_repository), 0);
                strbuf_release(&buf);
                if (ret) {
                        error_errno(_("could not write '%s'"),
-                                   git_path_merge_msg());
+                                   git_path_merge_msg(the_repository));
                        goto leave_merge;
                }
        }
@@ -2976,8 +2981,8 @@ static int do_merge(struct commit *commit, const char *arg, int arg_len,
        }
 
        write_message(oid_to_hex(&merge_commit->object.oid), GIT_SHA1_HEXSZ,
-                     git_path_merge_head(), 0);
-       write_message("no-ff", 5, git_path_merge_mode(), 0);
+                     git_path_merge_head(the_repository), 0);
+       write_message("no-ff", 5, git_path_merge_mode(the_repository), 0);
 
        bases = get_merge_bases(head_commit, merge_commit);
        if (bases && !oidcmp(&merge_commit->object.oid,
@@ -3031,7 +3036,7 @@ static int do_merge(struct commit *commit, const char *arg, int arg_len,
                 * value (a negative one would indicate that the `merge`
                 * command needs to be rescheduled).
                 */
-               ret = !!run_git_commit(git_path_merge_msg(), opts,
+               ret = !!run_git_commit(git_path_merge_msg(the_repository), opts,
                                     run_commit_flags);
 
 leave_merge:
@@ -3398,8 +3403,8 @@ static int continue_single_pick(void)
 {
        const char *argv[] = { "commit", NULL };
 
-       if (!file_exists(git_path_cherry_pick_head()) &&
-           !file_exists(git_path_revert_head()))
+       if (!file_exists(git_path_cherry_pick_head(the_repository)) &&
+           !file_exists(git_path_revert_head(the_repository)))
                return error(_("no cherry-pick or revert in progress"));
        return run_command_v_opt(argv, RUN_GIT_CMD);
 }
@@ -3502,7 +3507,7 @@ static int commit_staged_changes(struct replay_opts *opts,
        }
 
        if (is_clean) {
-               const char *cherry_pick_head = git_path_cherry_pick_head();
+               const char *cherry_pick_head = git_path_cherry_pick_head(the_repository);
 
                if (file_exists(cherry_pick_head) && unlink(cherry_pick_head))
                        return error(_("could not remove CHERRY_PICK_HEAD"));
@@ -3552,8 +3557,8 @@ int sequencer_continue(struct replay_opts *opts)
 
        if (!is_rebase_i(opts)) {
                /* Verify that the conflict has been resolved */
-               if (file_exists(git_path_cherry_pick_head()) ||
-                   file_exists(git_path_revert_head())) {
+               if (file_exists(git_path_cherry_pick_head(the_repository)) ||
+                   file_exists(git_path_revert_head(the_repository))) {
                        res = continue_single_pick();
                        if (res)
                                goto release_todo_list;
@@ -4238,6 +4243,7 @@ static enum check_level get_missing_commit_check_level(void)
        return CHECK_IGNORE;
 }
 
+define_commit_slab(commit_seen, unsigned char);
 /*
  * Check if the user dropped some commits by mistake
  * Behaviour determined by rebase.missingCommitsCheck.
@@ -4251,6 +4257,9 @@ int check_todo_list(void)
        struct todo_list todo_list = TODO_LIST_INIT;
        struct strbuf missing = STRBUF_INIT;
        int advise_to_edit_todo = 0, res = 0, i;
+       struct commit_seen commit_seen;
+
+       init_commit_seen(&commit_seen);
 
        strbuf_addstr(&todo_file, rebase_path_todo());
        if (strbuf_read_file_or_whine(&todo_list.buf, todo_file.buf) < 0) {
@@ -4267,7 +4276,7 @@ int check_todo_list(void)
        for (i = 0; i < todo_list.nr; i++) {
                struct commit *commit = todo_list.items[i].commit;
                if (commit)
-                       commit->util = (void *)1;
+                       *commit_seen_at(&commit_seen, commit) = 1;
        }
 
        todo_list_release(&todo_list);
@@ -4283,11 +4292,11 @@ int check_todo_list(void)
        for (i = todo_list.nr - 1; i >= 0; i--) {
                struct todo_item *item = todo_list.items + i;
                struct commit *commit = item->commit;
-               if (commit && !commit->util) {
+               if (commit && !*commit_seen_at(&commit_seen, commit)) {
                        strbuf_addf(&missing, " - %s %.*s\n",
                                    short_commit_name(commit),
                                    item->arg_len, item->arg);
-                       commit->util = (void *)1;
+                       *commit_seen_at(&commit_seen, commit) = 1;
                }
        }
 
@@ -4313,6 +4322,7 @@ int check_todo_list(void)
                "The possible behaviours are: ignore, warn, error.\n\n"));
 
 leave_check:
+       clear_commit_seen(&commit_seen);
        strbuf_release(&todo_file);
        todo_list_release(&todo_list);
 
@@ -4433,6 +4443,8 @@ static int subject2item_cmp(const void *fndata,
        return key ? strcmp(a->subject, key) : strcmp(a->subject, b->subject);
 }
 
+define_commit_slab(commit_todo_item, struct todo_item *);
+
 /*
  * Rearrange the todo list that has both "pick commit-id msg" and "pick
  * commit-id fixup!/squash! msg" in it so that the latter is put immediately
@@ -4449,6 +4461,7 @@ int rearrange_squash(void)
        struct hashmap subject2item;
        int res = 0, rearranged = 0, *next, *tail, i;
        char **subjects;
+       struct commit_todo_item commit_todo;
 
        if (strbuf_read_file_or_whine(&todo_list.buf, todo_file) < 0)
                return -1;
@@ -4457,6 +4470,7 @@ int rearrange_squash(void)
                return -1;
        }
 
+       init_commit_todo_item(&commit_todo);
        /*
         * The hashmap maps onelines to the respective todo list index.
         *
@@ -4487,10 +4501,11 @@ int rearrange_squash(void)
 
                if (is_fixup(item->command)) {
                        todo_list_release(&todo_list);
+                       clear_commit_todo_item(&commit_todo);
                        return error(_("the script was already rearranged."));
                }
 
-               item->commit->util = item;
+               *commit_todo_item_at(&commit_todo, item->commit) = item;
 
                parse_commit(item->commit);
                commit_buffer = get_commit_buffer(item->commit, NULL);
@@ -4517,9 +4532,9 @@ int rearrange_squash(void)
                        else if (!strchr(p, ' ') &&
                                 (commit2 =
                                  lookup_commit_reference_by_name(p)) &&
-                                commit2->util)
+                                *commit_todo_item_at(&commit_todo, commit2))
                                /* found by commit name */
-                               i2 = (struct todo_item *)commit2->util
+                               i2 = *commit_todo_item_at(&commit_todo, commit2)
                                        - todo_list.items;
                        else {
                                /* copy can be a prefix of the commit subject */
@@ -4596,5 +4611,6 @@ int rearrange_squash(void)
        hashmap_free(&subject2item, 1);
        todo_list_release(&todo_list);
 
+       clear_commit_todo_item(&commit_todo);
        return res;
 }
index 555e780f4b61b8b96b12549de341cb2d827e039e..de4839e634c02cb7497f05a3a4597b9fa5123e32 100644 (file)
@@ -610,7 +610,7 @@ void add_to_alternates_memory(const char *reference)
 /*
  * Compute the exact path an alternate is at and returns it. In case of
  * error NULL is returned and the human readable error is added to `err`
- * `path` may be relative and should point to $GITDIR.
+ * `path` may be relative and should point to $GIT_DIR.
  * `err` must not be null.
  */
 char *compute_alternate_path(const char *path, struct strbuf *err)
@@ -1801,7 +1801,7 @@ static void check_commit(const void *buf, size_t size)
 {
        struct commit c;
        memset(&c, 0, sizeof(c));
-       if (parse_commit_buffer(&c, buf, size))
+       if (parse_commit_buffer(&c, buf, size, 0))
                die("corrupt commit");
 }
 
index 9ff83cabcd3be2614f7ed770884ac237294b05e4..e53067cdede4865e144713502055a04cf230c926 100644 (file)
--- a/shallow.c
+++ b/shallow.c
@@ -1,6 +1,8 @@
 #include "cache.h"
+#include "repository.h"
 #include "tempfile.h"
 #include "lockfile.h"
+#include "object-store.h"
 #include "commit.h"
 #include "tag.h"
 #include "pkt-line.h"
 #include "commit-slab.h"
 #include "revision.h"
 #include "list-objects.h"
+#include "commit-slab.h"
+#include "repository.h"
 
-static int is_shallow = -1;
-static struct stat_validity shallow_stat;
-static char *alternate_shallow_file;
-
-void set_alternate_shallow_file(const char *path, int override)
+void set_alternate_shallow_file(struct repository *r, const char *path, int override)
 {
-       if (is_shallow != -1)
+       if (r->parsed_objects->is_shallow != -1)
                BUG("is_repository_shallow must not be called before set_alternate_shallow_file");
-       if (alternate_shallow_file && !override)
+       if (r->parsed_objects->alternate_shallow_file && !override)
                return;
-       free(alternate_shallow_file);
-       alternate_shallow_file = xstrdup_or_null(path);
+       free(r->parsed_objects->alternate_shallow_file);
+       r->parsed_objects->alternate_shallow_file = xstrdup_or_null(path);
 }
 
-int register_shallow(const struct object_id *oid)
+int register_shallow(struct repository *r, const struct object_id *oid)
 {
        struct commit_graft *graft =
                xmalloc(sizeof(struct commit_graft));
@@ -37,43 +37,48 @@ int register_shallow(const struct object_id *oid)
        graft->nr_parent = -1;
        if (commit && commit->object.parsed)
                commit->parents = NULL;
-       return register_commit_graft(graft, 0);
+       return register_commit_graft(r, graft, 0);
 }
 
-int is_repository_shallow(void)
+int is_repository_shallow(struct repository *r)
 {
        FILE *fp;
        char buf[1024];
-       const char *path = alternate_shallow_file;
+       const char *path = r->parsed_objects->alternate_shallow_file;
 
-       if (is_shallow >= 0)
-               return is_shallow;
+       if (r->parsed_objects->is_shallow >= 0)
+               return r->parsed_objects->is_shallow;
 
        if (!path)
-               path = git_path_shallow();
+               path = git_path_shallow(r);
        /*
         * fetch-pack sets '--shallow-file ""' as an indicator that no
         * shallow file should be used. We could just open it and it
         * will likely fail. But let's do an explicit check instead.
         */
        if (!*path || (fp = fopen(path, "r")) == NULL) {
-               stat_validity_clear(&shallow_stat);
-               is_shallow = 0;
-               return is_shallow;
+               stat_validity_clear(r->parsed_objects->shallow_stat);
+               r->parsed_objects->is_shallow = 0;
+               return r->parsed_objects->is_shallow;
        }
-       stat_validity_update(&shallow_stat, fileno(fp));
-       is_shallow = 1;
+       stat_validity_update(r->parsed_objects->shallow_stat, fileno(fp));
+       r->parsed_objects->is_shallow = 1;
 
        while (fgets(buf, sizeof(buf), fp)) {
                struct object_id oid;
                if (get_oid_hex(buf, &oid))
                        die("bad shallow line: %s", buf);
-               register_shallow(&oid);
+               register_shallow(r, &oid);
        }
        fclose(fp);
-       return is_shallow;
+       return r->parsed_objects->is_shallow;
 }
 
+/*
+ * TODO: use "int" elemtype instead of "int *" when/if commit-slab
+ * supports a "valid" flag.
+ */
+define_commit_slab(commit_depth, int *);
 struct commit_list *get_shallow_commits(struct object_array *heads, int depth,
                int shallow_flag, int not_shallow_flag)
 {
@@ -82,32 +87,36 @@ struct commit_list *get_shallow_commits(struct object_array *heads, int depth,
        struct object_array stack = OBJECT_ARRAY_INIT;
        struct commit *commit = NULL;
        struct commit_graft *graft;
+       struct commit_depth depths;
 
+       init_commit_depth(&depths);
        while (commit || i < heads->nr || stack.nr) {
                struct commit_list *p;
                if (!commit) {
                        if (i < heads->nr) {
+                               int **depth_slot;
                                commit = (struct commit *)
                                        deref_tag(heads->objects[i++].item, NULL, 0);
                                if (!commit || commit->object.type != OBJ_COMMIT) {
                                        commit = NULL;
                                        continue;
                                }
-                               if (!commit->util)
-                                       commit->util = xmalloc(sizeof(int));
-                               *(int *)commit->util = 0;
+                               depth_slot = commit_depth_at(&depths, commit);
+                               if (!*depth_slot)
+                                       *depth_slot = xmalloc(sizeof(int));
+                               **depth_slot = 0;
                                cur_depth = 0;
                        } else {
                                commit = (struct commit *)
                                        object_array_pop(&stack);
-                               cur_depth = *(int *)commit->util;
+                               cur_depth = **commit_depth_at(&depths, commit);
                        }
                }
                parse_commit_or_die(commit);
                cur_depth++;
                if ((depth != INFINITE_DEPTH && cur_depth >= depth) ||
-                   (is_repository_shallow() && !commit->parents &&
-                    (graft = lookup_commit_graft(&commit->object.oid)) != NULL &&
+                   (is_repository_shallow(the_repository) && !commit->parents &&
+                    (graft = lookup_commit_graft(the_repository, &commit->object.oid)) != NULL &&
                     graft->nr_parent < 0)) {
                        commit_list_insert(commit, &result);
                        commit->object.flags |= shallow_flag;
@@ -116,25 +125,31 @@ struct commit_list *get_shallow_commits(struct object_array *heads, int depth,
                }
                commit->object.flags |= not_shallow_flag;
                for (p = commit->parents, commit = NULL; p; p = p->next) {
-                       if (!p->item->util) {
-                               int *pointer = xmalloc(sizeof(int));
-                               p->item->util = pointer;
-                               *pointer =  cur_depth;
+                       int **depth_slot = commit_depth_at(&depths, p->item);
+                       if (!*depth_slot) {
+                               *depth_slot = xmalloc(sizeof(int));
+                               **depth_slot = cur_depth;
                        } else {
-                               int *pointer = p->item->util;
-                               if (cur_depth >= *pointer)
+                               if (cur_depth >= **depth_slot)
                                        continue;
-                               *pointer = cur_depth;
+                               **depth_slot = cur_depth;
                        }
                        if (p->next)
                                add_object_array(&p->item->object,
                                                NULL, &stack);
                        else {
                                commit = p->item;
-                               cur_depth = *(int *)commit->util;
+                               cur_depth = **commit_depth_at(&depths, commit);
                        }
                }
        }
+       for (i = 0; i < depths.slab_count; i++) {
+               int j;
+
+               for (j = 0; j < depths.slab_size; j++)
+                       free(depths.slab[i][j]);
+       }
+       clear_commit_depth(&depths);
 
        return result;
 }
@@ -165,7 +180,7 @@ struct commit_list *get_shallow_commits_by_rev_list(int ac, const char **av,
         */
        clear_object_flags(both_flags);
 
-       is_repository_shallow(); /* make sure shallows are read */
+       is_repository_shallow(the_repository); /* make sure shallows are read */
 
        init_revisions(&revs, NULL);
        save_commit_buffer = 0;
@@ -175,6 +190,9 @@ struct commit_list *get_shallow_commits_by_rev_list(int ac, const char **av,
                die("revision walk setup failed");
        traverse_commit_list(&revs, show_commit, NULL, &not_shallow_list);
 
+       if (!not_shallow_list)
+               die("no commits selected for shallow requests");
+
        /* Mark all reachable commits as NOT_SHALLOW */
        for (p = not_shallow_list; p; p = p->next)
                p->item->object.flags |= not_shallow_flag;
@@ -215,12 +233,12 @@ struct commit_list *get_shallow_commits_by_rev_list(int ac, const char **av,
        return result;
 }
 
-static void check_shallow_file_for_update(void)
+static void check_shallow_file_for_update(struct repository *r)
 {
-       if (is_shallow == -1)
+       if (r->parsed_objects->is_shallow == -1)
                BUG("shallow must be initialized by now");
 
-       if (!stat_validity_check(&shallow_stat, git_path_shallow()))
+       if (!stat_validity_check(r->parsed_objects->shallow_stat, git_path_shallow(the_repository)))
                die("shallow file has changed since we read it");
 }
 
@@ -315,9 +333,10 @@ void setup_alternate_shallow(struct lock_file *shallow_lock,
        struct strbuf sb = STRBUF_INIT;
        int fd;
 
-       fd = hold_lock_file_for_update(shallow_lock, git_path_shallow(),
+       fd = hold_lock_file_for_update(shallow_lock,
+                                      git_path_shallow(the_repository),
                                       LOCK_DIE_ON_ERROR);
-       check_shallow_file_for_update();
+       check_shallow_file_for_update(the_repository);
        if (write_shallow_commits(&sb, 0, extra)) {
                if (write_in_full(fd, sb.buf, sb.len) < 0)
                        die_errno("failed to write to %s",
@@ -342,7 +361,7 @@ static int advertise_shallow_grafts_cb(const struct commit_graft *graft, void *c
 
 void advertise_shallow_grafts(int fd)
 {
-       if (!is_repository_shallow())
+       if (!is_repository_shallow(the_repository))
                return;
        for_each_commit_graft(advertise_shallow_grafts_cb, &fd);
 }
@@ -362,16 +381,17 @@ void prune_shallow(int show_only)
                strbuf_release(&sb);
                return;
        }
-       fd = hold_lock_file_for_update(&shallow_lock, git_path_shallow(),
+       fd = hold_lock_file_for_update(&shallow_lock,
+                                      git_path_shallow(the_repository),
                                       LOCK_DIE_ON_ERROR);
-       check_shallow_file_for_update();
+       check_shallow_file_for_update(the_repository);
        if (write_shallow_commits_1(&sb, 0, NULL, SEEN_ONLY)) {
                if (write_in_full(fd, sb.buf, sb.len) < 0)
                        die_errno("failed to write to %s",
                                  get_lock_file_path(&shallow_lock));
                commit_lock_file(&shallow_lock);
        } else {
-               unlink(git_path_shallow());
+               unlink(git_path_shallow(the_repository));
                rollback_lock_file(&shallow_lock);
        }
        strbuf_release(&sb);
@@ -396,7 +416,8 @@ void prepare_shallow_info(struct shallow_info *info, struct oid_array *sa)
        for (i = 0; i < sa->nr; i++) {
                if (has_object_file(sa->oid + i)) {
                        struct commit_graft *graft;
-                       graft = lookup_commit_graft(&sa->oid[i]);
+                       graft = lookup_commit_graft(the_repository,
+                                                   &sa->oid[i]);
                        if (graft && graft->nr_parent < 0)
                                continue;
                        info->ours[info->nr_ours++] = i;
diff --git a/show-index.c b/show-index.c
deleted file mode 100644 (file)
index 1ead41e..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-#include "cache.h"
-#include "pack.h"
-
-static const char show_index_usage[] =
-"git show-index";
-
-int cmd_main(int argc, const char **argv)
-{
-       int i;
-       unsigned nr;
-       unsigned int version;
-       static unsigned int top_index[256];
-
-       if (argc != 1)
-               usage(show_index_usage);
-       if (fread(top_index, 2 * 4, 1, stdin) != 1)
-               die("unable to read header");
-       if (top_index[0] == htonl(PACK_IDX_SIGNATURE)) {
-               version = ntohl(top_index[1]);
-               if (version < 2 || version > 2)
-                       die("unknown index version");
-               if (fread(top_index, 256 * 4, 1, stdin) != 1)
-                       die("unable to read index");
-       } else {
-               version = 1;
-               if (fread(&top_index[2], 254 * 4, 1, stdin) != 1)
-                       die("unable to read index");
-       }
-       nr = 0;
-       for (i = 0; i < 256; i++) {
-               unsigned n = ntohl(top_index[i]);
-               if (n < nr)
-                       die("corrupt index file");
-               nr = n;
-       }
-       if (version == 1) {
-               for (i = 0; i < nr; i++) {
-                       unsigned int offset, entry[6];
-
-                       if (fread(entry, 4 + 20, 1, stdin) != 1)
-                               die("unable to read entry %u/%u", i, nr);
-                       offset = ntohl(entry[0]);
-                       printf("%u %s\n", offset, sha1_to_hex((void *)(entry+1)));
-               }
-       } else {
-               unsigned off64_nr = 0;
-               struct {
-                       unsigned char sha1[20];
-                       uint32_t crc;
-                       uint32_t off;
-               } *entries;
-               ALLOC_ARRAY(entries, nr);
-               for (i = 0; i < nr; i++)
-                       if (fread(entries[i].sha1, 20, 1, stdin) != 1)
-                               die("unable to read sha1 %u/%u", i, nr);
-               for (i = 0; i < nr; i++)
-                       if (fread(&entries[i].crc, 4, 1, stdin) != 1)
-                               die("unable to read crc %u/%u", i, nr);
-               for (i = 0; i < nr; i++)
-                       if (fread(&entries[i].off, 4, 1, stdin) != 1)
-                               die("unable to read 32b offset %u/%u", i, nr);
-               for (i = 0; i < nr; i++) {
-                       uint64_t offset;
-                       uint32_t off = ntohl(entries[i].off);
-                       if (!(off & 0x80000000)) {
-                               offset = off;
-                       } else {
-                               uint32_t off64[2];
-                               if ((off & 0x7fffffff) != off64_nr)
-                                       die("inconsistent 64b offset index");
-                               if (fread(off64, 8, 1, stdin) != 1)
-                                       die("unable to read 64b offset %u", off64_nr);
-                               offset = (((uint64_t)ntohl(off64[0])) << 32) |
-                                                    ntohl(off64[1]);
-                               off64_nr++;
-                       }
-                       printf("%" PRIuMAX " %s (%08"PRIx32")\n",
-                              (uintmax_t) offset,
-                              sha1_to_hex(entries[i].sha1),
-                              ntohl(entries[i].crc));
-               }
-               free(entries);
-       }
-       return 0;
-}
index 388ef1f892bdd63a485d9c93810a945fc3eab46f..ca324a9e37d8ce738db417e2cb689cbe0508cff0 100644 (file)
@@ -4,6 +4,7 @@
 #include "submodule-config.h"
 #include "submodule.h"
 #include "strbuf.h"
+#include "object-store.h"
 #include "parse-options.h"
 
 /*
index e127c074b0430eae47bddd2778e521587ce08122..d3a9aab83dc90b0c7797cc4b83d0a83bf6c196b7 100644 (file)
@@ -740,12 +740,14 @@ static void collect_changed_submodules_cb(struct diff_queue_struct *q,
                else {
                        name = default_name_or_path(p->two->path);
                        /* make sure name does not collide with existing one */
-                       submodule = submodule_from_name(the_repository, commit_oid, name);
+                       if (name)
+                               submodule = submodule_from_name(the_repository,
+                                                               commit_oid, name);
                        if (submodule) {
                                warning("Submodule in commit %s at path: "
                                        "'%s' collides with a submodule named "
                                        "the same. Skipping it.",
-                                       oid_to_hex(commit_oid), name);
+                                       oid_to_hex(commit_oid), p->two->path);
                                name = NULL;
                        }
                }
index c413bff9cf1f3a79ef494b39844c42d3a8c877f1..4c865051e7dd3d27eee0e2666b4aaaaa46116d5c 100755 (executable)
@@ -287,6 +287,7 @@ test_expect_success 'init notices EEXIST (2)' '
 '
 
 test_expect_success POSIXPERM,SANITY 'init notices EPERM' '
+       test_when_finished "chmod +w newdir" &&
        rm -fr newdir &&
        mkdir newdir &&
        chmod -w newdir &&
index 71350e0657986d7b3e38801d82058c53f9fd23d0..5f056982a53b62810192fc8bbb5dbb6d784fb1a2 100755 (executable)
@@ -98,6 +98,16 @@ test_expect_success 'safecrlf: git diff demotes safecrlf=true to warn' '
 '
 
 
+test_expect_success 'safecrlf: no warning with safecrlf=false' '
+       git config core.autocrlf input &&
+       git config core.safecrlf false &&
+
+       for w in I am all CRLF; do echo $w; done | append_cr >allcrlf &&
+       git add allcrlf 2>err &&
+       test_must_be_empty err
+'
+
+
 test_expect_success 'switch off autocrlf, safecrlf, reset HEAD' '
        git config core.autocrlf false &&
        git config core.safecrlf false &&
index 23fbe6434abd3f05057d4916f70e5d5b30115b68..7b111a56fdd3e13d34b538e52c2659a8f2e188a2 100755 (executable)
@@ -19,8 +19,8 @@ test_expect_success 'mktemp to nonexistent directory prints filename' '
 
 test_expect_success POSIXPERM,SANITY 'mktemp to unwritable directory prints filename' '
        mkdir cannotwrite &&
-       chmod -w cannotwrite &&
        test_when_finished "chmod +w cannotwrite" &&
+       chmod -w cannotwrite &&
        test_must_fail test-tool mktemp cannotwrite/testXXXXXX 2>err &&
        grep "cannotwrite/test" err
 '
index cc18b75c03880eb9018b0d37aa9a26f7964dcee7..4984ca583d03a7cc0a6fb9323799e776eee4565b 100755 (executable)
@@ -23,7 +23,15 @@ promise_and_delete () {
        delete_object repo "$HASH"
 }
 
+test_expect_success 'extensions.partialclone without filter' '
+       test_create_repo server &&
+       git clone --filter="blob:none" "file://$(pwd)/server" client &&
+       git -C client config --unset core.partialclonefilter &&
+       git -C client fetch origin
+'
+
 test_expect_success 'missing reflog object, but promised by a commit, passes fsck' '
+       rm -rf repo &&
        test_create_repo repo &&
        test_commit -C repo my_commit &&
 
index c7ce5d8bb588215d528fad5dfa6aa094d2a5d468..826cd32e231607e3cd46f9c0314908583c01a093 100755 (executable)
@@ -179,6 +179,8 @@ test_expect_success 'funny symlink in work tree' '
 
 test_expect_success SANITY 'funny symlink in work tree, un-unlink-able' '
 
+       test_when_finished "chmod u+w a 2>/dev/null; rm -fr a b" &&
+
        rm -fr a b &&
        git reset --hard &&
 
@@ -188,10 +190,6 @@ test_expect_success SANITY 'funny symlink in work tree, un-unlink-able' '
 
 '
 
-# clean-up from the above test
-chmod a+w a 2>/dev/null
-rm -fr a b
-
 test_expect_success 'D/F setup' '
 
        git reset --hard &&
index 04d840a5448567bf438688c4aebd7e94d63da4ec..e7a400b4c77a822a49365e4049fbe68b059d23ee 100755 (executable)
@@ -70,8 +70,7 @@ test_expect_success 'i-t-a entry is simply ignored' '
        git commit -m second &&
        test $(git ls-tree HEAD -- nitfol | wc -l) = 0 &&
        test $(git diff --name-only HEAD -- nitfol | wc -l) = 1 &&
-       test $(git diff --name-only --ita-invisible-in-index HEAD -- nitfol | wc -l) = 0 &&
-       test $(git diff --name-only --ita-invisible-in-index -- nitfol | wc -l) = 1
+       test $(git diff --name-only -- nitfol | wc -l) = 1
 '
 
 test_expect_success 'can commit with an unrelated i-t-a entry in index' '
@@ -99,13 +98,13 @@ test_expect_success 'cache-tree invalidates i-t-a paths' '
 
        : >dir/bar &&
        git add -N dir/bar &&
-       git diff --cached --name-only >actual &&
+       git diff --name-only >actual &&
        echo dir/bar >expect &&
        test_cmp expect actual &&
 
        git write-tree >/dev/null &&
 
-       git diff --cached --name-only >actual &&
+       git diff --name-only >actual &&
        echo dir/bar >expect &&
        test_cmp expect actual
 '
@@ -186,7 +185,19 @@ test_expect_success 'rename detection finds the right names' '
                cat >expected.3 <<-EOF &&
                2 .R N... 100644 100644 100644 $hash $hash R100 third   first
                EOF
-               test_cmp expected.3 actual.3
+               test_cmp expected.3 actual.3 &&
+
+               git diff --stat >actual.4 &&
+               cat >expected.4 <<-EOF &&
+                first => third | 0
+                1 file changed, 0 insertions(+), 0 deletions(-)
+               EOF
+               test_cmp expected.4 actual.4 &&
+
+               git diff --cached --stat >actual.5 &&
+               : >expected.5 &&
+               test_cmp expected.5 actual.5
+
        )
 '
 
@@ -222,5 +233,46 @@ test_expect_success 'double rename detection in status' '
        )
 '
 
-test_done
+test_expect_success 'diff-files/diff-cached shows ita as new/not-new files' '
+       git reset --hard &&
+       echo new >new-ita &&
+       git add -N new-ita &&
+       git diff --summary >actual &&
+       echo " create mode 100644 new-ita" >expected &&
+       test_cmp expected actual &&
+       git diff --cached --summary >actual2 &&
+       : >expected2 &&
+       test_cmp expected2 actual2
+'
+
 
+test_expect_success '"diff HEAD" includes ita as new files' '
+       git reset --hard &&
+       echo new >new-ita &&
+       git add -N new-ita &&
+       git diff HEAD >actual &&
+       cat >expected <<-\EOF &&
+       diff --git a/new-ita b/new-ita
+       new file mode 100644
+       index 0000000..3e75765
+       --- /dev/null
+       +++ b/new-ita
+       @@ -0,0 +1 @@
+       +new
+       EOF
+       test_cmp expected actual
+'
+
+test_expect_success 'apply --intent-to-add' '
+       git reset --hard &&
+       echo new >new-ita &&
+       git add -N new-ita &&
+       git diff >expected &&
+       grep "new file" expected &&
+       git reset --hard &&
+       git apply --intent-to-add expected &&
+       git diff >actual &&
+       test_cmp expected actual
+'
+
+test_done
index 69ea8202f437a47b1c52b60f4a2afacd3d5a4f21..08467982f61fd81f0614711b52b9806f2497f3eb 100755 (executable)
@@ -885,7 +885,7 @@ test_expect_success 'test --unset-upstream on a particular branch' '
        test_must_fail git config branch.my14.merge
 '
 
-test_expect_success '--set-upstream fails' '
+test_expect_success 'disabled option --set-upstream fails' '
     test_must_fail git branch --set-upstream origin/master
 '
 
index c65826ddaced2f4bafeea0e4570ef9018218692c..352a52e59d1a25d6fe50c5001ba3c84e2fc4a30c 100755 (executable)
@@ -971,6 +971,16 @@ test_expect_success 'rebase -i --root fixup root commit' '
        test 0 = $(git cat-file commit HEAD | grep -c ^parent\ )
 '
 
+test_expect_success 'rebase -i --root reword root commit' '
+       test_when_finished "test_might_fail git rebase --abort" &&
+       git checkout -b reword-root-branch master &&
+       set_fake_editor &&
+       FAKE_LINES="reword 1 2" FAKE_COMMIT_MESSAGE="A changed" \
+       git rebase -i --root &&
+       git show HEAD^ | grep "A changed" &&
+       test -z "$(git show -s --format=%p HEAD^)"
+'
+
 test_expect_success C_LOCALE_OUTPUT 'rebase --edit-todo does not work on non-interactive rebase' '
        git reset --hard &&
        git checkout conflict-branch &&
index b170fb02b80356455d03dcf379636778149665a6..3e9139dca88e83165fc21e6dce06f3243bd49cd7 100755 (executable)
@@ -175,6 +175,49 @@ test_expect_success 'real edit works' '
        diff_cmp expected output
 '
 
+test_expect_success 'setup file' '
+       test_write_lines a "" b "" c >file &&
+       git add file &&
+       test_write_lines a "" d "" c >file
+'
+
+test_expect_success 'setup patch' '
+       SP=" " &&
+       NULL="" &&
+       cat >patch <<-EOF
+       @@ -1,4 +1,4 @@
+        a
+       $NULL
+       -b
+       +f
+       $SP
+       c
+       EOF
+'
+
+test_expect_success 'setup expected' '
+       cat >expected <<-EOF
+       diff --git a/file b/file
+       index b5dd6c9..f910ae9 100644
+       --- a/file
+       +++ b/file
+       @@ -1,5 +1,5 @@
+        a
+       $SP
+       -f
+       +d
+       $SP
+        c
+       EOF
+'
+
+test_expect_success 'edit can strip spaces from empty context lines' '
+       test_write_lines e n q | git add -p 2>error &&
+       test_must_be_empty error &&
+       git diff >output &&
+       diff_cmp expected output
+'
+
 test_expect_success 'skip files similarly as commit -a' '
        git reset &&
        echo file >.gitignore &&
index cf0f3a1ee75dd28c6b5ce2a5db7c3ad6afafd21f..108c012a3a66d900cbbfcda04ac2dfe5ffeb6362 100755 (executable)
@@ -139,11 +139,13 @@ test_expect_success SYMLINKS 'setup symlinks with attributes' '
 test_expect_success SYMLINKS 'symlinks do not respect userdiff config by path' '
        cat >expect <<-\EOF &&
        diff --git a/file.bin b/file.bin
-       index e69de29..d95f3ad 100644
-       Binary files a/file.bin and b/file.bin differ
+       new file mode 100644
+       index 0000000..d95f3ad
+       Binary files /dev/null and b/file.bin differ
        diff --git a/link.bin b/link.bin
-       index e69de29..dce41ec 120000
-       --- a/link.bin
+       new file mode 120000
+       index 0000000..dce41ec
+       --- /dev/null
        +++ b/link.bin
        @@ -0,0 +1 @@
        +file.bin
index 168739c7214c764ef7f35a83063d369c1db22ec4..fd3bdbfe2c0a30a0b712b1a59c2bacf0efde167c 100755 (executable)
@@ -25,7 +25,7 @@ test_expect_success setup '
 #   fatal: unable to write file '(null)' mode 100644: Bad address
 # Also, it had the unwanted side-effect of deleting f.
 test_expect_success 'try to apply corrupted patch' '
-       test_must_fail git am bad-patch.diff 2>actual
+       test_must_fail git -c advice.amWorkDir=false am bad-patch.diff 2>actual
 '
 
 test_expect_success 'compare diagnostic; ensure file is still here' '
index 423c0a475f7e87b4c32abf60ef85ccbb898eca11..2d22a17c4a7f9dcc402e89e73ce01c97ebd4ba48 100755 (executable)
@@ -331,4 +331,17 @@ test_expect_success 'pack reuse respects --incremental' '
        git show-index <empty.idx >actual &&
        test_cmp expect actual
 '
+
+test_expect_success 'truncated bitmap fails gracefully' '
+       git repack -ad &&
+       git rev-list --use-bitmap-index --count --all >expect &&
+       bitmap=$(ls .git/objects/pack/*.bitmap) &&
+       test_when_finished "rm -f $bitmap" &&
+       head -c 512 <$bitmap >$bitmap.tmp &&
+       mv -f $bitmap.tmp $bitmap &&
+       git rev-list --use-bitmap-index --count --all >actual 2>stderr &&
+       test_cmp expect actual &&
+       test_i18ngrep corrupt stderr
+'
+
 test_done
index a380419b65bdf1ecace4c23831e76bc8a7d81962..77d85aefe7da18a0d7cc2db2baaedacead6b2e97 100755 (executable)
@@ -221,4 +221,13 @@ test_expect_success 'write graph in bare repo' '
 graph_git_behavior 'bare repo with graph, commit 8 vs merge 1' bare commits/8 merge/1
 graph_git_behavior 'bare repo with graph, commit 8 vs merge 2' bare commits/8 merge/2
 
+test_expect_success 'perform fast-forward merge in full repo' '
+       cd "$TRASH_DIRECTORY/full" &&
+       git checkout -b merge-5-to-8 commits/5 &&
+       git merge commits/8 &&
+       git show-ref -s merge-5-to-8 >output &&
+       git show-ref -s commits/8 >expect &&
+       test_cmp expect output
+'
+
 test_done
index d4f435155f5c9350f196904b910e2b5466c3ffd6..ea6570e81990d73dc07d03c3bb6e6af5c8f029f4 100755 (executable)
@@ -518,6 +518,47 @@ test_expect_success 'test --all, --depth, and explicit tag' '
        ) >out-adt 2>error-adt
 '
 
+test_expect_success 'test --all with tag to non-tip' '
+       git commit --allow-empty -m non-tip &&
+       git commit --allow-empty -m tip &&
+       git tag -m "annotated" non-tip HEAD^ &&
+       (
+               cd client &&
+               git fetch-pack --all ..
+       )
+'
+
+test_expect_success 'test --all wrt tag to non-commits' '
+       # create tag-to-{blob,tree,commit,tag}, making sure all tagged objects
+       # are reachable only via created tag references.
+       blob=$(echo "hello blob" | git hash-object -t blob -w --stdin) &&
+       git tag -a -m "tag -> blob" tag-to-blob $blob &&
+ \
+       tree=$(printf "100644 blob $blob\tfile" | git mktree) &&
+       git tag -a -m "tag -> tree" tag-to-tree $tree &&
+ \
+       tree2=$(printf "100644 blob $blob\tfile2" | git mktree) &&
+       commit=$(git commit-tree -m "hello commit" $tree) &&
+       git tag -a -m "tag -> commit" tag-to-commit $commit &&
+ \
+       blob2=$(echo "hello blob2" | git hash-object -t blob -w --stdin) &&
+       tag=$(printf "object $blob2\ntype blob\ntag tag-to-blob2\n\
+tagger author A U Thor <author@example.com> 0 +0000\n\nhello tag" | git mktag) &&
+       git tag -a -m "tag -> tag" tag-to-tag $tag &&
+ \
+       # `fetch-pack --all` should succeed fetching all those objects.
+       mkdir fetchall &&
+       (
+               cd fetchall &&
+               git init &&
+               git fetch-pack --all .. &&
+               git cat-file blob $blob >/dev/null &&
+               git cat-file tree $tree >/dev/null &&
+               git cat-file commit $commit >/dev/null &&
+               git cat-file tag $tag >/dev/null
+       )
+'
+
 test_expect_success 'shallow fetch with tags does not break the repository' '
        mkdir repo1 &&
        (
@@ -711,6 +752,17 @@ test_expect_success 'fetch shallow since ...' '
        test_cmp expected actual
 '
 
+test_expect_success 'clone shallow since selects no commits' '
+       test_create_repo shallow-since-the-future &&
+       (
+       cd shallow-since-the-future &&
+       GIT_COMMITTER_DATE="100000000 +0700" git commit --allow-empty -m one &&
+       GIT_COMMITTER_DATE="200000000 +0700" git commit --allow-empty -m two &&
+       GIT_COMMITTER_DATE="300000000 +0700" git commit --allow-empty -m three &&
+       test_must_fail git clone --shallow-since "900000000 +0700" "file://$(pwd)/." ../shallow111
+       )
+'
+
 test_expect_success 'shallow clone exclude tag two' '
        test_create_repo shallow-exclude &&
        (
index 9cc4b569c0566da2f5c2778f404e67e20b29ed06..359e03ff836cf6ac087c83c5b7abe7365ecb4447 100755 (executable)
@@ -574,11 +574,7 @@ test_expect_success "fetch new commits when submodule got renamed" '
        git clone . downstream_rename &&
        (
                cd downstream_rename &&
-               git submodule update --init &&
-# NEEDSWORK: we omitted --recursive for the submodule update here since
-# that does not work. See test 7001 for mv "moving nested submodules"
-# for details. Once that is fixed we should add the --recursive option
-# here.
+               git submodule update --init --recursive &&
                git checkout -b rename &&
                git mv submodule submodule_renamed &&
                (
index df8d2f095a40f524b8318b98a7c4fb085d8010f4..943231af9638d14641811ea8196f8afdafdf6871 100755 (executable)
@@ -175,8 +175,8 @@ EOF
 
 test_expect_success POSIXPERM,SANITY 'shallow fetch from a read-only repo' '
        cp -R .git read-only.git &&
-       find read-only.git -print | xargs chmod -w &&
        test_when_finished "find read-only.git -type d -print | xargs chmod +w" &&
+       find read-only.git -print | xargs chmod -w &&
        git clone --no-local --depth=2 read-only.git from-read-only &&
        git --git-dir=from-read-only/.git log --format=%s >actual &&
        cat >expect <<EOF &&
index 9594e891f45d4c0d29b73190c1b5345b4c4d54b6..747775c147612f3b09a599661fe3dc7d3b1d34bd 100755 (executable)
@@ -29,7 +29,7 @@ test_expect_success GPG 'create repositories with signed commits' '
                echo 4 >d && git add d &&
                test_tick && git commit -S -m "bad" &&
                git cat-file commit HEAD >raw &&
-               sed -e "s/bad/forged bad/" raw >forged &&
+               sed -e "s/^bad/forged bad/" raw >forged &&
                git hash-object -w -t commit forged >forged.commit &&
                git checkout $(cat forged.commit)
        ) &&
index 18aa88b5c096c14f2f8a3a8d8c6488127fddf055..b5621303d67d47146b4af8ee79fe55c338674071 100755 (executable)
@@ -4,12 +4,6 @@ test_description='recursive merge corner cases involving criss-cross merges'
 
 . ./test-lib.sh
 
-get_clean_checkout () {
-       git reset --hard &&
-       git clean -fdqx &&
-       git checkout "$1"
-}
-
 #
 #  L1  L2
 #   o---o
@@ -21,51 +15,66 @@ get_clean_checkout () {
 #
 
 test_expect_success 'setup basic criss-cross + rename with no modifications' '
-       ten="0 1 2 3 4 5 6 7 8 9" &&
-       for i in $ten
-       do
-               echo line $i in a sample file
-       done >one &&
-       for i in $ten
-       do
-               echo line $i in another sample file
-       done >two &&
-       git add one two &&
-       test_tick && git commit -m initial &&
-
-       git branch L1 &&
-       git checkout -b R1 &&
-       git mv one three &&
-       test_tick && git commit -m R1 &&
-
-       git checkout L1 &&
-       git mv two three &&
-       test_tick && git commit -m L1 &&
-
-       git checkout L1^0 &&
-       test_tick && git merge -s ours R1 &&
-       git tag L2 &&
-
-       git checkout R1^0 &&
-       test_tick && git merge -s ours L1 &&
-       git tag R2
+       test_create_repo basic-rename &&
+       (
+               cd basic-rename &&
+
+               ten="0 1 2 3 4 5 6 7 8 9" &&
+               for i in $ten
+               do
+                       echo line $i in a sample file
+               done >one &&
+               for i in $ten
+               do
+                       echo line $i in another sample file
+               done >two &&
+               git add one two &&
+               test_tick && git commit -m initial &&
+
+               git branch L1 &&
+               git checkout -b R1 &&
+               git mv one three &&
+               test_tick && git commit -m R1 &&
+
+               git checkout L1 &&
+               git mv two three &&
+               test_tick && git commit -m L1 &&
+
+               git checkout L1^0 &&
+               test_tick && git merge -s ours R1 &&
+               git tag L2 &&
+
+               git checkout R1^0 &&
+               test_tick && git merge -s ours L1 &&
+               git tag R2
+       )
 '
 
 test_expect_success 'merge simple rename+criss-cross with no modifications' '
-       git reset --hard &&
-       git checkout L2^0 &&
-
-       test_must_fail git merge -s recursive R2^0 &&
-
-       test 2 = $(git ls-files -s | wc -l) &&
-       test 2 = $(git ls-files -u | wc -l) &&
-       test 2 = $(git ls-files -o | wc -l) &&
-
-       test $(git rev-parse :2:three) = $(git rev-parse L2:three) &&
-       test $(git rev-parse :3:three) = $(git rev-parse R2:three) &&
-
-       test $(git rev-parse L2:three) = $(git hash-object three~HEAD) &&
-       test $(git rev-parse R2:three) = $(git hash-object three~R2^0)
+       (
+               cd basic-rename &&
+
+               git reset --hard &&
+               git checkout L2^0 &&
+
+               test_must_fail git merge -s recursive R2^0 &&
+
+               git ls-files -s >out &&
+               test_line_count = 2 out &&
+               git ls-files -u >out &&
+               test_line_count = 2 out &&
+               git ls-files -o >out &&
+               test_line_count = 3 out &&
+
+               git rev-parse >expect       \
+                       L2:three   R2:three \
+                       L2:three   R2:three &&
+               git rev-parse   >actual     \
+                       :2:three   :3:three &&
+               git hash-object >>actual    \
+                       three~HEAD three~R2^0
+               test_cmp expect actual
+       )
 '
 
 #
@@ -81,58 +90,67 @@ test_expect_success 'merge simple rename+criss-cross with no modifications' '
 #
 
 test_expect_success 'setup criss-cross + rename merges with basic modification' '
-       git rm -rf . &&
-       git clean -fdqx &&
-       rm -rf .git &&
-       git init &&
-
-       ten="0 1 2 3 4 5 6 7 8 9" &&
-       for i in $ten
-       do
-               echo line $i in a sample file
-       done >one &&
-       for i in $ten
-       do
-               echo line $i in another sample file
-       done >two &&
-       git add one two &&
-       test_tick && git commit -m initial &&
-
-       git branch L1 &&
-       git checkout -b R1 &&
-       git mv one three &&
-       echo more >>two &&
-       git add two &&
-       test_tick && git commit -m R1 &&
-
-       git checkout L1 &&
-       git mv two three &&
-       test_tick && git commit -m L1 &&
-
-       git checkout L1^0 &&
-       test_tick && git merge -s ours R1 &&
-       git tag L2 &&
-
-       git checkout R1^0 &&
-       test_tick && git merge -s ours L1 &&
-       git tag R2
+       test_create_repo rename-modify &&
+       (
+               cd rename-modify &&
+
+               ten="0 1 2 3 4 5 6 7 8 9" &&
+               for i in $ten
+               do
+                       echo line $i in a sample file
+               done >one &&
+               for i in $ten
+               do
+                       echo line $i in another sample file
+               done >two &&
+               git add one two &&
+               test_tick && git commit -m initial &&
+
+               git branch L1 &&
+               git checkout -b R1 &&
+               git mv one three &&
+               echo more >>two &&
+               git add two &&
+               test_tick && git commit -m R1 &&
+
+               git checkout L1 &&
+               git mv two three &&
+               test_tick && git commit -m L1 &&
+
+               git checkout L1^0 &&
+               test_tick && git merge -s ours R1 &&
+               git tag L2 &&
+
+               git checkout R1^0 &&
+               test_tick && git merge -s ours L1 &&
+               git tag R2
+       )
 '
 
 test_expect_success 'merge criss-cross + rename merges with basic modification' '
-       git reset --hard &&
-       git checkout L2^0 &&
-
-       test_must_fail git merge -s recursive R2^0 &&
-
-       test 2 = $(git ls-files -s | wc -l) &&
-       test 2 = $(git ls-files -u | wc -l) &&
-       test 2 = $(git ls-files -o | wc -l) &&
-
-       test $(git rev-parse :2:three) = $(git rev-parse L2:three) &&
-       test $(git rev-parse :3:three) = $(git rev-parse R2:three) &&
-
-       test $(git rev-parse L2:three) = $(git hash-object three~HEAD) &&
-       test $(git rev-parse R2:three) = $(git hash-object three~R2^0)
+       (
+               cd rename-modify &&
+
+               git checkout L2^0 &&
+
+               test_must_fail git merge -s recursive R2^0 &&
+
+               git ls-files -s >out &&
+               test_line_count = 2 out &&
+               git ls-files -u >out &&
+               test_line_count = 2 out &&
+               git ls-files -o >out &&
+               test_line_count = 3 out &&
+
+               git rev-parse >expect       \
+                       L2:three   R2:three \
+                       L2:three   R2:three &&
+               git rev-parse   >actual     \
+                       :2:three   :3:three &&
+               git hash-object >>actual    \
+                       three~HEAD three~R2^0
+               test_cmp expect actual
+       )
 '
 
 #
@@ -156,64 +174,74 @@ test_expect_success 'merge criss-cross + rename merges with basic modification'
 #
 
 test_expect_success 'setup differently handled merges of rename/add conflict' '
-       git rm -rf . &&
-       git clean -fdqx &&
-       rm -rf .git &&
-       git init &&
-
-       printf "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n" >a &&
-       git add a &&
-       test_tick && git commit -m A &&
-
-       git branch B &&
-       git checkout -b C &&
-       echo 10 >>a &&
-       echo "other content" >>new_a &&
-       git add a new_a &&
-       test_tick && git commit -m C &&
-
-       git checkout B &&
-       git mv a new_a &&
-       test_tick && git commit -m B &&
-
-       git checkout B^0 &&
-       test_must_fail git merge C &&
-       git clean -f &&
-       test_tick && git commit -m D &&
-       git tag D &&
-
-       git checkout C^0 &&
-       test_must_fail git merge B &&
-       rm new_a~HEAD new_a &&
-       printf "Incorrectly merged content" >>new_a &&
-       git add -u &&
-       test_tick && git commit -m E &&
-       git tag E
+       test_create_repo rename-add &&
+       (
+               cd rename-add &&
+
+               printf "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n" >a &&
+               git add a &&
+               test_tick && git commit -m A &&
+
+               git branch B &&
+               git checkout -b C &&
+               echo 10 >>a &&
+               echo "other content" >>new_a &&
+               git add a new_a &&
+               test_tick && git commit -m C &&
+
+               git checkout B &&
+               git mv a new_a &&
+               test_tick && git commit -m B &&
+
+               git checkout B^0 &&
+               test_must_fail git merge C &&
+               git clean -f &&
+               test_tick && git commit -m D &&
+               git tag D &&
+
+               git checkout C^0 &&
+               test_must_fail git merge B &&
+               rm new_a~HEAD new_a &&
+               printf "Incorrectly merged content" >>new_a &&
+               git add -u &&
+               test_tick && git commit -m E &&
+               git tag E
+       )
 '
 
 test_expect_success 'git detects differently handled merges conflict' '
-       git reset --hard &&
-       git checkout D^0 &&
-
-       test_must_fail git merge -s recursive E^0 &&
-
-       test 3 = $(git ls-files -s | wc -l) &&
-       test 3 = $(git ls-files -u | wc -l) &&
-       test 0 = $(git ls-files -o | wc -l) &&
-
-       test $(git rev-parse :2:new_a) = $(git rev-parse D:new_a) &&
-       test $(git rev-parse :3:new_a) = $(git rev-parse E:new_a) &&
-
-       git cat-file -p B:new_a >>merged &&
-       git cat-file -p C:new_a >>merge-me &&
-       >empty &&
-       test_must_fail git merge-file \
-               -L "Temporary merge branch 2" \
-               -L "" \
-               -L "Temporary merge branch 1" \
-               merged empty merge-me &&
-       sed -e "s/^\([<=>]\)/\1\1\1/" merged >merged-internal &&
-       test $(git rev-parse :1:new_a) = $(git hash-object merged-internal)
+       (
+               cd rename-add &&
+
+               git checkout D^0 &&
+
+               test_must_fail git merge -s recursive E^0 &&
+
+               git ls-files -s >out &&
+               test_line_count = 3 out &&
+               git ls-files -u >out &&
+               test_line_count = 3 out &&
+               git ls-files -o >out &&
+               test_line_count = 1 out &&
+
+               git rev-parse >expect       \
+                       D:new_a  E:new_a &&
+               git rev-parse   >actual     \
+                       :2:new_a :3:new_a &&
+               test_cmp expect actual
+
+               git cat-file -p B:new_a >ours &&
+               git cat-file -p C:new_a >theirs &&
+               >empty &&
+               test_must_fail git merge-file \
+                       -L "Temporary merge branch 2" \
+                       -L "" \
+                       -L "Temporary merge branch 1" \
+                       ours empty theirs &&
+               sed -e "s/^\([<=>]\)/\1\1\1/" ours >expect &&
+               git cat-file -p :1:new_a >actual &&
+               test_cmp expect actual
+       )
 '
 
 #
@@ -236,67 +264,85 @@ test_expect_success 'git detects differently handled merges conflict' '
 # Merging commits D & E should result in modify/delete conflict.
 
 test_expect_success 'setup criss-cross + modify/delete resolved differently' '
-       git rm -rf . &&
-       git clean -fdqx &&
-       rm -rf .git &&
-       git init &&
-
-       echo A >file &&
-       git add file &&
-       test_tick &&
-       git commit -m A &&
-
-       git branch B &&
-       git checkout -b C &&
-       git rm file &&
-       test_tick &&
-       git commit -m C &&
-
-       git checkout B &&
-       echo B >file &&
-       git add file &&
-       test_tick &&
-       git commit -m B &&
-
-       git checkout B^0 &&
-       test_must_fail git merge C &&
-       echo B >file &&
-       git add file &&
-       test_tick &&
-       git commit -m D &&
-       git tag D &&
-
-       git checkout C^0 &&
-       test_must_fail git merge B &&
-       git rm file &&
-       test_tick &&
-       git commit -m E &&
-       git tag E
+       test_create_repo modify-delete &&
+       (
+               cd modify-delete &&
+
+               echo A >file &&
+               git add file &&
+               test_tick &&
+               git commit -m A &&
+
+               git branch B &&
+               git checkout -b C &&
+               git rm file &&
+               test_tick &&
+               git commit -m C &&
+
+               git checkout B &&
+               echo B >file &&
+               git add file &&
+               test_tick &&
+               git commit -m B &&
+
+               git checkout B^0 &&
+               test_must_fail git merge C &&
+               echo B >file &&
+               git add file &&
+               test_tick &&
+               git commit -m D &&
+               git tag D &&
+
+               git checkout C^0 &&
+               test_must_fail git merge B &&
+               git rm file &&
+               test_tick &&
+               git commit -m E &&
+               git tag E
+       )
 '
 
 test_expect_success 'git detects conflict merging criss-cross+modify/delete' '
-       git checkout D^0 &&
+       (
+               cd modify-delete &&
+
+               git checkout D^0 &&
 
-       test_must_fail git merge -s recursive E^0 &&
+               test_must_fail git merge -s recursive E^0 &&
 
-       test 2 -eq $(git ls-files -s | wc -l) &&
-       test 2 -eq $(git ls-files -u | wc -l) &&
+               git ls-files -s >out &&
+               test_line_count = 2 out &&
+               git ls-files -u >out &&
+               test_line_count = 2 out &&
 
-       test $(git rev-parse :1:file) = $(git rev-parse master:file) &&
-       test $(git rev-parse :2:file) = $(git rev-parse B:file)
+               git rev-parse >expect       \
+                       master:file  B:file &&
+               git rev-parse   >actual      \
+                       :1:file      :2:file &&
+               test_cmp expect actual
+       )
 '
 
 test_expect_success 'git detects conflict merging criss-cross+modify/delete, reverse direction' '
-       git reset --hard &&
-       git checkout E^0 &&
+       (
+               cd modify-delete &&
 
-       test_must_fail git merge -s recursive D^0 &&
+               git reset --hard &&
+               git checkout E^0 &&
 
-       test 2 -eq $(git ls-files -s | wc -l) &&
-       test 2 -eq $(git ls-files -u | wc -l) &&
+               test_must_fail git merge -s recursive D^0 &&
 
-       test $(git rev-parse :1:file) = $(git rev-parse master:file) &&
-       test $(git rev-parse :3:file) = $(git rev-parse B:file)
+               git ls-files -s >out &&
+               test_line_count = 2 out &&
+               git ls-files -u >out &&
+               test_line_count = 2 out &&
+
+               git rev-parse >expect       \
+                       master:file  B:file &&
+               git rev-parse   >actual      \
+                       :1:file      :3:file &&
+               test_cmp expect actual
+       )
 '
 
 #
@@ -336,120 +382,164 @@ test_expect_success 'git detects conflict merging criss-cross+modify/delete, rev
 #
 
 test_expect_success 'setup differently handled merges of directory/file conflict' '
-       git rm -rf . &&
-       git clean -fdqx &&
-       rm -rf .git &&
-       git init &&
-
-       >ignore-me &&
-       git add ignore-me &&
-       test_tick &&
-       git commit -m A &&
-       git tag A &&
-
-       git branch B &&
-       git checkout -b C &&
-       mkdir a &&
-       echo 10 >a/file &&
-       git add a/file &&
-       test_tick &&
-       git commit -m C &&
-
-       git checkout B &&
-       echo 5 >a &&
-       git add a &&
-       test_tick &&
-       git commit -m B &&
-
-       git checkout B^0 &&
-       test_must_fail git merge C &&
-       git clean -f &&
-       rm -rf a/ &&
-       echo 5 >a &&
-       git add a &&
-       test_tick &&
-       git commit -m D &&
-       git tag D &&
-
-       git checkout C^0 &&
-       test_must_fail git merge B &&
-       git clean -f &&
-       git rm --cached a &&
-       echo 10 >a/file &&
-       git add a/file &&
-       test_tick &&
-       git commit -m E1 &&
-       git tag E1 &&
-
-       git checkout C^0 &&
-       test_must_fail git merge B &&
-       git clean -f &&
-       git rm --cached a &&
-       printf "10\n11\n" >a/file &&
-       git add a/file &&
-       test_tick &&
-       git commit -m E2 &&
-       git tag E2
+       test_create_repo directory-file &&
+       (
+               cd directory-file &&
+
+               >ignore-me &&
+               git add ignore-me &&
+               test_tick &&
+               git commit -m A &&
+               git tag A &&
+
+               git branch B &&
+               git checkout -b C &&
+               mkdir a &&
+               echo 10 >a/file &&
+               git add a/file &&
+               test_tick &&
+               git commit -m C &&
+
+               git checkout B &&
+               echo 5 >a &&
+               git add a &&
+               test_tick &&
+               git commit -m B &&
+
+               git checkout B^0 &&
+               test_must_fail git merge C &&
+               git clean -f &&
+               rm -rf a/ &&
+               echo 5 >a &&
+               git add a &&
+               test_tick &&
+               git commit -m D &&
+               git tag D &&
+
+               git checkout C^0 &&
+               test_must_fail git merge B &&
+               git clean -f &&
+               git rm --cached a &&
+               echo 10 >a/file &&
+               git add a/file &&
+               test_tick &&
+               git commit -m E1 &&
+               git tag E1 &&
+
+               git checkout C^0 &&
+               test_must_fail git merge B &&
+               git clean -f &&
+               git rm --cached a &&
+               printf "10\n11\n" >a/file &&
+               git add a/file &&
+               test_tick &&
+               git commit -m E2 &&
+               git tag E2
+       )
 '
 
 test_expect_success 'merge of D & E1 fails but has appropriate contents' '
-       get_clean_checkout D^0 &&
-
-       test_must_fail git merge -s recursive E1^0 &&
-
-       test 2 -eq $(git ls-files -s | wc -l) &&
-       test 1 -eq $(git ls-files -u | wc -l) &&
-       test 0 -eq $(git ls-files -o | wc -l) &&
-
-       test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) &&
-       test $(git rev-parse :2:a) = $(git rev-parse B:a)
+       test_when_finished "git -C directory-file reset --hard" &&
+       test_when_finished "git -C directory-file clean -fdqx" &&
+       (
+               cd directory-file &&
+
+               git checkout D^0 &&
+
+               test_must_fail git merge -s recursive E1^0 &&
+
+               git ls-files -s >out &&
+               test_line_count = 2 out &&
+               git ls-files -u >out &&
+               test_line_count = 1 out &&
+               git ls-files -o >out &&
+               test_line_count = 1 out &&
+
+               git rev-parse >expect    \
+                       A:ignore-me  B:a &&
+               git rev-parse   >actual   \
+                       :0:ignore-me :2:a &&
+               test_cmp expect actual
+       )
 '
 
 test_expect_success 'merge of E1 & D fails but has appropriate contents' '
-       get_clean_checkout E1^0 &&
-
-       test_must_fail git merge -s recursive D^0 &&
-
-       test 2 -eq $(git ls-files -s | wc -l) &&
-       test 1 -eq $(git ls-files -u | wc -l) &&
-       test 0 -eq $(git ls-files -o | wc -l) &&
-
-       test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) &&
-       test $(git rev-parse :3:a) = $(git rev-parse B:a)
+       test_when_finished "git -C directory-file reset --hard" &&
+       test_when_finished "git -C directory-file clean -fdqx" &&
+       (
+               cd directory-file &&
+
+               git checkout E1^0 &&
+
+               test_must_fail git merge -s recursive D^0 &&
+
+               git ls-files -s >out &&
+               test_line_count = 2 out &&
+               git ls-files -u >out &&
+               test_line_count = 1 out &&
+               git ls-files -o >out &&
+               test_line_count = 1 out &&
+
+               git rev-parse >expect    \
+                       A:ignore-me  B:a &&
+               git rev-parse   >actual   \
+                       :0:ignore-me :3:a &&
+               test_cmp expect actual
+       )
 '
 
 test_expect_success 'merge of D & E2 fails but has appropriate contents' '
-       get_clean_checkout D^0 &&
-
-       test_must_fail git merge -s recursive E2^0 &&
-
-       test 4 -eq $(git ls-files -s | wc -l) &&
-       test 3 -eq $(git ls-files -u | wc -l) &&
-       test 1 -eq $(git ls-files -o | wc -l) &&
-
-       test $(git rev-parse :2:a) = $(git rev-parse B:a) &&
-       test $(git rev-parse :3:a/file) = $(git rev-parse E2:a/file) &&
-       test $(git rev-parse :1:a/file) = $(git rev-parse C:a/file) &&
-       test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) &&
-
-       test -f a~HEAD
+       test_when_finished "git -C directory-file reset --hard" &&
+       test_when_finished "git -C directory-file clean -fdqx" &&
+       (
+               cd directory-file &&
+
+               git checkout D^0 &&
+
+               test_must_fail git merge -s recursive E2^0 &&
+
+               git ls-files -s >out &&
+               test_line_count = 4 out &&
+               git ls-files -u >out &&
+               test_line_count = 3 out &&
+               git ls-files -o >out &&
+               test_line_count = 2 out &&
+
+               git rev-parse >expect    \
+                       B:a   E2:a/file  c:a/file   A:ignore-me &&
+               git rev-parse   >actual   \
+                       :2:a  :3:a/file  :1:a/file  :0:ignore-me &&
+               test_cmp expect actual
+
+               test_path_is_file a~HEAD
+       )
 '
 
 test_expect_success 'merge of E2 & D fails but has appropriate contents' '
-       get_clean_checkout E2^0 &&
-
-       test_must_fail git merge -s recursive D^0 &&
-
-       test 4 -eq $(git ls-files -s | wc -l) &&
-       test 3 -eq $(git ls-files -u | wc -l) &&
-       test 1 -eq $(git ls-files -o | wc -l) &&
-
-       test $(git rev-parse :3:a) = $(git rev-parse B:a) &&
-       test $(git rev-parse :2:a/file) = $(git rev-parse E2:a/file) &&
-       test $(git rev-parse :1:a/file) = $(git rev-parse C:a/file) &&
-       test $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) &&
-
-       test -f a~D^0
+       test_when_finished "git -C directory-file reset --hard" &&
+       test_when_finished "git -C directory-file clean -fdqx" &&
+       (
+               cd directory-file &&
+
+               git checkout E2^0 &&
+
+               test_must_fail git merge -s recursive D^0 &&
+
+               git ls-files -s >out &&
+               test_line_count = 4 out &&
+               git ls-files -u >out &&
+               test_line_count = 3 out &&
+               git ls-files -o >out &&
+               test_line_count = 2 out &&
+
+               git rev-parse >expect    \
+                       B:a   E2:a/file  c:a/file   A:ignore-me &&
+               git rev-parse   >actual   \
+                       :3:a  :2:a/file  :1:a/file  :0:ignore-me &&
+               test_cmp expect actual
+
+               test_path_is_file a~D^0
+       )
 '
 
 #
@@ -492,52 +582,58 @@ test_expect_success 'merge of E2 & D fails but has appropriate contents' '
 # but that may cancel out at the final merge stage".
 
 test_expect_success 'setup rename/rename(1to2)/modify followed by what looks like rename/rename(2to1)/modify' '
-       git reset --hard &&
-       git rm -rf . &&
-       git clean -fdqx &&
-       rm -rf .git &&
-       git init &&
-
-       printf "1\n2\n3\n4\n5\n6\n" >a &&
-       git add a &&
-       git commit -m A &&
-       git tag A &&
-
-       git checkout -b B A &&
-       git mv a b &&
-       echo 7 >>b &&
-       git add -u &&
-       git commit -m B &&
-
-       git checkout -b C A &&
-       git mv a c &&
-       git commit -m C &&
-
-       git checkout -q B^0 &&
-       git merge --no-commit -s ours C^0 &&
-       git mv b newname &&
-       git commit -m "Merge commit C^0 into HEAD" &&
-       git tag D &&
-
-       git checkout -q C^0 &&
-       git merge --no-commit -s ours B^0 &&
-       git mv c newname &&
-       printf "7\n8\n" >>newname &&
-       git add -u &&
-       git commit -m "Merge commit B^0 into HEAD" &&
-       git tag E
+       test_create_repo rename-squared-squared &&
+       (
+               cd rename-squared-squared &&
+
+               printf "1\n2\n3\n4\n5\n6\n" >a &&
+               git add a &&
+               git commit -m A &&
+               git tag A &&
+
+               git checkout -b B A &&
+               git mv a b &&
+               echo 7 >>b &&
+               git add -u &&
+               git commit -m B &&
+
+               git checkout -b C A &&
+               git mv a c &&
+               git commit -m C &&
+
+               git checkout -q B^0 &&
+               git merge --no-commit -s ours C^0 &&
+               git mv b newname &&
+               git commit -m "Merge commit C^0 into HEAD" &&
+               git tag D &&
+
+               git checkout -q C^0 &&
+               git merge --no-commit -s ours B^0 &&
+               git mv c newname &&
+               printf "7\n8\n" >>newname &&
+               git add -u &&
+               git commit -m "Merge commit B^0 into HEAD" &&
+               git tag E
+       )
 '
 
 test_expect_success 'handle rename/rename(1to2)/modify followed by what looks like rename/rename(2to1)/modify' '
-       git checkout D^0 &&
+       (
+               cd rename-squared-squared &&
+
+               git checkout D^0 &&
 
-       git merge -s recursive E^0 &&
+               git merge -s recursive E^0 &&
 
-       test 1 -eq $(git ls-files -s | wc -l) &&
-       test 0 -eq $(git ls-files -u | wc -l) &&
-       test 0 -eq $(git ls-files -o | wc -l) &&
+               git ls-files -s >out &&
+               test_line_count = 1 out &&
+               git ls-files -u >out &&
+               test_line_count = 0 out &&
+               git ls-files -o >out &&
+               test_line_count = 1 out &&
 
-       test $(git rev-parse HEAD:newname) = $(git rev-parse E:newname)
+               test $(git rev-parse HEAD:newname) = $(git rev-parse E:newname)
+       )
 '
 
 #
@@ -562,59 +658,72 @@ test_expect_success 'handle rename/rename(1to2)/modify followed by what looks li
 # renaming carefully (both in the virtual merge base and later), and getting
 # content merge handled.
 
-test_expect_success 'setup criss-cross + rename/rename/add + modify/modify' '
-       git rm -rf . &&
-       git clean -fdqx &&
-       rm -rf .git &&
-       git init &&
-
-       printf "lots\nof\nwords\nand\ncontent\n" >a &&
-       git add a &&
-       git commit -m A &&
-       git tag A &&
-
-       git checkout -b B A &&
-       git mv a b &&
-       git commit -m B &&
-
-       git checkout -b C A &&
-       git mv a c &&
-       printf "2\n3\n4\n5\n6\n7\n" >a &&
-       git add a &&
-       git commit -m C &&
-
-       git checkout B^0 &&
-       git merge --no-commit -s ours C^0 &&
-       git checkout C -- a c &&
-       mv a old_a &&
-       echo 1 >a &&
-       cat old_a >>a &&
-       rm old_a &&
-       git add -u &&
-       git commit -m "Merge commit C^0 into HEAD" &&
-       git tag D &&
-
-       git checkout C^0 &&
-       git merge --no-commit -s ours B^0 &&
-       git checkout B -- b &&
-       echo 8 >>a &&
-       git add -u &&
-       git commit -m "Merge commit B^0 into HEAD" &&
-       git tag E
+test_expect_success 'setup criss-cross + rename/rename/add-source + modify/modify' '
+       test_create_repo rename-rename-add-source &&
+       (
+               cd rename-rename-add-source &&
+
+               printf "lots\nof\nwords\nand\ncontent\n" >a &&
+               git add a &&
+               git commit -m A &&
+               git tag A &&
+
+               git checkout -b B A &&
+               git mv a b &&
+               git commit -m B &&
+
+               git checkout -b C A &&
+               git mv a c &&
+               printf "2\n3\n4\n5\n6\n7\n" >a &&
+               git add a &&
+               git commit -m C &&
+
+               git checkout B^0 &&
+               git merge --no-commit -s ours C^0 &&
+               git checkout C -- a c &&
+               mv a old_a &&
+               echo 1 >a &&
+               cat old_a >>a &&
+               rm old_a &&
+               git add -u &&
+               git commit -m "Merge commit C^0 into HEAD" &&
+               git tag D &&
+
+               git checkout C^0 &&
+               git merge --no-commit -s ours B^0 &&
+               git checkout B -- b &&
+               echo 8 >>a &&
+               git add -u &&
+               git commit -m "Merge commit B^0 into HEAD" &&
+               git tag E
+       )
 '
 
 test_expect_failure 'detect rename/rename/add-source for virtual merge-base' '
-       git checkout D^0 &&
-
-       git merge -s recursive E^0 &&
-
-       test 3 -eq $(git ls-files -s | wc -l) &&
-       test 0 -eq $(git ls-files -u | wc -l) &&
-       test 0 -eq $(git ls-files -o | wc -l) &&
-
-       test $(git rev-parse HEAD:b) = $(git rev-parse A:a) &&
-       test $(git rev-parse HEAD:c) = $(git rev-parse A:a) &&
-       test "$(cat a)" = "$(printf "1\n2\n3\n4\n5\n6\n7\n8\n")"
+       (
+               cd rename-rename-add-source &&
+
+               git checkout D^0 &&
+
+               git merge -s recursive E^0 &&
+
+               git ls-files -s >out &&
+               test_line_count = 3 out &&
+               git ls-files -u >out &&
+               test_line_count = 0 out &&
+               git ls-files -o >out &&
+               test_line_count = 1 out &&
+
+               printf "1\n2\n3\n4\n5\n6\n7\n8\n" >correct &&
+               git rev-parse >expect \
+                       A:a   A:a     \
+                       correct       &&
+               git rev-parse   >actual  \
+                       :0:b  :0:c       &&
+               git hash-object >>actual \
+                       a                &&
+               test_cmp expect actual
+       )
 '
 
 #
@@ -638,52 +747,62 @@ test_expect_failure 'detect rename/rename/add-source for virtual merge-base' '
 # base of B & C needs to not delete B:c for that to work, though...
 
 test_expect_success 'setup criss-cross+rename/rename/add-dest + simple modify' '
-       git rm -rf . &&
-       git clean -fdqx &&
-       rm -rf .git &&
-       git init &&
-
-       >a &&
-       git add a &&
-       git commit -m A &&
-       git tag A &&
-
-       git checkout -b B A &&
-       git mv a b &&
-       printf "1\n2\n3\n4\n5\n6\n7\n" >c &&
-       git add c &&
-       git commit -m B &&
-
-       git checkout -b C A &&
-       git mv a c &&
-       git commit -m C &&
-
-       git checkout B^0 &&
-       git merge --no-commit -s ours C^0 &&
-       git mv b a &&
-       git commit -m "D is like B but renames b back to a" &&
-       git tag D &&
-
-       git checkout B^0 &&
-       git merge --no-commit -s ours C^0 &&
-       git mv b a &&
-       echo 8 >>c &&
-       git add c &&
-       git commit -m "E like D but has mod in c" &&
-       git tag E
+       test_create_repo rename-rename-add-dest &&
+       (
+               cd rename-rename-add-dest &&
+
+               >a &&
+               git add a &&
+               git commit -m A &&
+               git tag A &&
+
+               git checkout -b B A &&
+               git mv a b &&
+               printf "1\n2\n3\n4\n5\n6\n7\n" >c &&
+               git add c &&
+               git commit -m B &&
+
+               git checkout -b C A &&
+               git mv a c &&
+               git commit -m C &&
+
+               git checkout B^0 &&
+               git merge --no-commit -s ours C^0 &&
+               git mv b a &&
+               git commit -m "D is like B but renames b back to a" &&
+               git tag D &&
+
+               git checkout B^0 &&
+               git merge --no-commit -s ours C^0 &&
+               git mv b a &&
+               echo 8 >>c &&
+               git add c &&
+               git commit -m "E like D but has mod in c" &&
+               git tag E
+       )
 '
 
 test_expect_success 'virtual merge base handles rename/rename(1to2)/add-dest' '
-       git checkout D^0 &&
-
-       git merge -s recursive E^0 &&
-
-       test 2 -eq $(git ls-files -s | wc -l) &&
-       test 0 -eq $(git ls-files -u | wc -l) &&
-       test 0 -eq $(git ls-files -o | wc -l) &&
-
-       test $(git rev-parse HEAD:a) = $(git rev-parse A:a) &&
-       test $(git rev-parse HEAD:c) = $(git rev-parse E:c)
+       (
+               cd rename-rename-add-dest &&
+
+               git checkout D^0 &&
+
+               git merge -s recursive E^0 &&
+
+               git ls-files -s >out &&
+               test_line_count = 2 out &&
+               git ls-files -u >out &&
+               test_line_count = 0 out &&
+               git ls-files -o >out &&
+               test_line_count = 1 out &&
+
+               git rev-parse >expect \
+                       A:a   E:c     &&
+               git rev-parse   >actual \
+                       :0:a  :0:c      &&
+               test_cmp expect actual
+       )
 '
 
 test_done
index 411550d2b6e9085c5e7f93c25effec7b130f0401..1cbd946fc2eb9ab3dcad83c811abb6d18448fc4e 100755 (executable)
@@ -6,31 +6,40 @@ test_description="recursive merge corner cases w/ renames but not criss-crosses"
 . ./test-lib.sh
 
 test_expect_success 'setup rename/delete + untracked file' '
-       echo "A pretty inscription" >ring &&
-       git add ring &&
-       test_tick &&
-       git commit -m beginning &&
-
-       git branch people &&
-       git checkout -b rename-the-ring &&
-       git mv ring one-ring-to-rule-them-all &&
-       test_tick &&
-       git commit -m fullname &&
-
-       git checkout people &&
-       git rm ring &&
-       echo gollum >owner &&
-       git add owner &&
-       test_tick &&
-       git commit -m track-people-instead-of-objects &&
-       echo "Myyy PRECIOUSSS" >ring
+       test_create_repo rename-delete-untracked &&
+       (
+               cd rename-delete-untracked &&
+
+               echo "A pretty inscription" >ring &&
+               git add ring &&
+               test_tick &&
+               git commit -m beginning &&
+
+               git branch people &&
+               git checkout -b rename-the-ring &&
+               git mv ring one-ring-to-rule-them-all &&
+               test_tick &&
+               git commit -m fullname &&
+
+               git checkout people &&
+               git rm ring &&
+               echo gollum >owner &&
+               git add owner &&
+               test_tick &&
+               git commit -m track-people-instead-of-objects &&
+               echo "Myyy PRECIOUSSS" >ring
+       )
 '
 
 test_expect_success "Does git preserve Gollum's precious artifact?" '
-       test_must_fail git merge -s recursive rename-the-ring &&
+       (
+               cd rename-delete-untracked &&
 
-       # Make sure git did not delete an untracked file
-       test -f ring
+               test_must_fail git merge -s recursive rename-the-ring &&
+
+               # Make sure git did not delete an untracked file
+               test_path_is_file ring
+       )
 '
 
 # Testcase setup for rename/modify/add-source:
@@ -41,96 +50,125 @@ test_expect_success "Does git preserve Gollum's precious artifact?" '
 # We should be able to merge B & C cleanly
 
 test_expect_success 'setup rename/modify/add-source conflict' '
-       git rm -rf . &&
-       git clean -fdqx &&
-       rm -rf .git &&
-       git init &&
-
-       printf "1\n2\n3\n4\n5\n6\n7\n" >a &&
-       git add a &&
-       git commit -m A &&
-       git tag A &&
-
-       git checkout -b B A &&
-       echo 8 >>a &&
-       git add a &&
-       git commit -m B &&
-
-       git checkout -b C A &&
-       git mv a b &&
-       echo something completely different >a &&
-       git add a &&
-       git commit -m C
+       test_create_repo rename-modify-add-source &&
+       (
+               cd rename-modify-add-source &&
+
+               printf "1\n2\n3\n4\n5\n6\n7\n" >a &&
+               git add a &&
+               git commit -m A &&
+               git tag A &&
+
+               git checkout -b B A &&
+               echo 8 >>a &&
+               git add a &&
+               git commit -m B &&
+
+               git checkout -b C A &&
+               git mv a b &&
+               echo something completely different >a &&
+               git add a &&
+               git commit -m C
+       )
 '
 
 test_expect_failure 'rename/modify/add-source conflict resolvable' '
-       git checkout B^0 &&
+       (
+               cd rename-modify-add-source &&
+
+               git checkout B^0 &&
 
-       git merge -s recursive C^0 &&
+               git merge -s recursive C^0 &&
 
-       test $(git rev-parse B:a) = $(git rev-parse b) &&
-       test $(git rev-parse C:a) = $(git rev-parse a)
+               git rev-parse >expect \
+                       B:a   C:a     &&
+               git rev-parse >actual \
+                       b     c       &&
+               test_cmp expect actual
+       )
 '
 
 test_expect_success 'setup resolvable conflict missed if rename missed' '
-       git rm -rf . &&
-       git clean -fdqx &&
-       rm -rf .git &&
-       git init &&
-
-       printf "1\n2\n3\n4\n5\n" >a &&
-       echo foo >b &&
-       git add a b &&
-       git commit -m A &&
-       git tag A &&
-
-       git checkout -b B A &&
-       git mv a c &&
-       echo "Completely different content" >a &&
-       git add a &&
-       git commit -m B &&
-
-       git checkout -b C A &&
-       echo 6 >>a &&
-       git add a &&
-       git commit -m C
+       test_create_repo break-detection-1 &&
+       (
+               cd break-detection-1 &&
+
+               printf "1\n2\n3\n4\n5\n" >a &&
+               echo foo >b &&
+               git add a b &&
+               git commit -m A &&
+               git tag A &&
+
+               git checkout -b B A &&
+               git mv a c &&
+               echo "Completely different content" >a &&
+               git add a &&
+               git commit -m B &&
+
+               git checkout -b C A &&
+               echo 6 >>a &&
+               git add a &&
+               git commit -m C
+       )
 '
 
 test_expect_failure 'conflict caused if rename not detected' '
-       git checkout -q C^0 &&
-       git merge -s recursive B^0 &&
-
-       test 3 -eq $(git ls-files -s | wc -l) &&
-       test 0 -eq $(git ls-files -u | wc -l) &&
-       test 0 -eq $(git ls-files -o | wc -l) &&
-
-       test_line_count = 6 c &&
-       test $(git rev-parse HEAD:a) = $(git rev-parse B:a) &&
-       test $(git rev-parse HEAD:b) = $(git rev-parse A:b)
+       (
+               cd break-detection-1 &&
+
+               git checkout -q C^0 &&
+               git merge -s recursive B^0 &&
+
+               git ls-files -s >out &&
+               test_line_count = 3 out &&
+               git ls-files -u >out &&
+               test_line_count = 0 out &&
+               git ls-files -o >out &&
+               test_line_count = 1 out &&
+
+               test_line_count = 6 c &&
+               git rev-parse >expect \
+                       B:a   A:b     &&
+               git rev-parse >actual \
+                       :0:a  :0:b    &&
+               test_cmp expect actual
+       )
 '
 
 test_expect_success 'setup conflict resolved wrong if rename missed' '
-       git reset --hard &&
-       git clean -f &&
-
-       git checkout -b D A &&
-       echo 7 >>a &&
-       git add a &&
-       git mv a c &&
-       echo "Completely different content" >a &&
-       git add a &&
-       git commit -m D &&
-
-       git checkout -b E A &&
-       git rm a &&
-       echo "Completely different content" >>a &&
-       git add a &&
-       git commit -m E
+       test_create_repo break-detection-2 &&
+       (
+               cd break-detection-2 &&
+
+               printf "1\n2\n3\n4\n5\n" >a &&
+               echo foo >b &&
+               git add a b &&
+               git commit -m A &&
+               git tag A &&
+
+               git checkout -b D A &&
+               echo 7 >>a &&
+               git add a &&
+               git mv a c &&
+               echo "Completely different content" >a &&
+               git add a &&
+               git commit -m D &&
+
+               git checkout -b E A &&
+               git rm a &&
+               echo "Completely different content" >>a &&
+               git add a &&
+               git commit -m E
+       )
 '
 
 test_expect_failure 'missed conflict if rename not detected' '
-       git checkout -q E^0 &&
-       test_must_fail git merge -s recursive D^0
+       (
+               cd break-detection-2 &&
+
+               git checkout -q E^0 &&
+               test_must_fail git merge -s recursive D^0
+       )
 '
 
 # Tests for undetected rename/add-source causing a file to erroneously be
@@ -145,198 +183,233 @@ test_expect_failure 'missed conflict if rename not detected' '
 #   Commit C: rename a->b, add unrelated a
 
 test_expect_success 'setup undetected rename/add-source causes data loss' '
-       git rm -rf . &&
-       git clean -fdqx &&
-       rm -rf .git &&
-       git init &&
-
-       printf "1\n2\n3\n4\n5\n" >a &&
-       git add a &&
-       git commit -m A &&
-       git tag A &&
-
-       git checkout -b B A &&
-       git mv a b &&
-       git commit -m B &&
-
-       git checkout -b C A &&
-       git mv a b &&
-       echo foobar >a &&
-       git add a &&
-       git commit -m C
+       test_create_repo break-detection-3 &&
+       (
+               cd break-detection-3 &&
+
+               printf "1\n2\n3\n4\n5\n" >a &&
+               git add a &&
+               git commit -m A &&
+               git tag A &&
+
+               git checkout -b B A &&
+               git mv a b &&
+               git commit -m B &&
+
+               git checkout -b C A &&
+               git mv a b &&
+               echo foobar >a &&
+               git add a &&
+               git commit -m C
+       )
 '
 
 test_expect_failure 'detect rename/add-source and preserve all data' '
-       git checkout B^0 &&
+       (
+               cd break-detection-3 &&
 
-       git merge -s recursive C^0 &&
+               git checkout B^0 &&
 
-       test 2 -eq $(git ls-files -s | wc -l) &&
-       test 2 -eq $(git ls-files -u | wc -l) &&
-       test 0 -eq $(git ls-files -o | wc -l) &&
+               git merge -s recursive C^0 &&
 
-       test -f a &&
-       test -f b &&
+               git ls-files -s >out &&
+               test_line_count = 2 out &&
+               git ls-files -u >out &&
+               test_line_count = 2 out &&
+               git ls-files -o >out &&
+               test_line_count = 1 out &&
 
-       test $(git rev-parse HEAD:b) = $(git rev-parse A:a) &&
-       test $(git rev-parse HEAD:a) = $(git rev-parse C:a)
+               test_path_is_file a &&
+               test_path_is_file b &&
+
+               git rev-parse >expect \
+                       A:a   C:a     &&
+               git rev-parse >actual \
+                       :0:b  :0:a    &&
+               test_cmp expect actual
+       )
 '
 
 test_expect_failure 'detect rename/add-source and preserve all data, merge other way' '
-       git checkout C^0 &&
+       (
+               cd break-detection-3 &&
+
+               git checkout C^0 &&
 
-       git merge -s recursive B^0 &&
+               git merge -s recursive B^0 &&
 
-       test 2 -eq $(git ls-files -s | wc -l) &&
-       test 2 -eq $(git ls-files -u | wc -l) &&
-       test 0 -eq $(git ls-files -o | wc -l) &&
+               git ls-files -s >out &&
+               test_line_count = 2 out &&
+               git ls-files -u >out &&
+               test_line_count = 2 out &&
+               git ls-files -o >out &&
+               test_line_count = 1 out &&
 
-       test -f a &&
-       test -f b &&
+               test_path_is_file a &&
+               test_path_is_file b &&
 
-       test $(git rev-parse HEAD:b) = $(git rev-parse A:a) &&
-       test $(git rev-parse HEAD:a) = $(git rev-parse C:a)
+               git rev-parse >expect \
+                       A:a   C:a     &&
+               git rev-parse >actual \
+                       :0:b  :0:a    &&
+               test_cmp expect actual
+       )
 '
 
 test_expect_success 'setup content merge + rename/directory conflict' '
-       git rm -rf . &&
-       git clean -fdqx &&
-       rm -rf .git &&
-       git init &&
-
-       printf "1\n2\n3\n4\n5\n6\n" >file &&
-       git add file &&
-       test_tick &&
-       git commit -m base &&
-       git tag base &&
-
-       git checkout -b right &&
-       echo 7 >>file &&
-       mkdir newfile &&
-       echo junk >newfile/realfile &&
-       git add file newfile/realfile &&
-       test_tick &&
-       git commit -m right &&
-
-       git checkout -b left-conflict base &&
-       echo 8 >>file &&
-       git add file &&
-       git mv file newfile &&
-       test_tick &&
-       git commit -m left &&
-
-       git checkout -b left-clean base &&
-       echo 0 >newfile &&
-       cat file >>newfile &&
-       git add newfile &&
-       git rm file &&
-       test_tick &&
-       git commit -m left
+       test_create_repo rename-directory-1 &&
+       (
+               cd rename-directory-1 &&
+
+               printf "1\n2\n3\n4\n5\n6\n" >file &&
+               git add file &&
+               test_tick &&
+               git commit -m base &&
+               git tag base &&
+
+               git checkout -b right &&
+               echo 7 >>file &&
+               mkdir newfile &&
+               echo junk >newfile/realfile &&
+               git add file newfile/realfile &&
+               test_tick &&
+               git commit -m right &&
+
+               git checkout -b left-conflict base &&
+               echo 8 >>file &&
+               git add file &&
+               git mv file newfile &&
+               test_tick &&
+               git commit -m left &&
+
+               git checkout -b left-clean base &&
+               echo 0 >newfile &&
+               cat file >>newfile &&
+               git add newfile &&
+               git rm file &&
+               test_tick &&
+               git commit -m left
+       )
 '
 
 test_expect_success 'rename/directory conflict + clean content merge' '
-       git reset --hard &&
-       git reset --hard &&
-       git clean -fdqx &&
+       (
+               cd rename-directory-1 &&
 
-       git checkout left-clean^0 &&
+               git checkout left-clean^0 &&
 
-       test_must_fail git merge -s recursive right^0 &&
+               test_must_fail git merge -s recursive right^0 &&
 
-       test 2 -eq $(git ls-files -s | wc -l) &&
-       test 1 -eq $(git ls-files -u | wc -l) &&
-       test 1 -eq $(git ls-files -o | wc -l) &&
+               git ls-files -s >out &&
+               test_line_count = 2 out &&
+               git ls-files -u >out &&
+               test_line_count = 1 out &&
+               git ls-files -o >out &&
+               test_line_count = 2 out &&
 
-       echo 0 >expect &&
-       git cat-file -p base:file >>expect &&
-       echo 7 >>expect &&
-       test_cmp expect newfile~HEAD &&
+               echo 0 >expect &&
+               git cat-file -p base:file >>expect &&
+               echo 7 >>expect &&
+               test_cmp expect newfile~HEAD &&
 
-       test $(git rev-parse :2:newfile) = $(git hash-object expect) &&
+               test $(git rev-parse :2:newfile) = $(git hash-object expect) &&
 
-       test -f newfile/realfile &&
-       test -f newfile~HEAD
+               test_path_is_file newfile/realfile &&
+               test_path_is_file newfile~HEAD
+       )
 '
 
 test_expect_success 'rename/directory conflict + content merge conflict' '
-       git reset --hard &&
-       git reset --hard &&
-       git clean -fdqx &&
-
-       git checkout left-conflict^0 &&
-
-       test_must_fail git merge -s recursive right^0 &&
-
-       test 4 -eq $(git ls-files -s | wc -l) &&
-       test 3 -eq $(git ls-files -u | wc -l) &&
-       test 1 -eq $(git ls-files -o | wc -l) &&
-
-       git cat-file -p left-conflict:newfile >left &&
-       git cat-file -p base:file    >base &&
-       git cat-file -p right:file   >right &&
-       test_must_fail git merge-file \
-               -L "HEAD:newfile" \
-               -L "" \
-               -L "right^0:file" \
-               left base right &&
-       test_cmp left newfile~HEAD &&
-
-       test $(git rev-parse :1:newfile) = $(git rev-parse base:file) &&
-       test $(git rev-parse :2:newfile) = $(git rev-parse left-conflict:newfile) &&
-       test $(git rev-parse :3:newfile) = $(git rev-parse right:file) &&
-
-       test -f newfile/realfile &&
-       test -f newfile~HEAD
+       (
+               cd rename-directory-1 &&
+
+               git reset --hard &&
+               git reset --hard &&
+               git clean -fdqx &&
+
+               git checkout left-conflict^0 &&
+
+               test_must_fail git merge -s recursive right^0 &&
+
+               git ls-files -s >out &&
+               test_line_count = 4 out &&
+               git ls-files -u >out &&
+               test_line_count = 3 out &&
+               git ls-files -o >out &&
+               test_line_count = 2 out &&
+
+               git cat-file -p left-conflict:newfile >left &&
+               git cat-file -p base:file    >base &&
+               git cat-file -p right:file   >right &&
+               test_must_fail git merge-file \
+                       -L "HEAD:newfile" \
+                       -L "" \
+                       -L "right^0:file" \
+                       left base right &&
+               test_cmp left newfile~HEAD &&
+
+               git rev-parse >expect                                 \
+                       base:file   left-conflict:newfile  right:file &&
+               git rev-parse >actual                                 \
+                       :1:newfile  :2:newfile             :3:newfile &&
+               test_cmp expect actual
+
+               test_path_is_file newfile/realfile &&
+               test_path_is_file newfile~HEAD
+       )
 '
 
 test_expect_success 'setup content merge + rename/directory conflict w/ disappearing dir' '
-       git reset --hard &&
-       git rm -rf . &&
-       git clean -fdqx &&
-       rm -rf .git &&
-       git init &&
-
-       mkdir sub &&
-       printf "1\n2\n3\n4\n5\n6\n" >sub/file &&
-       git add sub/file &&
-       test_tick &&
-       git commit -m base &&
-       git tag base &&
-
-       git checkout -b right &&
-       echo 7 >>sub/file &&
-       git add sub/file &&
-       test_tick &&
-       git commit -m right &&
-
-       git checkout -b left base &&
-       echo 0 >newfile &&
-       cat sub/file >>newfile &&
-       git rm sub/file &&
-       mv newfile sub &&
-       git add sub &&
-       test_tick &&
-       git commit -m left
+       test_create_repo rename-directory-2 &&
+       (
+               cd rename-directory-2 &&
+
+               mkdir sub &&
+               printf "1\n2\n3\n4\n5\n6\n" >sub/file &&
+               git add sub/file &&
+               test_tick &&
+               git commit -m base &&
+               git tag base &&
+
+               git checkout -b right &&
+               echo 7 >>sub/file &&
+               git add sub/file &&
+               test_tick &&
+               git commit -m right &&
+
+               git checkout -b left base &&
+               echo 0 >newfile &&
+               cat sub/file >>newfile &&
+               git rm sub/file &&
+               mv newfile sub &&
+               git add sub &&
+               test_tick &&
+               git commit -m left
+       )
 '
 
 test_expect_success 'disappearing dir in rename/directory conflict handled' '
-       git reset --hard &&
-       git clean -fdqx &&
+       (
+               cd rename-directory-2 &&
 
-       git checkout left^0 &&
+               git checkout left^0 &&
 
-       git merge -s recursive right^0 &&
+               git merge -s recursive right^0 &&
 
-       test 1 -eq $(git ls-files -s | wc -l) &&
-       test 0 -eq $(git ls-files -u | wc -l) &&
-       test 0 -eq $(git ls-files -o | wc -l) &&
+               git ls-files -s >out &&
+               test_line_count = 1 out &&
+               git ls-files -u >out &&
+               test_line_count = 0 out &&
+               git ls-files -o >out &&
+               test_line_count = 1 out &&
 
-       echo 0 >expect &&
-       git cat-file -p base:sub/file >>expect &&
-       echo 7 >>expect &&
-       test_cmp expect sub &&
+               echo 0 >expect &&
+               git cat-file -p base:sub/file >>expect &&
+               echo 7 >>expect &&
+               test_cmp expect sub &&
 
-       test -f sub
+               test_path_is_file sub
+       )
 '
 
 # Test for all kinds of things that can go wrong with rename/rename (2to1):
@@ -352,48 +425,59 @@ test_expect_success 'disappearing dir in rename/directory conflict handled' '
 #   * Nothing else should be present.  Is anything?
 
 test_expect_success 'setup rename/rename (2to1) + modify/modify' '
-       git rm -rf . &&
-       git clean -fdqx &&
-       rm -rf .git &&
-       git init &&
-
-       printf "1\n2\n3\n4\n5\n" >a &&
-       printf "5\n4\n3\n2\n1\n" >b &&
-       git add a b &&
-       git commit -m A &&
-       git tag A &&
-
-       git checkout -b B A &&
-       git mv a c &&
-       echo 0 >>b &&
-       git add b &&
-       git commit -m B &&
-
-       git checkout -b C A &&
-       git mv b c &&
-       echo 6 >>a &&
-       git add a &&
-       git commit -m C
+       test_create_repo rename-rename-2to1 &&
+       (
+               cd rename-rename-2to1 &&
+
+               printf "1\n2\n3\n4\n5\n" >a &&
+               printf "5\n4\n3\n2\n1\n" >b &&
+               git add a b &&
+               git commit -m A &&
+               git tag A &&
+
+               git checkout -b B A &&
+               git mv a c &&
+               echo 0 >>b &&
+               git add b &&
+               git commit -m B &&
+
+               git checkout -b C A &&
+               git mv b c &&
+               echo 6 >>a &&
+               git add a &&
+               git commit -m C
+       )
 '
 
 test_expect_success 'handle rename/rename (2to1) conflict correctly' '
-       git checkout B^0 &&
-
-       test_must_fail git merge -s recursive C^0 >out &&
-       test_i18ngrep "CONFLICT (rename/rename)" out &&
-
-       test 2 -eq $(git ls-files -s | wc -l) &&
-       test 2 -eq $(git ls-files -u | wc -l) &&
-       test 2 -eq $(git ls-files -u c | wc -l) &&
-       test 3 -eq $(git ls-files -o | wc -l) &&
-
-       test ! -f a &&
-       test ! -f b &&
-       test -f c~HEAD &&
-       test -f c~C^0 &&
-
-       test $(git hash-object c~HEAD) = $(git rev-parse C:a) &&
-       test $(git hash-object c~C^0) = $(git rev-parse B:b)
+       (
+               cd rename-rename-2to1 &&
+
+               git checkout B^0 &&
+
+               test_must_fail git merge -s recursive C^0 >out &&
+               test_i18ngrep "CONFLICT (rename/rename)" out &&
+
+               git ls-files -s >out &&
+               test_line_count = 2 out &&
+               git ls-files -u >out &&
+               test_line_count = 2 out &&
+               git ls-files -u c >out &&
+               test_line_count = 2 out &&
+               git ls-files -o >out &&
+               test_line_count = 3 out &&
+
+               test_path_is_missing a &&
+               test_path_is_missing b &&
+               test_path_is_file c~HEAD &&
+               test_path_is_file c~C^0 &&
+
+               git rev-parse >expect   \
+                       C:a     B:b     &&
+               git hash-object >actual \
+                       c~HEAD  c~C^0   &&
+               test_cmp expect actual
+       )
 '
 
 # Testcase setup for simple rename/rename (1to2) conflict:
@@ -401,44 +485,53 @@ test_expect_success 'handle rename/rename (2to1) conflict correctly' '
 #   Commit B: rename a->b
 #   Commit C: rename a->c
 test_expect_success 'setup simple rename/rename (1to2) conflict' '
-       git rm -rf . &&
-       git clean -fdqx &&
-       rm -rf .git &&
-       git init &&
-
-       echo stuff >a &&
-       git add a &&
-       test_tick &&
-       git commit -m A &&
-       git tag A &&
-
-       git checkout -b B A &&
-       git mv a b &&
-       test_tick &&
-       git commit -m B &&
-
-       git checkout -b C A &&
-       git mv a c &&
-       test_tick &&
-       git commit -m C
+       test_create_repo rename-rename-1to2 &&
+       (
+               cd rename-rename-1to2 &&
+
+               echo stuff >a &&
+               git add a &&
+               test_tick &&
+               git commit -m A &&
+               git tag A &&
+
+               git checkout -b B A &&
+               git mv a b &&
+               test_tick &&
+               git commit -m B &&
+
+               git checkout -b C A &&
+               git mv a c &&
+               test_tick &&
+               git commit -m C
+       )
 '
 
 test_expect_success 'merge has correct working tree contents' '
-       git checkout C^0 &&
-
-       test_must_fail git merge -s recursive B^0 &&
-
-       test 3 -eq $(git ls-files -s | wc -l) &&
-       test 3 -eq $(git ls-files -u | wc -l) &&
-       test 0 -eq $(git ls-files -o | wc -l) &&
-
-       test $(git rev-parse :1:a) = $(git rev-parse A:a) &&
-       test $(git rev-parse :3:b) = $(git rev-parse A:a) &&
-       test $(git rev-parse :2:c) = $(git rev-parse A:a) &&
-
-       test ! -f a &&
-       test $(git hash-object b) = $(git rev-parse A:a) &&
-       test $(git hash-object c) = $(git rev-parse A:a)
+       (
+               cd rename-rename-1to2 &&
+
+               git checkout C^0 &&
+
+               test_must_fail git merge -s recursive B^0 &&
+
+               git ls-files -s >out &&
+               test_line_count = 3 out &&
+               git ls-files -u >out &&
+               test_line_count = 3 out &&
+               git ls-files -o >out &&
+               test_line_count = 1 out &&
+
+               test_path_is_missing a &&
+               git rev-parse >expect   \
+                       A:a   A:a   A:a \
+                       A:a   A:a       &&
+               git rev-parse >actual    \
+                       :1:a  :3:b  :2:c &&
+               git hash-object >>actual \
+                       b     c          &&
+               test_cmp expect actual
+       )
 '
 
 # Testcase setup for rename/rename(1to2)/add-source conflict:
@@ -449,130 +542,155 @@ test_expect_success 'merge has correct working tree contents' '
 # Merging of B & C should NOT be clean; there's a rename/rename conflict
 
 test_expect_success 'setup rename/rename(1to2)/add-source conflict' '
-       git rm -rf . &&
-       git clean -fdqx &&
-       rm -rf .git &&
-       git init &&
-
-       printf "1\n2\n3\n4\n5\n6\n7\n" >a &&
-       git add a &&
-       git commit -m A &&
-       git tag A &&
-
-       git checkout -b B A &&
-       git mv a b &&
-       git commit -m B &&
-
-       git checkout -b C A &&
-       git mv a c &&
-       echo something completely different >a &&
-       git add a &&
-       git commit -m C
+       test_create_repo rename-rename-1to2-add-source-1 &&
+       (
+               cd rename-rename-1to2-add-source-1 &&
+
+               printf "1\n2\n3\n4\n5\n6\n7\n" >a &&
+               git add a &&
+               git commit -m A &&
+               git tag A &&
+
+               git checkout -b B A &&
+               git mv a b &&
+               git commit -m B &&
+
+               git checkout -b C A &&
+               git mv a c &&
+               echo something completely different >a &&
+               git add a &&
+               git commit -m C
+       )
 '
 
 test_expect_failure 'detect conflict with rename/rename(1to2)/add-source merge' '
-       git checkout B^0 &&
+       (
+               cd rename-rename-1to2-add-source-1 &&
+
+               git checkout B^0 &&
 
-       test_must_fail git merge -s recursive C^0 &&
+               test_must_fail git merge -s recursive C^0 &&
 
-       test 4 -eq $(git ls-files -s | wc -l) &&
-       test 0 -eq $(git ls-files -o | wc -l) &&
+               git ls-files -s >out &&
+               test_line_count = 4 out &&
+               git ls-files -o >out &&
+               test_line_count = 1 out &&
 
-       test $(git rev-parse 3:a) = $(git rev-parse C:a) &&
-       test $(git rev-parse 1:a) = $(git rev-parse A:a) &&
-       test $(git rev-parse 2:b) = $(git rev-parse B:b) &&
-       test $(git rev-parse 3:c) = $(git rev-parse C:c) &&
+               git rev-parse >expect         \
+                       C:a   A:a   B:b   C:C &&
+               git rev-parse >actual          \
+                       :3:a  :1:a  :2:b  :3:c &&
+               test_cmp expect actual
 
-       test -f a &&
-       test -f b &&
-       test -f c
+               test_path_is_file a &&
+               test_path_is_file b &&
+               test_path_is_file c
+       )
 '
 
 test_expect_success 'setup rename/rename(1to2)/add-source resolvable conflict' '
-       git rm -rf . &&
-       git clean -fdqx &&
-       rm -rf .git &&
-       git init &&
-
-       >a &&
-       git add a &&
-       test_tick &&
-       git commit -m base &&
-       git tag A &&
-
-       git checkout -b B A &&
-       git mv a b &&
-       test_tick &&
-       git commit -m one &&
-
-       git checkout -b C A &&
-       git mv a b &&
-       echo important-info >a &&
-       git add a &&
-       test_tick &&
-       git commit -m two
+       test_create_repo rename-rename-1to2-add-source-2 &&
+       (
+               cd rename-rename-1to2-add-source-2 &&
+
+               >a &&
+               git add a &&
+               test_tick &&
+               git commit -m base &&
+               git tag A &&
+
+               git checkout -b B A &&
+               git mv a b &&
+               test_tick &&
+               git commit -m one &&
+
+               git checkout -b C A &&
+               git mv a b &&
+               echo important-info >a &&
+               git add a &&
+               test_tick &&
+               git commit -m two
+       )
 '
 
 test_expect_failure 'rename/rename/add-source still tracks new a file' '
-       git checkout C^0 &&
-       git merge -s recursive B^0 &&
-
-       test 2 -eq $(git ls-files -s | wc -l) &&
-       test 0 -eq $(git ls-files -o | wc -l) &&
-
-       test $(git rev-parse HEAD:a) = $(git rev-parse C:a) &&
-       test $(git rev-parse HEAD:b) = $(git rev-parse A:a)
+       (
+               cd rename-rename-1to2-add-source-2 &&
+
+               git checkout C^0 &&
+               git merge -s recursive B^0 &&
+
+               git ls-files -s >out &&
+               test_line_count = 2 out &&
+               git ls-files -o >out &&
+               test_line_count = 1 out &&
+
+               git rev-parse >expect \
+                       C:a   A:a     &&
+               git rev-parse >actual \
+                       :0:a  :0:b    &&
+               test_cmp expect actual
+       )
 '
 
 test_expect_success 'setup rename/rename(1to2)/add-dest conflict' '
-       git rm -rf . &&
-       git clean -fdqx &&
-       rm -rf .git &&
-       git init &&
-
-       echo stuff >a &&
-       git add a &&
-       test_tick &&
-       git commit -m base &&
-       git tag A &&
-
-       git checkout -b B A &&
-       git mv a b &&
-       echo precious-data >c &&
-       git add c &&
-       test_tick &&
-       git commit -m one &&
-
-       git checkout -b C A &&
-       git mv a c &&
-       echo important-info >b &&
-       git add b &&
-       test_tick &&
-       git commit -m two
+       test_create_repo rename-rename-1to2-add-dest &&
+       (
+               cd rename-rename-1to2-add-dest &&
+
+               echo stuff >a &&
+               git add a &&
+               test_tick &&
+               git commit -m base &&
+               git tag A &&
+
+               git checkout -b B A &&
+               git mv a b &&
+               echo precious-data >c &&
+               git add c &&
+               test_tick &&
+               git commit -m one &&
+
+               git checkout -b C A &&
+               git mv a c &&
+               echo important-info >b &&
+               git add b &&
+               test_tick &&
+               git commit -m two
+       )
 '
 
 test_expect_success 'rename/rename/add-dest merge still knows about conflicting file versions' '
-       git checkout C^0 &&
-       test_must_fail git merge -s recursive B^0 &&
-
-       test 5 -eq $(git ls-files -s | wc -l) &&
-       test 2 -eq $(git ls-files -u b | wc -l) &&
-       test 2 -eq $(git ls-files -u c | wc -l) &&
-       test 4 -eq $(git ls-files -o | wc -l) &&
-
-       test $(git rev-parse :1:a) = $(git rev-parse A:a) &&
-       test $(git rev-parse :2:b) = $(git rev-parse C:b) &&
-       test $(git rev-parse :3:b) = $(git rev-parse B:b) &&
-       test $(git rev-parse :2:c) = $(git rev-parse C:c) &&
-       test $(git rev-parse :3:c) = $(git rev-parse B:c) &&
-
-       test $(git hash-object c~HEAD) = $(git rev-parse C:c) &&
-       test $(git hash-object c~B\^0) = $(git rev-parse B:c) &&
-       test $(git hash-object b~HEAD) = $(git rev-parse C:b) &&
-       test $(git hash-object b~B\^0) = $(git rev-parse B:b) &&
-
-       test ! -f b &&
-       test ! -f c
+       (
+               cd rename-rename-1to2-add-dest &&
+
+               git checkout C^0 &&
+               test_must_fail git merge -s recursive B^0 &&
+
+               git ls-files -s >out &&
+               test_line_count = 5 out &&
+               git ls-files -u b >out &&
+               test_line_count = 2 out &&
+               git ls-files -u c >out &&
+               test_line_count = 2 out &&
+               git ls-files -o >out &&
+               test_line_count = 5 out &&
+
+               git rev-parse >expect               \
+                       A:a   C:b   B:b   C:c   B:c &&
+               git rev-parse >actual                \
+                       :1:a  :2:b  :3:b  :2:c  :3:c &&
+               test_cmp expect actual
+
+               git rev-parse >expect               \
+                       C:c     B:c     C:b     B:b &&
+               git hash-object >actual                \
+                       c~HEAD  c~B\^0  b~HEAD  b~B\^0 &&
+               test_cmp expect actual
+
+               test_path_is_missing b &&
+               test_path_is_missing c
+       )
 '
 
 test_done
index b4b49eeb08313df8d260a17414a19e7ac2fdc901..291a1e2b07417559d3f3defd6a60043b505eb3c7 100755 (executable)
@@ -74,7 +74,7 @@ test_expect_success GPG 'verify and show signatures' '
 
 test_expect_success GPG 'detect fudged signature' '
        git cat-file tag seventh-signed >raw &&
-       sed -e "s/seventh/7th forged/" raw >forged1 &&
+       sed -e "/^tag / s/seventh/7th forged/" raw >forged1 &&
        git hash-object -w -t tag forged1 >forged1.tag &&
        test_must_fail git verify-tag $(cat forged1.tag) 2>actual1 &&
        grep "BAD signature from" actual1 &&
index 1a33040d94d628d1c6a2f3edcac6ab4f00b7bbf7..48fd14fae6e9ac04f2edac3592bfb3ee4504cab1 100755 (executable)
@@ -126,8 +126,10 @@ test_expect_success 'submodule add' '
        test_cmp empty untracked
 '
 
-test_create_repo parent &&
-test_commit -C parent one
+test_expect_success 'setup parent and one repository' '
+       test_create_repo parent &&
+       test_commit -C parent one
+'
 
 test_expect_success 'redirected submodule add does not show progress' '
        git -C addtest submodule add "file://$submodurl/parent" submod-redirected \
index 6f083c4d68b677ff4058961311d6f753d3953a54..9e0d31700e0cf8228e0093f3166ec830a5816ba4 100755 (executable)
@@ -65,7 +65,7 @@ test_expect_success 'setup a submodule tree' '
         git commit -m "none"
        ) &&
        git clone . recursivesuper &&
-       ( cd recursivesuper
+       ( cd recursivesuper &&
         git submodule add ../super super
        )
 '
@@ -245,13 +245,13 @@ test_expect_success 'submodule update --remote should fetch upstream changes wit
        (
                cd super &&
                git submodule update --remote --force submodule &&
-               git -C submodule log -1 --oneline >actual
-               git -C ../submodule log -1 --oneline master >expect
+               git -C submodule log -1 --oneline >actual &&
+               git -C ../submodule log -1 --oneline master >expect &&
                test_cmp expect actual &&
                git checkout -b test-branch &&
                git submodule update --remote --force submodule &&
-               git -C submodule log -1 --oneline >actual
-               git -C ../submodule log -1 --oneline test-branch >expect
+               git -C submodule log -1 --oneline >actual &&
+               git -C ../submodule log -1 --oneline test-branch >expect &&
                test_cmp expect actual &&
                git checkout master &&
                git branch -d test-branch &&
@@ -891,7 +891,7 @@ test_expect_success 'submodule update properly revives a moved submodule' '
         rm -rf submodule2 &&
         mkdir -p "moved/sub module" &&
         git update-index --add --cacheinfo 160000 $H "moved/sub module" &&
-        git config -f .gitmodules submodule.submodule2.path "moved/sub module"
+        git config -f .gitmodules submodule.submodule2.path "moved/sub module" &&
         git commit -am "post move" &&
         git submodule update &&
         git status | sed "s/$H2/XXX/" >actual &&
index 6ba5daf42ee870ce3a30c4fdb5a7cf84c18a2c84..77729ac4aa1873a7e74b59975910ca33a00899d8 100755 (executable)
@@ -82,16 +82,16 @@ test_expect_success 'test basic "submodule foreach" usage' '
 
 cat >expect <<EOF
 Entering '../sub1'
-$pwd/clone-foo1-../sub1-$sub1sha1
+$pwd/clone-foo1-sub1-../sub1-$sub1sha1
 Entering '../sub3'
-$pwd/clone-foo3-../sub3-$sub3sha1
+$pwd/clone-foo3-sub3-../sub3-$sub3sha1
 EOF
 
 test_expect_success 'test "submodule foreach" from subdirectory' '
        mkdir clone/sub &&
        (
                cd clone/sub &&
-               git submodule foreach "echo \$toplevel-\$name-\$sm_path-\$sha1" >../../actual
+               git submodule foreach "echo \$toplevel-\$name-\$sm_path-\$displaypath-\$sha1" >../../actual
        ) &&
        test_i18ncmp expect actual
 '
@@ -196,6 +196,38 @@ test_expect_success 'test messages from "foreach --recursive" from subdirectory'
        ) &&
        test_i18ncmp expect actual
 '
+sub1sha1=$(cd clone2/sub1 && git rev-parse HEAD)
+sub2sha1=$(cd clone2/sub2 && git rev-parse HEAD)
+sub3sha1=$(cd clone2/sub3 && git rev-parse HEAD)
+nested1sha1=$(cd clone2/nested1 && git rev-parse HEAD)
+nested2sha1=$(cd clone2/nested1/nested2 && git rev-parse HEAD)
+nested3sha1=$(cd clone2/nested1/nested2/nested3 && git rev-parse HEAD)
+submodulesha1=$(cd clone2/nested1/nested2/nested3/submodule && git rev-parse HEAD)
+
+cat >expect <<EOF
+Entering '../nested1'
+toplevel: $pwd/clone2 name: nested1 path: nested1 displaypath: ../nested1 hash: $nested1sha1
+Entering '../nested1/nested2'
+toplevel: $pwd/clone2/nested1 name: nested2 path: nested2 displaypath: ../nested1/nested2 hash: $nested2sha1
+Entering '../nested1/nested2/nested3'
+toplevel: $pwd/clone2/nested1/nested2 name: nested3 path: nested3 displaypath: ../nested1/nested2/nested3 hash: $nested3sha1
+Entering '../nested1/nested2/nested3/submodule'
+toplevel: $pwd/clone2/nested1/nested2/nested3 name: submodule path: submodule displaypath: ../nested1/nested2/nested3/submodule hash: $submodulesha1
+Entering '../sub1'
+toplevel: $pwd/clone2 name: foo1 path: sub1 displaypath: ../sub1 hash: $sub1sha1
+Entering '../sub2'
+toplevel: $pwd/clone2 name: foo2 path: sub2 displaypath: ../sub2 hash: $sub2sha1
+Entering '../sub3'
+toplevel: $pwd/clone2 name: foo3 path: sub3 displaypath: ../sub3 hash: $sub3sha1
+EOF
+
+test_expect_success 'test "submodule foreach --recursive" from subdirectory' '
+       (
+               cd clone2/untracked &&
+               git submodule foreach --recursive "echo toplevel: \$toplevel name: \$name path: \$sm_path displaypath: \$displaypath hash: \$sha1" >../../actual
+       ) &&
+       test_i18ncmp expect actual
+'
 
 cat > expect <<EOF
 nested1-nested1
index 18a40257fbb3226a328fdd520231972c111e6265..e1f11293e2299079d59ebbaf9fa6570e2ff9190c 100755 (executable)
@@ -1099,6 +1099,7 @@ EOF
 '
 
 test_expect_success POSIXPERM,SANITY 'status succeeds in a read-only repository' '
+       test_when_finished "chmod 775 .git" &&
        (
                chmod a-w .git &&
                # make dir1/tracked stat-dirty
@@ -1108,9 +1109,6 @@ test_expect_success POSIXPERM,SANITY 'status succeeds in a read-only repository'
                # make sure "status" succeeded without writing index out
                git diff-files | grep dir1/tracked
        )
-       status=$?
-       chmod 775 .git
-       (exit $status)
 '
 
 (cd sm && echo > bar && git add bar && git commit -q -m 'Add bar') && git add sm
index 762135adea6d4e8594a077f1b52dcb50d49adc4e..6e2015ed9a199d6c6240a5fee850e72fd2fa65c3 100755 (executable)
@@ -142,10 +142,9 @@ test_expect_success GPG 'show signed commit with signature' '
 
 test_expect_success GPG 'detect fudged signature' '
        git cat-file commit seventh-signed >raw &&
-
-       sed -e "s/seventh/7th forged/" raw >forged1 &&
+       sed -e "s/^seventh/7th forged/" raw >forged1 &&
        git hash-object -w -t commit forged1 >forged1.commit &&
-       ! git verify-commit $(cat forged1.commit) &&
+       test_must_fail git verify-commit $(cat forged1.commit) &&
        git show --pretty=short --show-signature $(cat forged1.commit) >actual1 &&
        grep "BAD signature from" actual1 &&
        ! grep "Good signature from" actual1
@@ -156,7 +155,7 @@ test_expect_success GPG 'detect fudged signature with NUL' '
        cat raw >forged2 &&
        echo Qwik | tr "Q" "\000" >>forged2 &&
        git hash-object -w -t commit forged2 >forged2.commit &&
-       ! git verify-commit $(cat forged2.commit) &&
+       test_must_fail git verify-commit $(cat forged2.commit) &&
        git show --pretty=short --show-signature $(cat forged2.commit) >actual2 &&
        grep "BAD signature from" actual2 &&
        ! grep "Good signature from" actual2
index e797c741124ef86eae0e3a8d6a5372b0a84c91e2..e2b1df817a50a48132964124d359c7dc29a89e23 100755 (executable)
@@ -23,7 +23,7 @@ test_expect_success GPG 'create signed commits' '
        echo 3 >bar && git add bar &&
        test_tick && git commit -S -m "bad on side" &&
        git cat-file commit side-bad >raw &&
-       sed -e "s/bad/forged bad/" raw >forged &&
+       sed -e "s/^bad/forged bad/" raw >forged &&
        git hash-object -w -t commit forged >forged.commit &&
        git checkout initial &&
 
index 9c49b6c1fe24335c6bcae777d60e14cdf96fd306..5e0ad1917736591b50e65169216bd5fe80193989 100755 (executable)
@@ -215,7 +215,9 @@ test_expect_success "multi-fetch continues to work" "
        "
 
 test_expect_success "multi-fetch works off a 'clean' repository" '
-       rm -rf "$GIT_DIR/svn" "$GIT_DIR/refs/remotes" &&
+       rm -rf "$GIT_DIR/svn" &&
+       git for-each-ref --format="option no-deref%0adelete %(refname)" refs/remotes |
+       git update-ref --stdin &&
        git reflog expire --all --expire=all &&
        mkdir "$GIT_DIR/svn" &&
        git svn multi-fetch
index 71cae2874d935e16b951160c9a3fa0014fe2db27..2325599ee60f5bf9b179f4a33ccbe866458c0740 100755 (executable)
@@ -155,6 +155,46 @@ test_expect_success 'allow submit from branch with same revision but different n
        )
 '
 
+# make two commits, but tell it to apply only one
+
+test_expect_success 'submit --commit one' '
+       test_when_finished cleanup_git &&
+       git p4 clone --dest="$git" //depot &&
+       (
+               cd "$git" &&
+               test_commit "file9" &&
+               test_commit "file10" &&
+               git config git-p4.skipSubmitEdit true &&
+               git p4 submit --commit HEAD
+       ) &&
+       (
+               cd "$cli" &&
+               test_path_is_missing "file9.t" &&
+               test_path_is_file "file10.t"
+       )
+'
+
+# make three commits, but tell it to apply only range
+
+test_expect_success 'submit --commit range' '
+       test_when_finished cleanup_git &&
+       git p4 clone --dest="$git" //depot &&
+       (
+               cd "$git" &&
+               test_commit "file11" &&
+               test_commit "file12" &&
+               test_commit "file13" &&
+               git config git-p4.skipSubmitEdit true &&
+               git p4 submit --commit HEAD~2..HEAD
+       ) &&
+       (
+               cd "$cli" &&
+               test_path_is_missing "file11.t" &&
+               test_path_is_file "file12.t" &&
+               test_path_is_file "file13.t"
+       )
+'
+
 #
 # Basic submit tests, the five handled cases
 #
index 8840a183acfa907eb4659aa5b47ec5bcfbc10e61..ce7cb22ad37165c6976b4484f6b39a49747d4485 100755 (executable)
@@ -129,6 +129,7 @@ test_expect_success 'Create a repo with multiple depot paths' '
 '
 
 test_expect_success 'Clone repo with multiple depot paths' '
+       test_when_finished cleanup_git &&
        (
                cd "$git" &&
                git p4 clone --changes-block-size=4 //depot/pathA@all //depot/pathB@all \
@@ -138,6 +139,13 @@ test_expect_success 'Clone repo with multiple depot paths' '
        )
 '
 
+test_expect_success 'Clone repo with self-sizing block size' '
+       test_when_finished cleanup_git &&
+       git p4 clone --changes-block-size=1000000 //depot@all --destination="$git" &&
+       git -C "$git" log --oneline >log &&
+       test_line_count \> 10 log
+'
+
 test_expect_success 'kill p4d' '
        kill_p4d
 '
diff --git a/t/t9833-errors.sh b/t/t9833-errors.sh
new file mode 100755 (executable)
index 0000000..9ba892d
--- /dev/null
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+test_description='git p4 errors'
+
+. ./lib-git-p4.sh
+
+test_expect_success 'start p4d' '
+       start_p4d
+'
+
+test_expect_success 'add p4 files' '
+       (
+               cd "$cli" &&
+               echo file1 >file1 &&
+               p4 add file1 &&
+               p4 submit -d "file1"
+       )
+'
+
+# after this test, the default user requires a password
+test_expect_success 'error handling' '
+       git p4 clone --dest="$git" //depot@all &&
+       (
+               cd "$git" &&
+               P4PORT=: test_must_fail git p4 submit 2>errmsg
+       ) &&
+       p4 passwd -P newpassword &&
+       (
+               P4PASSWD=badpassword test_must_fail git p4 clone //depot/foo 2>errmsg &&
+               grep -q "failure accessing depot.*P4PASSWD" errmsg
+       )
+'
+
+test_expect_success 'ticket logged out' '
+       P4TICKETS="$cli/tickets" &&
+       echo "newpassword" | p4 login &&
+       (
+               cd "$git" &&
+               test_commit "ticket-auth-check" &&
+               p4 logout &&
+               test_must_fail git p4 submit 2>errmsg &&
+               grep -q "failure accessing depot" errmsg
+       )
+'
+
+test_expect_success 'create group with short ticket expiry' '
+       P4TICKETS="$cli/tickets" &&
+       echo "newpassword" | p4 login &&
+       p4_add_user short_expiry_user &&
+       p4 -u short_expiry_user passwd -P password &&
+       p4 group -i <<-EOF &&
+       Group: testgroup
+       Timeout: 3
+       Users: short_expiry_user
+       EOF
+
+       p4 users | grep short_expiry_user
+'
+
+test_expect_success 'git operation with expired ticket' '
+       P4TICKETS="$cli/tickets" &&
+       P4USER=short_expiry_user &&
+       echo "password" | p4 login &&
+       (
+               cd "$git" &&
+               git p4 sync &&
+               sleep 5 &&
+               test_must_fail git p4 sync 2>errmsg &&
+               grep "failure accessing depot" errmsg
+       )
+'
+
+test_expect_success 'kill p4d' '
+       kill_p4d
+'
+
+
+test_done
index a28640ce1accd604bd32fdc95fd172119f6c3741..3b3a7b66e41024b5a9b939f1c33a9996b8874a12 100755 (executable)
@@ -501,6 +501,42 @@ test_expect_success '__gitcomp - suffix' '
        EOF
 '
 
+test_expect_success '__gitcomp - ignore optional negative options' '
+       test_gitcomp "--" "--abc --def --no-one -- --no-two" <<-\EOF
+       --abc Z
+       --def Z
+       --no-one Z
+       --no-... Z
+       EOF
+'
+
+test_expect_success '__gitcomp - ignore/narrow optional negative options' '
+       test_gitcomp "--a" "--abc --abcdef --no-one -- --no-two" <<-\EOF
+       --abc Z
+       --abcdef Z
+       EOF
+'
+
+test_expect_success '__gitcomp - ignore/narrow optional negative options' '
+       test_gitcomp "--n" "--abc --def --no-one -- --no-two" <<-\EOF
+       --no-one Z
+       --no-... Z
+       EOF
+'
+
+test_expect_success '__gitcomp - expand all negative options' '
+       test_gitcomp "--no-" "--abc --def --no-one -- --no-two" <<-\EOF
+       --no-one Z
+       --no-two Z
+       EOF
+'
+
+test_expect_success '__gitcomp - expand/narrow all negative options' '
+       test_gitcomp "--no-o" "--abc --def --no-one -- --no-two" <<-\EOF
+       --no-one Z
+       EOF
+'
+
 test_expect_success '__gitcomp - doesnt fail because of invalid variable name' '
        __gitcomp "$invalid_variable_name"
 '
@@ -1398,8 +1434,8 @@ test_expect_success 'double dash "git checkout"' '
        --ignore-other-worktrees Z
        --recurse-submodules Z
        --progress Z
-       --no-track Z
-       --no-recurse-submodules Z
+       --no-quiet Z
+       --no-... Z
        EOF
 '
 
@@ -1607,6 +1643,7 @@ test_expect_success 'completion used <cmd> completion for alias: !f() { : git <c
 test_expect_success 'completion without explicit _git_xxx function' '
        test_completion "git version --" <<-\EOF
        --build-options Z
+       --no-build-options Z
        EOF
 '
 
diff --git a/tag.c b/tag.c
index 3d37c1bd251c5f8c5eb06ede72ab57b323888709..3be7206e92063d4f4f561488e2203a5edd18760d 100644 (file)
--- a/tag.c
+++ b/tag.c
@@ -1,8 +1,10 @@
 #include "cache.h"
 #include "tag.h"
+#include "object-store.h"
 #include "commit.h"
 #include "tree.h"
 #include "blob.h"
+#include "alloc.h"
 #include "gpg-interface.h"
 
 const char *tag_type = "tag";
@@ -93,7 +95,8 @@ struct tag *lookup_tag(const struct object_id *oid)
 {
        struct object *obj = lookup_object(oid->hash);
        if (!obj)
-               return create_object(oid->hash, alloc_tag_node());
+               return create_object(the_repository, oid->hash,
+                                    alloc_tag_node(the_repository));
        return object_as_type(obj, OBJ_TAG, 0);
 }
 
@@ -114,6 +117,14 @@ static timestamp_t parse_tag_date(const char *buf, const char *tail)
        return parse_timestamp(dateptr, NULL, 10);
 }
 
+void release_tag_memory(struct tag *t)
+{
+       free(t->tag);
+       t->tagged = NULL;
+       t->object.parsed = 0;
+       t->date = 0;
+}
+
 int parse_tag_buffer(struct tag *item, const void *data, unsigned long size)
 {
        struct object_id oid;
diff --git a/tag.h b/tag.h
index d469534e82a87b651abe752469d0547c2b560e10..9057d76a50639d65aae1340b752d2daa7dc67aa9 100644 (file)
--- a/tag.h
+++ b/tag.h
@@ -15,6 +15,7 @@ struct tag {
 extern struct tag *lookup_tag(const struct object_id *oid);
 extern int parse_tag_buffer(struct tag *item, const void *data, unsigned long size);
 extern int parse_tag(struct tag *item);
+extern void release_tag_memory(struct tag *t);
 extern struct object *deref_tag(struct object *, const char *, int);
 extern struct object *deref_tag_noverify(struct object *);
 extern int gpg_verify_tag(const struct object_id *oid,
index 8f5090862b5193db135f18854974b21e75eb8ae4..ecd6e53b8541408add0de076b01932a1ffd631e9 100644 (file)
@@ -2,6 +2,7 @@
 #include "tree-walk.h"
 #include "unpack-trees.h"
 #include "dir.h"
+#include "object-store.h"
 #include "tree.h"
 #include "pathspec.h"
 
diff --git a/tree.c b/tree.c
index 244eb5e665e931a6b735366d74b5ed2bcbce4c9b..bc7e99020d96eee95b099e3f276aee9ca852c57b 100644 (file)
--- a/tree.c
+++ b/tree.c
@@ -2,9 +2,11 @@
 #include "cache.h"
 #include "cache-tree.h"
 #include "tree.h"
+#include "object-store.h"
 #include "blob.h"
 #include "commit.h"
 #include "tag.h"
+#include "alloc.h"
 #include "tree-walk.h"
 
 const char *tree_type = "tree";
@@ -196,7 +198,8 @@ struct tree *lookup_tree(const struct object_id *oid)
 {
        struct object *obj = lookup_object(oid->hash);
        if (!obj)
-               return create_object(oid->hash, alloc_tree_node());
+               return create_object(the_repository, oid->hash,
+                                    alloc_tree_node(the_repository));
        return object_as_type(obj, OBJ_TREE, 0);
 }
 
index 3a85a02a7733aeeee86da1a324319d026c32d787..66741130aeddaec7a913264fb41ef82d87d9b504 100644 (file)
@@ -16,6 +16,7 @@
 #include "submodule.h"
 #include "submodule-config.h"
 #include "fsmonitor.h"
+#include "object-store.h"
 #include "fetch-object.h"
 
 /*
index 87c6722ea58207a9b369e75f7cf7ac16a705330b..936acabbdd1b171e5183e3f25a3624d0ca74049e 100644 (file)
@@ -3,6 +3,7 @@
 #include "refs.h"
 #include "pkt-line.h"
 #include "sideband.h"
+#include "object-store.h"
 #include "tag.h"
 #include "object.h"
 #include "commit.h"
@@ -658,7 +659,7 @@ static void send_shallow(struct commit_list *result)
                if (!(object->flags & (CLIENT_SHALLOW|NOT_SHALLOW))) {
                        packet_write_fmt(1, "shallow %s",
                                         oid_to_hex(&object->oid));
-                       register_shallow(&object->oid);
+                       register_shallow(the_repository, &object->oid);
                        shallow_nr++;
                }
                result = result->next;
@@ -695,14 +696,14 @@ static void send_unshallow(const struct object_array *shallows)
                        add_object_array(object, NULL, &extra_edge_obj);
                }
                /* make sure commit traversal conforms to client */
-               register_shallow(&object->oid);
+               register_shallow(the_repository, &object->oid);
        }
 }
 
 static void deepen(int depth, int deepen_relative,
                   struct object_array *shallows)
 {
-       if (depth == INFINITE_DEPTH && !is_repository_shallow()) {
+       if (depth == INFINITE_DEPTH && !is_repository_shallow(the_repository)) {
                int i;
 
                for (i = 0; i < shallows->nr; i++) {
@@ -782,7 +783,8 @@ static int send_shallow_list(int depth, int deepen_rev_list,
                if (shallows->nr > 0) {
                        int i;
                        for (i = 0; i < shallows->nr; i++)
-                               register_shallow(&shallows->objects[i].item->oid);
+                               register_shallow(the_repository,
+                                                &shallows->objects[i].item->oid);
                }
        }
 
@@ -1356,14 +1358,15 @@ static void send_shallow_info(struct upload_pack_data *data)
 {
        /* No shallow info needs to be sent */
        if (!data->depth && !data->deepen_rev_list && !data->shallows.nr &&
-           !is_repository_shallow())
+           !is_repository_shallow(the_repository))
                return;
 
        packet_write_fmt(1, "shallow-info\n");
 
        if (!send_shallow_list(data->depth, data->deepen_rev_list,
                               data->deepen_since, &data->deepen_not,
-                              &data->shallows) && is_repository_shallow())
+                              &data->shallows) &&
+           is_repository_shallow(the_repository))
                deepen(INFINITE_DEPTH, data->deepen_relative, &data->shallows);
 
        packet_delim(1);
index 0b162a09b95a3eadeef47f3e6d314d386215cc9f..86359ab0ab62990cf7097b0d59940f1f0b04fec5 100644 (file)
--- a/walker.c
+++ b/walker.c
@@ -1,5 +1,6 @@
 #include "cache.h"
 #include "walker.h"
+#include "object-store.h"
 #include "commit.h"
 #include "tree.h"
 #include "tree-walk.h"
index d1c05145a4bded06a7fccc60543193d2f5181953..8827a256d32925ea24d51ccf00f3108154d01757 100644 (file)
@@ -1317,7 +1317,7 @@ static void show_rebase_in_progress(struct wt_status *s,
                        status_printf_ln(s, color,
                                _("  (use \"git rebase --abort\" to check out the original branch)"));
                }
-       } else if (state->rebase_in_progress || !stat(git_path_merge_msg(), &st)) {
+       } else if (state->rebase_in_progress || !stat(git_path_merge_msg(the_repository), &st)) {
                print_rebase_state(s, state, color);
                if (s->hints)
                        status_printf_ln(s, color,
@@ -1552,17 +1552,17 @@ void wt_status_get_state(struct wt_status_state *state,
        struct stat st;
        struct object_id oid;
 
-       if (!stat(git_path_merge_head(), &st)) {
+       if (!stat(git_path_merge_head(the_repository), &st)) {
                state->merge_in_progress = 1;
        } else if (wt_status_check_rebase(NULL, state)) {
                ;               /* all set */
-       } else if (!stat(git_path_cherry_pick_head(), &st) &&
+       } else if (!stat(git_path_cherry_pick_head(the_repository), &st) &&
                        !get_oid("CHERRY_PICK_HEAD", &oid)) {
                state->cherry_pick_in_progress = 1;
                oidcpy(&state->cherry_pick_head_oid, &oid);
        }
        wt_status_check_bisect(NULL, state);
-       if (!stat(git_path_revert_head(), &st) &&
+       if (!stat(git_path_revert_head(the_repository), &st) &&
            !get_oid("REVERT_HEAD", &oid)) {
                state->revert_in_progress = 1;
                oidcpy(&state->revert_head_oid, &oid);
index 9315bc0ede11ba0377e27d711e37b6a0ae555c43..ec6e574e4aa07414b9a17bb99ddee26fd44497de 100644 (file)
@@ -1,5 +1,6 @@
 #include "cache.h"
 #include "config.h"
+#include "object-store.h"
 #include "xdiff-interface.h"
 #include "xdiff/xtypes.h"
 #include "xdiff/xdiffi.h"